Advertisement
DeanoX

Mottramlabs 4CH CT Sensor ESPHome YAML

Sep 12th, 2021 (edited)
2,885
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
YAML 6.34 KB | None | 0 0
  1. esphome:
  2.   name: esp-energymon
  3.   comment: D1 Mini - Energy Monitor
  4.   platform: ESP8266
  5.   board: d1_mini
  6.  
  7. wifi:
  8.   domain: .local
  9.   ssid: 'xxxx'
  10.   password: 'xxxx'
  11.   manual_ip:
  12.     static_ip: x.x.x.x
  13.     gateway: x.x.x.x
  14.     subnet: 255.255.255.0
  15.  
  16. # Enable logging
  17. logger:
  18.   level: DEBUG
  19.   baud_rate: 0
  20.   logs:
  21.     ads1115: ERROR  
  22. # Enable Home Assistant API
  23. api:
  24.   reboot_timeout: 0s
  25.  
  26. ota:
  27. web_server:
  28. substitutions:
  29.   esp_id: "esp-energymon"
  30. # Common ADS1115 Sensor Setting
  31.   ads_gain: "2.048"
  32.   ads_update_interval: "250ms"
  33.   ads_delta: "0.2"
  34.   ads_heartbeat: "120s"
  35.  
  36. i2c:
  37.   sda: GPIO04
  38.   scl: GPIO05
  39.   scan: False
  40.  
  41. ads1115:
  42. # 1st ADS1115 (ADDR -> Grnd)
  43.   - address: 0x48
  44.     id: ads1115_1
  45.  
  46. sensor:
  47. # Channel 1
  48.   - platform: ct_clamp
  49.     sensor: ads1115_1_a0
  50.     id: current_ch1
  51.     name: "${esp_id} Current Ch 1"
  52.     update_interval: 30s
  53.     # Needs adjusting for individual Deployment
  54.     filters:
  55.       - calibrate_linear:
  56.        - 0 -> 0
  57.         - 0.03 -> 3.45
  58.         - 0.11 -> 16.6
  59.     # When Current updates, update Watts
  60.     on_value:
  61.       then:
  62.         - sensor.template.publish:
  63.             id: watts_ch1
  64.             # Local Voltage is 240V - adjust as required.
  65.             state: !lambda 'return id(current_ch1).state * id(average_voltage).state;'
  66.   - platform: ads1115
  67.     ads1115_id: ads1115_1
  68.     multiplexer: 'A0_GND'
  69.     gain: ${ads_gain}
  70.     name: "ADS1115-1-A0"
  71.     id: ads1115_1_a0
  72.     update_interval: ${ads_update_interval}
  73.     internal: true
  74.     filters:
  75.      # Samples every 250ms...Average over 10 Secs, Send every 5 Secs
  76.     - sliding_window_moving_average:
  77.           window_size: 40
  78.           send_every: 20
  79. # Channel 2
  80.   - platform: ct_clamp
  81.     sensor: ads1115_1_a1
  82.     id: current_ch2
  83.     name: "${esp_id} Current Ch 2"
  84.     update_interval: 30s
  85.     # Needs adjusting for individual Deployment
  86.     filters:
  87.       - calibrate_linear:
  88.        - 0 -> 0
  89.         - 0.03 -> 3.45
  90.         - 0.11 -> 16.6
  91.     # When Current updates, update Watts
  92.     on_value:
  93.       then:
  94.         - sensor.template.publish:
  95.             id: watts_ch2
  96.             # Local Voltage is 240V - adjust as required.
  97.             state: !lambda 'return id(current_ch2).state * id(average_voltage).state;'
  98.   - platform: ads1115
  99.     ads1115_id: ads1115_1
  100.     multiplexer: 'A1_GND'
  101.     gain: ${ads_gain}
  102.     name: "ADS1115-1-A1"
  103.     id: ads1115_1_a1
  104.     update_interval: ${ads_update_interval}
  105.     internal: true
  106.     filters:
  107.      # Samples every 250ms...Average over 10 Secs, Send every 5 Secs
  108.     - sliding_window_moving_average:
  109.           window_size: 40
  110.           send_every: 20
  111. # Channel 3
  112.   - platform: ct_clamp
  113.     sensor: ads1115_1_a1
  114.     id: current_ch3
  115.     name: "${esp_id} Current Ch 3"
  116.     update_interval: 30s
  117.     # Needs adjusting for individual Deployment
  118.     filters:
  119.       - calibrate_linear:
  120.        - 0 -> 0
  121.         - 0.03 -> 3.45
  122.         - 0.11 -> 16.6
  123.     # When Current updates, update Watts
  124.     on_value:
  125.       then:
  126.         - sensor.template.publish:
  127.             id: watts_ch3
  128.             # Local Voltage is 240V - adjust as required.
  129.             state: !lambda 'return id(current_ch3).state * id(average_voltage).state;'
  130.   - platform: ads1115
  131.     ads1115_id: ads1115_1
  132.     multiplexer: 'A2_GND'
  133.     gain: ${ads_gain}
  134.     name: "ADS1115-1-A2"
  135.     id: ads1115_1_a2
  136.     update_interval: ${ads_update_interval}
  137.     internal: true
  138.     filters:
  139.      # Samples every 250ms...Average over 10 Secs, Send every 5 Secs
  140.     - sliding_window_moving_average:
  141.           window_size: 40
  142.           send_every: 20
  143. # Channel 4
  144.   - platform: ct_clamp
  145.     sensor: ads1115_1_a1
  146.     id: current_ch4
  147.     name: "${esp_id} Current Ch 4"
  148.     update_interval: 30s
  149.     # Needs adjusting for individual Deployment
  150.     filters:
  151.       - calibrate_linear:
  152.        - 0 -> 0
  153.         - 0.03 -> 3.45
  154.         - 0.11 -> 16.6
  155.     # When Current updates, update Watts
  156.     on_value:
  157.       then:
  158.         - sensor.template.publish:
  159.             id: watts_ch4
  160.             # Local Voltage is 240V - adjust as required.
  161.             state: !lambda 'return id(current_ch4).state * id(average_voltage).state;'
  162.   - platform: ads1115
  163.     ads1115_id: ads1115_1
  164.     multiplexer: 'A3_GND'
  165.     gain: ${ads_gain}
  166.     name: "ADS1115-1-A3"
  167.     id: ads1115_1_a3
  168.     update_interval: ${ads_update_interval}
  169.     internal: true
  170.     filters:
  171.      # Samples every 250ms...Average over 10 Secs, Send every 5 Secs
  172.     - sliding_window_moving_average:
  173.           window_size: 40
  174.           send_every: 20
  175.  
  176. # Template Sensors for Watts
  177.   - platform: template
  178.     id: watts_ch1
  179.     name: "${esp_id} Watts Ch 1"
  180.     lambda: return {};
  181.     unit_of_measurement: W
  182.     accuracy_decimals: 0
  183.     device_class: power
  184.   - platform: template
  185.     id: watts_ch2
  186.     name: "${esp_id} Watts Ch 2"
  187.     lambda: return {};
  188.     unit_of_measurement: W
  189.     accuracy_decimals: 0
  190.     device_class: power
  191.   - platform: template
  192.     id: watts_ch3
  193.     name: "${esp_id} Watts Ch 3"
  194.     lambda: return {};
  195.     unit_of_measurement: W
  196.     accuracy_decimals: 0
  197.     device_class: power
  198.   - platform: template
  199.     id: watts_ch4
  200.     name: "${esp_id} Watts Ch 4"
  201.     lambda: return {};
  202.     unit_of_measurement: W
  203.     accuracy_decimals: 0
  204.     device_class: power  
  205.  
  206. # Energy Sensors (kWh) for HA Dashboard
  207.   - platform: total_daily_energy
  208.     name: ${esp_id} Total kWh Ch1
  209.     power_id: watts_ch1
  210.     filters:
  211.       - multiply: 0.001
  212.     unit_of_measurement: kWh
  213.   - platform: total_daily_energy
  214.     name: ${esp_id} Total kWh Ch2
  215.     power_id: watts_ch2
  216.     filters:
  217.       - multiply: 0.001
  218.     unit_of_measurement: kWh
  219.   - platform: total_daily_energy
  220.     name: ${esp_id} Total kWh Ch3
  221.     power_id: watts_ch3
  222.     filters:
  223.       - multiply: 0.001
  224.     unit_of_measurement: kWh
  225.   - platform: total_daily_energy
  226.     name: ${esp_id} Total kWh Ch4
  227.     power_id: watts_ch4
  228.     filters:
  229.       - multiply: 0.001
  230.     unit_of_measurement: kWh
  231. # Voltage from HA
  232.   - platform: homeassistant
  233.     name: "Voltage"
  234.     #ESPHome ID
  235.     id: average_voltage
  236.     entity_id: sensor.average_voltage
  237.     internal: true
  238.   - platform: wifi_signal
  239.     name: "${esp_id} WiFi Signal Sensor"
  240.     update_interval: 60s    
  241. # Total Energy sensor requires Times - could be SNTP or Home Assistant
  242. time:
  243.   - platform: homeassistant
  244.     id: homeassistant_time  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement