Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- esphome:
- name: esp-energymon
- comment: D1 Mini - Energy Monitor
- platform: ESP8266
- board: d1_mini
- wifi:
- domain: .local
- ssid: 'xxxx'
- password: 'xxxx'
- manual_ip:
- static_ip: x.x.x.x
- gateway: x.x.x.x
- subnet: 255.255.255.0
- # Enable logging
- logger:
- level: DEBUG
- baud_rate: 0
- logs:
- ads1115: ERROR
- # Enable Home Assistant API
- api:
- reboot_timeout: 0s
- ota:
- web_server:
- substitutions:
- esp_id: "esp-energymon"
- # Common ADS1115 Sensor Setting
- ads_gain: "2.048"
- ads_update_interval: "250ms"
- ads_delta: "0.2"
- ads_heartbeat: "120s"
- i2c:
- sda: GPIO04
- scl: GPIO05
- scan: False
- ads1115:
- # 1st ADS1115 (ADDR -> Grnd)
- - address: 0x48
- id: ads1115_1
- sensor:
- # Channel 1
- - platform: ct_clamp
- sensor: ads1115_1_a0
- id: current_ch1
- name: "${esp_id} Current Ch 1"
- update_interval: 30s
- # Needs adjusting for individual Deployment
- filters:
- - calibrate_linear:
- - 0 -> 0
- - 0.03 -> 3.45
- - 0.11 -> 16.6
- # When Current updates, update Watts
- on_value:
- then:
- - sensor.template.publish:
- id: watts_ch1
- # Local Voltage is 240V - adjust as required.
- state: !lambda 'return id(current_ch1).state * id(average_voltage).state;'
- - platform: ads1115
- ads1115_id: ads1115_1
- multiplexer: 'A0_GND'
- gain: ${ads_gain}
- name: "ADS1115-1-A0"
- id: ads1115_1_a0
- update_interval: ${ads_update_interval}
- internal: true
- filters:
- # Samples every 250ms...Average over 10 Secs, Send every 5 Secs
- - sliding_window_moving_average:
- window_size: 40
- send_every: 20
- # Channel 2
- - platform: ct_clamp
- sensor: ads1115_1_a1
- id: current_ch2
- name: "${esp_id} Current Ch 2"
- update_interval: 30s
- # Needs adjusting for individual Deployment
- filters:
- - calibrate_linear:
- - 0 -> 0
- - 0.03 -> 3.45
- - 0.11 -> 16.6
- # When Current updates, update Watts
- on_value:
- then:
- - sensor.template.publish:
- id: watts_ch2
- # Local Voltage is 240V - adjust as required.
- state: !lambda 'return id(current_ch2).state * id(average_voltage).state;'
- - platform: ads1115
- ads1115_id: ads1115_1
- multiplexer: 'A1_GND'
- gain: ${ads_gain}
- name: "ADS1115-1-A1"
- id: ads1115_1_a1
- update_interval: ${ads_update_interval}
- internal: true
- filters:
- # Samples every 250ms...Average over 10 Secs, Send every 5 Secs
- - sliding_window_moving_average:
- window_size: 40
- send_every: 20
- # Channel 3
- - platform: ct_clamp
- sensor: ads1115_1_a1
- id: current_ch3
- name: "${esp_id} Current Ch 3"
- update_interval: 30s
- # Needs adjusting for individual Deployment
- filters:
- - calibrate_linear:
- - 0 -> 0
- - 0.03 -> 3.45
- - 0.11 -> 16.6
- # When Current updates, update Watts
- on_value:
- then:
- - sensor.template.publish:
- id: watts_ch3
- # Local Voltage is 240V - adjust as required.
- state: !lambda 'return id(current_ch3).state * id(average_voltage).state;'
- - platform: ads1115
- ads1115_id: ads1115_1
- multiplexer: 'A2_GND'
- gain: ${ads_gain}
- name: "ADS1115-1-A2"
- id: ads1115_1_a2
- update_interval: ${ads_update_interval}
- internal: true
- filters:
- # Samples every 250ms...Average over 10 Secs, Send every 5 Secs
- - sliding_window_moving_average:
- window_size: 40
- send_every: 20
- # Channel 4
- - platform: ct_clamp
- sensor: ads1115_1_a1
- id: current_ch4
- name: "${esp_id} Current Ch 4"
- update_interval: 30s
- # Needs adjusting for individual Deployment
- filters:
- - calibrate_linear:
- - 0 -> 0
- - 0.03 -> 3.45
- - 0.11 -> 16.6
- # When Current updates, update Watts
- on_value:
- then:
- - sensor.template.publish:
- id: watts_ch4
- # Local Voltage is 240V - adjust as required.
- state: !lambda 'return id(current_ch4).state * id(average_voltage).state;'
- - platform: ads1115
- ads1115_id: ads1115_1
- multiplexer: 'A3_GND'
- gain: ${ads_gain}
- name: "ADS1115-1-A3"
- id: ads1115_1_a3
- update_interval: ${ads_update_interval}
- internal: true
- filters:
- # Samples every 250ms...Average over 10 Secs, Send every 5 Secs
- - sliding_window_moving_average:
- window_size: 40
- send_every: 20
- # Template Sensors for Watts
- - platform: template
- id: watts_ch1
- name: "${esp_id} Watts Ch 1"
- lambda: return {};
- unit_of_measurement: W
- accuracy_decimals: 0
- device_class: power
- - platform: template
- id: watts_ch2
- name: "${esp_id} Watts Ch 2"
- lambda: return {};
- unit_of_measurement: W
- accuracy_decimals: 0
- device_class: power
- - platform: template
- id: watts_ch3
- name: "${esp_id} Watts Ch 3"
- lambda: return {};
- unit_of_measurement: W
- accuracy_decimals: 0
- device_class: power
- - platform: template
- id: watts_ch4
- name: "${esp_id} Watts Ch 4"
- lambda: return {};
- unit_of_measurement: W
- accuracy_decimals: 0
- device_class: power
- # Energy Sensors (kWh) for HA Dashboard
- - platform: total_daily_energy
- name: ${esp_id} Total kWh Ch1
- power_id: watts_ch1
- filters:
- - multiply: 0.001
- unit_of_measurement: kWh
- - platform: total_daily_energy
- name: ${esp_id} Total kWh Ch2
- power_id: watts_ch2
- filters:
- - multiply: 0.001
- unit_of_measurement: kWh
- - platform: total_daily_energy
- name: ${esp_id} Total kWh Ch3
- power_id: watts_ch3
- filters:
- - multiply: 0.001
- unit_of_measurement: kWh
- - platform: total_daily_energy
- name: ${esp_id} Total kWh Ch4
- power_id: watts_ch4
- filters:
- - multiply: 0.001
- unit_of_measurement: kWh
- # Voltage from HA
- - platform: homeassistant
- name: "Voltage"
- #ESPHome ID
- id: average_voltage
- entity_id: sensor.average_voltage
- internal: true
- - platform: wifi_signal
- name: "${esp_id} WiFi Signal Sensor"
- update_interval: 60s
- # Total Energy sensor requires Times - could be SNTP or Home Assistant
- time:
- - platform: homeassistant
- id: homeassistant_time
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement