mirror of
https://github.com/CeeWeasel/fresh-home.git
synced 2026-08-09 18:40:14 -04:00
stop hating myself
This commit is contained in:
@@ -0,0 +1,282 @@
|
||||
# CT01 - A - Grid Phase A
|
||||
# CT02 - G - Dryer
|
||||
# CT03 - D - Furnace
|
||||
# CT04 - B - Grid Phase B
|
||||
# CT05 - E - Basement Plugs (Computer is on this circuit)
|
||||
# CT06 - F - Nursery, Kitchen, and Dining Room Lights
|
||||
# CT07 - C - Sump Pump Plug
|
||||
# CT08 - H - Microwave Plug
|
||||
# CT09 - I - Stove/Oven
|
||||
# CT10 - J - Front Room Plugs
|
||||
# CT11 - M - Heat Pump
|
||||
# CT12 - L - Kitchen Circuit 1 (Fridge is on this circuit)
|
||||
|
||||
substitutions:
|
||||
devicename: power-monitor
|
||||
disp_name: power-monitor
|
||||
friendly_name: 'PM:'
|
||||
entity_name: power_monitor
|
||||
comment: Clever Power Monitor
|
||||
static_ip: !secret power-monitor-ip
|
||||
platform: ESP32
|
||||
board: nodemcu-32s
|
||||
update_time: 500ms
|
||||
kwh_report_interval: 60s
|
||||
watt_heartbeat: 60s
|
||||
throttle_time: 60s
|
||||
watt_delta: "50.0"
|
||||
#watt_delta: "5.0"
|
||||
#grid_watt_delta: "10.0"
|
||||
grid_watt_delta: "200.0"
|
||||
#fast_update_time: 10s
|
||||
#medium_update_time: 30s
|
||||
#slow_update_time: 60s
|
||||
|
||||
main_meter_name1: Meter 1-3
|
||||
main_meter_name2: Meter 4-6
|
||||
main_meter_id1: meter_main1
|
||||
main_meter_id2: meter_main2
|
||||
## Addon1
|
||||
addon1_name1: Addon1 7-9
|
||||
addon1_name2: Addon1 10-12
|
||||
addon1_id1: addon1_1
|
||||
addon1_id2: addon1_2
|
||||
## Addon2
|
||||
addon2_name1: Addon2 13-15
|
||||
addon2_name2: Addon2 16-18
|
||||
addon2_id1: addon2_1
|
||||
addon2_id2: addon2_2
|
||||
## Addon3
|
||||
addon3_name1: Addon3 19-21
|
||||
addon3_name2: Addon3 22-24
|
||||
addon3_id1: addon3_1
|
||||
addon3_id2: addon3_2
|
||||
|
||||
ct1_name: 'Grid Phase A'
|
||||
ct4_name: 'Grid Phase B'
|
||||
|
||||
ct22_name: 'Well' # 1, 3 # sct010 - O
|
||||
ct12_name: 'Kitchen 1' # 5 # sct006 - L
|
||||
ct16_name: 'Kitchen 2' # 7 # sct006 - S
|
||||
ct18_name: 'Laundry Plug' # 9 # sct006 - N
|
||||
ct8_name: 'Microwave Plug' # 11 # sct006 - H
|
||||
ct17_name: 'Bathroom Plug' # 13 # sct006 - R
|
||||
ct11_name: 'Heat Pump' # 15, 17 - M
|
||||
ct24_name: 'Basement Bedroom and Furnace Room Lights' # 19 # sct006 - K
|
||||
ct5_name: 'Basement Plugs' # 21a # sct006 - E
|
||||
ct23_name: 'Basement and Laundry Lights and Plugs' # 21b # sct006 - W
|
||||
ct7_name: 'Sump Pump Plug' # 23 # sct006 - C
|
||||
|
||||
ct6_name: 'Nursery, Dining, Kitchen Lights' # 2 # sct006 - F
|
||||
ct20_name: 'Master Suite' # 4 # sct006 - T
|
||||
ct3_name: 'Furnace' # 6 # sct006 - D
|
||||
ct15_name: 'Basement Stairs and Lights' # 8 # sct006 - P
|
||||
ct21_name: 'Dishwasher' # 10 # sct006 - V
|
||||
ct13_name: 'Garage Outside and Front Garage Lights' # 12 # sct006 - U
|
||||
ct10_name: 'Front Room Plugs' # 14 # sct006 - J
|
||||
ct14_name: 'Garage and Outside Plugs' # 16 # sct006 - Q
|
||||
ct9_name: 'Stove' # 18, 20 # sct016 - I
|
||||
ct2_name: 'Dryer' # 22, 24 # sct010 - G
|
||||
|
||||
ct19_name: 'Unused'
|
||||
|
||||
|
||||
# Current Transformers:
|
||||
# 20A/25mA SCT-006: 11143
|
||||
sct006: '11143'
|
||||
# 30A/1V SCT-013-030: 8650
|
||||
# 50A/1V SCT-013-050: 15420
|
||||
# 80A/26.6mA SCT-010: 41660
|
||||
sct010: '41660'
|
||||
# 100A/50ma SCT-013-000: 27518
|
||||
sct013: '27518'
|
||||
# 120A/40mA: SCT-016: 41787
|
||||
sct016: '41787'
|
||||
# 200A/100mA SCT-024: 27518
|
||||
#current_cal: '27518'
|
||||
# Jameco 9VAC Transformer:
|
||||
# For meter versions:
|
||||
# >= v1.3: 7305
|
||||
#voltage_cal: '7305'
|
||||
|
||||
## Main Board
|
||||
current_cal_ct1: '41787'
|
||||
current_cal_ct2: '41660'
|
||||
current_cal_ct3: '11143'
|
||||
current_cal_ct4: '41787'
|
||||
current_cal_ct5: '11143'
|
||||
current_cal_ct6: '11143'
|
||||
## Addon1
|
||||
current_cal_ct7: '11143'
|
||||
current_cal_ct8: '11143'
|
||||
current_cal_ct9: '27518'
|
||||
current_cal_ct10: '11143'
|
||||
current_cal_ct11: '41660'
|
||||
current_cal_ct12: '11143'
|
||||
## Addon2
|
||||
current_cal_ct13: '11143'
|
||||
current_cal_ct14: '11143'
|
||||
current_cal_ct15: '11143'
|
||||
current_cal_ct16: '11143'
|
||||
current_cal_ct17: '11143'
|
||||
current_cal_ct18: '11143'
|
||||
## Addon3
|
||||
current_cal_ct19: '11143'
|
||||
current_cal_ct20: '11143'
|
||||
current_cal_ct21: '11143'
|
||||
current_cal_ct22: '41660'
|
||||
current_cal_ct23: '11143'
|
||||
current_cal_ct24: '11143'
|
||||
# This only needs to be changed if you're using something other than the
|
||||
# Jameco 9VAC Transformer:
|
||||
voltage_cal1: '7305'
|
||||
voltage_cal2: '7305'
|
||||
|
||||
electric_freq: "60Hz"
|
||||
|
||||
offset_calibration: "true"
|
||||
gain_calibration: "true"
|
||||
|
||||
|
||||
# spi_clk: 18
|
||||
# spi_miso: 19
|
||||
# spi_mosi: 23
|
||||
# ic1_main: 5
|
||||
# ic1_addon1: 0
|
||||
# ic1_addon2: 27
|
||||
# ic1_addon3: 2
|
||||
# ic2_main: 4
|
||||
# ic2_addon1: 16
|
||||
# ic2_addon2: 17
|
||||
# ic2_addon3: 21
|
||||
|
||||
# ethernet:
|
||||
# id: eth
|
||||
# type: W5500
|
||||
# clk_pin: GPIO13
|
||||
# mosi_pin: GPIO11
|
||||
# miso_pin: GPIO12
|
||||
# cs_pin: GPIO14
|
||||
# interrupt_pin: GPIO10
|
||||
# reset_pin: GPIO9
|
||||
esphome:
|
||||
name: ${disp_name}
|
||||
friendly_name: "${friendly_name}"
|
||||
name_add_mac_suffix: true
|
||||
min_version: '2025.7.0'
|
||||
project:
|
||||
name: circuitsetup.6c-energy-meter-3-addons
|
||||
version: "1.7"
|
||||
|
||||
packages:
|
||||
wifi: !include common/wifi.yaml
|
||||
# device_base: !include common/complex_esp32_base.yaml
|
||||
common: !include circuit-setup/6chan_common.yaml
|
||||
main: !include circuit-setup/meter_sensors/6chan_main_sensor.yaml
|
||||
main_status: !include circuit-setup/status_fields/6chan_main_status.yaml
|
||||
main_cal: !include circuit-setup/calibration/6chan_main_calibration.yaml
|
||||
addon_1: !include circuit-setup/meter_sensors/6chan_addon1.yaml
|
||||
addon_2: !include circuit-setup/meter_sensors/6chan_addon2.yaml
|
||||
addon_3: !include circuit-setup/meter_sensors/6chan_addon3.yaml
|
||||
|
||||
|
||||
# Enable Home Assistant API
|
||||
# An encryption key is recommended and can be generated here:
|
||||
# https://esphome.io/components/api.html#configuration-variables
|
||||
api:
|
||||
# encryption:
|
||||
# key: "YOUR_ENCRYPTION_KEY_HERE"
|
||||
|
||||
# Enable OTA updating
|
||||
ota:
|
||||
- platform: esphome
|
||||
|
||||
|
||||
# In combination with the `ap` this allows
|
||||
# provisioning wifi credentials to the device.
|
||||
captive_portal:
|
||||
|
||||
# Sets up Bluetooth LE to provision wifi credentials
|
||||
# to the device.
|
||||
esp32_improv:
|
||||
authorizer: none
|
||||
|
||||
# Sets up the improv via serial client for wifi provisioning
|
||||
improv_serial:
|
||||
|
||||
web_server:
|
||||
port: 80
|
||||
|
||||
sensor:
|
||||
## The max value for current that the meter can output is 65.535. If you expect to measure current over 65A,
|
||||
## divide the current_cal_ctx (above) by 2 (120A CT) or 4 (200A CT) and multiply the current and power values
|
||||
## by 2 or 4, uncommenting the below and changing the id and phase_x accordingly
|
||||
#- id: !extend ${main_meter_id1} # CTs 1-3
|
||||
# phase_a: # CT1
|
||||
# current:
|
||||
# filters:
|
||||
# - multiply: 2
|
||||
# power:
|
||||
# filters:
|
||||
# - multiply: 2
|
||||
#
|
||||
## uncomment if monitoring 2 voltages
|
||||
#- id: !extend ${main_meter_id2}
|
||||
# phase_a:
|
||||
# voltage:
|
||||
# name: Voltage 2
|
||||
# id: ic2Volts
|
||||
# accuracy_decimals: 1
|
||||
# frequency:
|
||||
# name: Frequency 2
|
||||
|
||||
## Comment out to show amps and watts per meter board in Home Assistant
|
||||
- id: !extend totalAmpsMain
|
||||
internal: true
|
||||
- id: !extend totalWattsMain
|
||||
internal: true
|
||||
- id: !extend totalAmpsAddOn1
|
||||
internal: true
|
||||
- id: !extend totalWattsAddOn1
|
||||
internal: true
|
||||
- id: !extend totalAmpsAddOn2
|
||||
internal: true
|
||||
- id: !extend totalWattsAddOn2
|
||||
internal: true
|
||||
- id: !extend totalAmpsAddOn3
|
||||
internal: true
|
||||
- id: !extend totalWattsAddOn3
|
||||
internal: true
|
||||
|
||||
#Total Amps
|
||||
###########
|
||||
- platform: template
|
||||
name: ${friendly_name} Total Amps
|
||||
id: totalAmps
|
||||
lambda: return id(totalAmpsMain).state + id(totalAmpsAddOn1).state + id(totalAmpsAddOn2).state + id(totalAmpsAddOn3).state ;
|
||||
accuracy_decimals: 2
|
||||
unit_of_measurement: A
|
||||
device_class: current
|
||||
update_interval: ${update_time}
|
||||
|
||||
#Total Watts
|
||||
############
|
||||
- platform: template
|
||||
name: ${friendly_name} Total Watts
|
||||
id: totalWatts
|
||||
lambda: return id(totalWattsMain).state + id(totalWattsAddOn1).state + id(totalWattsAddOn2).state + id(totalWattsAddOn3).state ;
|
||||
accuracy_decimals: 1
|
||||
unit_of_measurement: W
|
||||
device_class: power
|
||||
update_interval: ${update_time}
|
||||
|
||||
#kWh
|
||||
####
|
||||
- platform: total_daily_energy
|
||||
name: ${friendly_name} Total kWh
|
||||
power_id: totalWatts
|
||||
filters:
|
||||
- multiply: 0.001
|
||||
unit_of_measurement: kWh
|
||||
device_class: energy
|
||||
state_class: total_increasing
|
||||
@@ -0,0 +1,847 @@
|
||||
# CT01 - A - Grid Phase A
|
||||
# CT02 - G - Dryer
|
||||
# CT03 - D - Furnace
|
||||
# CT04 - B - Grid Phase B
|
||||
# CT05 - E - Basement Plugs (Computer is on this circuit)
|
||||
# CT06 - F - Nursery, Kitchen, and Dining Room Lights
|
||||
# CT07 - C - Sump Pump Plug
|
||||
# CT08 - H - Microwave Plug
|
||||
# CT09 - I - Stove/Oven
|
||||
# CT10 - J - Front Room Plugs
|
||||
# CT11 - M - Heat Pump
|
||||
# CT12 - L - Kitchen Circuit 1 (Fridge is on this circuit)
|
||||
|
||||
substitutions:
|
||||
devicename: power-monitor
|
||||
friendly_name: 'PM:'
|
||||
entity_name: power_monitor
|
||||
comment: Clever Power Monitor
|
||||
static_ip: !secret power-monitor-ip
|
||||
platform: ESP32
|
||||
board: nodemcu-32s
|
||||
update_time: 500ms
|
||||
kwh_report_interval: 60s
|
||||
watt_heartbeat: 60s
|
||||
throttle_time: 60s
|
||||
watt_delta: "50.0"
|
||||
#watt_delta: "5.0"
|
||||
#grid_watt_delta: "10.0"
|
||||
grid_watt_delta: "200.0"
|
||||
#fast_update_time: 10s
|
||||
#medium_update_time: 30s
|
||||
#slow_update_time: 60s
|
||||
|
||||
ct01Name: 'Grid Phase A'
|
||||
ct04Name: 'Grid Phase B'
|
||||
|
||||
ct22Name: 'Well' # 1, 3 # sct010 - O
|
||||
ct12Name: 'Kitchen 1' # 5 # sct006 - L
|
||||
ct16Name: 'Kitchen 2' # 7 # sct006 - S
|
||||
ct18Name: 'Laundry Plug' # 9 # sct006 - N
|
||||
ct08Name: 'Microwave Plug' # 11 # sct006 - H
|
||||
ct17Name: 'Bathroom Plug' # 13 # sct006 - R
|
||||
ct11Name: 'Heat Pump' # 15, 17 - M
|
||||
ct24Name: 'Basement Bedroom and Furnace Room Lights' # 19 # sct006 - K
|
||||
ct05Name: 'Basement Plugs' # 21a # sct006 - E
|
||||
ct23Name: 'Basement and Laundry Lights and Plugs' # 21b # sct006 - W
|
||||
ct07Name: 'Sump Pump Plug' # 23 # sct006 - C
|
||||
|
||||
ct06Name: 'Nursery, Dining, Kitchen Lights' # 2 # sct006 - F
|
||||
ct20Name: 'Master Suite' # 4 # sct006 - T
|
||||
ct03Name: 'Furnace' # 6 # sct006 - D
|
||||
ct15Name: 'Basement Stairs and Lights' # 8 # sct006 - P
|
||||
ct21Name: 'Dishwasher' # 10 # sct006 - V
|
||||
ct13Name: 'Garage Outside and Front Garage Lights' # 12 # sct006 - U
|
||||
ct10Name: 'Front Room Plugs' # 14 # sct006 - J
|
||||
ct14Name: 'Garage and Outside Plugs' # 16 # sct006 - Q
|
||||
ct09Name: 'Stove' # 18, 20 # sct016 - I
|
||||
ct02Name: 'Dryer' # 22, 24 # sct010 - G
|
||||
|
||||
ct19Name: 'Unused'
|
||||
|
||||
|
||||
# Current Transformers:
|
||||
# 20A/25mA SCT-006: 11143
|
||||
sct006: '11143'
|
||||
# 30A/1V SCT-013-030: 8650
|
||||
# 50A/1V SCT-013-050: 15420
|
||||
# 80A/26.6mA SCT-010: 41660
|
||||
sct010: '41660'
|
||||
# 100A/50ma SCT-013-000: 27518
|
||||
sct013: '27518'
|
||||
# 120A/40mA: SCT-016: 41787
|
||||
sct016: '41787'
|
||||
# 200A/100mA SCT-024: 27518
|
||||
#current_cal: '27518'
|
||||
# Jameco 9VAC Transformer:
|
||||
# For meter versions:
|
||||
# >= v1.3: 7305
|
||||
voltage_cal: '7305'
|
||||
|
||||
|
||||
spi_clk: 18
|
||||
spi_miso: 19
|
||||
spi_mosi: 23
|
||||
ic1_main: 5
|
||||
ic1_addon1: 0
|
||||
ic1_addon2: 27
|
||||
ic1_addon3: 2
|
||||
ic2_main: 4
|
||||
ic2_addon1: 16
|
||||
ic2_addon2: 17
|
||||
ic2_addon3: 21
|
||||
|
||||
# ethernet:
|
||||
# id: eth
|
||||
# type: W5500
|
||||
# clk_pin: GPIO13
|
||||
# mosi_pin: GPIO11
|
||||
# miso_pin: GPIO12
|
||||
# cs_pin: GPIO14
|
||||
# interrupt_pin: GPIO10
|
||||
# reset_pin: GPIO9
|
||||
|
||||
|
||||
packages:
|
||||
wifi: !include common/wifi.yaml
|
||||
# device_base: !include common/complex_esp32_base.yaml
|
||||
device_base: !include common/device_base.yaml
|
||||
mqtt: !include common/mqtt_null.yaml
|
||||
|
||||
esp32:
|
||||
board: nodemcu-32s
|
||||
|
||||
# web_server:
|
||||
# port: 80
|
||||
|
||||
time:
|
||||
- platform: sntp
|
||||
id: sntp_time
|
||||
timezone: America/Detroit
|
||||
|
||||
logger:
|
||||
# level: DEBUG
|
||||
# logs:
|
||||
# sensor: DEBUG
|
||||
|
||||
spi:
|
||||
clk_pin: ${spi_clk}
|
||||
miso_pin: ${spi_miso}
|
||||
mosi_pin: ${spi_mosi}
|
||||
|
||||
sensor:
|
||||
#IC1 Main
|
||||
- platform: atm90e32
|
||||
cs_pin: ${ic1_main}
|
||||
phase_a:
|
||||
voltage:
|
||||
name: ${friendly_name} [V]
|
||||
id: ic1Volts
|
||||
filters:
|
||||
- throttle_average: 60s
|
||||
accuracy_decimals: 1
|
||||
current:
|
||||
name: ${friendly_name} ${ct01Name} [A]
|
||||
id: ct1Amps
|
||||
filters:
|
||||
- or:
|
||||
- delta: 2
|
||||
- throttle_average: ${throttle_time}
|
||||
# - heartbeat: ${watt_heartbeat}
|
||||
power:
|
||||
name: ${friendly_name} ${ct01Name} [W]
|
||||
id: ct1Watts
|
||||
filters:
|
||||
- or:
|
||||
- delta: ${grid_watt_delta}
|
||||
- throttle_average: ${throttle_time}
|
||||
# - heartbeat: ${watt_heartbeat}
|
||||
accuracy_decimals: 1
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${sct016}
|
||||
phase_b:
|
||||
power:
|
||||
name: ${friendly_name} ${ct02Name} [W]
|
||||
id: ct2Watts
|
||||
filters:
|
||||
- or:
|
||||
- delta: ${watt_delta}
|
||||
- throttle_average: ${throttle_time}
|
||||
# - heartbeat: ${watt_heartbeat}
|
||||
accuracy_decimals: 1
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${sct010}
|
||||
phase_c:
|
||||
power:
|
||||
name: ${friendly_name} ${ct03Name} [W]
|
||||
id: ct3Watts
|
||||
filters:
|
||||
- or:
|
||||
- delta: ${watt_delta}
|
||||
- throttle_average: ${throttle_time}
|
||||
# - heartbeat: ${watt_heartbeat}
|
||||
accuracy_decimals: 1
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${sct006}
|
||||
frequency:
|
||||
name: ${friendly_name} Freq A
|
||||
filters:
|
||||
- or:
|
||||
- delta: 0.05
|
||||
- throttle_average: ${throttle_time}
|
||||
# - heartbeat: ${watt_heartbeat}
|
||||
line_frequency: 60Hz
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
|
||||
#IC2 Main
|
||||
- platform: atm90e32
|
||||
cs_pin: ${ic2_main}
|
||||
phase_a:
|
||||
current:
|
||||
name: ${friendly_name} ${ct04Name} [A]
|
||||
id: ct4Amps
|
||||
filters:
|
||||
- or:
|
||||
- delta: ${grid_watt_delta}
|
||||
- throttle_average: ${throttle_time}
|
||||
# - heartbeat: ${watt_heartbeat}
|
||||
accuracy_decimals: 1
|
||||
power:
|
||||
name: ${friendly_name} ${ct04Name} [W]
|
||||
id: ct4Watts
|
||||
filters:
|
||||
- or:
|
||||
- delta: ${watt_delta}
|
||||
- throttle_average: ${throttle_time}
|
||||
# - heartbeat: ${watt_heartbeat}
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${sct016}
|
||||
phase_b:
|
||||
power:
|
||||
name: ${friendly_name} ${ct05Name} [W]
|
||||
id: ct5Watts
|
||||
filters:
|
||||
- or:
|
||||
- delta: ${watt_delta}
|
||||
- throttle_average: ${throttle_time}
|
||||
# - heartbeat: ${watt_heartbeat}
|
||||
accuracy_decimals: 1
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${sct006}
|
||||
phase_c:
|
||||
power:
|
||||
name: ${friendly_name} ${ct06Name} [W]
|
||||
id: ct6Watts
|
||||
filters:
|
||||
- or:
|
||||
- delta: ${watt_delta}
|
||||
- throttle_average: ${throttle_time}
|
||||
# - heartbeat: ${watt_heartbeat}
|
||||
accuracy_decimals: 1
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${sct006}
|
||||
frequency:
|
||||
name: ${friendly_name} Freq B
|
||||
filters:
|
||||
- or:
|
||||
- delta: 0.05
|
||||
- throttle_average: ${throttle_time}
|
||||
# - heartbeat: ${watt_heartbeat}
|
||||
line_frequency: 60Hz
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
|
||||
|
||||
#IC1 AddOn 1
|
||||
- platform: atm90e32
|
||||
cs_pin: ${ic1_addon1}
|
||||
phase_a:
|
||||
power:
|
||||
name: ${friendly_name} ${ct07Name} [W]
|
||||
id: ct7Watts
|
||||
filters:
|
||||
- or:
|
||||
- delta: ${watt_delta}
|
||||
- throttle_average: ${throttle_time}
|
||||
# - heartbeat: ${watt_heartbeat}
|
||||
accuracy_decimals: 1
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${sct006}
|
||||
phase_b:
|
||||
power:
|
||||
name: ${friendly_name} ${ct08Name} [W]
|
||||
id: ct8Watts
|
||||
filters:
|
||||
- or:
|
||||
- delta: ${watt_delta}
|
||||
- throttle_average: ${throttle_time}
|
||||
# - heartbeat: ${watt_heartbeat}
|
||||
- multiply: -1
|
||||
accuracy_decimals: 1
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${sct006}
|
||||
phase_c:
|
||||
power:
|
||||
name: ${friendly_name} ${ct09Name} [W]
|
||||
id: ct9Watts
|
||||
filters:
|
||||
- or:
|
||||
- delta: ${watt_delta}
|
||||
- throttle_average: ${throttle_time}
|
||||
# - heartbeat: ${watt_heartbeat}
|
||||
accuracy_decimals: 1
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${sct013}
|
||||
line_frequency: 60Hz
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
#IC2 AddOn 1
|
||||
- platform: atm90e32
|
||||
cs_pin: ${ic2_addon1}
|
||||
phase_a:
|
||||
power:
|
||||
name: ${friendly_name} ${ct10Name} [W]
|
||||
id: ct10Watts
|
||||
filters:
|
||||
- or:
|
||||
- delta: ${watt_delta}
|
||||
- throttle_average: ${throttle_time}
|
||||
# - heartbeat: ${watt_heartbeat}
|
||||
accuracy_decimals: 1
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${sct006}
|
||||
phase_b:
|
||||
power:
|
||||
name: ${friendly_name} ${ct11Name} [W]
|
||||
id: ct11Watts
|
||||
filters:
|
||||
- or:
|
||||
- delta: ${watt_delta}
|
||||
- throttle_average: ${throttle_time}
|
||||
# - heartbeat: ${watt_heartbeat}
|
||||
- multiply: -1
|
||||
accuracy_decimals: 1
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${sct010}
|
||||
phase_c:
|
||||
power:
|
||||
name: ${friendly_name} ${ct12Name} [W]
|
||||
id: ct12Watts
|
||||
filters:
|
||||
- or:
|
||||
- delta: ${watt_delta}
|
||||
- throttle_average: ${throttle_time}
|
||||
# - heartbeat: ${watt_heartbeat}
|
||||
- multiply: -1
|
||||
accuracy_decimals: 1
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${sct006}
|
||||
line_frequency: 60Hz
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
|
||||
#IC1 AddOn 2
|
||||
- platform: atm90e32
|
||||
cs_pin: ${ic1_addon2}
|
||||
phase_a:
|
||||
power:
|
||||
name: ${friendly_name} ${ct13Name} [W]
|
||||
id: ct13Watts
|
||||
filters:
|
||||
- or:
|
||||
- delta: ${watt_delta}
|
||||
- throttle_average: ${throttle_time}
|
||||
# - heartbeat: ${watt_heartbeat}
|
||||
- multiply: -1
|
||||
accuracy_decimals: 1
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${sct006}
|
||||
phase_b:
|
||||
power:
|
||||
name: ${friendly_name} ${ct14Name} [W]
|
||||
id: ct14Watts
|
||||
filters:
|
||||
- or:
|
||||
- delta: ${watt_delta}
|
||||
- throttle_average: ${throttle_time}
|
||||
# - heartbeat: ${watt_heartbeat}
|
||||
- multiply: -1
|
||||
accuracy_decimals: 1
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${sct006}
|
||||
phase_c:
|
||||
power:
|
||||
name: ${friendly_name} ${ct15Name} [W]
|
||||
id: ct15Watts
|
||||
filters:
|
||||
- or:
|
||||
- delta: ${watt_delta}
|
||||
- throttle_average: ${throttle_time}
|
||||
# - heartbeat: ${watt_heartbeat}
|
||||
- multiply: -1
|
||||
accuracy_decimals: 1
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${sct006}
|
||||
line_frequency: 60Hz
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
#IC2 AddOn 2
|
||||
- platform: atm90e32
|
||||
cs_pin: ${ic2_addon2}
|
||||
phase_a:
|
||||
power:
|
||||
name: ${friendly_name} ${ct16Name} [W]
|
||||
id: ct16Watts
|
||||
filters:
|
||||
- or:
|
||||
- delta: ${watt_delta}
|
||||
- throttle_average: ${throttle_time}
|
||||
# - heartbeat: ${watt_heartbeat}
|
||||
accuracy_decimals: 1
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${sct006}
|
||||
phase_b:
|
||||
power:
|
||||
name: ${friendly_name} ${ct17Name} [W]
|
||||
id: ct17Watts
|
||||
filters:
|
||||
- or:
|
||||
- delta: ${watt_delta}
|
||||
- throttle_average: ${throttle_time}
|
||||
# - heartbeat: ${watt_heartbeat}
|
||||
- multiply: -1
|
||||
accuracy_decimals: 1
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${sct006}
|
||||
phase_c:
|
||||
power:
|
||||
name: ${friendly_name} ${ct18Name} [W]
|
||||
id: ct18Watts
|
||||
filters:
|
||||
- or:
|
||||
- delta: ${watt_delta}
|
||||
- throttle_average: ${throttle_time}
|
||||
# - heartbeat: ${watt_heartbeat}
|
||||
- multiply: -1
|
||||
accuracy_decimals: 1
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${sct006}
|
||||
line_frequency: 60Hz
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
#IC1 AddOn 3
|
||||
- platform: atm90e32
|
||||
#do not use GPIO2 if ESP32 has an on-board LED assigned to it
|
||||
cs_pin: ${ic1_addon3}
|
||||
phase_a:
|
||||
power:
|
||||
name: ${friendly_name} ${ct19Name} [W]
|
||||
id: ct19Watts
|
||||
filters:
|
||||
- or:
|
||||
- delta: ${watt_delta}
|
||||
- throttle_average: ${throttle_time}
|
||||
# - heartbeat: ${watt_heartbeat}
|
||||
accuracy_decimals: 1
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${sct006}
|
||||
phase_b:
|
||||
power:
|
||||
name: ${friendly_name} ${ct20Name} [W]
|
||||
id: ct20Watts
|
||||
filters:
|
||||
- or:
|
||||
- delta: ${watt_delta}
|
||||
- throttle_average: ${throttle_time}
|
||||
# - heartbeat: ${watt_heartbeat}
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${sct006}
|
||||
phase_c:
|
||||
power:
|
||||
name: ${friendly_name} ${ct21Name} [W]
|
||||
id: ct21Watts
|
||||
filters:
|
||||
- or:
|
||||
- delta: ${watt_delta}
|
||||
- throttle_average: ${throttle_time}
|
||||
# - heartbeat: ${watt_heartbeat}
|
||||
accuracy_decimals: 1
|
||||
qos: 1
|
||||
retain: true
|
||||
availability:
|
||||
topic: ${mqtt_root_topic}/${devicename}/${ct21Name}_w/status
|
||||
payload_available: online
|
||||
payload_not_available: offline
|
||||
state_topic: ${mqtt_root_topic}/${devicename}/${ct21Name}_w
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${sct006}
|
||||
line_frequency: 60Hz
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
#IC2 AddOn 3
|
||||
- platform: atm90e32
|
||||
cs_pin: ${ic2_addon3}
|
||||
phase_a:
|
||||
power:
|
||||
#name: ${friendly_name} ${ct22Name} [W]
|
||||
internal: true
|
||||
id: ct22Watts
|
||||
filters:
|
||||
- or:
|
||||
- delta: ${watt_delta}
|
||||
- throttle_average: ${throttle_time}
|
||||
# - heartbeat: ${watt_heartbeat}
|
||||
accuracy_decimals: 1
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${sct010}
|
||||
phase_b:
|
||||
power:
|
||||
name: ${friendly_name} ${ct23Name} [W]
|
||||
id: ct23Watts
|
||||
filters:
|
||||
- or:
|
||||
- delta: ${watt_delta}
|
||||
- throttle_average: ${throttle_time}
|
||||
# - heartbeat: ${watt_heartbeat}
|
||||
- multiply: -1
|
||||
accuracy_decimals: 1
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${sct006}
|
||||
phase_c:
|
||||
power:
|
||||
name: ${friendly_name} ${ct24Name} [W]
|
||||
id: ct24Watts
|
||||
filters:
|
||||
- or:
|
||||
- delta: ${watt_delta}
|
||||
- throttle_average: ${throttle_time}
|
||||
# - heartbeat: ${watt_heartbeat}
|
||||
- multiply: -1
|
||||
accuracy_decimals: 1
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${sct006}
|
||||
line_frequency: 60Hz
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
|
||||
#Total Amps From Grid
|
||||
- platform: template
|
||||
name: ${friendly_name} Grid Total [A]
|
||||
id: totalAmpsFromGrid
|
||||
lambda: return id(ct1Amps).state + id(ct4Amps).state ;
|
||||
accuracy_decimals: 1
|
||||
unit_of_measurement: A
|
||||
device_class: current
|
||||
state_class: measurement
|
||||
update_interval: ${update_time}
|
||||
filters:
|
||||
- or:
|
||||
- delta: 2.0
|
||||
- throttle_average: ${throttle_time}
|
||||
# - heartbeat: ${watt_heartbeat}
|
||||
|
||||
#Total Watts From Grid
|
||||
- platform: template
|
||||
name: ${friendly_name} Grid Total [W]
|
||||
id: totalWattsFromGrid
|
||||
lambda: return id(ct1Watts).state + id(ct4Watts).state ;
|
||||
accuracy_decimals: 1
|
||||
unit_of_measurement: W
|
||||
device_class: power
|
||||
state_class: measurement
|
||||
update_interval: ${update_time}
|
||||
filters:
|
||||
- or:
|
||||
- delta: 5.0
|
||||
- throttle_average: ${throttle_time}
|
||||
# - heartbeat: ${watt_heartbeat}
|
||||
|
||||
#kWh From Grid
|
||||
- platform: total_daily_energy
|
||||
name: ${friendly_name} Grid [kWh]
|
||||
power_id: totalWattsFromGrid
|
||||
filters:
|
||||
- multiply: 0.001
|
||||
# - heartbeat: ${kwh_report_interval}
|
||||
unit_of_measurement: kWh
|
||||
device_class: energy
|
||||
state_class: total_increasing
|
||||
# min_save_interval: ${update_time}
|
||||
|
||||
# The CT for the Well needs to be calibrated.
|
||||
# In the interim, I'm using this lambda
|
||||
- platform: template
|
||||
name: ${friendly_name} ${ct22Name} [W]
|
||||
id: ct22WattsPositive
|
||||
state_class: measurement
|
||||
lambda: |-
|
||||
if (id(ct22Watts).state < 0){
|
||||
return 0;
|
||||
} else {
|
||||
return id(ct22Watts).state ;
|
||||
}
|
||||
accuracy_decimals: 1
|
||||
unit_of_measurement: W
|
||||
icon: mdi:lightning-bolt-circle
|
||||
update_interval: ${update_time}
|
||||
filters:
|
||||
- delta: 5.0
|
||||
# - heartbeat: ${watt_heartbeat}
|
||||
|
||||
# kWh from CT1
|
||||
# This is included in the grid calculation
|
||||
|
||||
# kWh from CT2 (the dryer)
|
||||
- platform: total_daily_energy
|
||||
name: ${friendly_name} ${ct02Name} [kWh]
|
||||
power_id: ct2Watts
|
||||
filters:
|
||||
- multiply: 0.001
|
||||
unit_of_measurement: kWh
|
||||
device_class: energy
|
||||
state_class: total_increasing
|
||||
# min_save_interval: ${update_time}
|
||||
|
||||
#kWh From CT 3
|
||||
- platform: total_daily_energy
|
||||
name: ${friendly_name} ${ct03Name} [kWh]
|
||||
power_id: ct3Watts
|
||||
filters:
|
||||
- multiply: 0.001
|
||||
unit_of_measurement: kWh
|
||||
device_class: energy
|
||||
state_class: total_increasing
|
||||
# min_save_interval: ${update_time}
|
||||
|
||||
# kWh From CT 4
|
||||
# This is included in the Grid calculation area
|
||||
|
||||
#kWh From CT 5
|
||||
- platform: total_daily_energy
|
||||
name: ${friendly_name} ${ct05Name} [kWh]
|
||||
power_id: ct5Watts
|
||||
filters:
|
||||
- multiply: 0.001
|
||||
unit_of_measurement: kWh
|
||||
device_class: energy
|
||||
state_class: total_increasing
|
||||
# min_save_interval: ${update_time}
|
||||
|
||||
#kWh From CT 6
|
||||
- platform: total_daily_energy
|
||||
name: ${friendly_name} ${ct06Name} [kWh]
|
||||
power_id: ct6Watts
|
||||
filters:
|
||||
- multiply: 0.001
|
||||
unit_of_measurement: kWh
|
||||
device_class: energy
|
||||
state_class: total_increasing
|
||||
# min_save_interval: ${update_time}
|
||||
|
||||
#kWh From CT 7
|
||||
- platform: total_daily_energy
|
||||
name: ${friendly_name} ${ct07Name} [kWh]
|
||||
power_id: ct7Watts
|
||||
filters:
|
||||
- multiply: 0.001
|
||||
unit_of_measurement: kWh
|
||||
device_class: energy
|
||||
state_class: total_increasing
|
||||
# min_save_interval: ${update_time}
|
||||
|
||||
#kWh From CT 8
|
||||
- platform: total_daily_energy
|
||||
name: ${friendly_name} ${ct08Name} [kWh]
|
||||
power_id: ct8Watts
|
||||
filters:
|
||||
- multiply: 0.001
|
||||
unit_of_measurement: kWh
|
||||
device_class: energy
|
||||
state_class: total_increasing
|
||||
# min_save_interval: ${update_time}
|
||||
|
||||
#kWh From CT 9
|
||||
- platform: total_daily_energy
|
||||
name: ${friendly_name} ${ct09Name} [kWh]
|
||||
power_id: ct9Watts
|
||||
filters:
|
||||
- multiply: 0.001
|
||||
unit_of_measurement: kWh
|
||||
device_class: energy
|
||||
state_class: total_increasing
|
||||
# min_save_interval: ${update_time}
|
||||
|
||||
#kWh From CT 10
|
||||
- platform: total_daily_energy
|
||||
name: ${friendly_name} ${ct10Name} [kWh]
|
||||
power_id: ct10Watts
|
||||
filters:
|
||||
- multiply: 0.001
|
||||
unit_of_measurement: kWh
|
||||
device_class: energy
|
||||
state_class: total_increasing
|
||||
# min_save_interval: ${update_time}
|
||||
|
||||
#kWh From CT 11 (Heat Pump)
|
||||
- platform: total_daily_energy
|
||||
name: ${friendly_name} ${ct11Name} [kWh]
|
||||
power_id: ct11Watts
|
||||
filters:
|
||||
- multiply: 0.001
|
||||
unit_of_measurement: kWh
|
||||
device_class: energy
|
||||
state_class: total_increasing
|
||||
# min_save_interval: ${update_time}
|
||||
|
||||
#kWh From CT 12
|
||||
- platform: total_daily_energy
|
||||
name: ${friendly_name} ${ct12Name} [kWh]
|
||||
power_id: ct12Watts
|
||||
filters:
|
||||
- multiply: 0.001
|
||||
unit_of_measurement: kWh
|
||||
device_class: energy
|
||||
state_class: total_increasing
|
||||
# min_save_interval: ${update_time}
|
||||
|
||||
#kWh From CT 13
|
||||
- platform: total_daily_energy
|
||||
name: ${friendly_name} ${ct13Name} [kWh]
|
||||
power_id: ct13Watts
|
||||
filters:
|
||||
- multiply: 0.001
|
||||
unit_of_measurement: kWh
|
||||
device_class: energy
|
||||
state_class: total_increasing
|
||||
# min_save_interval: ${update_time}
|
||||
|
||||
#kWh From CT 14
|
||||
- platform: total_daily_energy
|
||||
name: ${friendly_name} ${ct14Name} [kWh]
|
||||
power_id: ct14Watts
|
||||
filters:
|
||||
- multiply: 0.001
|
||||
unit_of_measurement: kWh
|
||||
device_class: energy
|
||||
state_class: total_increasing
|
||||
# min_save_interval: ${update_time}
|
||||
|
||||
#kWh From CT 15
|
||||
- platform: total_daily_energy
|
||||
name: ${friendly_name} ${ct15Name} [kWh]
|
||||
power_id: ct15Watts
|
||||
filters:
|
||||
- multiply: 0.001
|
||||
unit_of_measurement: kWh
|
||||
device_class: energy
|
||||
state_class: total_increasing
|
||||
# min_save_interval: ${update_time}
|
||||
|
||||
#kWh From CT 16
|
||||
- platform: total_daily_energy
|
||||
name: ${friendly_name} ${ct16Name} [kWh]
|
||||
power_id: ct16Watts
|
||||
filters:
|
||||
- multiply: 0.001
|
||||
unit_of_measurement: kWh
|
||||
device_class: energy
|
||||
state_class: total_increasing
|
||||
# min_save_interval: ${update_time}
|
||||
|
||||
#kWh From CT 17
|
||||
- platform: total_daily_energy
|
||||
name: ${friendly_name} ${ct17Name} [kWh]
|
||||
power_id: ct17Watts
|
||||
filters:
|
||||
- multiply: 0.001
|
||||
unit_of_measurement: kWh
|
||||
device_class: energy
|
||||
state_class: total_increasing
|
||||
# min_save_interval: ${update_time}
|
||||
|
||||
#kWh From CT 18
|
||||
- platform: total_daily_energy
|
||||
name: ${friendly_name} ${ct18Name} [kWh]
|
||||
power_id: ct18Watts
|
||||
filters:
|
||||
- multiply: 0.001
|
||||
unit_of_measurement: kWh
|
||||
device_class: energy
|
||||
state_class: total_increasing
|
||||
# min_save_interval: ${update_time}
|
||||
|
||||
#kWh From CT 19
|
||||
# this is not used
|
||||
# - platform: total_daily_energy
|
||||
# name: ${friendly_name} ${ct19Name} [kWh]
|
||||
# power_id: ct19Watts
|
||||
# filters:
|
||||
# - multiply: 0.001
|
||||
# - throttle_average: ${kwh_report_interval}
|
||||
# unit_of_measurement: kWh
|
||||
# device_class: energy
|
||||
# state_class: total_increasing
|
||||
# # min_save_interval: ${update_time}
|
||||
|
||||
#kWh From CT 20
|
||||
- platform: total_daily_energy
|
||||
name: ${friendly_name} ${ct20Name} [kWh]
|
||||
power_id: ct20Watts
|
||||
filters:
|
||||
- multiply: 0.001
|
||||
unit_of_measurement: kWh
|
||||
device_class: energy
|
||||
state_class: total_increasing
|
||||
# min_save_interval: ${update_time}
|
||||
|
||||
#kWh From CT 21
|
||||
- platform: total_daily_energy
|
||||
name: ${friendly_name} ${ct21Name} [kWh]
|
||||
power_id: ct21Watts
|
||||
filters:
|
||||
- multiply: 0.001
|
||||
unit_of_measurement: kWh
|
||||
device_class: energy
|
||||
state_class: total_increasing
|
||||
qos: 1
|
||||
retain: true
|
||||
availability:
|
||||
topic: ${mqtt_root_topic}/${devicename}/${ct21Name}_kwh/status
|
||||
payload_available: online
|
||||
payload_not_available: offline
|
||||
state_topic: ${mqtt_root_topic}/${devicename}/${ct21Name}_kwh
|
||||
# min_save_interval: ${update_time}
|
||||
|
||||
#kWh From CT 22
|
||||
- platform: total_daily_energy
|
||||
name: ${friendly_name} ${ct22Name} [kWh]
|
||||
power_id: ct22WattsPositive
|
||||
filters:
|
||||
- multiply: 0.001
|
||||
unit_of_measurement: kWh
|
||||
device_class: energy
|
||||
state_class: total_increasing
|
||||
# min_save_interval: ${update_time}
|
||||
|
||||
#kWh From CT 23
|
||||
- platform: total_daily_energy
|
||||
name: ${friendly_name} ${ct23Name} [kWh]
|
||||
power_id: ct23Watts
|
||||
filters:
|
||||
- multiply: 0.001
|
||||
unit_of_measurement: kWh
|
||||
device_class: energy
|
||||
state_class: total_increasing
|
||||
# min_save_interval: ${update_time}
|
||||
|
||||
#kWh From CT 24
|
||||
- platform: total_daily_energy
|
||||
name: ${friendly_name} ${ct24Name} [kWh]
|
||||
power_id: ct24Watts
|
||||
filters:
|
||||
- multiply: 0.001
|
||||
unit_of_measurement: kWh
|
||||
device_class: energy
|
||||
state_class: total_increasing
|
||||
# min_save_interval: ${update_time}
|
||||
@@ -0,0 +1,68 @@
|
||||
# CircuitSetup 6 Channel Energy Meter ESPHome common variables
|
||||
|
||||
esp32:
|
||||
board: nodemcu-32s
|
||||
cpu_frequency: 240MHz
|
||||
framework:
|
||||
# ESPHome v2025.7.0 update to allow more than 6 SPI hardware devices on ESP-IDF
|
||||
type: esp-idf
|
||||
|
||||
# Enable logging
|
||||
logger:
|
||||
|
||||
debug:
|
||||
update_interval: 10s
|
||||
|
||||
spi:
|
||||
clk_pin: 18
|
||||
miso_pin: 19
|
||||
mosi_pin: 23
|
||||
|
||||
#Wifi signal
|
||||
sensor:
|
||||
- platform: wifi_signal
|
||||
name: ${disp_name} WiFi
|
||||
id: wifi_signal_db
|
||||
entity_category: diagnostic
|
||||
update_interval: 60s
|
||||
|
||||
- platform: copy
|
||||
source_id: wifi_signal_db
|
||||
id: wifi_signal_pct
|
||||
name: ${friendly_name} WiFi %
|
||||
filters:
|
||||
- lambda: return min(max(2 * (x + 100.0), 0.0), 100.0);
|
||||
unit_of_measurement: "%"
|
||||
entity_category: diagnostic
|
||||
|
||||
- platform: debug
|
||||
free:
|
||||
name: "Heap Free"
|
||||
id: heap_free_sensor
|
||||
entity_category: diagnostic
|
||||
loop_time:
|
||||
name: "Loop Time"
|
||||
id: loop_time_sensor
|
||||
entity_category: diagnostic
|
||||
|
||||
- platform: uptime
|
||||
name: Uptime
|
||||
id: uptime_sensor
|
||||
entity_category: diagnostic
|
||||
|
||||
text_sensor:
|
||||
- platform: debug
|
||||
reset_reason:
|
||||
name: "Reset Reason"
|
||||
id: reset_reason_sensor
|
||||
entity_category: diagnostic
|
||||
|
||||
button:
|
||||
- platform: restart
|
||||
name: Restart
|
||||
id: restart_button
|
||||
entity_category: config
|
||||
|
||||
time:
|
||||
- platform: homeassistant
|
||||
id: homeassistant_time
|
||||
@@ -0,0 +1,65 @@
|
||||
# CircuitSetup 6 Channel Energy Meter ESPHome common variables
|
||||
# using the Lilygo T-ETH-Lite ESP32S3 and the CircuitSetup 6 Channel Energy Meter Ethernet Adapter
|
||||
|
||||
esp32:
|
||||
board: esp32-s3-devkitc-1
|
||||
cpu_frequency: 240MHz
|
||||
framework:
|
||||
type: esp-idf
|
||||
|
||||
# Enable logging
|
||||
logger:
|
||||
hardware_uart: UART0
|
||||
level: DEBUG
|
||||
|
||||
debug:
|
||||
update_interval: 5s
|
||||
|
||||
ethernet:
|
||||
type: W5500
|
||||
clk_pin: 10
|
||||
mosi_pin: 12
|
||||
miso_pin: 11
|
||||
cs_pin: 9
|
||||
interrupt_pin: 13
|
||||
reset_pin: 14
|
||||
clock_speed: 30Mhz
|
||||
|
||||
spi:
|
||||
interface: software
|
||||
clk_pin: 7
|
||||
miso_pin: 5
|
||||
mosi_pin: 6
|
||||
|
||||
sensor:
|
||||
- platform: debug
|
||||
free:
|
||||
name: "Heap Free"
|
||||
id: heap_free_sensor
|
||||
entity_category: diagnostic
|
||||
loop_time:
|
||||
name: "Loop Time"
|
||||
id: loop_time_sensor
|
||||
entity_category: diagnostic
|
||||
|
||||
- platform: uptime
|
||||
name: Uptime
|
||||
id: uptime_sensor
|
||||
entity_category: diagnostic
|
||||
|
||||
text_sensor:
|
||||
- platform: debug
|
||||
reset_reason:
|
||||
name: "Reset Reason"
|
||||
id: reset_reason_sensor
|
||||
entity_category: diagnostic
|
||||
|
||||
button:
|
||||
- platform: restart
|
||||
name: Restart
|
||||
id: restart_button
|
||||
entity_category: config
|
||||
|
||||
time:
|
||||
- platform: homeassistant
|
||||
id: homeassistant_time
|
||||
@@ -0,0 +1,67 @@
|
||||
# CircuitSetup 6 Channel Energy Meter ESPHome common variables
|
||||
# using the Waveshare ESP32-S3-ETH and the CircuitSetup 6 Channel Energy Meter Ethernet WS Adapter
|
||||
|
||||
esp32:
|
||||
board: esp32-s3-devkitc-1
|
||||
variant: esp32s3
|
||||
flash_size: 16MB
|
||||
cpu_frequency: 240MHz
|
||||
framework:
|
||||
type: esp-idf
|
||||
|
||||
# Enable logging
|
||||
logger:
|
||||
hardware_uart: UART0
|
||||
level: DEBUG
|
||||
|
||||
debug:
|
||||
update_interval: 5s
|
||||
|
||||
ethernet:
|
||||
type: W5500
|
||||
clk_pin: 13
|
||||
mosi_pin: 11
|
||||
miso_pin: 12
|
||||
cs_pin: 14
|
||||
interrupt_pin: 10
|
||||
reset_pin: 9
|
||||
clock_speed: 30Mhz
|
||||
|
||||
spi:
|
||||
interface: software
|
||||
clk_pin: 44
|
||||
miso_pin: 45
|
||||
mosi_pin: 43
|
||||
|
||||
sensor:
|
||||
- platform: debug
|
||||
free:
|
||||
name: "Heap Free"
|
||||
id: heap_free_sensor
|
||||
entity_category: diagnostic
|
||||
loop_time:
|
||||
name: "Loop Time"
|
||||
id: loop_time_sensor
|
||||
entity_category: diagnostic
|
||||
|
||||
- platform: uptime
|
||||
name: Uptime
|
||||
id: uptime_sensor
|
||||
entity_category: diagnostic
|
||||
|
||||
text_sensor:
|
||||
- platform: debug
|
||||
reset_reason:
|
||||
name: "Reset Reason"
|
||||
id: reset_reason_sensor
|
||||
entity_category: diagnostic
|
||||
|
||||
button:
|
||||
- platform: restart
|
||||
name: Restart
|
||||
id: restart_button
|
||||
entity_category: config
|
||||
|
||||
time:
|
||||
- platform: homeassistant
|
||||
id: homeassistant_time
|
||||
@@ -0,0 +1,220 @@
|
||||
# CircuitSetup 6 Channel Energy Meter Main Board + 1 Add-on Board config
|
||||
# See all options at https://esphome.io/components/sensor/atm90e32.html
|
||||
|
||||
substitutions:
|
||||
# Change the disp_name to something you want
|
||||
disp_name: energy-meter
|
||||
friendly_name: "CircuitSetup Energy Meter 12x"
|
||||
# Interval of how often the power data is updated
|
||||
update_time: 10s
|
||||
# Frequency of your electrical grid - 60Hz in North America, 50Hz otherwise
|
||||
electric_freq: "60Hz"
|
||||
|
||||
## The below names and IDs can be changed to whatever you want. IDs should not have spaces
|
||||
## Main board
|
||||
main_meter_name1: Meter 1-3
|
||||
main_meter_name2: Meter 4-6
|
||||
main_meter_id1: meter_main1
|
||||
main_meter_id2: meter_main2
|
||||
ct1_name: CT1
|
||||
ct2_name: CT2
|
||||
ct3_name: CT3
|
||||
ct4_name: CT4
|
||||
ct5_name: CT5
|
||||
ct6_name: CT6
|
||||
## Addon1
|
||||
addon1_name1: Addon1 7-9
|
||||
addon1_name2: Addon1 10-12
|
||||
addon1_id1: addon1_1
|
||||
addon1_id2: addon1_2
|
||||
ct7_name: CT7
|
||||
ct8_name: CT8
|
||||
ct9_name: CT9
|
||||
ct10_name: CT10
|
||||
ct11_name: CT11
|
||||
ct12_name: CT12
|
||||
|
||||
## Semi-Automatic Calibration ##
|
||||
# See https://esphome.io/components/sensor/atm90e32.html#calibration
|
||||
# WHEN CALIBRATION IS ENABLED, calculated values for offset and gain stored in memory take priority over config values
|
||||
# To save calculated calibration values, copy them from the logs to your config
|
||||
# then use the clear buttons to clear the calibration values from memory
|
||||
# Values are stored in the variables for gain below and offsets in their corresponding files
|
||||
# under /calibration/6chan_xxxx_offset_calibrations.yaml
|
||||
offset_calibration: "true"
|
||||
gain_calibration: "true"
|
||||
|
||||
## Gain Calibration Values ##
|
||||
# Change current_cal_ctX value to the corresponding CT's that you're using
|
||||
# For more precise calibration, see documentation for Semi-Auto calibration
|
||||
# Current Transformers:
|
||||
# 20A/25mA SCT-006: 11143
|
||||
# 30A/1V SCT-013-030: 8650
|
||||
# 50A/1V SCT-013-050: 15420
|
||||
# 50A/16.6mA SCT-010: 41334
|
||||
# 80A/26.6mA SCT-010: 41660
|
||||
# 100A/50ma SCT-013-000: 27518
|
||||
# 120A/40mA: SCT-016: 41787
|
||||
# 200A/100mA SCT-024: 27518
|
||||
# 200A/50mA SCT-024: 55036
|
||||
|
||||
## Main Board
|
||||
current_cal_ct1: '27518'
|
||||
current_cal_ct2: '27518'
|
||||
current_cal_ct3: '27518'
|
||||
current_cal_ct4: '27518'
|
||||
current_cal_ct5: '27518'
|
||||
current_cal_ct6: '27518'
|
||||
## Addon1
|
||||
current_cal_ct7: '27518'
|
||||
current_cal_ct8: '27518'
|
||||
current_cal_ct9: '27518'
|
||||
current_cal_ct10: '27518'
|
||||
current_cal_ct11: '27518'
|
||||
current_cal_ct12: '27518'
|
||||
# This only needs to be changed if you're using something other than the
|
||||
# Jameco 9VAC Transformer:
|
||||
voltage_cal1: '7305'
|
||||
voltage_cal2: '7305'
|
||||
|
||||
esphome:
|
||||
name: ${disp_name}
|
||||
friendly_name: "${friendly_name}"
|
||||
name_add_mac_suffix: true
|
||||
min_version: '2025.7.0'
|
||||
project:
|
||||
name: circuitsetup.6c-energy-meter-1-addon
|
||||
version: "1.7"
|
||||
|
||||
packages:
|
||||
remote_package:
|
||||
url: https://github.com/CircuitSetup/Expandable-6-Channel-ESP32-Energy-Meter
|
||||
ref: master
|
||||
refresh: 1d
|
||||
files:
|
||||
- Software/ESPHome/6chan_common.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_main_sensor.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_addon1.yaml
|
||||
|
||||
## Additional power quality sensors per CT/Phase
|
||||
## Uncomment to enable
|
||||
## details: https://esphome.io/components/sensor/atm90e32.html#configuration-variables
|
||||
#- Software/ESPHome/power_quality/6chan_main_power_quality.yaml
|
||||
#- Software/ESPHome/power_quality/6chan_addon1_power_quality.yaml
|
||||
|
||||
## Enables text status fields for each CT/Phase
|
||||
## details: https://esphome.io/components/sensor/atm90e32.html#text-sensor
|
||||
- Software/ESPHome/status_fields/6chan_main_status.yaml
|
||||
#- Software/ESPHome/status_fields/6chan_addon1_status.yaml
|
||||
|
||||
## Adds semi-automatic calibration buttons and reference fields
|
||||
## If enabled, make sure offset & gain calibration are set to "true" above
|
||||
## details: https://esphome.io/components/sensor/atm90e32.html#calibration
|
||||
- Software/ESPHome/calibration/6chan_main_calibration.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon1_calibration.yaml
|
||||
|
||||
## Additional offset calibration fields that should be copied per CT/Phase from the ESPHome logs
|
||||
## These do not need to be set unless you are seeing non-zero values when CTs or Voltage
|
||||
## should not be registering anything.
|
||||
#- Software/ESPHome/calibration/6chan_main_offset_calibrations.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon1_offset_calibrations.yaml
|
||||
|
||||
dashboard_import:
|
||||
package_import_url: github://CircuitSetup/Expandable-6-Channel-ESP32-Energy-Meter/Software/ESPHome/6chan_energy_meter_1-addon.yaml@master
|
||||
import_full_config: true
|
||||
|
||||
# Enable Home Assistant API
|
||||
# An encryption key is recommended and can be generated here:
|
||||
# https://esphome.io/components/api.html#configuration-variables
|
||||
api:
|
||||
# encryption:
|
||||
# key: "YOUR_ENCRYPTION_KEY_HERE"
|
||||
|
||||
# Enable OTA updating
|
||||
ota:
|
||||
- platform: esphome
|
||||
|
||||
# Set up a wifi access point
|
||||
wifi:
|
||||
ap:
|
||||
|
||||
# In combination with the `ap` this allows
|
||||
# provisioning wifi credentials to the device.
|
||||
captive_portal:
|
||||
|
||||
# Sets up Bluetooth LE to provision wifi credentials
|
||||
# to the device.
|
||||
esp32_improv:
|
||||
authorizer: none
|
||||
|
||||
# Sets up the improv via serial client for wifi provisioning
|
||||
improv_serial:
|
||||
|
||||
web_server:
|
||||
port: 80
|
||||
|
||||
sensor:
|
||||
## The max value for current that the meter can output is 65.535. If you expect to measure current over 65A,
|
||||
## divide the current_cal_ctx (above) by 2 (120A CT) or 4 (200A CT) and multiply the current and power values
|
||||
## by 2 or 4, uncommenting the below and changing the id and phase_x accordingly
|
||||
#- id: !extend ${main_meter_id1} # CTs 1-3
|
||||
# phase_a: # CT1
|
||||
# current:
|
||||
# filters:
|
||||
# - multiply: 2
|
||||
# power:
|
||||
# filters:
|
||||
# - multiply: 2
|
||||
#
|
||||
## uncomment if monitoring 2 voltages
|
||||
#- id: !extend ${main_meter_id2}
|
||||
# phase_a:
|
||||
# voltage:
|
||||
# name: Voltage 2
|
||||
# id: ic2Volts
|
||||
# accuracy_decimals: 1
|
||||
# frequency:
|
||||
# name: Frequency 2
|
||||
|
||||
## Comment out to show amps and watts per meter board in Home Assistant
|
||||
- id: !extend totalAmpsMain
|
||||
internal: true
|
||||
- id: !extend totalWattsMain
|
||||
internal: true
|
||||
- id: !extend totalAmpsAddOn1
|
||||
internal: true
|
||||
- id: !extend totalWattsAddOn1
|
||||
internal: true
|
||||
|
||||
#Total Amps
|
||||
###########
|
||||
- platform: template
|
||||
name: ${friendly_name} Total Amps
|
||||
id: totalAmps
|
||||
lambda: return id(totalAmpsMain).state + id(totalAmpsAddOn1).state ;
|
||||
accuracy_decimals: 2
|
||||
unit_of_measurement: A
|
||||
device_class: current
|
||||
update_interval: ${update_time}
|
||||
|
||||
#Total Watts
|
||||
############
|
||||
- platform: template
|
||||
name: ${friendly_name} Total Watts
|
||||
id: totalWatts
|
||||
lambda: return id(totalWattsMain).state + id(totalWattsAddOn1).state ;
|
||||
accuracy_decimals: 1
|
||||
unit_of_measurement: W
|
||||
device_class: power
|
||||
update_interval: ${update_time}
|
||||
|
||||
#kWh
|
||||
####
|
||||
- platform: total_daily_energy
|
||||
name: ${friendly_name} Total kWh
|
||||
power_id: totalWatts
|
||||
filters:
|
||||
- multiply: 0.001
|
||||
unit_of_measurement: kWh
|
||||
device_class: energy
|
||||
state_class: total_increasing
|
||||
@@ -0,0 +1,217 @@
|
||||
# CircuitSetup 6 Channel Energy Meter Main Board + 1 Add-on Board config
|
||||
# Uses the Lilygo T-ETH-Lite ESP32S3 and the CircuitSetup 6 Channel Energy Meter Ethernet Adapter
|
||||
# See all options at https://esphome.io/components/sensor/atm90e32.html
|
||||
|
||||
substitutions:
|
||||
# Change the disp_name to something you want
|
||||
disp_name: energy-meter
|
||||
friendly_name: "CircuitSetup Energy Meter 12x"
|
||||
# Interval of how often the power data is updated
|
||||
update_time: 10s
|
||||
# Frequency of your electrical grid - 60Hz in North America, 50Hz otherwise
|
||||
electric_freq: "60Hz"
|
||||
|
||||
## The below names and IDs can be changed to whatever you want. IDs should not have spaces
|
||||
## Main board
|
||||
main_meter_name1: Meter 1-3
|
||||
main_meter_name2: Meter 4-6
|
||||
main_meter_id1: meter_main1
|
||||
main_meter_id2: meter_main2
|
||||
ct1_name: CT1
|
||||
ct2_name: CT2
|
||||
ct3_name: CT3
|
||||
ct4_name: CT4
|
||||
ct5_name: CT5
|
||||
ct6_name: CT6
|
||||
## Addon1
|
||||
addon1_name1: Addon1 7-9
|
||||
addon1_name2: Addon1 10-12
|
||||
addon1_id1: addon1_1
|
||||
addon1_id2: addon1_2
|
||||
ct7_name: CT7
|
||||
ct8_name: CT8
|
||||
ct9_name: CT9
|
||||
ct10_name: CT10
|
||||
ct11_name: CT11
|
||||
ct12_name: CT12
|
||||
|
||||
## Semi-Automatic Calibration ##
|
||||
# See https://esphome.io/components/sensor/atm90e32.html#calibration
|
||||
# WHEN CALIBRATION IS ENABLED, calculated values for offset and gain stored in memory take priority over config values
|
||||
# To save calculated calibration values, copy them from the logs to your config
|
||||
# then use the clear buttons to clear the calibration values from memory
|
||||
# Values are stored in the variables for gain below and offsets in their corresponding files
|
||||
# under /calibration/6chan_xxxx_offset_calibrations.yaml
|
||||
offset_calibration: "true"
|
||||
gain_calibration: "true"
|
||||
|
||||
## Gain Calibration Values ##
|
||||
# Change current_cal_ctX value to the corresponding CT's that you're using
|
||||
# For more precise calibration, see documentation for Semi-Auto calibration
|
||||
# Current Transformers:
|
||||
# 20A/25mA SCT-006: 11143
|
||||
# 30A/1V SCT-013-030: 8650
|
||||
# 50A/1V SCT-013-050: 15420
|
||||
# 50A/16.6mA SCT-010: 41334
|
||||
# 80A/26.6mA SCT-010: 41660
|
||||
# 100A/50ma SCT-013-000: 27518
|
||||
# 120A/40mA: SCT-016: 41787
|
||||
# 200A/100mA SCT-024: 27518
|
||||
# 200A/50mA SCT-024: 55036
|
||||
|
||||
## Main Board
|
||||
current_cal_ct1: '27518'
|
||||
current_cal_ct2: '27518'
|
||||
current_cal_ct3: '27518'
|
||||
current_cal_ct4: '27518'
|
||||
current_cal_ct5: '27518'
|
||||
current_cal_ct6: '27518'
|
||||
## Addon1
|
||||
current_cal_ct7: '27518'
|
||||
current_cal_ct8: '27518'
|
||||
current_cal_ct9: '27518'
|
||||
current_cal_ct10: '27518'
|
||||
current_cal_ct11: '27518'
|
||||
current_cal_ct12: '27518'
|
||||
# This only needs to be changed if you're using something other than the
|
||||
# Jameco 9VAC Transformer:
|
||||
voltage_cal1: '7305'
|
||||
voltage_cal2: '7305'
|
||||
|
||||
esphome:
|
||||
name: ${disp_name}
|
||||
friendly_name: "${friendly_name}"
|
||||
name_add_mac_suffix: true
|
||||
min_version: '2025.5.0'
|
||||
platformio_options:
|
||||
board_build.flash_mode: dio
|
||||
project:
|
||||
name: circuitsetup.6c-energy-meter-1-addon-ethernet
|
||||
version: "1.7"
|
||||
|
||||
packages:
|
||||
remote_package:
|
||||
url: https://github.com/CircuitSetup/Expandable-6-Channel-ESP32-Energy-Meter
|
||||
ref: master
|
||||
refresh: 1d
|
||||
files:
|
||||
- Software/ESPHome/6chan_common_ethernet.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_main_sensor.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_addon1.yaml
|
||||
|
||||
## Additional power quality sensors per CT/Phase
|
||||
## Uncomment to enable
|
||||
## details: https://esphome.io/components/sensor/atm90e32.html#configuration-variables
|
||||
#- Software/ESPHome/power_quality/6chan_main_power_quality.yaml
|
||||
#- Software/ESPHome/power_quality/6chan_addon1_power_quality.yaml
|
||||
|
||||
## Enables text status fields for each CT/Phase
|
||||
## details: https://esphome.io/components/sensor/atm90e32.html#text-sensor
|
||||
- Software/ESPHome/status_fields/6chan_main_status.yaml
|
||||
#- Software/ESPHome/status_fields/6chan_addon1_status.yaml
|
||||
|
||||
## Adds semi-automatic calibration buttons and reference fields
|
||||
## If enabled, make sure offset & gain calibration are set to "true" above
|
||||
## details: https://esphome.io/components/sensor/atm90e32.html#calibration
|
||||
- Software/ESPHome/calibration/6chan_main_calibration.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon1_calibration.yaml
|
||||
|
||||
## Additional offset calibration fields that should be copied per CT/Phase from the ESPHome logs
|
||||
## These do not need to be set unless you are seeing non-zero values when CTs or Voltage
|
||||
## should not be registering anything.
|
||||
#- Software/ESPHome/calibration/6chan_main_offset_calibrations.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon1_offset_calibrations.yaml
|
||||
|
||||
dashboard_import:
|
||||
package_import_url: github://CircuitSetup/Expandable-6-Channel-ESP32-Energy-Meter/Software/ESPHome/6chan_energy_meter_1-addon_ethernet.yaml@master
|
||||
import_full_config: true
|
||||
|
||||
# Enable Home Assistant API
|
||||
# An encryption key is recommended and can be generated here:
|
||||
# https://esphome.io/components/api.html#configuration-variables
|
||||
api:
|
||||
# encryption:
|
||||
# key: "YOUR_ENCRYPTION_KEY_HERE"
|
||||
|
||||
# Enable OTA updating
|
||||
ota:
|
||||
- platform: esphome
|
||||
|
||||
web_server:
|
||||
port: 80
|
||||
|
||||
sensor:
|
||||
# CS Pin mappings for Lilygo T-ETH-Lite ESP32S3
|
||||
- id: !extend ${main_meter_id1}
|
||||
cs_pin: 8
|
||||
#- id: !extend ${main_meter_id2}
|
||||
# cs_pin: 4
|
||||
#- id: !extend ${addon1_id1}
|
||||
# cs_pin: 0
|
||||
#- id: !extend ${addon1_id2}
|
||||
# cs_pin: 16
|
||||
|
||||
## The max value for current that the meter can output is 65.535. If you expect to measure current over 65A,
|
||||
## divide the current_cal_ctx (above) by 2 (120A CT) or 4 (200A CT) and multiply the current and power values
|
||||
## by 2 or 4, uncommenting the below and changing the id and phase_x accordingly
|
||||
#- id: !extend ${main_meter_id1} # CTs 1-3
|
||||
# phase_a: # CT1
|
||||
# current:
|
||||
# filters:
|
||||
# - multiply: 2
|
||||
# power:
|
||||
# filters:
|
||||
# - multiply: 2
|
||||
#
|
||||
## uncomment if monitoring 2 voltages
|
||||
#- id: !extend ${main_meter_id2}
|
||||
# phase_a:
|
||||
# voltage:
|
||||
# name: Voltage 2
|
||||
# id: ic2Volts
|
||||
# accuracy_decimals: 1
|
||||
# frequency:
|
||||
# name: Frequency 2
|
||||
|
||||
## Comment out to show amps and watts per meter board in Home Assistant
|
||||
- id: !extend totalAmpsMain
|
||||
internal: true
|
||||
- id: !extend totalWattsMain
|
||||
internal: true
|
||||
- id: !extend totalAmpsAddOn1
|
||||
internal: true
|
||||
- id: !extend totalWattsAddOn1
|
||||
internal: true
|
||||
|
||||
#Total Amps
|
||||
###########
|
||||
- platform: template
|
||||
name: ${friendly_name} Total Amps
|
||||
id: totalAmps
|
||||
lambda: return id(totalAmpsMain).state + id(totalAmpsAddOn1).state ;
|
||||
accuracy_decimals: 2
|
||||
unit_of_measurement: A
|
||||
device_class: current
|
||||
update_interval: ${update_time}
|
||||
|
||||
#Total Watts
|
||||
############
|
||||
- platform: template
|
||||
name: ${friendly_name} Total Watts
|
||||
id: totalWatts
|
||||
lambda: return id(totalWattsMain).state + id(totalWattsAddOn1).state ;
|
||||
accuracy_decimals: 1
|
||||
unit_of_measurement: W
|
||||
device_class: power
|
||||
update_interval: ${update_time}
|
||||
|
||||
#kWh
|
||||
####
|
||||
- platform: total_daily_energy
|
||||
name: ${friendly_name} Total kWh
|
||||
power_id: totalWatts
|
||||
filters:
|
||||
- multiply: 0.001
|
||||
unit_of_measurement: kWh
|
||||
device_class: energy
|
||||
state_class: total_increasing
|
||||
@@ -0,0 +1,250 @@
|
||||
# CircuitSetup 6 Channel Energy Meter Main Board + 2 Add-on Boards config
|
||||
# See all options at https://esphome.io/components/sensor/atm90e32.html
|
||||
|
||||
substitutions:
|
||||
# Change the disp_name to something you want
|
||||
disp_name: energy-meter
|
||||
friendly_name: "CircuitSetup Energy Meter 18x"
|
||||
# Interval of how often the power data is updated
|
||||
update_time: 10s
|
||||
# Frequency of your electrical grid - 60Hz in North America, 50Hz otherwise
|
||||
electric_freq: "60Hz"
|
||||
|
||||
## The below names and IDs can be changed to whatever you want. IDs should not have spaces
|
||||
## Main board
|
||||
main_meter_name1: Meter 1-3
|
||||
main_meter_name2: Meter 4-6
|
||||
main_meter_id1: meter_main1
|
||||
main_meter_id2: meter_main2
|
||||
ct1_name: CT1
|
||||
ct2_name: CT2
|
||||
ct3_name: CT3
|
||||
ct4_name: CT4
|
||||
ct5_name: CT5
|
||||
ct6_name: CT6
|
||||
## Addon1
|
||||
addon1_name1: Addon1 7-9
|
||||
addon1_name2: Addon1 10-12
|
||||
addon1_id1: addon1_1
|
||||
addon1_id2: addon1_2
|
||||
ct7_name: CT7
|
||||
ct8_name: CT8
|
||||
ct9_name: CT9
|
||||
ct10_name: CT10
|
||||
ct11_name: CT11
|
||||
ct12_name: CT12
|
||||
## Addon2
|
||||
addon2_name1: Addon2 13-15
|
||||
addon2_name2: Addon2 16-18
|
||||
addon2_id1: addon2_1
|
||||
addon2_id2: addon2_2
|
||||
ct13_name: CT13
|
||||
ct14_name: CT14
|
||||
ct15_name: CT15
|
||||
ct16_name: CT16
|
||||
ct17_name: CT17
|
||||
ct18_name: CT18
|
||||
|
||||
## Semi-Automatic Calibration ##
|
||||
# See https://esphome.io/components/sensor/atm90e32.html#calibration
|
||||
# WHEN CALIBRATION IS ENABLED, calculated values for offset and gain stored in memory take priority over config values
|
||||
# To save calculated calibration values, copy them from the logs to your config
|
||||
# then use the clear buttons to clear the calibration values from memory
|
||||
# Values are stored in the variables for gain below and offsets in their corresponding files
|
||||
# under /calibration/6chan_xxxx_offset_calibrations.yaml
|
||||
offset_calibration: "true"
|
||||
gain_calibration: "true"
|
||||
|
||||
## Gain Calibration Values ##
|
||||
# Change current_cal_ctX value to the corresponding CT's that you're using
|
||||
# For more precise calibration, see documentation for Semi-Auto calibration
|
||||
# Current Transformers:
|
||||
# 20A/25mA SCT-006: 11143
|
||||
# 30A/1V SCT-013-030: 8650
|
||||
# 50A/1V SCT-013-050: 15420
|
||||
# 50A/16.6mA SCT-010: 41334
|
||||
# 80A/26.6mA SCT-010: 41660
|
||||
# 100A/50ma SCT-013-000: 27518
|
||||
# 120A/40mA: SCT-016: 41787
|
||||
# 200A/100mA SCT-024: 27518
|
||||
# 200A/50mA SCT-024: 55036
|
||||
|
||||
## Main Board
|
||||
current_cal_ct1: '27518'
|
||||
current_cal_ct2: '27518'
|
||||
current_cal_ct3: '27518'
|
||||
current_cal_ct4: '27518'
|
||||
current_cal_ct5: '27518'
|
||||
current_cal_ct6: '27518'
|
||||
## Addon1
|
||||
current_cal_ct7: '27518'
|
||||
current_cal_ct8: '27518'
|
||||
current_cal_ct9: '27518'
|
||||
current_cal_ct10: '27518'
|
||||
current_cal_ct11: '27518'
|
||||
current_cal_ct12: '27518'
|
||||
## Addon2
|
||||
current_cal_ct13: '27518'
|
||||
current_cal_ct14: '27518'
|
||||
current_cal_ct15: '27518'
|
||||
current_cal_ct16: '27518'
|
||||
current_cal_ct17: '27518'
|
||||
current_cal_ct18: '27518'
|
||||
# This only needs to be changed if you're using something other than the
|
||||
# Jameco 9VAC Transformer:
|
||||
voltage_cal1: '7305'
|
||||
voltage_cal2: '7305'
|
||||
|
||||
esphome:
|
||||
name: ${disp_name}
|
||||
friendly_name: "${friendly_name}"
|
||||
name_add_mac_suffix: true
|
||||
min_version: '2025.7.0'
|
||||
project:
|
||||
name: circuitsetup.6c-energy-meter-2-addons
|
||||
version: "1.7"
|
||||
|
||||
packages:
|
||||
remote_package:
|
||||
url: https://github.com/CircuitSetup/Expandable-6-Channel-ESP32-Energy-Meter
|
||||
ref: master
|
||||
refresh: 1d
|
||||
files:
|
||||
- Software/ESPHome/6chan_common.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_main_sensor.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_addon1.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_addon2.yaml
|
||||
|
||||
## Additional power quality sensors per CT/Phase
|
||||
## Uncomment to enable
|
||||
## Details: https://esphome.io/components/sensor/atm90e32.html#configuration-variables
|
||||
#- Software/ESPHome/power_quality/6chan_main_power_quality.yaml
|
||||
#- Software/ESPHome/power_quality/6chan_addon1_power_quality.yaml
|
||||
#- Software/ESPHome/power_quality/6chan_addon2_power_quality.yaml
|
||||
|
||||
## Enables text status fields for each CT/Phase
|
||||
## Uncomment to enable
|
||||
## Details: https://esphome.io/components/sensor/atm90e32.html#text-sensor
|
||||
- Software/ESPHome/status_fields/6chan_main_status.yaml
|
||||
#- Software/ESPHome/status_fields/6chan_addon1_status.yaml
|
||||
#- Software/ESPHome/status_fields/6chan_addon2_status.yaml
|
||||
|
||||
## Adds semi-automatic calibration buttons and reference fields
|
||||
## If enabled, make sure offset & gain calibration are set to "true" above
|
||||
## Uncomment to enable
|
||||
## Details: https://esphome.io/components/sensor/atm90e32.html#calibration
|
||||
- Software/ESPHome/calibration/6chan_main_calibration.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon1_calibration.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon2_calibration.yaml
|
||||
|
||||
## Additional offset calibration fields that should be copied per CT/Phase from the ESPHome logs
|
||||
## These do not need to be set unless you are seeing non-zero values when CTs or Voltage
|
||||
## should not be registering anything.
|
||||
#- Software/ESPHome/calibration/6chan_main_offset_calibrations.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon1_offset_calibrations.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon2_offset_calibrations.yaml
|
||||
|
||||
|
||||
dashboard_import:
|
||||
package_import_url: github://CircuitSetup/Expandable-6-Channel-ESP32-Energy-Meter/Software/ESPHome/6chan_energy_meter_2-addons.yaml@master
|
||||
import_full_config: true
|
||||
|
||||
# Enable Home Assistant API
|
||||
# An encryption key is recommended and can be generated here:
|
||||
# https://esphome.io/components/api.html#configuration-variables
|
||||
api:
|
||||
# encryption:
|
||||
# key: "YOUR_ENCRYPTION_KEY_HERE"
|
||||
|
||||
# Enable OTA updating
|
||||
ota:
|
||||
- platform: esphome
|
||||
|
||||
# Set up a wifi access point
|
||||
wifi:
|
||||
ap:
|
||||
|
||||
# In combination with the `ap` this allows
|
||||
# provisioning wifi credentials to the device.
|
||||
captive_portal:
|
||||
|
||||
# Sets up Bluetooth LE to provision wifi credentials
|
||||
# to the device.
|
||||
esp32_improv:
|
||||
authorizer: none
|
||||
|
||||
# Sets up the improv via serial client for wifi provisioning
|
||||
improv_serial:
|
||||
|
||||
web_server:
|
||||
port: 80
|
||||
|
||||
sensor:
|
||||
## The max value for current that the meter can output is 65.535. If you expect to measure current over 65A,
|
||||
## divide the current_cal_ctx (above) by 2 (120A CT) or 4 (200A CT) and multiply the current and power values
|
||||
## by 2 or 4, uncommenting the below and changing the id and phase_x accordingly
|
||||
#- id: !extend ${main_meter_id1} # CTs 1-3
|
||||
# phase_a: # CT1
|
||||
# current:
|
||||
# filters:
|
||||
# - multiply: 2
|
||||
# power:
|
||||
# filters:
|
||||
# - multiply: 2
|
||||
#
|
||||
## uncomment if monitoring 2 voltages
|
||||
#- id: !extend ${main_meter_id2}
|
||||
# phase_a:
|
||||
# voltage:
|
||||
# name: Voltage 2
|
||||
# id: ic2Volts
|
||||
# accuracy_decimals: 1
|
||||
# frequency:
|
||||
# name: Frequency 2
|
||||
|
||||
## Comment out to show amps and watts per meter board in Home Assistant
|
||||
- id: !extend totalAmpsMain
|
||||
internal: true
|
||||
- id: !extend totalWattsMain
|
||||
internal: true
|
||||
- id: !extend totalAmpsAddOn1
|
||||
internal: true
|
||||
- id: !extend totalWattsAddOn1
|
||||
internal: true
|
||||
- id: !extend totalAmpsAddOn2
|
||||
internal: true
|
||||
- id: !extend totalWattsAddOn2
|
||||
internal: true
|
||||
|
||||
#Total Amps
|
||||
###########
|
||||
- platform: template
|
||||
name: ${friendly_name} Total Amps
|
||||
id: totalAmps
|
||||
lambda: return id(totalAmpsMain).state + id(totalAmpsAddOn1).state + id(totalAmpsAddOn2).state ;
|
||||
accuracy_decimals: 2
|
||||
unit_of_measurement: A
|
||||
device_class: current
|
||||
update_interval: ${update_time}
|
||||
|
||||
#Total Watts
|
||||
############
|
||||
- platform: template
|
||||
name: ${friendly_name} Total Watts
|
||||
id: totalWatts
|
||||
lambda: return id(totalWattsMain).state + id(totalWattsAddOn1).state + id(totalWattsAddOn2).state ;
|
||||
accuracy_decimals: 1
|
||||
unit_of_measurement: W
|
||||
device_class: power
|
||||
update_interval: ${update_time}
|
||||
|
||||
#kWh
|
||||
####
|
||||
- platform: total_daily_energy
|
||||
name: ${friendly_name} Total kWh
|
||||
power_id: totalWatts
|
||||
filters:
|
||||
- multiply: 0.001
|
||||
unit_of_measurement: kWh
|
||||
device_class: energy
|
||||
state_class: total_increasing
|
||||
@@ -0,0 +1,250 @@
|
||||
# CircuitSetup 6 Channel Energy Meter Main Board + 2 Add-on Boards config
|
||||
# Uses the Lilygo T-ETH-Lite ESP32S3 and the CircuitSetup 6 Channel Energy Meter Ethernet Adapter
|
||||
# See all options at https://esphome.io/components/sensor/atm90e32.html
|
||||
|
||||
substitutions:
|
||||
# Change the disp_name to something you want
|
||||
disp_name: energy-meter
|
||||
friendly_name: "CircuitSetup Energy Meter 18x"
|
||||
# Interval of how often the power data is updated
|
||||
update_time: 10s
|
||||
# Frequency of your electrical grid - 60Hz in North America, 50Hz otherwise
|
||||
electric_freq: "60Hz"
|
||||
|
||||
## The below names and IDs can be changed to whatever you want. IDs should not have spaces
|
||||
## Main board
|
||||
main_meter_name1: Meter 1-3
|
||||
main_meter_name2: Meter 4-6
|
||||
main_meter_id1: meter_main1
|
||||
main_meter_id2: meter_main2
|
||||
ct1_name: CT1
|
||||
ct2_name: CT2
|
||||
ct3_name: CT3
|
||||
ct4_name: CT4
|
||||
ct5_name: CT5
|
||||
ct6_name: CT6
|
||||
## Addon1
|
||||
addon1_name1: Addon1 7-9
|
||||
addon1_name2: Addon1 10-12
|
||||
addon1_id1: addon1_1
|
||||
addon1_id2: addon1_2
|
||||
ct7_name: CT7
|
||||
ct8_name: CT8
|
||||
ct9_name: CT9
|
||||
ct10_name: CT10
|
||||
ct11_name: CT11
|
||||
ct12_name: CT12
|
||||
## Addon2
|
||||
addon2_name1: Addon2 13-15
|
||||
addon2_name2: Addon2 16-18
|
||||
addon2_id1: addon2_1
|
||||
addon2_id2: addon2_2
|
||||
ct13_name: CT13
|
||||
ct14_name: CT14
|
||||
ct15_name: CT15
|
||||
ct16_name: CT16
|
||||
ct17_name: CT17
|
||||
ct18_name: CT18
|
||||
|
||||
## Semi-Automatic Calibration ##
|
||||
# See https://esphome.io/components/sensor/atm90e32.html#calibration
|
||||
# WHEN CALIBRATION IS ENABLED, calculated values for offset and gain stored in memory take priority over config values
|
||||
# To save calculated calibration values, copy them from the logs to your config
|
||||
# then use the clear buttons to clear the calibration values from memory
|
||||
# Values are stored in the variables for gain below and offsets in their corresponding files
|
||||
# under /calibration/6chan_xxxx_offset_calibrations.yaml
|
||||
offset_calibration: "true"
|
||||
gain_calibration: "true"
|
||||
|
||||
## Gain Calibration Values ##
|
||||
# Change current_cal_ctX value to the corresponding CT's that you're using
|
||||
# For more precise calibration, see documentation for Semi-Auto calibration
|
||||
# Current Transformers:
|
||||
# 20A/25mA SCT-006: 11143
|
||||
# 30A/1V SCT-013-030: 8650
|
||||
# 50A/1V SCT-013-050: 15420
|
||||
# 50A/16.6mA SCT-010: 41334
|
||||
# 80A/26.6mA SCT-010: 41660
|
||||
# 100A/50ma SCT-013-000: 27518
|
||||
# 120A/40mA: SCT-016: 41787
|
||||
# 200A/100mA SCT-024: 27518
|
||||
# 200A/50mA SCT-024: 55036
|
||||
|
||||
## Main Board
|
||||
current_cal_ct1: '27518'
|
||||
current_cal_ct2: '27518'
|
||||
current_cal_ct3: '27518'
|
||||
current_cal_ct4: '27518'
|
||||
current_cal_ct5: '27518'
|
||||
current_cal_ct6: '27518'
|
||||
## Addon1
|
||||
current_cal_ct7: '27518'
|
||||
current_cal_ct8: '27518'
|
||||
current_cal_ct9: '27518'
|
||||
current_cal_ct10: '27518'
|
||||
current_cal_ct11: '27518'
|
||||
current_cal_ct12: '27518'
|
||||
## Addon2
|
||||
current_cal_ct13: '27518'
|
||||
current_cal_ct14: '27518'
|
||||
current_cal_ct15: '27518'
|
||||
current_cal_ct16: '27518'
|
||||
current_cal_ct17: '27518'
|
||||
current_cal_ct18: '27518'
|
||||
# This only needs to be changed if you're using something other than the
|
||||
# Jameco 9VAC Transformer:
|
||||
voltage_cal1: '7305'
|
||||
voltage_cal2: '7305'
|
||||
|
||||
esphome:
|
||||
name: ${disp_name}
|
||||
friendly_name: "${friendly_name}"
|
||||
name_add_mac_suffix: true
|
||||
min_version: '2025.5.0'
|
||||
platformio_options:
|
||||
board_build.flash_mode: dio
|
||||
project:
|
||||
name: circuitsetup.6c-energy-meter-2-addons-ethernet
|
||||
version: "1.7"
|
||||
|
||||
packages:
|
||||
remote_package:
|
||||
url: https://github.com/CircuitSetup/Expandable-6-Channel-ESP32-Energy-Meter
|
||||
ref: master
|
||||
refresh: 1d
|
||||
files:
|
||||
- Software/ESPHome/6chan_common_ethernet.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_main_sensor.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_addon1.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_addon2.yaml
|
||||
|
||||
## Additional power quality sensors per CT/Phase
|
||||
## Uncomment to enable
|
||||
## Details: https://esphome.io/components/sensor/atm90e32.html#configuration-variables
|
||||
#- Software/ESPHome/power_quality/6chan_main_power_quality.yaml
|
||||
#- Software/ESPHome/power_quality/6chan_addon1_power_quality.yaml
|
||||
#- Software/ESPHome/power_quality/6chan_addon2_power_quality.yaml
|
||||
|
||||
## Enables text status fields for each CT/Phase
|
||||
## Uncomment to enable
|
||||
## Details: https://esphome.io/components/sensor/atm90e32.html#text-sensor
|
||||
- Software/ESPHome/status_fields/6chan_main_status.yaml
|
||||
#- Software/ESPHome/status_fields/6chan_addon1_status.yaml
|
||||
#- Software/ESPHome/status_fields/6chan_addon2_status.yaml
|
||||
|
||||
## Adds semi-automatic calibration buttons and reference fields
|
||||
## If enabled, make sure offset & gain calibration are set to "true" above
|
||||
## Uncomment to enable
|
||||
## Details: https://esphome.io/components/sensor/atm90e32.html#calibration
|
||||
- Software/ESPHome/calibration/6chan_main_calibration.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon1_calibration.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon2_calibration.yaml
|
||||
|
||||
## Additional offset calibration fields that should be copied per CT/Phase from the ESPHome logs
|
||||
## These do not need to be set unless you are seeing non-zero values when CTs or Voltage
|
||||
## should not be registering anything.
|
||||
#- Software/ESPHome/calibration/6chan_main_offset_calibrations.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon1_offset_calibrations.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon2_offset_calibrations.yaml
|
||||
|
||||
dashboard_import:
|
||||
package_import_url: github://CircuitSetup/Expandable-6-Channel-ESP32-Energy-Meter/Software/ESPHome/6chan_energy_meter_2-addons_ethernet.yaml@master
|
||||
import_full_config: true
|
||||
|
||||
# Enable Home Assistant API
|
||||
# An encryption key is recommended and can be generated here:
|
||||
# https://esphome.io/components/api.html#configuration-variables
|
||||
api:
|
||||
# encryption:
|
||||
# key: "YOUR_ENCRYPTION_KEY_HERE"
|
||||
|
||||
# Enable OTA updating
|
||||
ota:
|
||||
- platform: esphome
|
||||
|
||||
web_server:
|
||||
port: 80
|
||||
|
||||
sensor:
|
||||
# CS Pin mappings for Lilygo T-ETH-Lite ESP32S3
|
||||
- id: !extend ${main_meter_id1}
|
||||
cs_pin: 8
|
||||
#- id: !extend ${main_meter_id2}
|
||||
# cs_pin: 4
|
||||
#- id: !extend ${addon1_id1}
|
||||
# cs_pin: 0
|
||||
#- id: !extend ${addon1_id2}
|
||||
# cs_pin: 16
|
||||
- id: !extend ${addon2_id1}
|
||||
cs_pin: 18
|
||||
#- id: !extend ${addon2_id2}
|
||||
# cs_pin: 17
|
||||
|
||||
## The max value for current that the meter can output is 65.535. If you expect to measure current over 65A,
|
||||
## divide the current_cal_ctx (above) by 2 (120A CT) or 4 (200A CT) and multiply the current and power values
|
||||
## by 2 or 4, uncommenting the below and changing the id and phase_x accordingly
|
||||
#- id: !extend ${main_meter_id1} # CTs 1-3
|
||||
# phase_a: # CT1
|
||||
# current:
|
||||
# filters:
|
||||
# - multiply: 2
|
||||
# power:
|
||||
# filters:
|
||||
# - multiply: 2
|
||||
#
|
||||
## uncomment if monitoring 2 voltages
|
||||
#- id: !extend ${main_meter_id2}
|
||||
# phase_a:
|
||||
# voltage:
|
||||
# name: Voltage 2
|
||||
# id: ic2Volts
|
||||
# accuracy_decimals: 1
|
||||
# frequency:
|
||||
# name: Frequency 2
|
||||
|
||||
## Comment out to show amps and watts per meter board in Home Assistant
|
||||
- id: !extend totalAmpsMain
|
||||
internal: true
|
||||
- id: !extend totalWattsMain
|
||||
internal: true
|
||||
- id: !extend totalAmpsAddOn1
|
||||
internal: true
|
||||
- id: !extend totalWattsAddOn1
|
||||
internal: true
|
||||
- id: !extend totalAmpsAddOn2
|
||||
internal: true
|
||||
- id: !extend totalWattsAddOn2
|
||||
internal: true
|
||||
|
||||
#Total Amps
|
||||
###########
|
||||
- platform: template
|
||||
name: ${friendly_name} Total Amps
|
||||
id: totalAmps
|
||||
lambda: return id(totalAmpsMain).state + id(totalAmpsAddOn1).state + id(totalAmpsAddOn2).state ;
|
||||
accuracy_decimals: 2
|
||||
unit_of_measurement: A
|
||||
device_class: current
|
||||
update_interval: ${update_time}
|
||||
|
||||
#Total Watts
|
||||
############
|
||||
- platform: template
|
||||
name: ${friendly_name} Total Watts
|
||||
id: totalWatts
|
||||
lambda: return id(totalWattsMain).state + id(totalWattsAddOn1).state + id(totalWattsAddOn2).state ;
|
||||
accuracy_decimals: 1
|
||||
unit_of_measurement: W
|
||||
device_class: power
|
||||
update_interval: ${update_time}
|
||||
|
||||
#kWh
|
||||
####
|
||||
- platform: total_daily_energy
|
||||
name: ${friendly_name} Total kWh
|
||||
power_id: totalWatts
|
||||
filters:
|
||||
- multiply: 0.001
|
||||
unit_of_measurement: kWh
|
||||
device_class: energy
|
||||
state_class: total_increasing
|
||||
@@ -0,0 +1,276 @@
|
||||
# CircuitSetup 6 Channel Energy Meter Main Board + 3 Add-on Boards config
|
||||
# See all options at https://esphome.io/components/sensor/atm90e32.html
|
||||
|
||||
substitutions:
|
||||
# Change the disp_name to something you want
|
||||
disp_name: energy-meter
|
||||
friendly_name: CircuitSetup Energy Meter 24x
|
||||
# Interval of how often the power data is updated
|
||||
update_time: 10s
|
||||
# Frequency of your electrical grid - 60Hz in North America, 50Hz otherwise
|
||||
electric_freq: "60Hz"
|
||||
|
||||
## The below names and IDs can be changed to whatever you want. IDs should not have spaces
|
||||
## Main board
|
||||
main_meter_name1: Meter 1-3
|
||||
main_meter_name2: Meter 4-6
|
||||
main_meter_id1: meter_main1
|
||||
main_meter_id2: meter_main2
|
||||
ct1_name: CT1
|
||||
ct2_name: CT2
|
||||
ct3_name: CT3
|
||||
ct4_name: CT4
|
||||
ct5_name: CT5
|
||||
ct6_name: CT6
|
||||
## Addon1
|
||||
addon1_name1: Addon1 7-9
|
||||
addon1_name2: Addon1 10-12
|
||||
addon1_id1: addon1_1
|
||||
addon1_id2: addon1_2
|
||||
ct7_name: CT7
|
||||
ct8_name: CT8
|
||||
ct9_name: CT9
|
||||
ct10_name: CT10
|
||||
ct11_name: CT11
|
||||
ct12_name: CT12
|
||||
## Addon2
|
||||
addon2_name1: Addon2 13-15
|
||||
addon2_name2: Addon2 16-18
|
||||
addon2_id1: addon2_1
|
||||
addon2_id2: addon2_2
|
||||
ct13_name: CT13
|
||||
ct14_name: CT14
|
||||
ct15_name: CT15
|
||||
ct16_name: CT16
|
||||
ct17_name: CT17
|
||||
ct18_name: CT18
|
||||
## Addon3
|
||||
addon3_name1: Addon3 19-21
|
||||
addon3_name2: Addon3 22-24
|
||||
addon3_id1: addon3_1
|
||||
addon3_id2: addon3_2
|
||||
ct19_name: CT19
|
||||
ct20_name: CT20
|
||||
ct21_name: CT21
|
||||
ct22_name: CT22
|
||||
ct23_name: CT23
|
||||
ct24_name: CT24
|
||||
|
||||
## Semi-Automatic Calibration ##
|
||||
# See https://esphome.io/components/sensor/atm90e32.html#calibration
|
||||
# WHEN CALIBRATION IS ENABLED, calculated values for offset and gain stored in memory take priority over config values
|
||||
# To save calculated calibration values, copy them from the logs to your config
|
||||
# then use the clear buttons to clear the calibration values from memory
|
||||
# Values are stored in the variables for gain below and offsets in their corresponding files
|
||||
# under /calibration/6chan_xxxx_offset_calibrations.yaml
|
||||
offset_calibration: "true"
|
||||
gain_calibration: "true"
|
||||
|
||||
## Gain Calibration Values ##
|
||||
# Change current_cal_ctX value to the corresponding CT's that you're using
|
||||
# For more precise calibration, see documentation for Semi-Auto calibration
|
||||
# Current Transformers:
|
||||
# 20A/25mA SCT-006: 11143
|
||||
# 30A/1V SCT-013-030: 8650
|
||||
# 50A/1V SCT-013-050: 15420
|
||||
# 50A/16.6mA SCT-010: 41334
|
||||
# 80A/26.6mA SCT-010: 41660
|
||||
# 100A/50ma SCT-013-000: 27518
|
||||
# 120A/40mA: SCT-016: 41787
|
||||
# 200A/100mA SCT-024: 27518
|
||||
# 200A/50mA SCT-024: 55036
|
||||
|
||||
## Main Board
|
||||
current_cal_ct1: '27518'
|
||||
current_cal_ct2: '27518'
|
||||
current_cal_ct3: '27518'
|
||||
current_cal_ct4: '27518'
|
||||
current_cal_ct5: '27518'
|
||||
current_cal_ct6: '27518'
|
||||
## Addon1
|
||||
current_cal_ct7: '27518'
|
||||
current_cal_ct8: '27518'
|
||||
current_cal_ct9: '27518'
|
||||
current_cal_ct10: '27518'
|
||||
current_cal_ct11: '27518'
|
||||
current_cal_ct12: '27518'
|
||||
## Addon2
|
||||
current_cal_ct13: '27518'
|
||||
current_cal_ct14: '27518'
|
||||
current_cal_ct15: '27518'
|
||||
current_cal_ct16: '27518'
|
||||
current_cal_ct17: '27518'
|
||||
current_cal_ct18: '27518'
|
||||
## Addon3
|
||||
current_cal_ct19: '27518'
|
||||
current_cal_ct20: '27518'
|
||||
current_cal_ct21: '27518'
|
||||
current_cal_ct22: '27518'
|
||||
current_cal_ct23: '27518'
|
||||
current_cal_ct24: '27518'
|
||||
# This only needs to be changed if you're using something other than the
|
||||
# Jameco 9VAC Transformer:
|
||||
voltage_cal1: '7305'
|
||||
voltage_cal2: '7305'
|
||||
|
||||
esphome:
|
||||
name: ${disp_name}
|
||||
friendly_name: "${friendly_name}"
|
||||
name_add_mac_suffix: true
|
||||
min_version: '2025.7.0'
|
||||
project:
|
||||
name: circuitsetup.6c-energy-meter-3-addons
|
||||
version: "1.7"
|
||||
|
||||
packages:
|
||||
remote_package:
|
||||
url: https://github.com/CircuitSetup/Expandable-6-Channel-ESP32-Energy-Meter
|
||||
ref: master
|
||||
refresh: 1d
|
||||
files:
|
||||
- Software/ESPHome/6chan_common.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_main_sensor.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_addon1.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_addon2.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_addon3.yaml
|
||||
|
||||
## Additional power quality sensors per CT/Phase
|
||||
## Uncomment to enable
|
||||
## Details: https://esphome.io/components/sensor/atm90e32.html#configuration-variables
|
||||
#- Software/ESPHome/power_quality/6chan_main_power_quality.yaml
|
||||
#- Software/ESPHome/power_quality/6chan_addon1_power_quality.yaml
|
||||
#- Software/ESPHome/power_quality/6chan_addon2_power_quality.yaml
|
||||
#- Software/ESPHome/power_quality/6chan_addon3_power_quality.yaml
|
||||
|
||||
## Enables text status fields for each CT/Phase
|
||||
## Uncomment to enable
|
||||
## Details: https://esphome.io/components/sensor/atm90e32.html#text-sensor
|
||||
- Software/ESPHome/status_fields/6chan_main_status.yaml
|
||||
#- Software/ESPHome/status_fields/6chan_addon1_status.yaml
|
||||
#- Software/ESPHome/status_fields/6chan_addon2_status.yaml
|
||||
#- Software/ESPHome/status_fields/6chan_addon3_status.yaml
|
||||
|
||||
## Adds semi-automatic calibration buttons and reference fields
|
||||
## If enabled, make sure offset & gain calibration are set to "true" above
|
||||
## Uncomment to enable
|
||||
## Details: https://esphome.io/components/sensor/atm90e32.html#calibration
|
||||
- Software/ESPHome/calibration/6chan_main_calibration.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon1_calibration.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon2_calibration.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon3_calibration.yaml
|
||||
|
||||
## Additional offset calibration fields that should be copied per CT/Phase from the ESPHome logs
|
||||
## These do not need to be set unless you are seeing non-zero values when CTs or Voltage
|
||||
## should not be registering anything.
|
||||
#- Software/ESPHome/calibration/6chan_main_offset_calibrations.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon1_offset_calibrations.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon2_offset_calibrations.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon3_offset_calibrations.yaml
|
||||
|
||||
dashboard_import:
|
||||
package_import_url: github://CircuitSetup/Expandable-6-Channel-ESP32-Energy-Meter/Software/ESPHome/6chan_energy_meter_3-addons.yaml@master
|
||||
import_full_config: true
|
||||
|
||||
# Enable Home Assistant API
|
||||
# An encryption key is recommended and can be generated here:
|
||||
# https://esphome.io/components/api.html#configuration-variables
|
||||
api:
|
||||
# encryption:
|
||||
# key: "YOUR_ENCRYPTION_KEY_HERE"
|
||||
|
||||
# Enable OTA updating
|
||||
ota:
|
||||
- platform: esphome
|
||||
|
||||
# Set up a wifi access point
|
||||
wifi:
|
||||
ap:
|
||||
|
||||
# In combination with the `ap` this allows
|
||||
# provisioning wifi credentials to the device.
|
||||
captive_portal:
|
||||
|
||||
# Sets up Bluetooth LE to provision wifi credentials
|
||||
# to the device.
|
||||
esp32_improv:
|
||||
authorizer: none
|
||||
|
||||
# Sets up the improv via serial client for wifi provisioning
|
||||
improv_serial:
|
||||
|
||||
web_server:
|
||||
port: 80
|
||||
|
||||
sensor:
|
||||
## The max value for current that the meter can output is 65.535. If you expect to measure current over 65A,
|
||||
## divide the current_cal_ctx (above) by 2 (120A CT) or 4 (200A CT) and multiply the current and power values
|
||||
## by 2 or 4, uncommenting the below and changing the id and phase_x accordingly
|
||||
#- id: !extend ${main_meter_id1} # CTs 1-3
|
||||
# phase_a: # CT1
|
||||
# current:
|
||||
# filters:
|
||||
# - multiply: 2
|
||||
# power:
|
||||
# filters:
|
||||
# - multiply: 2
|
||||
#
|
||||
## uncomment if monitoring 2 voltages
|
||||
#- id: !extend ${main_meter_id2}
|
||||
# phase_a:
|
||||
# voltage:
|
||||
# name: Voltage 2
|
||||
# id: ic2Volts
|
||||
# accuracy_decimals: 1
|
||||
# frequency:
|
||||
# name: Frequency 2
|
||||
|
||||
## Comment out to show amps and watts per meter board in Home Assistant
|
||||
- id: !extend totalAmpsMain
|
||||
internal: true
|
||||
- id: !extend totalWattsMain
|
||||
internal: true
|
||||
- id: !extend totalAmpsAddOn1
|
||||
internal: true
|
||||
- id: !extend totalWattsAddOn1
|
||||
internal: true
|
||||
- id: !extend totalAmpsAddOn2
|
||||
internal: true
|
||||
- id: !extend totalWattsAddOn2
|
||||
internal: true
|
||||
- id: !extend totalAmpsAddOn3
|
||||
internal: true
|
||||
- id: !extend totalWattsAddOn3
|
||||
internal: true
|
||||
|
||||
#Total Amps
|
||||
###########
|
||||
- platform: template
|
||||
name: ${friendly_name} Total Amps
|
||||
id: totalAmps
|
||||
lambda: return id(totalAmpsMain).state + id(totalAmpsAddOn1).state + id(totalAmpsAddOn2).state + id(totalAmpsAddOn3).state ;
|
||||
accuracy_decimals: 2
|
||||
unit_of_measurement: A
|
||||
device_class: current
|
||||
update_interval: ${update_time}
|
||||
|
||||
#Total Watts
|
||||
############
|
||||
- platform: template
|
||||
name: ${friendly_name} Total Watts
|
||||
id: totalWatts
|
||||
lambda: return id(totalWattsMain).state + id(totalWattsAddOn1).state + id(totalWattsAddOn2).state + id(totalWattsAddOn3).state ;
|
||||
accuracy_decimals: 1
|
||||
unit_of_measurement: W
|
||||
device_class: power
|
||||
update_interval: ${update_time}
|
||||
|
||||
#kWh
|
||||
####
|
||||
- platform: total_daily_energy
|
||||
name: ${friendly_name} Total kWh
|
||||
power_id: totalWatts
|
||||
filters:
|
||||
- multiply: 0.001
|
||||
unit_of_measurement: kWh
|
||||
device_class: energy
|
||||
state_class: total_increasing
|
||||
@@ -0,0 +1,320 @@
|
||||
# CircuitSetup 6 Channel Energy Meter Main Board + 3 Add-on Boards config
|
||||
# See all options at https://esphome.io/components/sensor/atm90e32.html
|
||||
#
|
||||
# Assumes 1st voltage is on main & add-on 1, 2nd voltage is on add-on 2 & 3
|
||||
# This is done by cutting the 2 bottom most pins, and attaching a 2nd
|
||||
# voltage transformer to add-on 2 VA2
|
||||
|
||||
|
||||
substitutions:
|
||||
# Change the disp_name to something you want
|
||||
disp_name: energy-meter
|
||||
friendly_name: CircuitSetup Energy Meter 24x
|
||||
# Interval of how often the power data is updated
|
||||
update_time: 10s
|
||||
# Frequency of your electrical grid - 60Hz in North America, 50Hz otherwise
|
||||
electric_freq: "60Hz"
|
||||
|
||||
## The below names and IDs can be changed to whatever you want. IDs should not have spaces
|
||||
## Main board
|
||||
main_meter_name1: Meter 1-3
|
||||
main_meter_name2: Meter 4-6
|
||||
main_meter_id1: meter_main1
|
||||
main_meter_id2: meter_main2
|
||||
ct1_name: CT1
|
||||
ct2_name: CT2
|
||||
ct3_name: CT3
|
||||
ct4_name: CT4
|
||||
ct5_name: CT5
|
||||
ct6_name: CT6
|
||||
## Addon1
|
||||
addon1_name1: Addon1 7-9
|
||||
addon1_name2: Addon1 10-12
|
||||
addon1_id1: addon1_1
|
||||
addon1_id2: addon1_2
|
||||
ct7_name: CT7
|
||||
ct8_name: CT8
|
||||
ct9_name: CT9
|
||||
ct10_name: CT10
|
||||
ct11_name: CT11
|
||||
ct12_name: CT12
|
||||
## Addon2
|
||||
addon2_name1: Addon2 13-15
|
||||
addon2_name2: Addon2 16-18
|
||||
addon2_id1: addon2_1
|
||||
addon2_id2: addon2_2
|
||||
ct13_name: CT13
|
||||
ct14_name: CT14
|
||||
ct15_name: CT15
|
||||
ct16_name: CT16
|
||||
ct17_name: CT17
|
||||
ct18_name: CT18
|
||||
## Addon3
|
||||
addon3_name1: Addon3 19-21
|
||||
addon3_name2: Addon3 22-24
|
||||
addon3_id1: addon3_1
|
||||
addon3_id2: addon3_2
|
||||
ct19_name: CT19
|
||||
ct20_name: CT20
|
||||
ct21_name: CT21
|
||||
ct22_name: CT22
|
||||
ct23_name: CT23
|
||||
ct24_name: CT24
|
||||
|
||||
## Semi-Automatic Calibration ##
|
||||
# See https://esphome.io/components/sensor/atm90e32.html#calibration
|
||||
# WHEN CALIBRATION IS ENABLED, calculated values for offset and gain stored in memory take priority over config values
|
||||
# To save calculated calibration values, copy them from the logs to your config
|
||||
# then use the clear buttons to clear the calibration values from memory
|
||||
# Values are stored in the variables for gain below and offsets in their corresponding files
|
||||
# under /calibration/6chan_xxxx_offset_calibrations.yaml
|
||||
offset_calibration: "true"
|
||||
gain_calibration: "true"
|
||||
|
||||
## Gain Calibration Values ##
|
||||
# Change current_cal_ctX value to the corresponding CT's that you're using
|
||||
# For more precise calibration, see documentation for Semi-Auto calibration
|
||||
# Current Transformers:
|
||||
# 20A/25mA SCT-006: 11143
|
||||
# 30A/1V SCT-013-030: 8650
|
||||
# 50A/1V SCT-013-050: 15420
|
||||
# 50A/16.6mA SCT-010: 41334
|
||||
# 80A/26.6mA SCT-010: 41660
|
||||
# 100A/50ma SCT-013-000: 27518
|
||||
# 120A/40mA: SCT-016: 41787
|
||||
# 200A/100mA SCT-024: 27518
|
||||
# 200A/50mA SCT-024: 55036
|
||||
|
||||
## Main Board
|
||||
current_cal_ct1: '27518'
|
||||
current_cal_ct2: '27518'
|
||||
current_cal_ct3: '27518'
|
||||
current_cal_ct4: '27518'
|
||||
current_cal_ct5: '27518'
|
||||
current_cal_ct6: '27518'
|
||||
## Addon1
|
||||
current_cal_ct7: '27518'
|
||||
current_cal_ct8: '27518'
|
||||
current_cal_ct9: '27518'
|
||||
current_cal_ct10: '27518'
|
||||
current_cal_ct11: '27518'
|
||||
current_cal_ct12: '27518'
|
||||
## Addon2
|
||||
current_cal_ct13: '27518'
|
||||
current_cal_ct14: '27518'
|
||||
current_cal_ct15: '27518'
|
||||
current_cal_ct16: '27518'
|
||||
current_cal_ct17: '27518'
|
||||
current_cal_ct18: '27518'
|
||||
## Addon3
|
||||
current_cal_ct19: '27518'
|
||||
current_cal_ct20: '27518'
|
||||
current_cal_ct21: '27518'
|
||||
current_cal_ct22: '27518'
|
||||
current_cal_ct23: '27518'
|
||||
current_cal_ct24: '27518'
|
||||
# This only needs to be changed if you're using something other than the
|
||||
# Jameco 9VAC Transformer:
|
||||
voltage_cal1: '7305'
|
||||
voltage_cal2: '7305'
|
||||
|
||||
esphome:
|
||||
name: ${disp_name}
|
||||
friendly_name: "${friendly_name}"
|
||||
name_add_mac_suffix: true
|
||||
min_version: '2025.7.0'
|
||||
project:
|
||||
name: circuitsetup.6c-energy-meter-3-addons-2-voltages
|
||||
version: "1.7"
|
||||
|
||||
packages:
|
||||
remote_package:
|
||||
url: https://github.com/CircuitSetup/Expandable-6-Channel-ESP32-Energy-Meter
|
||||
ref: master
|
||||
refresh: 1min
|
||||
files:
|
||||
- Software/ESPHome/6chan_common.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_main_sensor.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_addon1.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_addon2.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_addon3.yaml
|
||||
|
||||
## Additional power quality sensors per CT/Phase
|
||||
## Uncomment to enable
|
||||
## Details: https://esphome.io/components/sensor/atm90e32.html#configuration-variables
|
||||
#- Software/ESPHome/power_quality/6chan_main_power_quality.yaml
|
||||
#- Software/ESPHome/power_quality/6chan_addon1_power_quality.yaml
|
||||
#- Software/ESPHome/power_quality/6chan_addon2_power_quality.yaml
|
||||
#- Software/ESPHome/power_quality/6chan_addon3_power_quality.yaml
|
||||
|
||||
## Enables text status fields for each CT/Phase
|
||||
## Uncomment to enable
|
||||
## Details: https://esphome.io/components/sensor/atm90e32.html#text-sensor
|
||||
- Software/ESPHome/status_fields/6chan_main_status.yaml
|
||||
#- Software/ESPHome/status_fields/6chan_addon1_status.yaml
|
||||
#- Software/ESPHome/status_fields/6chan_addon2_status.yaml
|
||||
#- Software/ESPHome/status_fields/6chan_addon3_status.yaml
|
||||
|
||||
## Adds semi-automatic calibration buttons and reference fields
|
||||
## If enabled, make sure offset & gain calibration are set to "true" above
|
||||
## Uncomment to enable
|
||||
## Details: https://esphome.io/components/sensor/atm90e32.html#calibration
|
||||
- Software/ESPHome/calibration/6chan_main_calibration.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon1_calibration.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon2_calibration.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon3_calibration.yaml
|
||||
|
||||
## Additional offset calibration fields that should be copied per CT/Phase from the ESPHome logs
|
||||
## These do not need to be set unless you are seeing non-zero values when CTs or Voltage
|
||||
## should not be registering anything.
|
||||
#- Software/ESPHome/calibration/6chan_main_offset_calibrations.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon1_offset_calibrations.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon2_offset_calibrations.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon3_offset_calibrations.yaml
|
||||
|
||||
dashboard_import:
|
||||
package_import_url: github://CircuitSetup/Expandable-6-Channel-ESP32-Energy-Meter/Software/ESPHome/6chan_energy_meter_3-addons_2-voltages.yaml@master
|
||||
import_full_config: true
|
||||
|
||||
# Enable Home Assistant API
|
||||
# An encryption key is recommended and can be generated here:
|
||||
# https://esphome.io/components/api.html#configuration-variables
|
||||
api:
|
||||
# encryption:
|
||||
# key: "YOUR_ENCRYPTION_KEY_HERE"
|
||||
|
||||
# Enable OTA updating
|
||||
ota:
|
||||
- platform: esphome
|
||||
|
||||
# Set up a wifi access point
|
||||
wifi:
|
||||
ap:
|
||||
|
||||
# In combination with the `ap` this allows
|
||||
# provisioning wifi credentials to the device.
|
||||
captive_portal:
|
||||
|
||||
# Sets up Bluetooth LE to provision wifi credentials
|
||||
# to the device.
|
||||
esp32_improv:
|
||||
authorizer: none
|
||||
|
||||
# Sets up the improv via serial client for wifi provisioning
|
||||
improv_serial:
|
||||
|
||||
web_server:
|
||||
port: 80
|
||||
|
||||
## Status field for 2nd voltage
|
||||
text_sensor:
|
||||
- platform: atm90e32
|
||||
id: ${addon2_id1}
|
||||
frequency_status:
|
||||
name: "Frequency Status 2"
|
||||
|
||||
sensor:
|
||||
## The max value for current that the meter can output is 65.535. If you expect to measure current over 65A,
|
||||
## divide the current_cal_ctx (above) by 2 (120A CT) or 4 (200A CT) and multiply the current and power values
|
||||
## by 2 or 4, uncommenting the below and changing the id and phase_x accordingly
|
||||
#- id: !extend ${main_meter_id1} # CTs 1-3
|
||||
# phase_a: # CT1
|
||||
# current:
|
||||
# filters:
|
||||
# - multiply: 2
|
||||
# power:
|
||||
# filters:
|
||||
# - multiply: 2
|
||||
#
|
||||
|
||||
## assigns voltage_cal according to how hardware is set up to accept 2 voltage transformers
|
||||
# gain_voltage can be set independently if needed
|
||||
- id: !extend ${main_meter_id2}
|
||||
phase_a:
|
||||
gain_voltage: ${voltage_cal1}
|
||||
phase_b:
|
||||
gain_voltage: ${voltage_cal1}
|
||||
phase_c:
|
||||
gain_voltage: ${voltage_cal1}
|
||||
|
||||
- id: !extend ${addon1_id2}
|
||||
phase_a:
|
||||
gain_voltage: ${voltage_cal1}
|
||||
phase_b:
|
||||
gain_voltage: ${voltage_cal1}
|
||||
phase_c:
|
||||
gain_voltage: ${voltage_cal1}
|
||||
|
||||
## adds Voltage 2 to addon 2
|
||||
- id: !extend ${addon2_id1}
|
||||
phase_a:
|
||||
voltage:
|
||||
name: Voltage 2
|
||||
id: ic2Volts
|
||||
accuracy_decimals: 1
|
||||
gain_voltage: ${voltage_cal2}
|
||||
phase_b:
|
||||
gain_voltage: ${voltage_cal2}
|
||||
phase_c:
|
||||
gain_voltage: ${voltage_cal2}
|
||||
frequency:
|
||||
name: Frequency 2
|
||||
|
||||
- id: !extend ${addon3_id1}
|
||||
phase_a:
|
||||
gain_voltage: ${voltage_cal2}
|
||||
phase_b:
|
||||
gain_voltage: ${voltage_cal2}
|
||||
phase_c:
|
||||
gain_voltage: ${voltage_cal2}
|
||||
|
||||
## Comment out to show amps and watts per meter board in Home Assistant
|
||||
- id: !extend totalAmpsMain
|
||||
internal: true
|
||||
- id: !extend totalWattsMain
|
||||
internal: true
|
||||
- id: !extend totalAmpsAddOn1
|
||||
internal: true
|
||||
- id: !extend totalWattsAddOn1
|
||||
internal: true
|
||||
- id: !extend totalAmpsAddOn2
|
||||
internal: true
|
||||
- id: !extend totalWattsAddOn2
|
||||
internal: true
|
||||
- id: !extend totalAmpsAddOn3
|
||||
internal: true
|
||||
- id: !extend totalWattsAddOn3
|
||||
internal: true
|
||||
|
||||
#Total Amps
|
||||
###########
|
||||
- platform: template
|
||||
name: ${friendly_name} Total Amps
|
||||
id: totalAmps
|
||||
lambda: return id(totalAmpsMain).state + id(totalAmpsAddOn1).state + id(totalAmpsAddOn2).state + id(totalAmpsAddOn3).state ;
|
||||
accuracy_decimals: 2
|
||||
unit_of_measurement: A
|
||||
device_class: current
|
||||
update_interval: ${update_time}
|
||||
|
||||
#Total Watts
|
||||
############
|
||||
- platform: template
|
||||
name: ${friendly_name} Total Watts
|
||||
id: totalWatts
|
||||
lambda: return id(totalWattsMain).state + id(totalWattsAddOn1).state + id(totalWattsAddOn2).state + id(totalWattsAddOn3).state ;
|
||||
accuracy_decimals: 1
|
||||
unit_of_measurement: W
|
||||
device_class: power
|
||||
update_interval: ${update_time}
|
||||
|
||||
#kWh
|
||||
####
|
||||
- platform: total_daily_energy
|
||||
name: ${friendly_name} Total kWh
|
||||
power_id: totalWatts
|
||||
filters:
|
||||
- multiply: 0.001
|
||||
unit_of_measurement: kWh
|
||||
device_class: energy
|
||||
state_class: total_increasing
|
||||
@@ -0,0 +1,279 @@
|
||||
# CircuitSetup 6 Channel Energy Meter Main Board + 3 Add-on Boards config
|
||||
# Uses the Lilygo T-ETH-Lite ESP32S3 and the CircuitSetup 6 Channel Energy Meter Ethernet Adapter
|
||||
# See all options at https://esphome.io/components/sensor/atm90e32.html
|
||||
|
||||
substitutions:
|
||||
# Change the disp_name to something you want
|
||||
disp_name: energy-meter
|
||||
friendly_name: "CircuitSetup Energy Meter 24x"
|
||||
# Interval of how often the power data is updated
|
||||
update_time: 10s
|
||||
# Frequency of your electrical grid - 60Hz in North America, 50Hz otherwise
|
||||
electric_freq: "60Hz"
|
||||
|
||||
## The below names and IDs can be changed to whatever you want. IDs should not have spaces
|
||||
## Main board
|
||||
main_meter_name1: Meter 1-3
|
||||
main_meter_name2: Meter 4-6
|
||||
main_meter_id1: meter_main1
|
||||
main_meter_id2: meter_main2
|
||||
ct1_name: CT1
|
||||
ct2_name: CT2
|
||||
ct3_name: CT3
|
||||
ct4_name: CT4
|
||||
ct5_name: CT5
|
||||
ct6_name: CT6
|
||||
## Addon1
|
||||
addon1_name1: Addon1 7-9
|
||||
addon1_name2: Addon1 10-12
|
||||
addon1_id1: addon1_1
|
||||
addon1_id2: addon1_2
|
||||
ct7_name: CT7
|
||||
ct8_name: CT8
|
||||
ct9_name: CT9
|
||||
ct10_name: CT10
|
||||
ct11_name: CT11
|
||||
ct12_name: CT12
|
||||
## Addon2
|
||||
addon2_name1: Addon2 13-15
|
||||
addon2_name2: Addon2 16-18
|
||||
addon2_id1: addon2_1
|
||||
addon2_id2: addon2_2
|
||||
ct13_name: CT13
|
||||
ct14_name: CT14
|
||||
ct15_name: CT15
|
||||
ct16_name: CT16
|
||||
ct17_name: CT17
|
||||
ct18_name: CT18
|
||||
## Addon3
|
||||
addon3_name1: Addon3 19-21
|
||||
addon3_name2: Addon3 22-24
|
||||
addon3_id1: addon3_1
|
||||
addon3_id2: addon3_2
|
||||
ct19_name: CT19
|
||||
ct20_name: CT20
|
||||
ct21_name: CT21
|
||||
ct22_name: CT22
|
||||
ct23_name: CT23
|
||||
ct24_name: CT24
|
||||
|
||||
## Semi-Automatic Calibration ##
|
||||
# See https://esphome.io/components/sensor/atm90e32.html#calibration
|
||||
# WHEN CALIBRATION IS ENABLED, calculated values for offset and gain stored in memory take priority over config values
|
||||
# To save calculated calibration values, copy them from the logs to your config
|
||||
# then use the clear buttons to clear the calibration values from memory
|
||||
# Values are stored in the variables for gain below and offsets in their corresponding files
|
||||
# under /calibration/6chan_xxxx_offset_calibrations.yaml
|
||||
offset_calibration: "true"
|
||||
gain_calibration: "true"
|
||||
|
||||
## Gain Calibration Values ##
|
||||
# Change current_cal_ctX value to the corresponding CT's that you're using
|
||||
# For more precise calibration, see documentation for Semi-Auto calibration
|
||||
# Current Transformers:
|
||||
# 20A/25mA SCT-006: 11143
|
||||
# 30A/1V SCT-013-030: 8650
|
||||
# 50A/1V SCT-013-050: 15420
|
||||
# 50A/16.6mA SCT-010: 41334
|
||||
# 80A/26.6mA SCT-010: 41660
|
||||
# 100A/50ma SCT-013-000: 27518
|
||||
# 120A/40mA: SCT-016: 41787
|
||||
# 200A/100mA SCT-024: 27518
|
||||
# 200A/50mA SCT-024: 55036
|
||||
|
||||
## Main Board
|
||||
current_cal_ct1: '27518'
|
||||
current_cal_ct2: '27518'
|
||||
current_cal_ct3: '27518'
|
||||
current_cal_ct4: '27518'
|
||||
current_cal_ct5: '27518'
|
||||
current_cal_ct6: '27518'
|
||||
## Addon1
|
||||
current_cal_ct7: '27518'
|
||||
current_cal_ct8: '27518'
|
||||
current_cal_ct9: '27518'
|
||||
current_cal_ct10: '27518'
|
||||
current_cal_ct11: '27518'
|
||||
current_cal_ct12: '27518'
|
||||
## Addon2
|
||||
current_cal_ct13: '27518'
|
||||
current_cal_ct14: '27518'
|
||||
current_cal_ct15: '27518'
|
||||
current_cal_ct16: '27518'
|
||||
current_cal_ct17: '27518'
|
||||
current_cal_ct18: '27518'
|
||||
## Addon3
|
||||
current_cal_ct19: '27518'
|
||||
current_cal_ct20: '27518'
|
||||
current_cal_ct21: '27518'
|
||||
current_cal_ct22: '27518'
|
||||
current_cal_ct23: '27518'
|
||||
current_cal_ct24: '27518'
|
||||
# This only needs to be changed if you're using something other than the
|
||||
# Jameco 9VAC Transformer:
|
||||
voltage_cal1: '7305'
|
||||
voltage_cal2: '7305'
|
||||
|
||||
esphome:
|
||||
name: ${disp_name}
|
||||
friendly_name: "${friendly_name}"
|
||||
name_add_mac_suffix: true
|
||||
min_version: '2025.5.0'
|
||||
project:
|
||||
name: circuitsetup.6c-energy-meter-3-addons-ethernet
|
||||
version: "1.7"
|
||||
|
||||
packages:
|
||||
remote_package:
|
||||
url: https://github.com/CircuitSetup/Expandable-6-Channel-ESP32-Energy-Meter
|
||||
ref: master
|
||||
refresh: 1d
|
||||
files:
|
||||
- Software/ESPHome/6chan_common_ethernet.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_main_sensor.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_addon1.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_addon2.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_addon3.yaml
|
||||
|
||||
## Additional power quality sensors per CT/Phase
|
||||
## Uncomment to enable
|
||||
## Details: https://esphome.io/components/sensor/atm90e32.html#configuration-variables
|
||||
#- Software/ESPHome/power_quality/6chan_main_power_quality.yaml
|
||||
#- Software/ESPHome/power_quality/6chan_addon1_power_quality.yaml
|
||||
#- Software/ESPHome/power_quality/6chan_addon2_power_quality.yaml
|
||||
#- Software/ESPHome/power_quality/6chan_addon3_power_quality.yaml
|
||||
|
||||
## Enables text status fields for each CT/Phase
|
||||
## Uncomment to enable
|
||||
## Details: https://esphome.io/components/sensor/atm90e32.html#text-sensor
|
||||
- Software/ESPHome/status_fields/6chan_main_status.yaml
|
||||
#- Software/ESPHome/status_fields/6chan_addon1_status.yaml
|
||||
#- Software/ESPHome/status_fields/6chan_addon2_status.yaml
|
||||
#- Software/ESPHome/status_fields/6chan_addon3_status.yaml
|
||||
|
||||
## Adds semi-automatic calibration buttons and reference fields
|
||||
## If enabled, make sure offset & gain calibration are set to "true" above
|
||||
## Uncomment to enable
|
||||
## Details: https://esphome.io/components/sensor/atm90e32.html#calibration
|
||||
- Software/ESPHome/calibration/6chan_main_calibration.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon1_calibration.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon2_calibration.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon3_calibration.yaml
|
||||
|
||||
## Additional offset calibration fields that should be copied per CT/Phase from the ESPHome logs
|
||||
## These do not need to be set unless you are seeing non-zero values when CTs or Voltage
|
||||
## should not be registering anything.
|
||||
#- Software/ESPHome/calibration/6chan_main_offset_calibrations.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon1_offset_calibrations.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon2_offset_calibrations.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon3_offset_calibrations.yaml
|
||||
|
||||
dashboard_import:
|
||||
package_import_url: github://CircuitSetup/Expandable-6-Channel-ESP32-Energy-Meter/Software/ESPHome/6chan_energy_meter_3-addons_ethernet.yaml@master
|
||||
import_full_config: true
|
||||
|
||||
# Enable Home Assistant API
|
||||
# An encryption key is recommended and can be generated here:
|
||||
# https://esphome.io/components/api.html#configuration-variables
|
||||
api:
|
||||
# encryption:
|
||||
# key: "YOUR_ENCRYPTION_KEY_HERE"
|
||||
|
||||
# Enable OTA updating
|
||||
ota:
|
||||
- platform: esphome
|
||||
|
||||
web_server:
|
||||
port: 80
|
||||
|
||||
sensor:
|
||||
# CS Pin mappings for Lilygo T-ETH-Lite ESP32S3
|
||||
- id: !extend ${main_meter_id1}
|
||||
cs_pin: 8
|
||||
#- id: !extend ${main_meter_id2}
|
||||
# cs_pin: 4
|
||||
#- id: !extend ${addon1_id1}
|
||||
# cs_pin: 0
|
||||
#- id: !extend ${addon1_id2}
|
||||
# cs_pin: 16
|
||||
- id: !extend ${addon2_id1}
|
||||
cs_pin: 18
|
||||
#- id: !extend ${addon2_id2}
|
||||
# cs_pin: 17
|
||||
#- id: !extend ${addon3_id1}
|
||||
# cs_pin: 2
|
||||
#- id: !extend ${addon3_id2}
|
||||
# cs_pin: 21
|
||||
|
||||
## The max value for current that the meter can output is 65.535. If you expect to measure current over 65A,
|
||||
## divide the current_cal_ctx (above) by 2 (120A CT) or 4 (200A CT) and multiply the current and power values
|
||||
## by 2 or 4, uncommenting the below and changing the id and phase_x accordingly
|
||||
#- id: !extend ${main_meter_id1} # CTs 1-3
|
||||
# phase_a: # CT1
|
||||
# current:
|
||||
# filters:
|
||||
# - multiply: 2
|
||||
# power:
|
||||
# filters:
|
||||
# - multiply: 2
|
||||
#
|
||||
## uncomment if monitoring 2 voltages
|
||||
#- id: !extend ${main_meter_id2}
|
||||
# phase_a:
|
||||
# voltage:
|
||||
# name: Voltage 2
|
||||
# id: ic2Volts
|
||||
# accuracy_decimals: 1
|
||||
# frequency:
|
||||
# name: Frequency 2
|
||||
|
||||
## Comment out to show amps and watts per meter board in Home Assistant
|
||||
- id: !extend totalAmpsMain
|
||||
internal: true
|
||||
- id: !extend totalWattsMain
|
||||
internal: true
|
||||
- id: !extend totalAmpsAddOn1
|
||||
internal: true
|
||||
- id: !extend totalWattsAddOn1
|
||||
internal: true
|
||||
- id: !extend totalAmpsAddOn2
|
||||
internal: true
|
||||
- id: !extend totalWattsAddOn2
|
||||
internal: true
|
||||
- id: !extend totalAmpsAddOn3
|
||||
internal: true
|
||||
- id: !extend totalWattsAddOn3
|
||||
internal: true
|
||||
|
||||
#Total Amps
|
||||
###########
|
||||
- platform: template
|
||||
name: ${friendly_name} Total Amps
|
||||
id: totalAmps
|
||||
lambda: return id(totalAmpsMain).state + id(totalAmpsAddOn1).state + id(totalAmpsAddOn2).state + id(totalAmpsAddOn3).state ;
|
||||
accuracy_decimals: 2
|
||||
unit_of_measurement: A
|
||||
device_class: current
|
||||
update_interval: ${update_time}
|
||||
|
||||
#Total Watts
|
||||
############
|
||||
- platform: template
|
||||
name: ${friendly_name} Total Watts
|
||||
id: totalWatts
|
||||
lambda: return id(totalWattsMain).state + id(totalWattsAddOn1).state + id(totalWattsAddOn2).state + id(totalWattsAddOn3).state ;
|
||||
accuracy_decimals: 1
|
||||
unit_of_measurement: W
|
||||
device_class: power
|
||||
update_interval: ${update_time}
|
||||
|
||||
#kWh
|
||||
####
|
||||
- platform: total_daily_energy
|
||||
name: ${friendly_name} Total kWh
|
||||
power_id: totalWatts
|
||||
filters:
|
||||
- multiply: 0.001
|
||||
unit_of_measurement: kWh
|
||||
device_class: energy
|
||||
state_class: total_increasing
|
||||
@@ -0,0 +1,303 @@
|
||||
# CircuitSetup 6 Channel Energy Meter Main Board + 4 Add-on Boards config
|
||||
# See all options at https://esphome.io/components/sensor/atm90e32.html
|
||||
|
||||
substitutions:
|
||||
# Change the disp_name to something you want
|
||||
disp_name: energy-meter
|
||||
friendly_name: CircuitSetup Energy Meter 30x
|
||||
# Interval of how often the power data is updated
|
||||
update_time: 10s
|
||||
# Frequency of your electrical grid - 60Hz in North America, 50Hz otherwise
|
||||
electric_freq: "60Hz"
|
||||
|
||||
## The below names and IDs can be changed to whatever you want. IDs should not have spaces
|
||||
## Main board
|
||||
main_meter_name1: Meter 1-3
|
||||
main_meter_name2: Meter 4-6
|
||||
main_meter_id1: meter_main1
|
||||
main_meter_id2: meter_main2
|
||||
ct1_name: CT1
|
||||
ct2_name: CT2
|
||||
ct3_name: CT3
|
||||
ct4_name: CT4
|
||||
ct5_name: CT5
|
||||
ct6_name: CT6
|
||||
## Addon1
|
||||
addon1_name1: Addon1 7-9
|
||||
addon1_name2: Addon1 10-12
|
||||
addon1_id1: addon1_1
|
||||
addon1_id2: addon1_2
|
||||
ct7_name: CT7
|
||||
ct8_name: CT8
|
||||
ct9_name: CT9
|
||||
ct10_name: CT10
|
||||
ct11_name: CT11
|
||||
ct12_name: CT12
|
||||
## Addon2
|
||||
addon2_name1: Addon2 13-15
|
||||
addon2_name2: Addon2 16-18
|
||||
addon2_id1: addon2_1
|
||||
addon2_id2: addon2_2
|
||||
ct13_name: CT13
|
||||
ct14_name: CT14
|
||||
ct15_name: CT15
|
||||
ct16_name: CT16
|
||||
ct17_name: CT17
|
||||
ct18_name: CT18
|
||||
## Addon3
|
||||
addon3_name1: Addon3 19-21
|
||||
addon3_name2: Addon3 22-24
|
||||
addon3_id1: addon3_1
|
||||
addon3_id2: addon3_2
|
||||
ct19_name: CT19
|
||||
ct20_name: CT20
|
||||
ct21_name: CT21
|
||||
ct22_name: CT22
|
||||
ct23_name: CT23
|
||||
ct24_name: CT24
|
||||
## Addon4
|
||||
addon4_name1: Addon4 25-27
|
||||
addon4_name2: Addon4 28-30
|
||||
addon4_id1: addon4_1
|
||||
addon4_id2: addon4_2
|
||||
ct25_name: CT25
|
||||
ct26_name: CT26
|
||||
ct27_name: CT27
|
||||
ct28_name: CT28
|
||||
ct29_name: CT29
|
||||
ct30_name: CT30
|
||||
|
||||
## Semi-Automatic Calibration ##
|
||||
# See https://esphome.io/components/sensor/atm90e32.html#calibration
|
||||
# WHEN CALIBRATION IS ENABLED, calculated values for offset and gain stored in memory take priority over config values
|
||||
# To save calculated calibration values, copy them from the logs to your config
|
||||
# then use the clear buttons to clear the calibration values from memory
|
||||
# Values are stored in the variables for gain below and offsets in their corresponding files
|
||||
# under /calibration/6chan_xxxx_offset_calibrations.yaml
|
||||
offset_calibration: "true"
|
||||
gain_calibration: "true"
|
||||
|
||||
## Gain Calibration Values ##
|
||||
# Change current_cal_ctX value to the corresponding CT's that you're using
|
||||
# For more precise calibration, see documentation for Semi-Auto calibration
|
||||
# Current Transformers:
|
||||
# 20A/25mA SCT-006: 11143
|
||||
# 30A/1V SCT-013-030: 8650
|
||||
# 50A/1V SCT-013-050: 15420
|
||||
# 50A/16.6mA SCT-010: 41334
|
||||
# 80A/26.6mA SCT-010: 41660
|
||||
# 100A/50ma SCT-013-000: 27518
|
||||
# 120A/40mA: SCT-016: 41787
|
||||
# 200A/100mA SCT-024: 27518
|
||||
# 200A/50mA SCT-024: 55036
|
||||
|
||||
## Main Board
|
||||
current_cal_ct1: '27518'
|
||||
current_cal_ct2: '27518'
|
||||
current_cal_ct3: '27518'
|
||||
current_cal_ct4: '27518'
|
||||
current_cal_ct5: '27518'
|
||||
current_cal_ct6: '27518'
|
||||
## Addon1
|
||||
current_cal_ct7: '27518'
|
||||
current_cal_ct8: '27518'
|
||||
current_cal_ct9: '27518'
|
||||
current_cal_ct10: '27518'
|
||||
current_cal_ct11: '27518'
|
||||
current_cal_ct12: '27518'
|
||||
## Addon2
|
||||
current_cal_ct13: '27518'
|
||||
current_cal_ct14: '27518'
|
||||
current_cal_ct15: '27518'
|
||||
current_cal_ct16: '27518'
|
||||
current_cal_ct17: '27518'
|
||||
current_cal_ct18: '27518'
|
||||
## Addon3
|
||||
current_cal_ct19: '27518'
|
||||
current_cal_ct20: '27518'
|
||||
current_cal_ct21: '27518'
|
||||
current_cal_ct22: '27518'
|
||||
current_cal_ct23: '27518'
|
||||
current_cal_ct24: '27518'
|
||||
## Addon4
|
||||
current_cal_ct25: '27518'
|
||||
current_cal_ct26: '27518'
|
||||
current_cal_ct27: '27518'
|
||||
current_cal_ct28: '27518'
|
||||
current_cal_ct29: '27518'
|
||||
current_cal_ct30: '27518'
|
||||
# This only needs to be changed if you're using something other than the
|
||||
# Jameco 9VAC Transformer:
|
||||
voltage_cal1: '7305'
|
||||
voltage_cal2: '7305'
|
||||
|
||||
esphome:
|
||||
name: ${disp_name}
|
||||
friendly_name: "${friendly_name}"
|
||||
name_add_mac_suffix: true
|
||||
min_version: '2025.7.0'
|
||||
project:
|
||||
name: circuitsetup.6c-energy-meter-4-addons
|
||||
version: "1.7"
|
||||
|
||||
packages:
|
||||
remote_package:
|
||||
url: https://github.com/CircuitSetup/Expandable-6-Channel-ESP32-Energy-Meter
|
||||
ref: master
|
||||
refresh: 1d
|
||||
files:
|
||||
- Software/ESPHome/6chan_common.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_main_sensor.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_addon1.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_addon2.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_addon3.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_addon4.yaml
|
||||
|
||||
## Additional power quality sensors per CT/Phase
|
||||
## Uncomment to enable
|
||||
## Details: https://esphome.io/components/sensor/atm90e32.html#configuration-variables
|
||||
#- Software/ESPHome/power_quality/6chan_main_power_quality.yaml
|
||||
#- Software/ESPHome/power_quality/6chan_addon1_power_quality.yaml
|
||||
#- Software/ESPHome/power_quality/6chan_addon2_power_quality.yaml
|
||||
#- Software/ESPHome/power_quality/6chan_addon3_power_quality.yaml
|
||||
#- Software/ESPHome/power_quality/6chan_addon4_power_quality.yaml
|
||||
|
||||
## Enables text status fields for each CT/Phase
|
||||
## Uncomment to enable
|
||||
## Details: https://esphome.io/components/sensor/atm90e32.html#text-sensor
|
||||
- Software/ESPHome/status_fields/6chan_main_status.yaml
|
||||
#- Software/ESPHome/status_fields/6chan_addon1_status.yaml
|
||||
#- Software/ESPHome/status_fields/6chan_addon2_status.yaml
|
||||
#- Software/ESPHome/status_fields/6chan_addon3_status.yaml
|
||||
#- Software/ESPHome/status_fields/6chan_addon4_status.yaml
|
||||
|
||||
## Adds semi-automatic calibration buttons and reference fields
|
||||
## If enabled, make sure offset & gain calibration are set to "true" above
|
||||
## Uncomment to enable
|
||||
## Details: https://esphome.io/components/sensor/atm90e32.html#calibration
|
||||
- Software/ESPHome/calibration/6chan_main_calibration.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon1_calibration.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon2_calibration.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon3_calibration.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon4_calibration.yaml
|
||||
|
||||
## Additional offset calibration fields that should be copied per CT/Phase from the ESPHome logs
|
||||
## These do not need to be set unless you are seeing non-zero values when CTs or Voltage
|
||||
## should not be registering anything.
|
||||
#- Software/ESPHome/calibration/6chan_main_offset_calibrations.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon1_offset_calibrations.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon2_offset_calibrations.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon3_offset_calibrations.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon4_offset_calibrations.yaml
|
||||
|
||||
dashboard_import:
|
||||
package_import_url: github://CircuitSetup/Expandable-6-Channel-ESP32-Energy-Meter/Software/ESPHome/6chan_energy_meter_4-addons.yaml@master
|
||||
import_full_config: true
|
||||
|
||||
# Enable Home Assistant API
|
||||
# An encryption key is recommended and can be generated here:
|
||||
# https://esphome.io/components/api.html#configuration-variables
|
||||
api:
|
||||
# encryption:
|
||||
# key: "YOUR_ENCRYPTION_KEY_HERE"
|
||||
|
||||
# Enable OTA updating
|
||||
ota:
|
||||
- platform: esphome
|
||||
|
||||
# Set up a wifi access point
|
||||
wifi:
|
||||
ap:
|
||||
|
||||
# In combination with the `ap` this allows
|
||||
# provisioning wifi credentials to the device.
|
||||
captive_portal:
|
||||
|
||||
# Sets up Bluetooth LE to provision wifi credentials
|
||||
# to the device.
|
||||
esp32_improv:
|
||||
authorizer: none
|
||||
|
||||
# Sets up the improv via serial client for wifi provisioning
|
||||
improv_serial:
|
||||
|
||||
web_server:
|
||||
port: 80
|
||||
|
||||
sensor:
|
||||
## The max value for current that the meter can output is 65.535. If you expect to measure current over 65A,
|
||||
## divide the current_cal_ctx (above) by 2 (120A CT) or 4 (200A CT) and multiply the current and power values
|
||||
## by 2 or 4, uncommenting the below and changing the id and phase_x accordingly
|
||||
#- id: !extend ${main_meter_id1} # CTs 1-3
|
||||
# phase_a: # CT1
|
||||
# current:
|
||||
# filters:
|
||||
# - multiply: 2
|
||||
# power:
|
||||
# filters:
|
||||
# - multiply: 2
|
||||
#
|
||||
## uncomment if monitoring 2 voltages
|
||||
#- id: !extend ${main_meter_id2}
|
||||
# phase_a:
|
||||
# voltage:
|
||||
# name: Voltage 2
|
||||
# id: ic2Volts
|
||||
# accuracy_decimals: 1
|
||||
# frequency:
|
||||
# name: Frequency 2
|
||||
|
||||
## Comment out to show amps and watts per meter board in Home Assistant
|
||||
- id: !extend totalAmpsMain
|
||||
internal: true
|
||||
- id: !extend totalWattsMain
|
||||
internal: true
|
||||
- id: !extend totalAmpsAddOn1
|
||||
internal: true
|
||||
- id: !extend totalWattsAddOn1
|
||||
internal: true
|
||||
- id: !extend totalAmpsAddOn2
|
||||
internal: true
|
||||
- id: !extend totalWattsAddOn2
|
||||
internal: true
|
||||
- id: !extend totalAmpsAddOn3
|
||||
internal: true
|
||||
- id: !extend totalWattsAddOn3
|
||||
internal: true
|
||||
- id: !extend totalAmpsAddOn4
|
||||
internal: true
|
||||
- id: !extend totalWattsAddOn4
|
||||
internal: true
|
||||
|
||||
#Total Amps
|
||||
###########
|
||||
- platform: template
|
||||
name: ${friendly_name} Total Amps
|
||||
id: totalAmps
|
||||
lambda: return id(totalAmpsMain).state + id(totalAmpsAddOn1).state + id(totalAmpsAddOn2).state + id(totalAmpsAddOn3).state + id(totalAmpsAddOn4).state;
|
||||
accuracy_decimals: 2
|
||||
unit_of_measurement: A
|
||||
device_class: current
|
||||
update_interval: ${update_time}
|
||||
|
||||
#Total Watts
|
||||
############
|
||||
- platform: template
|
||||
name: ${friendly_name} Total Watts
|
||||
id: totalWatts
|
||||
lambda: return id(totalWattsMain).state + id(totalWattsAddOn1).state + id(totalWattsAddOn2).state + id(totalWattsAddOn3).state + id(totalWattsAddOn4).state;
|
||||
accuracy_decimals: 1
|
||||
unit_of_measurement: W
|
||||
device_class: power
|
||||
update_interval: ${update_time}
|
||||
|
||||
#kWh
|
||||
####
|
||||
- platform: total_daily_energy
|
||||
name: ${friendly_name} Total kWh
|
||||
power_id: totalWatts
|
||||
filters:
|
||||
- multiply: 0.001
|
||||
unit_of_measurement: kWh
|
||||
device_class: energy
|
||||
state_class: total_increasing
|
||||
@@ -0,0 +1,310 @@
|
||||
# CircuitSetup 6 Channel Energy Meter Main Board + 4 Add-on Boards config
|
||||
# Uses the Lilygo T-ETH-Lite ESP32S3 and the CircuitSetup 6 Channel Energy Meter Ethernet Adapter
|
||||
# See all options at https://esphome.io/components/sensor/atm90e32.html
|
||||
|
||||
substitutions:
|
||||
# Change the disp_name to something you want
|
||||
disp_name: energy-meter
|
||||
friendly_name: CircuitSetup Energy Meter 30x
|
||||
# Interval of how often the power data is updated
|
||||
update_time: 10s
|
||||
# Frequency of your electrical grid - 60Hz in North America, 50Hz otherwise
|
||||
electric_freq: "60Hz"
|
||||
|
||||
## The below names and IDs can be changed to whatever you want. IDs should not have spaces
|
||||
## Main board
|
||||
main_meter_name1: Meter 1-3
|
||||
main_meter_name2: Meter 4-6
|
||||
main_meter_id1: meter_main1
|
||||
main_meter_id2: meter_main2
|
||||
ct1_name: CT1
|
||||
ct2_name: CT2
|
||||
ct3_name: CT3
|
||||
ct4_name: CT4
|
||||
ct5_name: CT5
|
||||
ct6_name: CT6
|
||||
## Addon1
|
||||
addon1_name1: Addon1 7-9
|
||||
addon1_name2: Addon1 10-12
|
||||
addon1_id1: addon1_1
|
||||
addon1_id2: addon1_2
|
||||
ct7_name: CT7
|
||||
ct8_name: CT8
|
||||
ct9_name: CT9
|
||||
ct10_name: CT10
|
||||
ct11_name: CT11
|
||||
ct12_name: CT12
|
||||
## Addon2
|
||||
addon2_name1: Addon2 13-15
|
||||
addon2_name2: Addon2 16-18
|
||||
addon2_id1: addon2_1
|
||||
addon2_id2: addon2_2
|
||||
ct13_name: CT13
|
||||
ct14_name: CT14
|
||||
ct15_name: CT15
|
||||
ct16_name: CT16
|
||||
ct17_name: CT17
|
||||
ct18_name: CT18
|
||||
## Addon3
|
||||
addon3_name1: Addon3 19-21
|
||||
addon3_name2: Addon3 22-24
|
||||
addon3_id1: addon3_1
|
||||
addon3_id2: addon3_2
|
||||
ct19_name: CT19
|
||||
ct20_name: CT20
|
||||
ct21_name: CT21
|
||||
ct22_name: CT22
|
||||
ct23_name: CT23
|
||||
ct24_name: CT24
|
||||
## Addon4
|
||||
addon4_name1: Addon4 25-27
|
||||
addon4_name2: Addon4 28-30
|
||||
addon4_id1: addon4_1
|
||||
addon4_id2: addon4_2
|
||||
ct25_name: CT25
|
||||
ct26_name: CT26
|
||||
ct27_name: CT27
|
||||
ct28_name: CT28
|
||||
ct29_name: CT29
|
||||
ct30_name: CT30
|
||||
|
||||
## Semi-Automatic Calibration ##
|
||||
# See https://esphome.io/components/sensor/atm90e32.html#calibration
|
||||
# WHEN CALIBRATION IS ENABLED, calculated values for offset and gain stored in memory take priority over config values
|
||||
# To save calculated calibration values, copy them from the logs to your config
|
||||
# then use the clear buttons to clear the calibration values from memory
|
||||
# Values are stored in the variables for gain below and offsets in their corresponding files
|
||||
# under /calibration/6chan_xxxx_offset_calibrations.yaml
|
||||
offset_calibration: "true"
|
||||
gain_calibration: "true"
|
||||
|
||||
## Gain Calibration Values ##
|
||||
# Change current_cal_ctX value to the corresponding CT's that you're using
|
||||
# For more precise calibration, see documentation for Semi-Auto calibration
|
||||
# Current Transformers:
|
||||
# 20A/25mA SCT-006: 11143
|
||||
# 30A/1V SCT-013-030: 8650
|
||||
# 50A/1V SCT-013-050: 15420
|
||||
# 50A/16.6mA SCT-010: 41334
|
||||
# 80A/26.6mA SCT-010: 41660
|
||||
# 100A/50ma SCT-013-000: 27518
|
||||
# 120A/40mA: SCT-016: 41787
|
||||
# 200A/100mA SCT-024: 27518
|
||||
# 200A/50mA SCT-024: 55036
|
||||
|
||||
## Main Board
|
||||
current_cal_ct1: '27518'
|
||||
current_cal_ct2: '27518'
|
||||
current_cal_ct3: '27518'
|
||||
current_cal_ct4: '27518'
|
||||
current_cal_ct5: '27518'
|
||||
current_cal_ct6: '27518'
|
||||
## Addon1
|
||||
current_cal_ct7: '27518'
|
||||
current_cal_ct8: '27518'
|
||||
current_cal_ct9: '27518'
|
||||
current_cal_ct10: '27518'
|
||||
current_cal_ct11: '27518'
|
||||
current_cal_ct12: '27518'
|
||||
## Addon2
|
||||
current_cal_ct13: '27518'
|
||||
current_cal_ct14: '27518'
|
||||
current_cal_ct15: '27518'
|
||||
current_cal_ct16: '27518'
|
||||
current_cal_ct17: '27518'
|
||||
current_cal_ct18: '27518'
|
||||
## Addon3
|
||||
current_cal_ct19: '27518'
|
||||
current_cal_ct20: '27518'
|
||||
current_cal_ct21: '27518'
|
||||
current_cal_ct22: '27518'
|
||||
current_cal_ct23: '27518'
|
||||
current_cal_ct24: '27518'
|
||||
## Addon4
|
||||
current_cal_ct25: '27518'
|
||||
current_cal_ct26: '27518'
|
||||
current_cal_ct27: '27518'
|
||||
current_cal_ct28: '27518'
|
||||
current_cal_ct29: '27518'
|
||||
current_cal_ct30: '27518'
|
||||
# This only needs to be changed if you're using something other than the
|
||||
# Jameco 9VAC Transformer:
|
||||
voltage_cal1: '7305'
|
||||
voltage_cal2: '7305'
|
||||
|
||||
esphome:
|
||||
name: ${disp_name}
|
||||
friendly_name: "${friendly_name}"
|
||||
name_add_mac_suffix: true
|
||||
min_version: '2025.5.0'
|
||||
project:
|
||||
name: circuitsetup.6c-energy-meter-4-addons-ethernet
|
||||
version: "1.7"
|
||||
|
||||
packages:
|
||||
remote_package:
|
||||
url: https://github.com/CircuitSetup/Expandable-6-Channel-ESP32-Energy-Meter
|
||||
ref: master
|
||||
refresh: 1d
|
||||
files:
|
||||
- Software/ESPHome/6chan_common_ethernet.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_main_sensor.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_addon1.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_addon2.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_addon3.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_addon4.yaml
|
||||
|
||||
## Additional power quality sensors per CT/Phase
|
||||
## Uncomment to enable
|
||||
## Details: https://esphome.io/components/sensor/atm90e32.html#configuration-variables
|
||||
#- Software/ESPHome/power_quality/6chan_main_power_quality.yaml
|
||||
#- Software/ESPHome/power_quality/6chan_addon1_power_quality.yaml
|
||||
#- Software/ESPHome/power_quality/6chan_addon2_power_quality.yaml
|
||||
#- Software/ESPHome/power_quality/6chan_addon3_power_quality.yaml
|
||||
#- Software/ESPHome/power_quality/6chan_addon4_power_quality.yaml
|
||||
|
||||
## Enables text status fields for each CT/Phase
|
||||
## Uncomment to enable
|
||||
## Details: https://esphome.io/components/sensor/atm90e32.html#text-sensor
|
||||
- Software/ESPHome/status_fields/6chan_main_status.yaml
|
||||
#- Software/ESPHome/status_fields/6chan_addon1_status.yaml
|
||||
#- Software/ESPHome/status_fields/6chan_addon2_status.yaml
|
||||
#- Software/ESPHome/status_fields/6chan_addon3_status.yaml
|
||||
#- Software/ESPHome/status_fields/6chan_addon4_status.yaml
|
||||
|
||||
## Adds semi-automatic calibration buttons and reference fields
|
||||
## If enabled, make sure offset & gain calibration are set to "true" above
|
||||
## Uncomment to enable
|
||||
## Details: https://esphome.io/components/sensor/atm90e32.html#calibration
|
||||
- Software/ESPHome/calibration/6chan_main_calibration.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon1_calibration.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon2_calibration.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon3_calibration.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon4_calibration.yaml
|
||||
|
||||
## Additional offset calibration fields that should be copied per CT/Phase from the ESPHome logs
|
||||
## These do not need to be set unless you are seeing non-zero values when CTs or Voltage
|
||||
## should not be registering anything.
|
||||
#- Software/ESPHome/calibration/6chan_main_offset_calibrations.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon1_offset_calibrations.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon2_offset_calibrations.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon3_offset_calibrations.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon4_offset_calibrations.yaml
|
||||
|
||||
dashboard_import:
|
||||
package_import_url: github://CircuitSetup/Expandable-6-Channel-ESP32-Energy-Meter/Software/ESPHome/6chan_energy_meter_4-addons_ethernet.yaml@master
|
||||
import_full_config: true
|
||||
|
||||
# Enable Home Assistant API
|
||||
# An encryption key is recommended and can be generated here:
|
||||
# https://esphome.io/components/api.html#configuration-variables
|
||||
api:
|
||||
# encryption:
|
||||
# key: "YOUR_ENCRYPTION_KEY_HERE"
|
||||
|
||||
# Enable OTA updating
|
||||
ota:
|
||||
- platform: esphome
|
||||
|
||||
web_server:
|
||||
port: 80
|
||||
|
||||
sensor:
|
||||
# CS Pin mappings for Lilygo T-ETH-Lite ESP32S3
|
||||
- id: !extend ${main_meter_id1}
|
||||
cs_pin: 8
|
||||
#- id: !extend ${main_meter_id2}
|
||||
# cs_pin: 4
|
||||
#- id: !extend ${addon1_id1}
|
||||
# cs_pin: 0
|
||||
#- id: !extend ${addon1_id2}
|
||||
# cs_pin: 16
|
||||
- id: !extend ${addon2_id1}
|
||||
cs_pin: 18
|
||||
#- id: !extend ${addon2_id2}
|
||||
# cs_pin: 17
|
||||
#- id: !extend ${addon3_id1}
|
||||
# cs_pin: 2
|
||||
#- id: !extend ${addon3_id2}
|
||||
# cs_pin: 21
|
||||
- id: !extend ${addon4_id1}
|
||||
cs_pin: 3
|
||||
- id: !extend ${addon4_id2}
|
||||
cs_pin: 20
|
||||
|
||||
## The max value for current that the meter can output is 65.535. If you expect to measure current over 65A,
|
||||
## divide the current_cal_ctx (above) by 2 (120A CT) or 4 (200A CT) and multiply the current and power values
|
||||
## by 2 or 4, uncommenting the below and changing the id and phase_x accordingly
|
||||
#- id: !extend ${main_meter_id1} # CTs 1-3
|
||||
# phase_a: # CT1
|
||||
# current:
|
||||
# filters:
|
||||
# - multiply: 2
|
||||
# power:
|
||||
# filters:
|
||||
# - multiply: 2
|
||||
#
|
||||
## uncomment if monitoring 2 voltages
|
||||
#- id: !extend ${main_meter_id2}
|
||||
# phase_a:
|
||||
# voltage:
|
||||
# name: Voltage 2
|
||||
# id: ic2Volts
|
||||
# accuracy_decimals: 1
|
||||
# frequency:
|
||||
# name: Frequency 2
|
||||
|
||||
## Comment out to show amps and watts per meter board in Home Assistant
|
||||
- id: !extend totalAmpsMain
|
||||
internal: true
|
||||
- id: !extend totalWattsMain
|
||||
internal: true
|
||||
- id: !extend totalAmpsAddOn1
|
||||
internal: true
|
||||
- id: !extend totalWattsAddOn1
|
||||
internal: true
|
||||
- id: !extend totalAmpsAddOn2
|
||||
internal: true
|
||||
- id: !extend totalWattsAddOn2
|
||||
internal: true
|
||||
- id: !extend totalAmpsAddOn3
|
||||
internal: true
|
||||
- id: !extend totalWattsAddOn3
|
||||
internal: true
|
||||
- id: !extend totalAmpsAddOn4
|
||||
internal: true
|
||||
- id: !extend totalWattsAddOn4
|
||||
internal: true
|
||||
|
||||
#Total Amps
|
||||
###########
|
||||
- platform: template
|
||||
name: ${friendly_name} Total Amps
|
||||
id: totalAmps
|
||||
lambda: return id(totalAmpsMain).state + id(totalAmpsAddOn1).state + id(totalAmpsAddOn2).state + id(totalAmpsAddOn3).state + id(totalAmpsAddOn4).state;
|
||||
accuracy_decimals: 2
|
||||
unit_of_measurement: A
|
||||
device_class: current
|
||||
update_interval: ${update_time}
|
||||
|
||||
#Total Watts
|
||||
############
|
||||
- platform: template
|
||||
name: ${friendly_name} Total Watts
|
||||
id: totalWatts
|
||||
lambda: return id(totalWattsMain).state + id(totalWattsAddOn1).state + id(totalWattsAddOn2).state + id(totalWattsAddOn3).state + id(totalWattsAddOn4).state;
|
||||
accuracy_decimals: 1
|
||||
unit_of_measurement: W
|
||||
device_class: power
|
||||
update_interval: ${update_time}
|
||||
|
||||
#kWh
|
||||
####
|
||||
- platform: total_daily_energy
|
||||
name: ${friendly_name} Total kWh
|
||||
power_id: totalWatts
|
||||
filters:
|
||||
- multiply: 0.001
|
||||
unit_of_measurement: kWh
|
||||
device_class: energy
|
||||
state_class: total_increasing
|
||||
@@ -0,0 +1,330 @@
|
||||
# CircuitSetup 6 Channel Energy Meter Main Board + 5 Add-on Boards config
|
||||
# See all options at https://esphome.io/components/sensor/atm90e32.html
|
||||
|
||||
substitutions:
|
||||
# Change the disp_name to something you want
|
||||
disp_name: energy-meter
|
||||
friendly_name: CircuitSetup Energy Meter 36x
|
||||
# Interval of how often the power data is updated
|
||||
update_time: 10s
|
||||
# Frequency of your electrical grid - 60Hz in North America, 50Hz otherwise
|
||||
electric_freq: "60Hz"
|
||||
|
||||
## The below names and IDs can be changed to whatever you want. IDs should not have spaces
|
||||
## Main board
|
||||
main_meter_name1: Meter 1-3
|
||||
main_meter_name2: Meter 4-6
|
||||
main_meter_id1: meter_main1
|
||||
main_meter_id2: meter_main2
|
||||
ct1_name: CT1
|
||||
ct2_name: CT2
|
||||
ct3_name: CT3
|
||||
ct4_name: CT4
|
||||
ct5_name: CT5
|
||||
ct6_name: CT6
|
||||
## Addon1
|
||||
addon1_name1: Addon1 7-9
|
||||
addon1_name2: Addon1 10-12
|
||||
addon1_id1: addon1_1
|
||||
addon1_id2: addon1_2
|
||||
ct7_name: CT7
|
||||
ct8_name: CT8
|
||||
ct9_name: CT9
|
||||
ct10_name: CT10
|
||||
ct11_name: CT11
|
||||
ct12_name: CT12
|
||||
## Addon2
|
||||
addon2_name1: Addon2 13-15
|
||||
addon2_name2: Addon2 16-18
|
||||
addon2_id1: addon2_1
|
||||
addon2_id2: addon2_2
|
||||
ct13_name: CT13
|
||||
ct14_name: CT14
|
||||
ct15_name: CT15
|
||||
ct16_name: CT16
|
||||
ct17_name: CT17
|
||||
ct18_name: CT18
|
||||
## Addon3
|
||||
addon3_name1: Addon3 19-21
|
||||
addon3_name2: Addon3 22-24
|
||||
addon3_id1: addon3_1
|
||||
addon3_id2: addon3_2
|
||||
ct19_name: CT19
|
||||
ct20_name: CT20
|
||||
ct21_name: CT21
|
||||
ct22_name: CT22
|
||||
ct23_name: CT23
|
||||
ct24_name: CT24
|
||||
## Addon4
|
||||
addon4_name1: Addon4 25-27
|
||||
addon4_name2: Addon4 28-30
|
||||
addon4_id1: addon4_1
|
||||
addon4_id2: addon4_2
|
||||
ct25_name: CT25
|
||||
ct26_name: CT26
|
||||
ct27_name: CT27
|
||||
ct28_name: CT28
|
||||
ct29_name: CT29
|
||||
ct30_name: CT30
|
||||
## Addon5
|
||||
addon5_name1: Addon5 31-33
|
||||
addon5_name2: Addon5 34-36
|
||||
addon5_id1: addon5_1
|
||||
addon5_id2: addon5_2
|
||||
ct31_name: CT31
|
||||
ct32_name: CT32
|
||||
ct33_name: CT33
|
||||
ct34_name: CT34
|
||||
ct35_name: CT35
|
||||
ct36_name: CT36
|
||||
|
||||
## Semi-Automatic Calibration ##
|
||||
# See https://esphome.io/components/sensor/atm90e32.html#calibration
|
||||
# WHEN CALIBRATION IS ENABLED, calculated values for offset and gain stored in memory take priority over config values
|
||||
# To save calculated calibration values, copy them from the logs to your config
|
||||
# then use the clear buttons to clear the calibration values from memory
|
||||
# Values are stored in the variables for gain below and offsets in their corresponding files
|
||||
# under /calibration/6chan_xxxx_offset_calibrations.yaml
|
||||
offset_calibration: "true"
|
||||
gain_calibration: "true"
|
||||
|
||||
## Gain Calibration Values ##
|
||||
# Change current_cal_ctX value to the corresponding CT's that you're using
|
||||
# For more precise calibration, see documentation for Semi-Auto calibration
|
||||
# Current Transformers:
|
||||
# 20A/25mA SCT-006: 11143
|
||||
# 30A/1V SCT-013-030: 8650
|
||||
# 50A/1V SCT-013-050: 15420
|
||||
# 50A/16.6mA SCT-010: 41334
|
||||
# 80A/26.6mA SCT-010: 41660
|
||||
# 100A/50ma SCT-013-000: 27518
|
||||
# 120A/40mA: SCT-016: 41787
|
||||
# 200A/100mA SCT-024: 27518
|
||||
# 200A/50mA SCT-024: 55036
|
||||
|
||||
## Main Board
|
||||
current_cal_ct1: '27518'
|
||||
current_cal_ct2: '27518'
|
||||
current_cal_ct3: '27518'
|
||||
current_cal_ct4: '27518'
|
||||
current_cal_ct5: '27518'
|
||||
current_cal_ct6: '27518'
|
||||
## Addon1
|
||||
current_cal_ct7: '27518'
|
||||
current_cal_ct8: '27518'
|
||||
current_cal_ct9: '27518'
|
||||
current_cal_ct10: '27518'
|
||||
current_cal_ct11: '27518'
|
||||
current_cal_ct12: '27518'
|
||||
## Addon2
|
||||
current_cal_ct13: '27518'
|
||||
current_cal_ct14: '27518'
|
||||
current_cal_ct15: '27518'
|
||||
current_cal_ct16: '27518'
|
||||
current_cal_ct17: '27518'
|
||||
current_cal_ct18: '27518'
|
||||
## Addon3
|
||||
current_cal_ct19: '27518'
|
||||
current_cal_ct20: '27518'
|
||||
current_cal_ct21: '27518'
|
||||
current_cal_ct22: '27518'
|
||||
current_cal_ct23: '27518'
|
||||
current_cal_ct24: '27518'
|
||||
## Addon4
|
||||
current_cal_ct25: '27518'
|
||||
current_cal_ct26: '27518'
|
||||
current_cal_ct27: '27518'
|
||||
current_cal_ct28: '27518'
|
||||
current_cal_ct29: '27518'
|
||||
current_cal_ct30: '27518'
|
||||
## Addon4
|
||||
current_cal_ct31: '27518'
|
||||
current_cal_ct32: '27518'
|
||||
current_cal_ct33: '27518'
|
||||
current_cal_ct34: '27518'
|
||||
current_cal_ct35: '27518'
|
||||
current_cal_ct36: '27518'
|
||||
# This only needs to be changed if you're using something other than the
|
||||
# Jameco 9VAC Transformer:
|
||||
voltage_cal1: '7305'
|
||||
voltage_cal2: '7305'
|
||||
|
||||
esphome:
|
||||
name: ${disp_name}
|
||||
friendly_name: "${friendly_name}"
|
||||
name_add_mac_suffix: true
|
||||
min_version: '2025.7.0'
|
||||
project:
|
||||
name: circuitsetup.6c-energy-meter-5-addons
|
||||
version: "1.7"
|
||||
|
||||
packages:
|
||||
remote_package:
|
||||
url: https://github.com/CircuitSetup/Expandable-6-Channel-ESP32-Energy-Meter
|
||||
ref: master
|
||||
refresh: 1d
|
||||
files:
|
||||
- Software/ESPHome/6chan_common.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_main_sensor.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_addon1.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_addon2.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_addon3.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_addon4.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_addon5.yaml
|
||||
|
||||
## Additional power quality sensors per CT/Phase
|
||||
## Uncomment to enable
|
||||
## Details: https://esphome.io/components/sensor/atm90e32.html#configuration-variables
|
||||
#- Software/ESPHome/power_quality/6chan_main_power_quality.yaml
|
||||
#- Software/ESPHome/power_quality/6chan_addon1_power_quality.yaml
|
||||
#- Software/ESPHome/power_quality/6chan_addon2_power_quality.yaml
|
||||
#- Software/ESPHome/power_quality/6chan_addon3_power_quality.yaml
|
||||
#- Software/ESPHome/power_quality/6chan_addon4_power_quality.yaml
|
||||
#- Software/ESPHome/power_quality/6chan_addon5_power_quality.yaml
|
||||
|
||||
## Enables text status fields for each CT/Phase
|
||||
## Uncomment to enable
|
||||
## Details: https://esphome.io/components/sensor/atm90e32.html#text-sensor
|
||||
- Software/ESPHome/status_fields/6chan_main_status.yaml
|
||||
#- Software/ESPHome/status_fields/6chan_addon1_status.yaml
|
||||
#- Software/ESPHome/status_fields/6chan_addon2_status.yaml
|
||||
#- Software/ESPHome/status_fields/6chan_addon3_status.yaml
|
||||
#- Software/ESPHome/status_fields/6chan_addon4_status.yaml
|
||||
#- Software/ESPHome/status_fields/6chan_addon5_status.yaml
|
||||
|
||||
## Adds semi-automatic calibration buttons and reference fields
|
||||
## If enabled, make sure offset & gain calibration are set to "true" above
|
||||
## Uncomment to enable
|
||||
## Details: https://esphome.io/components/sensor/atm90e32.html#calibration
|
||||
- Software/ESPHome/calibration/6chan_main_calibration.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon1_calibration.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon2_calibration.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon3_calibration.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon4_calibration.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon5_calibration.yaml
|
||||
|
||||
## Additional offset calibration fields that should be copied per CT/Phase from the ESPHome logs
|
||||
## These do not need to be set unless you are seeing non-zero values when CTs or Voltage
|
||||
## should not be registering anything.
|
||||
#- Software/ESPHome/calibration/6chan_main_offset_calibrations.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon1_offset_calibrations.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon2_offset_calibrations.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon3_offset_calibrations.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon4_offset_calibrations.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon5_offset_calibrations.yaml
|
||||
|
||||
dashboard_import:
|
||||
package_import_url: github://CircuitSetup/Expandable-6-Channel-ESP32-Energy-Meter/Software/ESPHome/6chan_energy_meter_5-addons.yaml@master
|
||||
import_full_config: true
|
||||
|
||||
# Enable Home Assistant API
|
||||
# An encryption key is recommended and can be generated here:
|
||||
# https://esphome.io/components/api.html#configuration-variables
|
||||
api:
|
||||
# encryption:
|
||||
# key: "YOUR_ENCRYPTION_KEY_HERE"
|
||||
|
||||
# Enable OTA updating
|
||||
ota:
|
||||
- platform: esphome
|
||||
|
||||
# Set up a wifi access point
|
||||
wifi:
|
||||
ap:
|
||||
|
||||
# In combination with the `ap` this allows
|
||||
# provisioning wifi credentials to the device.
|
||||
captive_portal:
|
||||
|
||||
# Sets up Bluetooth LE to provision wifi credentials
|
||||
# to the device.
|
||||
esp32_improv:
|
||||
authorizer: none
|
||||
|
||||
# Sets up the improv via serial client for wifi provisioning
|
||||
improv_serial:
|
||||
|
||||
web_server:
|
||||
port: 80
|
||||
|
||||
sensor:
|
||||
## The max value for current that the meter can output is 65.535. If you expect to measure current over 65A,
|
||||
## divide the current_cal_ctx (above) by 2 (120A CT) or 4 (200A CT) and multiply the current and power values
|
||||
## by 2 or 4, uncommenting the below and changing the id and phase_x accordingly
|
||||
#- id: !extend ${main_meter_id1} # CTs 1-3
|
||||
# phase_a: # CT1
|
||||
# current:
|
||||
# filters:
|
||||
# - multiply: 2
|
||||
# power:
|
||||
# filters:
|
||||
# - multiply: 2
|
||||
#
|
||||
## uncomment if monitoring 2 voltages
|
||||
#- id: !extend ${main_meter_id2}
|
||||
# phase_a:
|
||||
# voltage:
|
||||
# name: Voltage 2
|
||||
# id: ic2Volts
|
||||
# accuracy_decimals: 1
|
||||
# frequency:
|
||||
# name: Frequency 2
|
||||
|
||||
## Comment out to show amps and watts per meter board in Home Assistant
|
||||
- id: !extend totalAmpsMain
|
||||
internal: true
|
||||
- id: !extend totalWattsMain
|
||||
internal: true
|
||||
- id: !extend totalAmpsAddOn1
|
||||
internal: true
|
||||
- id: !extend totalWattsAddOn1
|
||||
internal: true
|
||||
- id: !extend totalAmpsAddOn2
|
||||
internal: true
|
||||
- id: !extend totalWattsAddOn2
|
||||
internal: true
|
||||
- id: !extend totalAmpsAddOn3
|
||||
internal: true
|
||||
- id: !extend totalWattsAddOn3
|
||||
internal: true
|
||||
- id: !extend totalAmpsAddOn4
|
||||
internal: true
|
||||
- id: !extend totalWattsAddOn4
|
||||
internal: true
|
||||
- id: !extend totalAmpsAddOn5
|
||||
internal: true
|
||||
- id: !extend totalWattsAddOn5
|
||||
internal: true
|
||||
|
||||
#Total Amps
|
||||
###########
|
||||
- platform: template
|
||||
name: ${friendly_name} Total Amps
|
||||
id: totalAmps
|
||||
lambda: return id(totalAmpsMain).state + id(totalAmpsAddOn1).state + id(totalAmpsAddOn2).state + id(totalAmpsAddOn3).state + id(totalAmpsAddOn4).state + id(totalAmpsAddOn5).state;
|
||||
accuracy_decimals: 2
|
||||
unit_of_measurement: A
|
||||
device_class: current
|
||||
update_interval: ${update_time}
|
||||
|
||||
#Total Watts
|
||||
############
|
||||
- platform: template
|
||||
name: ${friendly_name} Total Watts
|
||||
id: totalWatts
|
||||
lambda: return id(totalWattsMain).state + id(totalWattsAddOn1).state + id(totalWattsAddOn2).state + id(totalWattsAddOn3).state + id(totalWattsAddOn4).state + id(totalWattsAddOn5).state;
|
||||
accuracy_decimals: 1
|
||||
unit_of_measurement: W
|
||||
device_class: power
|
||||
update_interval: ${update_time}
|
||||
|
||||
#kWh
|
||||
####
|
||||
- platform: total_daily_energy
|
||||
name: ${friendly_name} Total kWh
|
||||
power_id: totalWatts
|
||||
filters:
|
||||
- multiply: 0.001
|
||||
unit_of_measurement: kWh
|
||||
device_class: energy
|
||||
state_class: total_increasing
|
||||
@@ -0,0 +1,341 @@
|
||||
# CircuitSetup 6 Channel Energy Meter Main Board + 5 Add-on Boards config
|
||||
# Uses the Lilygo T-ETH-Lite ESP32S3 and the CircuitSetup 6 Channel Energy Meter Ethernet Adapter
|
||||
# See all options at https://esphome.io/components/sensor/atm90e32.html
|
||||
|
||||
substitutions:
|
||||
# Change the disp_name to something you want
|
||||
disp_name: energy-meter
|
||||
friendly_name: CircuitSetup Energy Meter 36x
|
||||
# Interval of how often the power data is updated
|
||||
update_time: 10s
|
||||
# Frequency of your electrical grid - 60Hz in North America, 50Hz otherwise
|
||||
electric_freq: "60Hz"
|
||||
|
||||
## The below names and IDs can be changed to whatever you want. IDs should not have spaces
|
||||
## Main board
|
||||
main_meter_name1: Meter 1-3
|
||||
main_meter_name2: Meter 4-6
|
||||
main_meter_id1: meter_main1
|
||||
main_meter_id2: meter_main2
|
||||
ct1_name: CT1
|
||||
ct2_name: CT2
|
||||
ct3_name: CT3
|
||||
ct4_name: CT4
|
||||
ct5_name: CT5
|
||||
ct6_name: CT6
|
||||
## Addon1
|
||||
addon1_name1: Addon1 7-9
|
||||
addon1_name2: Addon1 10-12
|
||||
addon1_id1: addon1_1
|
||||
addon1_id2: addon1_2
|
||||
ct7_name: CT7
|
||||
ct8_name: CT8
|
||||
ct9_name: CT9
|
||||
ct10_name: CT10
|
||||
ct11_name: CT11
|
||||
ct12_name: CT12
|
||||
## Addon2
|
||||
addon2_name1: Addon2 13-15
|
||||
addon2_name2: Addon2 16-18
|
||||
addon2_id1: addon2_1
|
||||
addon2_id2: addon2_2
|
||||
ct13_name: CT13
|
||||
ct14_name: CT14
|
||||
ct15_name: CT15
|
||||
ct16_name: CT16
|
||||
ct17_name: CT17
|
||||
ct18_name: CT18
|
||||
## Addon3
|
||||
addon3_name1: Addon3 19-21
|
||||
addon3_name2: Addon3 22-24
|
||||
addon3_id1: addon3_1
|
||||
addon3_id2: addon3_2
|
||||
ct19_name: CT19
|
||||
ct20_name: CT20
|
||||
ct21_name: CT21
|
||||
ct22_name: CT22
|
||||
ct23_name: CT23
|
||||
ct24_name: CT24
|
||||
## Addon4
|
||||
addon4_name1: Addon4 25-27
|
||||
addon4_name2: Addon4 28-30
|
||||
addon4_id1: addon4_1
|
||||
addon4_id2: addon4_2
|
||||
ct25_name: CT25
|
||||
ct26_name: CT26
|
||||
ct27_name: CT27
|
||||
ct28_name: CT28
|
||||
ct29_name: CT29
|
||||
ct30_name: CT30
|
||||
## Addon5
|
||||
addon5_name1: Addon5 31-33
|
||||
addon5_name2: Addon5 34-36
|
||||
addon5_id1: addon5_1
|
||||
addon5_id2: addon5_2
|
||||
ct31_name: CT31
|
||||
ct32_name: CT32
|
||||
ct33_name: CT33
|
||||
ct34_name: CT34
|
||||
ct35_name: CT35
|
||||
ct36_name: CT36
|
||||
|
||||
## Semi-Automatic Calibration ##
|
||||
# See https://esphome.io/components/sensor/atm90e32.html#calibration
|
||||
# WHEN CALIBRATION IS ENABLED, calculated values for offset and gain stored in memory take priority over config values
|
||||
# To save calculated calibration values, copy them from the logs to your config
|
||||
# then use the clear buttons to clear the calibration values from memory
|
||||
# Values are stored in the variables for gain below and offsets in their corresponding files
|
||||
# under /calibration/6chan_xxxx_offset_calibrations.yaml
|
||||
offset_calibration: "true"
|
||||
gain_calibration: "true"
|
||||
|
||||
## Gain Calibration Values ##
|
||||
# Change current_cal_ctX value to the corresponding CT's that you're using
|
||||
# For more precise calibration, see documentation for Semi-Auto calibration
|
||||
# Current Transformers:
|
||||
# 20A/25mA SCT-006: 11143
|
||||
# 30A/1V SCT-013-030: 8650
|
||||
# 50A/1V SCT-013-050: 15420
|
||||
# 50A/16.6mA SCT-010: 41334
|
||||
# 80A/26.6mA SCT-010: 41660
|
||||
# 100A/50ma SCT-013-000: 27518
|
||||
# 120A/40mA: SCT-016: 41787
|
||||
# 200A/100mA SCT-024: 27518
|
||||
# 200A/50mA SCT-024: 55036
|
||||
|
||||
## Main Board
|
||||
current_cal_ct1: '27518'
|
||||
current_cal_ct2: '27518'
|
||||
current_cal_ct3: '27518'
|
||||
current_cal_ct4: '27518'
|
||||
current_cal_ct5: '27518'
|
||||
current_cal_ct6: '27518'
|
||||
## Addon1
|
||||
current_cal_ct7: '27518'
|
||||
current_cal_ct8: '27518'
|
||||
current_cal_ct9: '27518'
|
||||
current_cal_ct10: '27518'
|
||||
current_cal_ct11: '27518'
|
||||
current_cal_ct12: '27518'
|
||||
## Addon2
|
||||
current_cal_ct13: '27518'
|
||||
current_cal_ct14: '27518'
|
||||
current_cal_ct15: '27518'
|
||||
current_cal_ct16: '27518'
|
||||
current_cal_ct17: '27518'
|
||||
current_cal_ct18: '27518'
|
||||
## Addon3
|
||||
current_cal_ct19: '27518'
|
||||
current_cal_ct20: '27518'
|
||||
current_cal_ct21: '27518'
|
||||
current_cal_ct22: '27518'
|
||||
current_cal_ct23: '27518'
|
||||
current_cal_ct24: '27518'
|
||||
## Addon4
|
||||
current_cal_ct25: '27518'
|
||||
current_cal_ct26: '27518'
|
||||
current_cal_ct27: '27518'
|
||||
current_cal_ct28: '27518'
|
||||
current_cal_ct29: '27518'
|
||||
current_cal_ct30: '27518'
|
||||
## Addon4
|
||||
current_cal_ct31: '27518'
|
||||
current_cal_ct32: '27518'
|
||||
current_cal_ct33: '27518'
|
||||
current_cal_ct34: '27518'
|
||||
current_cal_ct35: '27518'
|
||||
current_cal_ct36: '27518'
|
||||
# This only needs to be changed if you're using something other than the
|
||||
# Jameco 9VAC Transformer:
|
||||
voltage_cal1: '7305'
|
||||
voltage_cal2: '7305'
|
||||
|
||||
esphome:
|
||||
name: ${disp_name}
|
||||
friendly_name: "${friendly_name}"
|
||||
name_add_mac_suffix: true
|
||||
min_version: '2025.5.0'
|
||||
project:
|
||||
name: circuitsetup.6c-energy-meter-5-addons-ethernet
|
||||
version: "1.7"
|
||||
|
||||
packages:
|
||||
remote_package:
|
||||
url: https://github.com/CircuitSetup/Expandable-6-Channel-ESP32-Energy-Meter
|
||||
ref: master
|
||||
refresh: 1d
|
||||
files:
|
||||
- Software/ESPHome/6chan_common_ethernet.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_main_sensor.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_addon1.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_addon2.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_addon3.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_addon4.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_addon5.yaml
|
||||
|
||||
## Additional power quality sensors per CT/Phase
|
||||
## Uncomment to enable
|
||||
## Details: https://esphome.io/components/sensor/atm90e32.html#configuration-variables
|
||||
#- Software/ESPHome/power_quality/6chan_main_power_quality.yaml
|
||||
#- Software/ESPHome/power_quality/6chan_addon1_power_quality.yaml
|
||||
#- Software/ESPHome/power_quality/6chan_addon2_power_quality.yaml
|
||||
#- Software/ESPHome/power_quality/6chan_addon3_power_quality.yaml
|
||||
#- Software/ESPHome/power_quality/6chan_addon4_power_quality.yaml
|
||||
#- Software/ESPHome/power_quality/6chan_addon5_power_quality.yaml
|
||||
|
||||
## Enables text status fields for each CT/Phase
|
||||
## Uncomment to enable
|
||||
## Details: https://esphome.io/components/sensor/atm90e32.html#text-sensor
|
||||
- Software/ESPHome/status_fields/6chan_main_status.yaml
|
||||
#- Software/ESPHome/status_fields/6chan_addon1_status.yaml
|
||||
#- Software/ESPHome/status_fields/6chan_addon2_status.yaml
|
||||
#- Software/ESPHome/status_fields/6chan_addon3_status.yaml
|
||||
#- Software/ESPHome/status_fields/6chan_addon4_status.yaml
|
||||
#- Software/ESPHome/status_fields/6chan_addon5_status.yaml
|
||||
|
||||
## Adds semi-automatic calibration buttons and reference fields
|
||||
## If enabled, make sure offset & gain calibration are set to "true" above
|
||||
## Uncomment to enable
|
||||
## Details: https://esphome.io/components/sensor/atm90e32.html#calibration
|
||||
- Software/ESPHome/calibration/6chan_main_calibration.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon1_calibration.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon2_calibration.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon3_calibration.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon4_calibration.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon5_calibration.yaml
|
||||
|
||||
## Additional offset calibration fields that should be copied per CT/Phase from the ESPHome logs
|
||||
## These do not need to be set unless you are seeing non-zero values when CTs or Voltage
|
||||
## should not be registering anything.
|
||||
#- Software/ESPHome/calibration/6chan_main_offset_calibrations.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon1_offset_calibrations.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon2_offset_calibrations.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon3_offset_calibrations.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon4_offset_calibrations.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon5_offset_calibrations.yaml
|
||||
|
||||
dashboard_import:
|
||||
package_import_url: github://CircuitSetup/Expandable-6-Channel-ESP32-Energy-Meter/Software/ESPHome/6chan_energy_meter_5-addons_ethernet.yaml@master
|
||||
import_full_config: true
|
||||
|
||||
# Enable Home Assistant API
|
||||
# An encryption key is recommended and can be generated here:
|
||||
# https://esphome.io/components/api.html#configuration-variables
|
||||
api:
|
||||
# encryption:
|
||||
# key: "YOUR_ENCRYPTION_KEY_HERE"
|
||||
|
||||
# Enable OTA updating
|
||||
ota:
|
||||
- platform: esphome
|
||||
|
||||
web_server:
|
||||
port: 80
|
||||
|
||||
sensor:
|
||||
# CS Pin mappings for Lilygo T-ETH-Lite ESP32S3
|
||||
- id: !extend ${main_meter_id1}
|
||||
cs_pin: 8
|
||||
#- id: !extend ${main_meter_id2}
|
||||
# cs_pin: 4
|
||||
#- id: !extend ${addon1_id1}
|
||||
# cs_pin: 0
|
||||
#- id: !extend ${addon1_id2}
|
||||
# cs_pin: 16
|
||||
- id: !extend ${addon2_id1}
|
||||
cs_pin: 18
|
||||
#- id: !extend ${addon2_id2}
|
||||
# cs_pin: 17
|
||||
#- id: !extend ${addon3_id1}
|
||||
# cs_pin: 2
|
||||
#- id: !extend ${addon3_id2}
|
||||
# cs_pin: 21
|
||||
- id: !extend ${addon4_id1}
|
||||
cs_pin: 3
|
||||
- id: !extend ${addon4_id2}
|
||||
cs_pin: 20
|
||||
- id: !extend ${addon5_id1}
|
||||
cs_pin: 41
|
||||
- id: !extend ${addon5_id2}
|
||||
cs_pin: 39
|
||||
|
||||
## The max value for current that the meter can output is 65.535. If you expect to measure current over 65A,
|
||||
## divide the current_cal_ctx (above) by 2 (120A CT) or 4 (200A CT) and multiply the current and power values
|
||||
## by 2 or 4, uncommenting the below and changing the id and phase_x accordingly
|
||||
#- id: !extend ${main_meter_id1} # CTs 1-3
|
||||
# phase_a: # CT1
|
||||
# current:
|
||||
# filters:
|
||||
# - multiply: 2
|
||||
# power:
|
||||
# filters:
|
||||
# - multiply: 2
|
||||
#
|
||||
## uncomment if monitoring 2 voltages
|
||||
#- id: !extend ${main_meter_id2}
|
||||
# phase_a:
|
||||
# voltage:
|
||||
# name: Voltage 2
|
||||
# id: ic2Volts
|
||||
# accuracy_decimals: 1
|
||||
# frequency:
|
||||
# name: Frequency 2
|
||||
|
||||
## Comment out to show amps and watts per meter board in Home Assistant
|
||||
- id: !extend totalAmpsMain
|
||||
internal: true
|
||||
- id: !extend totalWattsMain
|
||||
internal: true
|
||||
- id: !extend totalAmpsAddOn1
|
||||
internal: true
|
||||
- id: !extend totalWattsAddOn1
|
||||
internal: true
|
||||
- id: !extend totalAmpsAddOn2
|
||||
internal: true
|
||||
- id: !extend totalWattsAddOn2
|
||||
internal: true
|
||||
- id: !extend totalAmpsAddOn3
|
||||
internal: true
|
||||
- id: !extend totalWattsAddOn3
|
||||
internal: true
|
||||
- id: !extend totalAmpsAddOn4
|
||||
internal: true
|
||||
- id: !extend totalWattsAddOn4
|
||||
internal: true
|
||||
- id: !extend totalAmpsAddOn5
|
||||
internal: true
|
||||
- id: !extend totalWattsAddOn5
|
||||
internal: true
|
||||
|
||||
#Total Amps
|
||||
###########
|
||||
- platform: template
|
||||
name: ${friendly_name} Total Amps
|
||||
id: totalAmps
|
||||
lambda: return id(totalAmpsMain).state + id(totalAmpsAddOn1).state + id(totalAmpsAddOn2).state + id(totalAmpsAddOn3).state + id(totalAmpsAddOn4).state + id(totalAmpsAddOn5).state;
|
||||
accuracy_decimals: 2
|
||||
unit_of_measurement: A
|
||||
device_class: current
|
||||
update_interval: ${update_time}
|
||||
|
||||
#Total Watts
|
||||
############
|
||||
- platform: template
|
||||
name: ${friendly_name} Total Watts
|
||||
id: totalWatts
|
||||
lambda: return id(totalWattsMain).state + id(totalWattsAddOn1).state + id(totalWattsAddOn2).state + id(totalWattsAddOn3).state + id(totalWattsAddOn4).state + id(totalWattsAddOn5).state;
|
||||
accuracy_decimals: 1
|
||||
unit_of_measurement: W
|
||||
device_class: power
|
||||
update_interval: ${update_time}
|
||||
|
||||
#kWh
|
||||
####
|
||||
- platform: total_daily_energy
|
||||
name: ${friendly_name} Total kWh
|
||||
power_id: totalWatts
|
||||
filters:
|
||||
- multiply: 0.001
|
||||
unit_of_measurement: kWh
|
||||
device_class: energy
|
||||
state_class: total_increasing
|
||||
@@ -0,0 +1,357 @@
|
||||
# CircuitSetup 6 Channel Energy Meter Main Board + 6 Add-on Boards config
|
||||
# See all options at https://esphome.io/components/sensor/atm90e32.html
|
||||
|
||||
substitutions:
|
||||
# Change the disp_name to something you want
|
||||
disp_name: energy-meter
|
||||
friendly_name: CircuitSetup Energy Meter 42x
|
||||
# Interval of how often the power data is updated
|
||||
update_time: 10s
|
||||
# Frequency of your electrical grid - 60Hz in North America, 50Hz otherwise
|
||||
electric_freq: "60Hz"
|
||||
|
||||
## The below names and IDs can be changed to whatever you want. IDs should not have spaces
|
||||
## Main board
|
||||
main_meter_name1: Meter 1-3
|
||||
main_meter_name2: Meter 4-6
|
||||
main_meter_id1: meter_main1
|
||||
main_meter_id2: meter_main2
|
||||
ct1_name: CT1
|
||||
ct2_name: CT2
|
||||
ct3_name: CT3
|
||||
ct4_name: CT4
|
||||
ct5_name: CT5
|
||||
ct6_name: CT6
|
||||
## Addon1
|
||||
addon1_name1: Addon1 7-9
|
||||
addon1_name2: Addon1 10-12
|
||||
addon1_id1: addon1_1
|
||||
addon1_id2: addon1_2
|
||||
ct7_name: CT7
|
||||
ct8_name: CT8
|
||||
ct9_name: CT9
|
||||
ct10_name: CT10
|
||||
ct11_name: CT11
|
||||
ct12_name: CT12
|
||||
## Addon2
|
||||
addon2_name1: Addon2 13-15
|
||||
addon2_name2: Addon2 16-18
|
||||
addon2_id1: addon2_1
|
||||
addon2_id2: addon2_2
|
||||
ct13_name: CT13
|
||||
ct14_name: CT14
|
||||
ct15_name: CT15
|
||||
ct16_name: CT16
|
||||
ct17_name: CT17
|
||||
ct18_name: CT18
|
||||
## Addon3
|
||||
addon3_name1: Addon3 19-21
|
||||
addon3_name2: Addon3 22-24
|
||||
addon3_id1: addon3_1
|
||||
addon3_id2: addon3_2
|
||||
ct19_name: CT19
|
||||
ct20_name: CT20
|
||||
ct21_name: CT21
|
||||
ct22_name: CT22
|
||||
ct23_name: CT23
|
||||
ct24_name: CT24
|
||||
## Addon4
|
||||
addon4_name1: Addon4 25-27
|
||||
addon4_name2: Addon4 28-30
|
||||
addon4_id1: addon4_1
|
||||
addon4_id2: addon4_2
|
||||
ct25_name: CT25
|
||||
ct26_name: CT26
|
||||
ct27_name: CT27
|
||||
ct28_name: CT28
|
||||
ct29_name: CT29
|
||||
ct30_name: CT30
|
||||
## Addon5
|
||||
addon5_name1: Addon5 31-33
|
||||
addon5_name2: Addon5 34-36
|
||||
addon5_id1: addon5_1
|
||||
addon5_id2: addon5_2
|
||||
ct31_name: CT31
|
||||
ct32_name: CT32
|
||||
ct33_name: CT33
|
||||
ct34_name: CT34
|
||||
ct35_name: CT35
|
||||
ct36_name: CT36
|
||||
## Addon6
|
||||
addon6_name1: Addon6 37-39
|
||||
addon6_name2: Addon6 40-42
|
||||
addon6_id1: addon6_1
|
||||
addon6_id2: addon6_2
|
||||
ct37_name: CT37
|
||||
ct38_name: CT38
|
||||
ct39_name: CT39
|
||||
ct40_name: CT40
|
||||
ct41_name: CT41
|
||||
ct42_name: CT42
|
||||
|
||||
## Semi-Automatic Calibration ##
|
||||
# See https://esphome.io/components/sensor/atm90e32.html#calibration
|
||||
# WHEN CALIBRATION IS ENABLED, calculated values for offset and gain stored in memory take priority over config values
|
||||
# To save calculated calibration values, copy them from the logs to your config
|
||||
# then use the clear buttons to clear the calibration values from memory
|
||||
# Values are stored in the variables for gain below and offsets in their corresponding files
|
||||
# under /calibration/6chan_xxxx_offset_calibrations.yaml
|
||||
offset_calibration: "true"
|
||||
gain_calibration: "true"
|
||||
|
||||
## Gain Calibration Values ##
|
||||
# Change current_cal_ctX value to the corresponding CT's that you're using
|
||||
# For more precise calibration, see documentation for Semi-Auto calibration
|
||||
# Current Transformers:
|
||||
# 20A/25mA SCT-006: 11143
|
||||
# 30A/1V SCT-013-030: 8650
|
||||
# 50A/1V SCT-013-050: 15420
|
||||
# 50A/16.6mA SCT-010: 41334
|
||||
# 80A/26.6mA SCT-010: 41660
|
||||
# 100A/50ma SCT-013-000: 27518
|
||||
# 120A/40mA: SCT-016: 41787
|
||||
# 200A/100mA SCT-024: 27518
|
||||
# 200A/50mA SCT-024: 55036
|
||||
|
||||
## Main Board
|
||||
current_cal_ct1: '27518'
|
||||
current_cal_ct2: '27518'
|
||||
current_cal_ct3: '27518'
|
||||
current_cal_ct4: '27518'
|
||||
current_cal_ct5: '27518'
|
||||
current_cal_ct6: '27518'
|
||||
## Addon1
|
||||
current_cal_ct7: '27518'
|
||||
current_cal_ct8: '27518'
|
||||
current_cal_ct9: '27518'
|
||||
current_cal_ct10: '27518'
|
||||
current_cal_ct11: '27518'
|
||||
current_cal_ct12: '27518'
|
||||
## Addon2
|
||||
current_cal_ct13: '27518'
|
||||
current_cal_ct14: '27518'
|
||||
current_cal_ct15: '27518'
|
||||
current_cal_ct16: '27518'
|
||||
current_cal_ct17: '27518'
|
||||
current_cal_ct18: '27518'
|
||||
## Addon3
|
||||
current_cal_ct19: '27518'
|
||||
current_cal_ct20: '27518'
|
||||
current_cal_ct21: '27518'
|
||||
current_cal_ct22: '27518'
|
||||
current_cal_ct23: '27518'
|
||||
current_cal_ct24: '27518'
|
||||
## Addon4
|
||||
current_cal_ct25: '27518'
|
||||
current_cal_ct26: '27518'
|
||||
current_cal_ct27: '27518'
|
||||
current_cal_ct28: '27518'
|
||||
current_cal_ct29: '27518'
|
||||
current_cal_ct30: '27518'
|
||||
## Addon5
|
||||
current_cal_ct31: '27518'
|
||||
current_cal_ct32: '27518'
|
||||
current_cal_ct33: '27518'
|
||||
current_cal_ct34: '27518'
|
||||
current_cal_ct35: '27518'
|
||||
current_cal_ct36: '27518'
|
||||
## Addon6
|
||||
current_cal_ct37: '27518'
|
||||
current_cal_ct38: '27518'
|
||||
current_cal_ct39: '27518'
|
||||
current_cal_ct40: '27518'
|
||||
current_cal_ct41: '27518'
|
||||
current_cal_ct42: '27518'
|
||||
# This only needs to be changed if you're using something other than the
|
||||
# Jameco 9VAC Transformer:
|
||||
voltage_cal1: '7305'
|
||||
voltage_cal2: '7305'
|
||||
|
||||
esphome:
|
||||
name: ${disp_name}
|
||||
friendly_name: "${friendly_name}"
|
||||
name_add_mac_suffix: true
|
||||
min_version: '2025.7.0'
|
||||
project:
|
||||
name: circuitsetup.6c-energy-meter-6-addons
|
||||
version: "1.7"
|
||||
|
||||
packages:
|
||||
remote_package:
|
||||
url: https://github.com/CircuitSetup/Expandable-6-Channel-ESP32-Energy-Meter
|
||||
ref: master
|
||||
refresh: 1d
|
||||
files:
|
||||
- Software/ESPHome/6chan_common.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_main_sensor.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_addon1.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_addon2.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_addon3.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_addon4.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_addon5.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_addon6.yaml
|
||||
|
||||
## Additional power quality sensors per CT/Phase
|
||||
## Uncomment to enable
|
||||
## Details: https://esphome.io/components/sensor/atm90e32.html#configuration-variables
|
||||
#- Software/ESPHome/power_quality/6chan_main_power_quality.yaml
|
||||
#- Software/ESPHome/power_quality/6chan_addon1_power_quality.yaml
|
||||
#- Software/ESPHome/power_quality/6chan_addon2_power_quality.yaml
|
||||
#- Software/ESPHome/power_quality/6chan_addon3_power_quality.yaml
|
||||
#- Software/ESPHome/power_quality/6chan_addon4_power_quality.yaml
|
||||
#- Software/ESPHome/power_quality/6chan_addon5_power_quality.yaml
|
||||
#- Software/ESPHome/power_quality/6chan_addon6_power_quality.yaml
|
||||
|
||||
## Enables text status fields for each CT/Phase
|
||||
## Uncomment to enable
|
||||
## Details: https://esphome.io/components/sensor/atm90e32.html#text-sensor
|
||||
- Software/ESPHome/status_fields/6chan_main_status.yaml
|
||||
#- Software/ESPHome/status_fields/6chan_addon1_status.yaml
|
||||
#- Software/ESPHome/status_fields/6chan_addon2_status.yaml
|
||||
#- Software/ESPHome/status_fields/6chan_addon3_status.yaml
|
||||
#- Software/ESPHome/status_fields/6chan_addon4_status.yaml
|
||||
#- Software/ESPHome/status_fields/6chan_addon5_status.yaml
|
||||
#- Software/ESPHome/status_fields/6chan_addon6_status.yaml
|
||||
|
||||
## Adds semi-automatic calibration buttons and reference fields
|
||||
## If enabled, make sure offset & gain calibration are set to "true" above
|
||||
## Uncomment to enable
|
||||
## Details: https://esphome.io/components/sensor/atm90e32.html#calibration
|
||||
- Software/ESPHome/calibration/6chan_main_calibration.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon1_calibration.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon2_calibration.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon3_calibration.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon4_calibration.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon5_calibration.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon6_calibration.yaml
|
||||
|
||||
## Additional offset calibration fields that should be copied per CT/Phase from the ESPHome logs
|
||||
## These do not need to be set unless you are seeing non-zero values when CTs or Voltage
|
||||
## should not be registering anything.
|
||||
#- Software/ESPHome/calibration/6chan_main_offset_calibrations.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon1_offset_calibrations.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon2_offset_calibrations.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon3_offset_calibrations.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon4_offset_calibrations.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon5_offset_calibrations.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon6_offset_calibrations.yaml
|
||||
|
||||
dashboard_import:
|
||||
package_import_url: github://CircuitSetup/Expandable-6-Channel-ESP32-Energy-Meter/Software/ESPHome/6chan_energy_meter_6-addons.yaml@master
|
||||
import_full_config: true
|
||||
|
||||
# Enable Home Assistant API
|
||||
# An encryption key is recommended and can be generated here:
|
||||
# https://esphome.io/components/api.html#configuration-variables
|
||||
api:
|
||||
# encryption:
|
||||
# key: "YOUR_ENCRYPTION_KEY_HERE"
|
||||
|
||||
# Enable OTA updating
|
||||
ota:
|
||||
- platform: esphome
|
||||
|
||||
# Set up a wifi access point
|
||||
wifi:
|
||||
ap:
|
||||
|
||||
# In combination with the `ap` this allows
|
||||
# provisioning wifi credentials to the device.
|
||||
captive_portal:
|
||||
|
||||
# Sets up Bluetooth LE to provision wifi credentials
|
||||
# to the device.
|
||||
esp32_improv:
|
||||
authorizer: none
|
||||
|
||||
# Sets up the improv via serial client for wifi provisioning
|
||||
improv_serial:
|
||||
|
||||
web_server:
|
||||
port: 80
|
||||
|
||||
sensor:
|
||||
## The max value for current that the meter can output is 65.535. If you expect to measure current over 65A,
|
||||
## divide the current_cal_ctx (above) by 2 (120A CT) or 4 (200A CT) and multiply the current and power values
|
||||
## by 2 or 4, uncommenting the below and changing the id and phase_x accordingly
|
||||
#- id: !extend ${main_meter_id1} # CTs 1-3
|
||||
# phase_a: # CT1
|
||||
# current:
|
||||
# filters:
|
||||
# - multiply: 2
|
||||
# power:
|
||||
# filters:
|
||||
# - multiply: 2
|
||||
#
|
||||
## uncomment if monitoring 2 voltages
|
||||
#- id: !extend ${main_meter_id2}
|
||||
# phase_a:
|
||||
# voltage:
|
||||
# name: Voltage 2
|
||||
# id: ic2Volts
|
||||
# accuracy_decimals: 1
|
||||
# frequency:
|
||||
# name: Frequency 2
|
||||
|
||||
## Comment out to show amps and watts per meter board in Home Assistant
|
||||
- id: !extend totalAmpsMain
|
||||
internal: true
|
||||
- id: !extend totalWattsMain
|
||||
internal: true
|
||||
- id: !extend totalAmpsAddOn1
|
||||
internal: true
|
||||
- id: !extend totalWattsAddOn1
|
||||
internal: true
|
||||
- id: !extend totalAmpsAddOn2
|
||||
internal: true
|
||||
- id: !extend totalWattsAddOn2
|
||||
internal: true
|
||||
- id: !extend totalAmpsAddOn3
|
||||
internal: true
|
||||
- id: !extend totalWattsAddOn3
|
||||
internal: true
|
||||
- id: !extend totalAmpsAddOn4
|
||||
internal: true
|
||||
- id: !extend totalWattsAddOn4
|
||||
internal: true
|
||||
- id: !extend totalAmpsAddOn5
|
||||
internal: true
|
||||
- id: !extend totalWattsAddOn5
|
||||
internal: true
|
||||
- id: !extend totalAmpsAddOn6
|
||||
internal: true
|
||||
- id: !extend totalWattsAddOn6
|
||||
internal: true
|
||||
|
||||
#Total Amps
|
||||
###########
|
||||
- platform: template
|
||||
name: ${friendly_name} Total Amps
|
||||
id: totalAmps
|
||||
lambda: return id(totalAmpsMain).state + id(totalAmpsAddOn1).state + id(totalAmpsAddOn2).state + id(totalAmpsAddOn3).state + id(totalAmpsAddOn4).state + id(totalAmpsAddOn5).state + id(totalAmpsAddOn6).state;
|
||||
accuracy_decimals: 2
|
||||
unit_of_measurement: A
|
||||
device_class: current
|
||||
update_interval: ${update_time}
|
||||
|
||||
#Total Watts
|
||||
############
|
||||
- platform: template
|
||||
name: ${friendly_name} Total Watts
|
||||
id: totalWatts
|
||||
lambda: return id(totalWattsMain).state + id(totalWattsAddOn1).state + id(totalWattsAddOn2).state + id(totalWattsAddOn3).state + id(totalWattsAddOn4).state + id(totalWattsAddOn5).state + id(totalWattsAddOn6).state;
|
||||
accuracy_decimals: 1
|
||||
unit_of_measurement: W
|
||||
device_class: power
|
||||
update_interval: ${update_time}
|
||||
|
||||
#kWh
|
||||
####
|
||||
- platform: total_daily_energy
|
||||
name: ${friendly_name} Total kWh
|
||||
power_id: totalWatts
|
||||
filters:
|
||||
- multiply: 0.001
|
||||
unit_of_measurement: kWh
|
||||
device_class: energy
|
||||
state_class: total_increasing
|
||||
@@ -0,0 +1,372 @@
|
||||
# CircuitSetup 6 Channel Energy Meter Main Board + 6 Add-on Boards config
|
||||
# Uses the Lilygo T-ETH-Lite ESP32S3 and the CircuitSetup 6 Channel Energy Meter Ethernet Adapter
|
||||
# See all options at https://esphome.io/components/sensor/atm90e32.html
|
||||
|
||||
substitutions:
|
||||
# Change the disp_name to something you want
|
||||
disp_name: energy-meter
|
||||
friendly_name: CircuitSetup Energy Meter 42x
|
||||
# Interval of how often the power data is updated
|
||||
update_time: 10s
|
||||
# Frequency of your electrical grid - 60Hz in North America, 50Hz otherwise
|
||||
electric_freq: "60Hz"
|
||||
|
||||
## The below names and IDs can be changed to whatever you want. IDs should not have spaces
|
||||
## Main board
|
||||
main_meter_name1: Meter 1-3
|
||||
main_meter_name2: Meter 4-6
|
||||
main_meter_id1: meter_main1
|
||||
main_meter_id2: meter_main2
|
||||
ct1_name: CT1
|
||||
ct2_name: CT2
|
||||
ct3_name: CT3
|
||||
ct4_name: CT4
|
||||
ct5_name: CT5
|
||||
ct6_name: CT6
|
||||
## Addon1
|
||||
addon1_name1: Addon1 7-9
|
||||
addon1_name2: Addon1 10-12
|
||||
addon1_id1: addon1_1
|
||||
addon1_id2: addon1_2
|
||||
ct7_name: CT7
|
||||
ct8_name: CT8
|
||||
ct9_name: CT9
|
||||
ct10_name: CT10
|
||||
ct11_name: CT11
|
||||
ct12_name: CT12
|
||||
## Addon2
|
||||
addon2_name1: Addon2 13-15
|
||||
addon2_name2: Addon2 16-18
|
||||
addon2_id1: addon2_1
|
||||
addon2_id2: addon2_2
|
||||
ct13_name: CT13
|
||||
ct14_name: CT14
|
||||
ct15_name: CT15
|
||||
ct16_name: CT16
|
||||
ct17_name: CT17
|
||||
ct18_name: CT18
|
||||
## Addon3
|
||||
addon3_name1: Addon3 19-21
|
||||
addon3_name2: Addon3 22-24
|
||||
addon3_id1: addon3_1
|
||||
addon3_id2: addon3_2
|
||||
ct19_name: CT19
|
||||
ct20_name: CT20
|
||||
ct21_name: CT21
|
||||
ct22_name: CT22
|
||||
ct23_name: CT23
|
||||
ct24_name: CT24
|
||||
## Addon4
|
||||
addon4_name1: Addon4 25-27
|
||||
addon4_name2: Addon4 28-30
|
||||
addon4_id1: addon4_1
|
||||
addon4_id2: addon4_2
|
||||
ct25_name: CT25
|
||||
ct26_name: CT26
|
||||
ct27_name: CT27
|
||||
ct28_name: CT28
|
||||
ct29_name: CT29
|
||||
ct30_name: CT30
|
||||
## Addon5
|
||||
addon5_name1: Addon5 31-33
|
||||
addon5_name2: Addon5 34-36
|
||||
addon5_id1: addon5_1
|
||||
addon5_id2: addon5_2
|
||||
ct31_name: CT31
|
||||
ct32_name: CT32
|
||||
ct33_name: CT33
|
||||
ct34_name: CT34
|
||||
ct35_name: CT35
|
||||
ct36_name: CT36
|
||||
## Addon6
|
||||
addon6_name1: Addon6 37-39
|
||||
addon6_name2: Addon6 40-42
|
||||
addon6_id1: addon6_1
|
||||
addon6_id2: addon6_2
|
||||
ct37_name: CT37
|
||||
ct38_name: CT38
|
||||
ct39_name: CT39
|
||||
ct40_name: CT40
|
||||
ct41_name: CT41
|
||||
ct42_name: CT42
|
||||
|
||||
## Semi-Automatic Calibration ##
|
||||
# See https://esphome.io/components/sensor/atm90e32.html#calibration
|
||||
# WHEN CALIBRATION IS ENABLED, calculated values for offset and gain stored in memory take priority over config values
|
||||
# To save calculated calibration values, copy them from the logs to your config
|
||||
# then use the clear buttons to clear the calibration values from memory
|
||||
# Values are stored in the variables for gain below and offsets in their corresponding files
|
||||
# under /calibration/6chan_xxxx_offset_calibrations.yaml
|
||||
offset_calibration: "true"
|
||||
gain_calibration: "true"
|
||||
|
||||
## Gain Calibration Values ##
|
||||
# Change current_cal_ctX value to the corresponding CT's that you're using
|
||||
# For more precise calibration, see documentation for Semi-Auto calibration
|
||||
# Current Transformers:
|
||||
# 20A/25mA SCT-006: 11143
|
||||
# 30A/1V SCT-013-030: 8650
|
||||
# 50A/1V SCT-013-050: 15420
|
||||
# 50A/16.6mA SCT-010: 41334
|
||||
# 80A/26.6mA SCT-010: 41660
|
||||
# 100A/50ma SCT-013-000: 27518
|
||||
# 120A/40mA: SCT-016: 41787
|
||||
# 200A/100mA SCT-024: 27518
|
||||
# 200A/50mA SCT-024: 55036
|
||||
|
||||
## Main Board
|
||||
current_cal_ct1: '27518'
|
||||
current_cal_ct2: '27518'
|
||||
current_cal_ct3: '27518'
|
||||
current_cal_ct4: '27518'
|
||||
current_cal_ct5: '27518'
|
||||
current_cal_ct6: '27518'
|
||||
## Addon1
|
||||
current_cal_ct7: '27518'
|
||||
current_cal_ct8: '27518'
|
||||
current_cal_ct9: '27518'
|
||||
current_cal_ct10: '27518'
|
||||
current_cal_ct11: '27518'
|
||||
current_cal_ct12: '27518'
|
||||
## Addon2
|
||||
current_cal_ct13: '27518'
|
||||
current_cal_ct14: '27518'
|
||||
current_cal_ct15: '27518'
|
||||
current_cal_ct16: '27518'
|
||||
current_cal_ct17: '27518'
|
||||
current_cal_ct18: '27518'
|
||||
## Addon3
|
||||
current_cal_ct19: '27518'
|
||||
current_cal_ct20: '27518'
|
||||
current_cal_ct21: '27518'
|
||||
current_cal_ct22: '27518'
|
||||
current_cal_ct23: '27518'
|
||||
current_cal_ct24: '27518'
|
||||
## Addon4
|
||||
current_cal_ct25: '27518'
|
||||
current_cal_ct26: '27518'
|
||||
current_cal_ct27: '27518'
|
||||
current_cal_ct28: '27518'
|
||||
current_cal_ct29: '27518'
|
||||
current_cal_ct30: '27518'
|
||||
## Addon5
|
||||
current_cal_ct31: '27518'
|
||||
current_cal_ct32: '27518'
|
||||
current_cal_ct33: '27518'
|
||||
current_cal_ct34: '27518'
|
||||
current_cal_ct35: '27518'
|
||||
current_cal_ct36: '27518'
|
||||
## Addon6
|
||||
current_cal_ct37: '27518'
|
||||
current_cal_ct38: '27518'
|
||||
current_cal_ct39: '27518'
|
||||
current_cal_ct40: '27518'
|
||||
current_cal_ct41: '27518'
|
||||
current_cal_ct42: '27518'
|
||||
# This only needs to be changed if you're using something other than the
|
||||
# Jameco 9VAC Transformer:
|
||||
voltage_cal1: '7305'
|
||||
voltage_cal2: '7305'
|
||||
|
||||
esphome:
|
||||
name: ${disp_name}
|
||||
friendly_name: "${friendly_name}"
|
||||
name_add_mac_suffix: true
|
||||
min_version: '2025.5.0'
|
||||
project:
|
||||
name: circuitsetup.6c-energy-meter-6-addons-ethernet
|
||||
version: "1.7"
|
||||
|
||||
packages:
|
||||
remote_package:
|
||||
url: https://github.com/CircuitSetup/Expandable-6-Channel-ESP32-Energy-Meter
|
||||
ref: master
|
||||
refresh: 1d
|
||||
files:
|
||||
- Software/ESPHome/6chan_common_ethernet.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_main_sensor.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_addon1.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_addon2.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_addon3.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_addon4.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_addon5.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_addon6.yaml
|
||||
|
||||
## Additional power quality sensors per CT/Phase
|
||||
## Uncomment to enable
|
||||
## Details: https://esphome.io/components/sensor/atm90e32.html#configuration-variables
|
||||
#- Software/ESPHome/power_quality/6chan_main_power_quality.yaml
|
||||
#- Software/ESPHome/power_quality/6chan_addon1_power_quality.yaml
|
||||
#- Software/ESPHome/power_quality/6chan_addon2_power_quality.yaml
|
||||
#- Software/ESPHome/power_quality/6chan_addon3_power_quality.yaml
|
||||
#- Software/ESPHome/power_quality/6chan_addon4_power_quality.yaml
|
||||
#- Software/ESPHome/power_quality/6chan_addon5_power_quality.yaml
|
||||
#- Software/ESPHome/power_quality/6chan_addon6_power_quality.yaml
|
||||
|
||||
## Enables text status fields for each CT/Phase
|
||||
## Uncomment to enable
|
||||
## Details: https://esphome.io/components/sensor/atm90e32.html#text-sensor
|
||||
- Software/ESPHome/status_fields/6chan_main_status.yaml
|
||||
#- Software/ESPHome/status_fields/6chan_addon1_status.yaml
|
||||
#- Software/ESPHome/status_fields/6chan_addon2_status.yaml
|
||||
#- Software/ESPHome/status_fields/6chan_addon3_status.yaml
|
||||
#- Software/ESPHome/status_fields/6chan_addon4_status.yaml
|
||||
#- Software/ESPHome/status_fields/6chan_addon5_status.yaml
|
||||
#- Software/ESPHome/status_fields/6chan_addon6_status.yaml
|
||||
|
||||
## Adds semi-automatic calibration buttons and reference fields
|
||||
## If enabled, make sure offset & gain calibration are set to "true" above
|
||||
## Uncomment to enable
|
||||
## Details: https://esphome.io/components/sensor/atm90e32.html#calibration
|
||||
- Software/ESPHome/calibration/6chan_main_calibration.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon1_calibration.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon2_calibration.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon3_calibration.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon4_calibration.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon5_calibration.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon6_calibration.yaml
|
||||
|
||||
## Additional offset calibration fields that should be copied per CT/Phase from the ESPHome logs
|
||||
## These do not need to be set unless you are seeing non-zero values when CTs or Voltage
|
||||
## should not be registering anything.
|
||||
#- Software/ESPHome/calibration/6chan_main_offset_calibrations.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon1_offset_calibrations.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon2_offset_calibrations.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon3_offset_calibrations.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon4_offset_calibrations.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon5_offset_calibrations.yaml
|
||||
#- Software/ESPHome/calibration/6chan_addon6_offset_calibrations.yaml
|
||||
|
||||
dashboard_import:
|
||||
package_import_url: github://CircuitSetup/Expandable-6-Channel-ESP32-Energy-Meter/Software/ESPHome/6chan_energy_meter_6-addons_ethernet.yaml@master
|
||||
import_full_config: true
|
||||
|
||||
# Enable Home Assistant API
|
||||
# An encryption key is recommended and can be generated here:
|
||||
# https://esphome.io/components/api.html#configuration-variables
|
||||
api:
|
||||
# encryption:
|
||||
# key: "YOUR_ENCRYPTION_KEY_HERE"
|
||||
|
||||
# Enable OTA updating
|
||||
ota:
|
||||
- platform: esphome
|
||||
|
||||
web_server:
|
||||
port: 80
|
||||
|
||||
sensor:
|
||||
# CS Pin mappings for Lilygo T-ETH-Lite ESP32S3
|
||||
- id: !extend ${main_meter_id1}
|
||||
cs_pin: 8
|
||||
#- id: !extend ${main_meter_id2}
|
||||
# cs_pin: 4
|
||||
#- id: !extend ${addon1_id1}
|
||||
# cs_pin: 0
|
||||
#- id: !extend ${addon1_id2}
|
||||
# cs_pin: 16
|
||||
- id: !extend ${addon2_id1}
|
||||
cs_pin: 18
|
||||
#- id: !extend ${addon2_id2}
|
||||
# cs_pin: 17
|
||||
#- id: !extend ${addon3_id1}
|
||||
# cs_pin: 2
|
||||
#- id: !extend ${addon3_id2}
|
||||
# cs_pin: 21
|
||||
- id: !extend ${addon4_id1}
|
||||
cs_pin: 3
|
||||
- id: !extend ${addon4_id2}
|
||||
cs_pin: 20
|
||||
- id: !extend ${addon5_id1}
|
||||
cs_pin: 41
|
||||
- id: !extend ${addon5_id2}
|
||||
cs_pin: 39
|
||||
#- id: !extend ${addon6_id1}
|
||||
# cs_pin: 15
|
||||
- id: !extend ${addon6_id2}
|
||||
cs_pin: 38
|
||||
|
||||
## The max value for current that the meter can output is 65.535. If you expect to measure current over 65A,
|
||||
## divide the current_cal_ctx (above) by 2 (120A CT) or 4 (200A CT) and multiply the current and power values
|
||||
## by 2 or 4, uncommenting the below and changing the id and phase_x accordingly
|
||||
#- id: !extend ${main_meter_id1} # CTs 1-3
|
||||
# phase_a: # CT1
|
||||
# current:
|
||||
# filters:
|
||||
# - multiply: 2
|
||||
# power:
|
||||
# filters:
|
||||
# - multiply: 2
|
||||
#
|
||||
## uncomment if monitoring 2 voltages
|
||||
#- id: !extend ${main_meter_id2}
|
||||
# phase_a:
|
||||
# voltage:
|
||||
# name: Voltage 2
|
||||
# id: ic2Volts
|
||||
# accuracy_decimals: 1
|
||||
# frequency:
|
||||
# name: Frequency 2
|
||||
|
||||
## Comment out to show amps and watts per meter board in Home Assistant
|
||||
- id: !extend totalAmpsMain
|
||||
internal: true
|
||||
- id: !extend totalWattsMain
|
||||
internal: true
|
||||
- id: !extend totalAmpsAddOn1
|
||||
internal: true
|
||||
- id: !extend totalWattsAddOn1
|
||||
internal: true
|
||||
- id: !extend totalAmpsAddOn2
|
||||
internal: true
|
||||
- id: !extend totalWattsAddOn2
|
||||
internal: true
|
||||
- id: !extend totalAmpsAddOn3
|
||||
internal: true
|
||||
- id: !extend totalWattsAddOn3
|
||||
internal: true
|
||||
- id: !extend totalAmpsAddOn4
|
||||
internal: true
|
||||
- id: !extend totalWattsAddOn4
|
||||
internal: true
|
||||
- id: !extend totalAmpsAddOn5
|
||||
internal: true
|
||||
- id: !extend totalWattsAddOn5
|
||||
internal: true
|
||||
- id: !extend totalAmpsAddOn6
|
||||
internal: true
|
||||
- id: !extend totalWattsAddOn6
|
||||
internal: true
|
||||
|
||||
#Total Amps
|
||||
###########
|
||||
- platform: template
|
||||
name: ${friendly_name} Total Amps
|
||||
id: totalAmps
|
||||
lambda: return id(totalAmpsMain).state + id(totalAmpsAddOn1).state + id(totalAmpsAddOn2).state + id(totalAmpsAddOn3).state + id(totalAmpsAddOn4).state + id(totalAmpsAddOn5).state + id(totalAmpsAddOn6).state;
|
||||
accuracy_decimals: 2
|
||||
unit_of_measurement: A
|
||||
device_class: current
|
||||
update_interval: ${update_time}
|
||||
|
||||
#Total Watts
|
||||
############
|
||||
- platform: template
|
||||
name: ${friendly_name} Total Watts
|
||||
id: totalWatts
|
||||
lambda: return id(totalWattsMain).state + id(totalWattsAddOn1).state + id(totalWattsAddOn2).state + id(totalWattsAddOn3).state + id(totalWattsAddOn4).state + id(totalWattsAddOn5).state + id(totalWattsAddOn6).state;
|
||||
accuracy_decimals: 1
|
||||
unit_of_measurement: W
|
||||
device_class: power
|
||||
update_interval: ${update_time}
|
||||
|
||||
#kWh
|
||||
####
|
||||
- platform: total_daily_energy
|
||||
name: ${friendly_name} Total kWh
|
||||
power_id: totalWatts
|
||||
filters:
|
||||
- multiply: 0.001
|
||||
unit_of_measurement: kWh
|
||||
device_class: energy
|
||||
state_class: total_increasing
|
||||
@@ -0,0 +1,162 @@
|
||||
# CircuitSetup 6 Channel Energy Meter Main Board config
|
||||
# See all options at https://esphome.io/components/sensor/atm90e32.html
|
||||
|
||||
substitutions:
|
||||
# Change the disp_name to something you want
|
||||
disp_name: energy-meter
|
||||
friendly_name: "CircuitSetup Energy Meter"
|
||||
# Interval of how often the power data is updated
|
||||
update_time: 10s
|
||||
# Frequency of your electrical grid - 60Hz in North America, 50Hz otherwise
|
||||
electric_freq: '60Hz'
|
||||
|
||||
## The below names and IDs can be changed to whatever you want. IDs should not have spaces
|
||||
main_meter_name1: Meter 1-3
|
||||
main_meter_name2: Meter 4-6
|
||||
main_meter_id1: meter_main1
|
||||
main_meter_id2: meter_main2
|
||||
ct1_name: CT1
|
||||
ct2_name: CT2
|
||||
ct3_name: CT3
|
||||
ct4_name: CT4
|
||||
ct5_name: CT5
|
||||
ct6_name: CT6
|
||||
|
||||
## Semi-Automatic Calibration ##
|
||||
# See https://esphome.io/components/sensor/atm90e32.html#calibration
|
||||
# WHEN CALIBRATION IS ENABLED, calculated values for offset and gain stored in memory take priority over config values
|
||||
# To save calculated calibration values, copy them from the logs to your config
|
||||
# then use the clear buttons to clear the calibration values from memory
|
||||
# Values are stored in the variables for gain below and offsets in their corresponding files
|
||||
# under /calibration/6chan_xxxx_offset_calibrations.yaml
|
||||
offset_calibration: "true"
|
||||
gain_calibration: "true"
|
||||
|
||||
## Gain Calibration Values ##
|
||||
# Change current_cal_ctX value to the corresponding CT's that you're using
|
||||
# For more precise calibration, see documentation for Semi-Auto calibration
|
||||
# Current Transformers:
|
||||
# 20A/25mA SCT-006: 11143
|
||||
# 30A/1V SCT-013-030: 8650
|
||||
# 50A/1V SCT-013-050: 15420
|
||||
# 50A/16.6mA SCT-010: 41334
|
||||
# 80A/26.6mA SCT-010: 41660
|
||||
# 100A/50ma SCT-013-000: 27518
|
||||
# 120A/40mA: SCT-016: 41787
|
||||
# 200A/100mA SCT-024: 27518
|
||||
# 200A/50mA SCT-024: 55036
|
||||
current_cal_ct1: '27518'
|
||||
current_cal_ct2: '27518'
|
||||
current_cal_ct3: '27518'
|
||||
current_cal_ct4: '27518'
|
||||
current_cal_ct5: '27518'
|
||||
current_cal_ct6: '27518'
|
||||
# This only needs to be changed if you're using something other than the
|
||||
# Jameco 9VAC Transformer:
|
||||
voltage_cal1: '7305'
|
||||
voltage_cal2: '7305'
|
||||
|
||||
esphome:
|
||||
name: ${disp_name}
|
||||
friendly_name: "${friendly_name}"
|
||||
name_add_mac_suffix: true
|
||||
min_version: '2025.5.0'
|
||||
project:
|
||||
name: circuitsetup.6c-energy-meter
|
||||
version: "1.7"
|
||||
|
||||
packages:
|
||||
remote_package:
|
||||
url: https://github.com/CircuitSetup/Expandable-6-Channel-ESP32-Energy-Meter
|
||||
ref: master
|
||||
refresh: 1d
|
||||
files:
|
||||
- Software/ESPHome/6chan_common.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_main_sensor.yaml
|
||||
|
||||
## Additional power quality sensors per CT/Phase
|
||||
## Uncomment to enable
|
||||
## details: https://esphome.io/components/sensor/atm90e32.html#configuration-variables
|
||||
#- Software/ESPHome/power_quality/6chan_main_power_quality.yaml
|
||||
|
||||
## Enables text status fields for each CT/Phase
|
||||
## details: https://esphome.io/components/sensor/atm90e32.html#text-sensor
|
||||
- Software/ESPHome/status_fields/6chan_main_status.yaml
|
||||
|
||||
## Adds semi-automatic calibration buttons and reference fields
|
||||
## If enabled, make sure offset & gain calibration are set to "true" above
|
||||
## details: https://esphome.io/components/sensor/atm90e32.html#calibration
|
||||
- Software/ESPHome/calibration/6chan_main_calibration.yaml
|
||||
|
||||
## Additional offset calibration fields that should be copied per CT/Phase from the ESPHome logs
|
||||
## These do not need to be set unless you are seeing non-zero values when CTs or Voltage
|
||||
## should not be registering anything.
|
||||
#- Software/ESPHome/calibration/6chan_main_offset_calibrations.yaml
|
||||
|
||||
dashboard_import:
|
||||
package_import_url: github://CircuitSetup/Expandable-6-Channel-ESP32-Energy-Meter/Software/ESPHome/6chan_energy_meter_main_board.yaml@master
|
||||
import_full_config: true
|
||||
|
||||
# Enable Home Assistant API
|
||||
# An encryption key is recommended and can be generated here:
|
||||
# https://esphome.io/components/api.html#configuration-variables
|
||||
api:
|
||||
# encryption:
|
||||
# key: "YOUR_ENCRYPTION_KEY_HERE"
|
||||
|
||||
# Enable OTA updating
|
||||
ota:
|
||||
- platform: esphome
|
||||
|
||||
# Set up a wifi access point
|
||||
wifi:
|
||||
ap:
|
||||
|
||||
# In combination with the `ap` this allows
|
||||
# provisioning wifi credentials to the device.
|
||||
captive_portal:
|
||||
|
||||
# Sets up Bluetooth LE to provision wifi credentials
|
||||
# to the device.
|
||||
esp32_improv:
|
||||
authorizer: none
|
||||
|
||||
# Sets up the improv via serial client for wifi provisioning
|
||||
improv_serial:
|
||||
|
||||
web_server:
|
||||
port: 80
|
||||
|
||||
sensor:
|
||||
## The max value for current that the meter can output is 65.535. If you expect to measure current over 65A,
|
||||
## divide the current_cal_ctx (above) by 2 (120A CT) or 4 (200A CT) and multiply the current and power values
|
||||
## by 2 or 4, uncommenting the below and changing the id and phase_x accordingly
|
||||
#- id: !extend ${main_meter_id1} # CTs 1-3
|
||||
# phase_a: # CT1
|
||||
# current:
|
||||
# filters:
|
||||
# - multiply: 2
|
||||
# power:
|
||||
# filters:
|
||||
# - multiply: 2
|
||||
#
|
||||
## uncomment if monitoring 2 voltages
|
||||
#- id: !extend ${main_meter_id2}
|
||||
# phase_a:
|
||||
# voltage:
|
||||
# name: Voltage 2
|
||||
# id: ic2Volts
|
||||
# accuracy_decimals: 1
|
||||
# frequency:
|
||||
# name: Frequency 2
|
||||
|
||||
#kWh
|
||||
####
|
||||
- platform: total_daily_energy
|
||||
name: ${friendly_name} Total kWh
|
||||
power_id: totalWattsMain
|
||||
filters:
|
||||
- multiply: 0.001
|
||||
unit_of_measurement: kWh
|
||||
device_class: energy
|
||||
state_class: total_increasing
|
||||
@@ -0,0 +1,155 @@
|
||||
# CircuitSetup 6 Channel Energy Meter Main Board config
|
||||
# Uses the Lilygo T-ETH-Lite ESP32S3 and the CircuitSetup 6 Channel Energy Meter Ethernet Adapter
|
||||
# See all options at https://esphome.io/components/sensor/atm90e32.html
|
||||
|
||||
substitutions:
|
||||
# Change the disp_name to something you want
|
||||
disp_name: energy-meter
|
||||
friendly_name: "CircuitSetup Energy Meter"
|
||||
# Interval of how often the power data is updated
|
||||
update_time: 10s
|
||||
# Frequency of your electrical grid - 60Hz in North America, 50Hz otherwise
|
||||
electric_freq: "60Hz"
|
||||
|
||||
## The below names and IDs can be changed to whatever you want. IDs should not have spaces
|
||||
main_meter_name1: Meter 1-3
|
||||
main_meter_name2: Meter 4-6
|
||||
main_meter_id1: meter_main1
|
||||
main_meter_id2: meter_main2
|
||||
ct1_name: CT1
|
||||
ct2_name: CT2
|
||||
ct3_name: CT3
|
||||
ct4_name: CT4
|
||||
ct5_name: CT5
|
||||
ct6_name: CT6
|
||||
|
||||
## Semi-Automatic Calibration ##
|
||||
# See https://esphome.io/components/sensor/atm90e32.html#calibration
|
||||
# WHEN CALIBRATION IS ENABLED, calculated values for offset and gain stored in memory take priority over config values
|
||||
# To save calculated calibration values, copy them from the logs to your config
|
||||
# then use the clear buttons to clear the calibration values from memory
|
||||
# Values are stored in the variables for gain below and offsets in their corresponding files
|
||||
# under /calibration/6chan_xxxx_offset_calibrations.yaml
|
||||
offset_calibration: "true"
|
||||
gain_calibration: "true"
|
||||
|
||||
## Gain Calibration Values ##
|
||||
# Change current_cal_ctX value to the corresponding CT's that you're using
|
||||
# For more precise calibration, see documentation for Semi-Auto calibration
|
||||
# Current Transformers:
|
||||
# 20A/25mA SCT-006: 11143
|
||||
# 30A/1V SCT-013-030: 8650
|
||||
# 50A/1V SCT-013-050: 15420
|
||||
# 50A/16.6mA SCT-010: 41334
|
||||
# 80A/26.6mA SCT-010: 41660
|
||||
# 100A/50ma SCT-013-000: 27518
|
||||
# 120A/40mA: SCT-016: 41787
|
||||
# 200A/100mA SCT-024: 27518
|
||||
# 200A/50mA SCT-024: 55036
|
||||
current_cal_ct1: '27518'
|
||||
current_cal_ct2: '27518'
|
||||
current_cal_ct3: '27518'
|
||||
current_cal_ct4: '27518'
|
||||
current_cal_ct5: '27518'
|
||||
current_cal_ct6: '27518'
|
||||
# This only needs to be changed if you're using something other than the
|
||||
# Jameco 9VAC Transformer:
|
||||
voltage_cal1: '7305'
|
||||
voltage_cal2: '7305'
|
||||
|
||||
esphome:
|
||||
name: "${disp_name}"
|
||||
friendly_name: "${friendly_name}"
|
||||
name_add_mac_suffix: true
|
||||
min_version: '2025.5.0'
|
||||
platformio_options:
|
||||
board_build.flash_mode: dio
|
||||
project:
|
||||
name: circuitsetup.6c-energy-meter-ethernet
|
||||
version: "1.7"
|
||||
|
||||
packages:
|
||||
remote_package:
|
||||
url: https://github.com/CircuitSetup/Expandable-6-Channel-ESP32-Energy-Meter
|
||||
ref: master
|
||||
refresh: 1d
|
||||
files:
|
||||
- Software/ESPHome/6chan_common_ethernet.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_main_sensor.yaml
|
||||
|
||||
## Additional power quality sensors per CT/Phase
|
||||
## Uncomment to enable
|
||||
## details: https://esphome.io/components/sensor/atm90e32.html#configuration-variables
|
||||
#- Software/ESPHome/power_quality/6chan_main_power_quality.yaml
|
||||
|
||||
## Enables text status fields for each CT/Phase
|
||||
## details: https://esphome.io/components/sensor/atm90e32.html#text-sensor
|
||||
- Software/ESPHome/status_fields/6chan_main_status.yaml
|
||||
|
||||
## Adds semi-automatic calibration buttons and reference fields
|
||||
## If enabled, make sure offset & gain calibration are set to "true" above
|
||||
## details: https://esphome.io/components/sensor/atm90e32.html#calibration
|
||||
- Software/ESPHome/calibration/6chan_main_calibration.yaml
|
||||
|
||||
## Additional offset calibration fields that should be copied per CT/Phase from the ESPHome logs
|
||||
## These do not need to be set unless you are seeing non-zero values when CTs or Voltage
|
||||
## should not be registering anything.
|
||||
#- Software/ESPHome/calibration/6chan_main_offset_calibrations.yaml
|
||||
|
||||
dashboard_import:
|
||||
package_import_url: github://CircuitSetup/Expandable-6-Channel-ESP32-Energy-Meter/Software/ESPHome/6chan_energy_meter_main_ethernet.yaml@master
|
||||
import_full_config: true
|
||||
|
||||
# Enable Home Assistant API
|
||||
# An encryption key is recommended and can be generated here:
|
||||
# https://esphome.io/components/api.html#configuration-variables
|
||||
api:
|
||||
# encryption:
|
||||
# key: "YOUR_ENCRYPTION_KEY_HERE"
|
||||
|
||||
# Enable OTA updating
|
||||
ota:
|
||||
- platform: esphome
|
||||
|
||||
web_server:
|
||||
port: 80
|
||||
|
||||
sensor:
|
||||
# CS Pin mappings for Lilygo T-ETH-Lite ESP32S3
|
||||
- id: !extend ${main_meter_id1}
|
||||
cs_pin: 8
|
||||
#- id: !extend ${main_meter_id2}
|
||||
# cs_pin: 4
|
||||
|
||||
## The max value for current that the meter can output is 65.535. If you expect to measure current over 65A,
|
||||
## divide the current_cal_ctx (above) by 2 (120A CT) or 4 (200A CT) and multiply the current and power values
|
||||
## by 2 or 4, uncommenting the below and changing the id and phase_x accordingly
|
||||
#- id: !extend ${main_meter_id1} # CTs 1-3
|
||||
# phase_a: # CT1
|
||||
# current:
|
||||
# filters:
|
||||
# - multiply: 2
|
||||
# power:
|
||||
# filters:
|
||||
# - multiply: 2
|
||||
#
|
||||
## uncomment if monitoring 2 voltages
|
||||
#- id: !extend ${main_meter_id2}
|
||||
# phase_a:
|
||||
# voltage:
|
||||
# name: Voltage 2
|
||||
# id: ic2Volts
|
||||
# accuracy_decimals: 1
|
||||
# frequency:
|
||||
# name: Frequency 2
|
||||
|
||||
#kWh
|
||||
####
|
||||
- platform: total_daily_energy
|
||||
name: ${friendly_name} Total kWh
|
||||
power_id: totalWattsMain
|
||||
filters:
|
||||
- multiply: 0.001
|
||||
unit_of_measurement: kWh
|
||||
device_class: energy
|
||||
state_class: total_increasing
|
||||
@@ -0,0 +1,155 @@
|
||||
# CircuitSetup 6 Channel Energy Meter Main Board config
|
||||
# Uses the Waveshare ESP32-S3-ETH and the CircuitSetup 6 Channel Energy Meter Ethernet WS Adapter
|
||||
# See all options at https://esphome.io/components/sensor/atm90e32.html
|
||||
|
||||
substitutions:
|
||||
# Change the disp_name to something you want
|
||||
disp_name: energy-meter-eth-ws
|
||||
friendly_name: "CircuitSetup Energy Meter"
|
||||
# Interval of how often the power data is updated
|
||||
update_time: 10s
|
||||
# Frequency of your electrical grid - 60Hz in North America, 50Hz otherwise
|
||||
electric_freq: "60Hz"
|
||||
|
||||
## The below names and IDs can be changed to whatever you want. IDs should not have spaces
|
||||
main_meter_name1: Meter 1-3
|
||||
main_meter_name2: Meter 4-6
|
||||
main_meter_id1: meter_main1
|
||||
main_meter_id2: meter_main2
|
||||
ct1_name: CT1
|
||||
ct2_name: CT2
|
||||
ct3_name: CT3
|
||||
ct4_name: CT4
|
||||
ct5_name: CT5
|
||||
ct6_name: CT6
|
||||
|
||||
## Semi-Automatic Calibration ##
|
||||
# See https://esphome.io/components/sensor/atm90e32.html#calibration
|
||||
# WHEN CALIBRATION IS ENABLED, calculated values for offset and gain stored in memory take priority over config values
|
||||
# To save calculated calibration values, copy them from the logs to your config
|
||||
# then use the clear buttons to clear the calibration values from memory
|
||||
# Values are stored in the variables for gain below and offsets in their corresponding files
|
||||
# under /calibration/6chan_xxxx_offset_calibrations.yaml
|
||||
offset_calibration: "true"
|
||||
gain_calibration: "true"
|
||||
|
||||
## Gain Calibration Values ##
|
||||
# Change current_cal_ctX value to the corresponding CT's that you're using
|
||||
# For more precise calibration, see documentation for Semi-Auto calibration
|
||||
# Current Transformers:
|
||||
# 20A/25mA SCT-006: 11143
|
||||
# 30A/1V SCT-013-030: 8650
|
||||
# 50A/1V SCT-013-050: 15420
|
||||
# 50A/16.6mA SCT-010: 41334
|
||||
# 80A/26.6mA SCT-010: 41660
|
||||
# 100A/50ma SCT-013-000: 27518
|
||||
# 120A/40mA: SCT-016: 41787
|
||||
# 200A/100mA SCT-024: 27518
|
||||
# 200A/50mA SCT-024: 55036
|
||||
current_cal_ct1: '27518'
|
||||
current_cal_ct2: '27518'
|
||||
current_cal_ct3: '27518'
|
||||
current_cal_ct4: '27518'
|
||||
current_cal_ct5: '27518'
|
||||
current_cal_ct6: '27518'
|
||||
# This only needs to be changed if you're using something other than the
|
||||
# Jameco 9VAC Transformer:
|
||||
voltage_cal1: '7305'
|
||||
voltage_cal2: '7305'
|
||||
|
||||
esphome:
|
||||
name: "${disp_name}"
|
||||
friendly_name: "${friendly_name}"
|
||||
name_add_mac_suffix: true
|
||||
min_version: '2025.5.0'
|
||||
platformio_options:
|
||||
board_build.flash_mode: dio
|
||||
project:
|
||||
name: circuitsetup.6c-energy-meter-ethernet-ws
|
||||
version: "1.7"
|
||||
|
||||
packages:
|
||||
remote_package:
|
||||
url: https://github.com/CircuitSetup/Expandable-6-Channel-ESP32-Energy-Meter
|
||||
ref: master
|
||||
refresh: 1min
|
||||
files:
|
||||
- Software/ESPHome/6chan_common_ethernet_ws.yaml
|
||||
- Software/ESPHome/meter_sensors/6chan_main_sensor.yaml
|
||||
|
||||
## Additional power quality sensors per CT/Phase
|
||||
## Uncomment to enable
|
||||
## details: https://esphome.io/components/sensor/atm90e32.html#configuration-variables
|
||||
#- Software/ESPHome/power_quality/6chan_main_power_quality.yaml
|
||||
|
||||
## Enables text status fields for each CT/Phase
|
||||
## details: https://esphome.io/components/sensor/atm90e32.html#text-sensor
|
||||
- Software/ESPHome/status_fields/6chan_main_status.yaml
|
||||
|
||||
## Adds semi-automatic calibration buttons and reference fields
|
||||
## If enabled, make sure offset & gain calibration are set to "true" above
|
||||
## details: https://esphome.io/components/sensor/atm90e32.html#calibration
|
||||
- Software/ESPHome/calibration/6chan_main_calibration.yaml
|
||||
|
||||
## Additional offset calibration fields that should be copied per CT/Phase from the ESPHome logs
|
||||
## These do not need to be set unless you are seeing non-zero values when CTs or Voltage
|
||||
## should not be registering anything.
|
||||
#- Software/ESPHome/calibration/6chan_main_offset_calibrations.yaml
|
||||
|
||||
dashboard_import:
|
||||
package_import_url: github://CircuitSetup/Expandable-6-Channel-ESP32-Energy-Meter/Software/ESPHome/6chan_energy_meter_main_ethernet_ws.yaml@master
|
||||
import_full_config: true
|
||||
|
||||
# Enable Home Assistant API
|
||||
# An encryption key is recommended and can be generated here:
|
||||
# https://esphome.io/components/api.html#configuration-variables
|
||||
api:
|
||||
# encryption:
|
||||
# key: "YOUR_ENCRYPTION_KEY_HERE"
|
||||
|
||||
# Enable OTA updating
|
||||
ota:
|
||||
- platform: esphome
|
||||
|
||||
web_server:
|
||||
port: 80
|
||||
|
||||
sensor:
|
||||
# CS Pin mappings for Waveshare ESP32-S3-ETH
|
||||
- id: !extend ${main_meter_id1}
|
||||
cs_pin: 34
|
||||
- id: !extend ${main_meter_id2}
|
||||
cs_pin: 40
|
||||
|
||||
## The max value for current that the meter can output is 65.535. If you expect to measure current over 65A,
|
||||
## divide the current_cal_ctx (above) by 2 (120A CT) or 4 (200A CT) and multiply the current and power values
|
||||
## by 2 or 4, uncommenting the below and changing the id and phase_x accordingly
|
||||
#- id: !extend ${main_meter_id1} # CTs 1-3
|
||||
# phase_a: # CT1
|
||||
# current:
|
||||
# filters:
|
||||
# - multiply: 2
|
||||
# power:
|
||||
# filters:
|
||||
# - multiply: 2
|
||||
#
|
||||
## uncomment if monitoring 2 voltages
|
||||
#- id: !extend ${main_meter_id2}
|
||||
# phase_a:
|
||||
# voltage:
|
||||
# name: Voltage 2
|
||||
# id: ic2Volts
|
||||
# accuracy_decimals: 1
|
||||
# frequency:
|
||||
# name: Frequency 2
|
||||
|
||||
#kWh
|
||||
####
|
||||
- platform: total_daily_energy
|
||||
name: ${friendly_name} Total kWh
|
||||
power_id: totalWattsMain
|
||||
filters:
|
||||
- multiply: 0.001
|
||||
unit_of_measurement: kWh
|
||||
device_class: energy
|
||||
state_class: total_increasing
|
||||
@@ -0,0 +1,153 @@
|
||||
# ESPHome Configuration for Expandable 6-Channel ESP32 Energy Meter
|
||||
|
||||
This folder contains [ESPHome](https://esphome.io) configuration files used to monitor power and energy via the CircuitSetup Expandable 6-Channel Energy Meter. These configurations support flexible deployments - with or without add-on boards - as well as Wi-Fi or Ethernet connections. Many files use `!include` statements to modularize calibration, sensor definitions, power quality metrics, and device status.
|
||||
|
||||
---
|
||||
|
||||
## 📁 Base Config Files
|
||||
|
||||
| File | Description |
|
||||
|------|-------------|
|
||||
| `6chan_common.yaml` | Base shared configuration: sets platform (`esp32`), SPI, includes time and API components. Meant to be included in Wi-Fi-based setups. |
|
||||
| `6chan_common_ethernet.yaml` | Same as `6chan_common.yaml`, but for the [Lilygo T-ETH-Lite ESP32S3](https://lilygo.cc/products/t-eth-lite) and the [CircuitSetup 6 Channel Energy Meter Ethernet Adapter](https://circuitsetup.us/product/6-channel-energy-meter-to-lilygo-t-eth-lite-esp32s3-ethernet-adapter/) . |
|
||||
| `6chan_energy_meter_main_board.yaml` | Full configuration for monitoring only the main board's 6 channels via Wi-Fi. |
|
||||
| `6chan_energy_meter_main_ethernet.yaml` | Ethernet-based variant of `6chan_energy_meter_main_board.yaml`. |
|
||||
| `6chan_energy_meter_1-addon.yaml` | Main board + 1 add-on board (12 channels). |
|
||||
| `6chan_energy_meter_2-addons.yaml` | Main board + 2 add-ons (18 channels). |
|
||||
| `6chan_energy_meter_3-addons.yaml` | Main board + 3 add-ons (24 channels). |
|
||||
|
||||
---
|
||||
|
||||
## 📂 calibration/
|
||||
|
||||
When these files are included, and calibration is enabled, semi-automatic calibration can be done for each current and voltage channel by providing a current and voltage reference. Calculated values for offset and gain stored in memory take priority over config values.
|
||||
To save calculated calibration values, copy them from the ESPHome logs to your config then use the clear buttons to clear the calibration values from memory
|
||||
|
||||
[See details on semi-automatic calibrations here](https://esphome.io/components/sensor/atm90e32.html#calibration)
|
||||
|
||||
| File | Description |
|
||||
|------|-------------|
|
||||
| `6chan_xxxx_calibration.yaml` | Enables calibration buttons for gain, power offset, current/voltage offset, and clear buttons for each |
|
||||
| `6chan_xxxx_offset_calibrations.yaml` | Offset calibration values fine tuned via the output of the semi-automatic calibrations. Values should be copied in from the meter's ESPHome log |
|
||||
|
||||
---
|
||||
|
||||
## 📂 meter_sensors/
|
||||
|
||||
Default current, power (watts), and voltage sensor entities per meter board
|
||||
[More details on each sensor here](https://esphome.io/components/sensor/atm90e32.html#configuration-variables)
|
||||
|
||||
---
|
||||
|
||||
## 📂 status_fields/
|
||||
|
||||
These fields display the status of each CT, or phase, with a short text description. [See more details here](https://esphome.io/components/sensor/atm90e32.html#text-sensor)
|
||||
|
||||
---
|
||||
|
||||
## 📂 power_quality/
|
||||
|
||||
Contains power quality values that are available for each phase, and can be enabled per meter board. Enabling these on every current channel is possible, but will produce a lot of data and sensors that are likely not needed. They include reactive_power, apparent_power, harmonic_power, power_factor, phase_angle, peak_current
|
||||
[More details on each sensor here](https://esphome.io/components/sensor/atm90e32.html#configuration-variables)
|
||||
|
||||
---
|
||||
|
||||
## 📂 examples/
|
||||
|
||||
Pre-configured use cases to jumpstart your setup.
|
||||
|
||||
| File | Description |
|
||||
|------|-------------|
|
||||
| `6chan_energy_meter_3-phase_ethernet.yaml` | Configuration for 3-phase measurement with Ethernet. Uses main board + 1 add-on. |
|
||||
| `6chan_energy_meter_6-addons_ethernet.yaml` | Max configuration: main board + 6 add-ons over Ethernet (42 channels). |
|
||||
| `6chan_energy_meter_house_solar_ha_kwh.yaml` | Real-world example measuring house + solar circuits. |
|
||||
| `6chan_main_calibration_beta.yaml` | Beta calibration test — for experimentation only, not recommended for production. |
|
||||
|
||||
---
|
||||
|
||||
## Measuring More Than 65A on a Current Channel
|
||||
The max value for current that the meter can output is 65.535. If you expect to measure current over 65A, divide `current_cal_ctx` by 2 (120A CT) or 4 (200A CT) and multiply the current and power values by 2 or 4, uncommenting the below and changing the `id` and `phase_x` accordingly.
|
||||
|
||||
Under `sensor:` add:
|
||||
```
|
||||
- id: !extend ${main_meter_id1} # CTs 1-3
|
||||
phase_a: # CT1
|
||||
current:
|
||||
filters:
|
||||
- multiply: 2
|
||||
power:
|
||||
filters:
|
||||
- multiply: 2
|
||||
```
|
||||
---
|
||||
|
||||
## Monitoring More Than 1 Voltage
|
||||
By default, all voltage channels are connected, and set up to monitor a single phase. [See here on what needs to be done with hardware if monitoring more than 1 voltage.](https://github.com/CircuitSetup/Expandable-6-Channel-ESP32-Energy-Meter/tree/master?tab=readme-ov-file#measuring-a-second-voltage)
|
||||
|
||||
In the config, under `sensor:` add:
|
||||
```
|
||||
- id: !extend ${main_meter_id2}
|
||||
phase_a:
|
||||
voltage:
|
||||
name: Voltage 2
|
||||
id: ic2Volts
|
||||
accuracy_decimals: 1
|
||||
frequency:
|
||||
name: Frequency 2
|
||||
```
|
||||
---
|
||||
|
||||
## Excluding/Removing Sensors
|
||||
If you, for example, want to see power quality sensors on only 2 out of the 4 CT channels of the main board, you could add something like this in your base config file. This is assuming you are including `Software/ESPHome/power_quality/6chan_main_power_quality.yaml` and you want to exclude power quality sensors for the last 4 CTs:
|
||||
|
||||
Under `sensor:` add:
|
||||
```
|
||||
- id: !extend ${main_meter_id1}
|
||||
phase_c: # CT3
|
||||
reactive_power: !remove
|
||||
apparent_power: !remove
|
||||
harmonic_power: !remove
|
||||
power_factor: !remove
|
||||
phase_angle: !remove
|
||||
peak_current: !remove
|
||||
|
||||
- id: !extend ${main_meter_id2}
|
||||
phase_a: # CT4
|
||||
reactive_power: !remove
|
||||
apparent_power: !remove
|
||||
harmonic_power: !remove
|
||||
power_factor: !remove
|
||||
phase_angle: !remove
|
||||
peak_current: !remove
|
||||
phase_b: #CT5
|
||||
reactive_power: !remove
|
||||
apparent_power: !remove
|
||||
harmonic_power: !remove
|
||||
power_factor: !remove
|
||||
phase_angle: !remove
|
||||
peak_current: !remove
|
||||
phase_c: #CT6
|
||||
reactive_power: !remove
|
||||
apparent_power: !remove
|
||||
harmonic_power: !remove
|
||||
power_factor: !remove
|
||||
phase_angle: !remove
|
||||
peak_current: !remove
|
||||
```
|
||||
---
|
||||
|
||||
## Including Files Locally
|
||||
|
||||
You can copy config files to your local directories and change the `packages:` part of your config to something like this:
|
||||
```
|
||||
packages:
|
||||
common: !include Software/ESPHome/6chan_common.yaml
|
||||
main: !include Software/ESPHome/meter_sensors/6chan_main_sensor.yaml
|
||||
main_status: !include Software/ESPHome/status_fields/6chan_main_status.yaml
|
||||
main_cal: !include Software/ESPHome/calibration/6chan_main_calibration.yaml
|
||||
```
|
||||
---
|
||||
|
||||
## Compiled Firmware
|
||||
|
||||
[See here to flash your ESP32](https://circuitsetup.github.io/ESPWebInstaller/)
|
||||
@@ -0,0 +1,65 @@
|
||||
# Details: https://esphome.io/components/sensor/atm90e32.html#calibration
|
||||
# Semi-automatic Calibration Buttons
|
||||
####################################
|
||||
button:
|
||||
- platform: atm90e32
|
||||
id: ${addon1_id1}
|
||||
run_offset_calibration:
|
||||
name: "1. Run ${addon1_name1} Offset Cal"
|
||||
clear_offset_calibration:
|
||||
name: "z1. Clear ${addon1_name1} Offset Cal"
|
||||
run_power_offset_calibration:
|
||||
name: "2. Run ${addon1_name1} Power Offset Cal"
|
||||
clear_power_offset_calibration:
|
||||
name: "z2. Clear ${addon1_name1} Power Offset Cal"
|
||||
run_gain_calibration:
|
||||
name: "3. Run ${addon1_name1} Gain Cal"
|
||||
clear_gain_calibration:
|
||||
name: "z3. Clear ${addon1_name1} Gain Cal"
|
||||
|
||||
- platform: atm90e32
|
||||
id: ${addon1_id2}
|
||||
run_offset_calibration:
|
||||
name: "1. Run ${addon1_name2} Offset Cal"
|
||||
clear_offset_calibration:
|
||||
name: "z1. Clear ${addon1_name2} Offset Cal"
|
||||
run_power_offset_calibration:
|
||||
name: "2. Run ${addon1_name2} Power Offset Cal"
|
||||
clear_power_offset_calibration:
|
||||
name: "z2. Clear ${addon1_name2} Power Offset Cal"
|
||||
run_gain_calibration:
|
||||
name: "3. Run ${addon1_name2} Gain Cal"
|
||||
clear_gain_calibration:
|
||||
name: "z3. Clear ${addon1_name2} Gain Cal"
|
||||
|
||||
# V & I Calibration Reference Fields
|
||||
####################################
|
||||
# Use these to input a known value being measured by a CT or voltage transformer
|
||||
number:
|
||||
- platform: atm90e32
|
||||
id: ${addon1_id1}
|
||||
reference_voltage:
|
||||
# will copy to phase_b/c for calibration reference
|
||||
phase_a:
|
||||
name: "${addon1_name1} Ref V 1"
|
||||
reference_current:
|
||||
phase_a:
|
||||
name: "${ct7_name} Ref Current"
|
||||
phase_b:
|
||||
name: "${ct8_name} Ref Current"
|
||||
phase_c:
|
||||
name: "${ct9_name} Ref Current"
|
||||
|
||||
- platform: atm90e32
|
||||
id: ${addon1_id2}
|
||||
reference_voltage:
|
||||
# needed to calibrate voltage registers even if not output
|
||||
phase_a:
|
||||
name: "${addon1_name2} Ref V 2"
|
||||
reference_current:
|
||||
phase_a:
|
||||
name: "${ct10_name} Ref Current"
|
||||
phase_b:
|
||||
name: "${ct11_name} Ref Current"
|
||||
phase_c:
|
||||
name: "${ct12_name} Ref Current"
|
||||
@@ -0,0 +1,39 @@
|
||||
# Offset calibration values fine tuned via the output of the semi-automatic calibrations
|
||||
# Values should be copied in from the meter's ESPHome log
|
||||
# See details on semi-automatic calibrations here:
|
||||
# https://esphome.io/components/sensor/atm90e32.html#calibration
|
||||
|
||||
sensor:
|
||||
- id: !extend ${addon1_id1}
|
||||
phase_a:
|
||||
offset_voltage: 0
|
||||
offset_current: 0
|
||||
offset_active_power: 0
|
||||
offset_reactive_power: 0
|
||||
phase_b:
|
||||
offset_voltage: 0
|
||||
offset_current: 0
|
||||
offset_active_power: 0
|
||||
offset_reactive_power: 0
|
||||
phase_c:
|
||||
offset_voltage: 0
|
||||
offset_current: 0
|
||||
offset_active_power: 0
|
||||
offset_reactive_power: 0
|
||||
|
||||
- id: !extend ${addon1_id2}
|
||||
phase_a:
|
||||
offset_voltage: 0
|
||||
offset_current: 0
|
||||
offset_active_power: 0
|
||||
offset_reactive_power: 0
|
||||
phase_b:
|
||||
offset_voltage: 0
|
||||
offset_current: 0
|
||||
offset_active_power: 0
|
||||
offset_reactive_power: 0
|
||||
phase_c:
|
||||
offset_voltage: 0
|
||||
offset_current: 0
|
||||
offset_active_power: 0
|
||||
offset_reactive_power: 0
|
||||
@@ -0,0 +1,65 @@
|
||||
# Details: https://esphome.io/components/sensor/atm90e32.html#calibration
|
||||
# Semi-automatic Calibration Buttons
|
||||
####################################
|
||||
button:
|
||||
- platform: atm90e32
|
||||
id: ${addon2_id1}
|
||||
run_offset_calibration:
|
||||
name: "1. Run ${addon2_name1} Offset Cal"
|
||||
clear_offset_calibration:
|
||||
name: "z1. Clear ${addon2_name1} Offset Cal"
|
||||
run_power_offset_calibration:
|
||||
name: "2. Run ${addon2_name1} Power Offset Cal"
|
||||
clear_power_offset_calibration:
|
||||
name: "z2. Clear ${addon2_name1} Power Offset Cal"
|
||||
run_gain_calibration:
|
||||
name: "3. Run ${addon2_name1} Gain Cal"
|
||||
clear_gain_calibration:
|
||||
name: "z3. Clear ${addon2_name1} Gain Cal"
|
||||
|
||||
- platform: atm90e32
|
||||
id: ${addon2_id2}
|
||||
run_offset_calibration:
|
||||
name: "1. Run ${addon2_name2} Offset Cal"
|
||||
clear_offset_calibration:
|
||||
name: "z1. Clear ${addon2_name2} Offset Cal"
|
||||
run_power_offset_calibration:
|
||||
name: "2. Run ${addon2_name2} Power Offset Cal"
|
||||
clear_power_offset_calibration:
|
||||
name: "z2. Clear ${addon2_name2} Power Offset Cal"
|
||||
run_gain_calibration:
|
||||
name: "3. Run ${addon2_name2} Gain Cal"
|
||||
clear_gain_calibration:
|
||||
name: "z3. Clear ${addon2_name2} Gain Cal"
|
||||
|
||||
# V & I Calibration Reference Fields
|
||||
####################################
|
||||
# Use these to input a known value being measured by a CT or voltage transformer
|
||||
number:
|
||||
- platform: atm90e32
|
||||
id: ${addon2_id1}
|
||||
reference_voltage:
|
||||
# will copy to phase_b/c for calibration reference
|
||||
phase_a:
|
||||
name: "${addon2_name1} Ref V 1"
|
||||
reference_current:
|
||||
phase_a:
|
||||
name: "${ct13_name} Ref Current"
|
||||
phase_b:
|
||||
name: "${ct14_name} Ref Current"
|
||||
phase_c:
|
||||
name: "${ct15_name} Ref Current"
|
||||
|
||||
- platform: atm90e32
|
||||
id: ${addon2_id2}
|
||||
reference_voltage:
|
||||
# needed to calibrate voltage registers even if not output
|
||||
phase_a:
|
||||
name: "${addon2_name2} Ref V 2"
|
||||
reference_current:
|
||||
phase_a:
|
||||
name: "${ct16_name} Ref Current"
|
||||
phase_b:
|
||||
name: "${ct17_name} Ref Current"
|
||||
phase_c:
|
||||
name: "${ct18_name} Ref Current"
|
||||
@@ -0,0 +1,39 @@
|
||||
# Offset calibration values fine tuned via the output of the semi-automatic calibrations
|
||||
# Values should be copied in from the meter's ESPHome log
|
||||
# See details on semi-automatic calibrations here:
|
||||
# https://esphome.io/components/sensor/atm90e32.html#calibration
|
||||
|
||||
sensor:
|
||||
- id: !extend ${addon2_id1}
|
||||
phase_a:
|
||||
offset_voltage: 0
|
||||
offset_current: 0
|
||||
offset_active_power: 0
|
||||
offset_reactive_power: 0
|
||||
phase_b:
|
||||
offset_voltage: 0
|
||||
offset_current: 0
|
||||
offset_active_power: 0
|
||||
offset_reactive_power: 0
|
||||
phase_c:
|
||||
offset_voltage: 0
|
||||
offset_current: 0
|
||||
offset_active_power: 0
|
||||
offset_reactive_power: 0
|
||||
|
||||
- id: !extend ${addon2_id2}
|
||||
phase_a:
|
||||
offset_voltage: 0
|
||||
offset_current: 0
|
||||
offset_active_power: 0
|
||||
offset_reactive_power: 0
|
||||
phase_b:
|
||||
offset_voltage: 0
|
||||
offset_current: 0
|
||||
offset_active_power: 0
|
||||
offset_reactive_power: 0
|
||||
phase_c:
|
||||
offset_voltage: 0
|
||||
offset_current: 0
|
||||
offset_active_power: 0
|
||||
offset_reactive_power: 0
|
||||
@@ -0,0 +1,65 @@
|
||||
# Details: https://esphome.io/components/sensor/atm90e32.html#calibration
|
||||
# Semi-automatic Calibration Buttons
|
||||
####################################
|
||||
button:
|
||||
- platform: atm90e32
|
||||
id: ${addon3_id1}
|
||||
run_offset_calibration:
|
||||
name: "1. Run ${addon3_name1} Offset Cal"
|
||||
clear_offset_calibration:
|
||||
name: "z1. Clear ${addon3_name1} Offset Cal"
|
||||
run_power_offset_calibration:
|
||||
name: "2. Run ${addon3_name1} Power Offset Cal"
|
||||
clear_power_offset_calibration:
|
||||
name: "z2. Clear ${addon3_name1} Power Offset Cal"
|
||||
run_gain_calibration:
|
||||
name: "3. Run ${addon3_name1} Gain Cal"
|
||||
clear_gain_calibration:
|
||||
name: "z3. Clear ${addon3_name1} Gain Cal"
|
||||
|
||||
- platform: atm90e32
|
||||
id: ${addon3_id2}
|
||||
run_offset_calibration:
|
||||
name: "1. Run ${addon3_name2} Offset Cal"
|
||||
clear_offset_calibration:
|
||||
name: "z1. Clear ${addon3_name2} Offset Cal"
|
||||
run_power_offset_calibration:
|
||||
name: "2. Run ${addon3_name2} Power Offset Cal"
|
||||
clear_power_offset_calibration:
|
||||
name: "z2. Clear ${addon3_name2} Power Offset Cal"
|
||||
run_gain_calibration:
|
||||
name: "3. Run ${addon3_name2} Gain Cal"
|
||||
clear_gain_calibration:
|
||||
name: "z3. Clear ${addon3_name2} Gain Cal"
|
||||
|
||||
# V & I Calibration Reference Fields
|
||||
####################################
|
||||
# Use these to input a known value being measured by a CT or voltage transformer
|
||||
number:
|
||||
- platform: atm90e32
|
||||
id: ${addon3_id1}
|
||||
reference_voltage:
|
||||
# will copy to phase_b/c for calibration reference
|
||||
phase_a:
|
||||
name: "${addon3_name1} Ref V 1"
|
||||
reference_current:
|
||||
phase_a:
|
||||
name: "${ct19_name} Ref Current"
|
||||
phase_b:
|
||||
name: "${ct20_name} Ref Current"
|
||||
phase_c:
|
||||
name: "${ct21_name} Ref Current"
|
||||
|
||||
- platform: atm90e32
|
||||
id: ${addon3_id2}
|
||||
reference_voltage:
|
||||
# needed to calibrate voltage registers even if not output
|
||||
phase_a:
|
||||
name: "${addon3_name2} Ref V 2"
|
||||
reference_current:
|
||||
phase_a:
|
||||
name: "${ct22_name} Ref Current"
|
||||
phase_b:
|
||||
name: "${ct23_name} Ref Current"
|
||||
phase_c:
|
||||
name: "${ct24_name} Ref Current"
|
||||
@@ -0,0 +1,39 @@
|
||||
# Offset calibration values fine tuned via the output of the semi-automatic calibrations
|
||||
# Values should be copied in from the meter's ESPHome log
|
||||
# See details on semi-automatic calibrations here:
|
||||
# https://esphome.io/components/sensor/atm90e32.html#calibration
|
||||
|
||||
sensor:
|
||||
- id: !extend ${addon3_id1}
|
||||
phase_a:
|
||||
offset_voltage: 0
|
||||
offset_current: 0
|
||||
offset_active_power: 0
|
||||
offset_reactive_power: 0
|
||||
phase_b:
|
||||
offset_voltage: 0
|
||||
offset_current: 0
|
||||
offset_active_power: 0
|
||||
offset_reactive_power: 0
|
||||
phase_c:
|
||||
offset_voltage: 0
|
||||
offset_current: 0
|
||||
offset_active_power: 0
|
||||
offset_reactive_power: 0
|
||||
|
||||
- id: !extend ${addon3_id2}
|
||||
phase_a:
|
||||
offset_voltage: 0
|
||||
offset_current: 0
|
||||
offset_active_power: 0
|
||||
offset_reactive_power: 0
|
||||
phase_b:
|
||||
offset_voltage: 0
|
||||
offset_current: 0
|
||||
offset_active_power: 0
|
||||
offset_reactive_power: 0
|
||||
phase_c:
|
||||
offset_voltage: 0
|
||||
offset_current: 0
|
||||
offset_active_power: 0
|
||||
offset_reactive_power: 0
|
||||
@@ -0,0 +1,65 @@
|
||||
# Details: https://esphome.io/components/sensor/atm90e32.html#calibration
|
||||
# Semi-automatic Calibration Buttons
|
||||
####################################
|
||||
button:
|
||||
- platform: atm90e32
|
||||
id: ${addon4_id1}
|
||||
run_offset_calibration:
|
||||
name: "1. Run ${addon4_name1} Offset Cal"
|
||||
clear_offset_calibration:
|
||||
name: "z1. Clear ${addon4_name1} Offset Cal"
|
||||
run_power_offset_calibration:
|
||||
name: "2. Run ${addon4_name1} Power Offset Cal"
|
||||
clear_power_offset_calibration:
|
||||
name: "z2. Clear ${addon4_name1} Power Offset Cal"
|
||||
run_gain_calibration:
|
||||
name: "3. Run ${addon4_name1} Gain Cal"
|
||||
clear_gain_calibration:
|
||||
name: "z3. Clear ${addon4_name1} Gain Cal"
|
||||
|
||||
- platform: atm90e32
|
||||
id: ${addon4_id2}
|
||||
run_offset_calibration:
|
||||
name: "1. Run ${addon4_name2} Offset Cal"
|
||||
clear_offset_calibration:
|
||||
name: "z1. Clear ${addon4_name2} Offset Cal"
|
||||
run_power_offset_calibration:
|
||||
name: "2. Run ${addon4_name2} Power Offset Cal"
|
||||
clear_power_offset_calibration:
|
||||
name: "z2. Clear ${addon4_name2} Power Offset Cal"
|
||||
run_gain_calibration:
|
||||
name: "3. Run ${addon4_name2} Gain Cal"
|
||||
clear_gain_calibration:
|
||||
name: "z3. Clear ${addon4_name2} Gain Cal"
|
||||
|
||||
# V & I Calibration Reference Fields
|
||||
####################################
|
||||
# Use these to input a known value being measured by a CT or voltage transformer
|
||||
number:
|
||||
- platform: atm90e32
|
||||
id: ${addon4_id1}
|
||||
reference_voltage:
|
||||
# will copy to phase_b/c for calibration reference
|
||||
phase_a:
|
||||
name: "${addon4_name1} Ref V 1"
|
||||
reference_current:
|
||||
phase_a:
|
||||
name: "${ct25_name} Ref Current"
|
||||
phase_b:
|
||||
name: "${ct26_name} Ref Current"
|
||||
phase_c:
|
||||
name: "${ct27_name} Ref Current"
|
||||
|
||||
- platform: atm90e32
|
||||
id: ${addon4_id2}
|
||||
reference_voltage:
|
||||
# needed to calibrate voltage registers even if not output
|
||||
phase_a:
|
||||
name: "${addon4_name2} Ref V 2"
|
||||
reference_current:
|
||||
phase_a:
|
||||
name: "${ct28_name} Ref Current"
|
||||
phase_b:
|
||||
name: "${ct29_name} Ref Current"
|
||||
phase_c:
|
||||
name: "${ct30_name} Ref Current"
|
||||
@@ -0,0 +1,39 @@
|
||||
# Offset calibration values fine tuned via the output of the semi-automatic calibrations
|
||||
# Values should be copied in from the meter's ESPHome log
|
||||
# See details on semi-automatic calibrations here:
|
||||
# https://esphome.io/components/sensor/atm90e32.html#calibration
|
||||
|
||||
sensor:
|
||||
- id: !extend ${addon4_id1}
|
||||
phase_a:
|
||||
offset_voltage: 0
|
||||
offset_current: 0
|
||||
offset_active_power: 0
|
||||
offset_reactive_power: 0
|
||||
phase_b:
|
||||
offset_voltage: 0
|
||||
offset_current: 0
|
||||
offset_active_power: 0
|
||||
offset_reactive_power: 0
|
||||
phase_c:
|
||||
offset_voltage: 0
|
||||
offset_current: 0
|
||||
offset_active_power: 0
|
||||
offset_reactive_power: 0
|
||||
|
||||
- id: !extend ${addon4_id2}
|
||||
phase_a:
|
||||
offset_voltage: 0
|
||||
offset_current: 0
|
||||
offset_active_power: 0
|
||||
offset_reactive_power: 0
|
||||
phase_b:
|
||||
offset_voltage: 0
|
||||
offset_current: 0
|
||||
offset_active_power: 0
|
||||
offset_reactive_power: 0
|
||||
phase_c:
|
||||
offset_voltage: 0
|
||||
offset_current: 0
|
||||
offset_active_power: 0
|
||||
offset_reactive_power: 0
|
||||
@@ -0,0 +1,65 @@
|
||||
# Details: https://esphome.io/components/sensor/atm90e32.html#calibration
|
||||
# Semi-automatic Calibration Buttons
|
||||
####################################
|
||||
button:
|
||||
- platform: atm90e32
|
||||
id: ${addon5_id1}
|
||||
run_offset_calibration:
|
||||
name: "1. Run ${addon5_name1} Offset Cal"
|
||||
clear_offset_calibration:
|
||||
name: "z1. Clear ${addon5_name1} Offset Cal"
|
||||
run_power_offset_calibration:
|
||||
name: "2. Run ${addon5_name1} Power Offset Cal"
|
||||
clear_power_offset_calibration:
|
||||
name: "z2. Clear ${addon5_name1} Power Offset Cal"
|
||||
run_gain_calibration:
|
||||
name: "3. Run ${addon5_name1} Gain Cal"
|
||||
clear_gain_calibration:
|
||||
name: "z3. Clear ${addon5_name1} Gain Cal"
|
||||
|
||||
- platform: atm90e32
|
||||
id: ${addon5_id2}
|
||||
run_offset_calibration:
|
||||
name: "1. Run ${addon5_name2} Offset Cal"
|
||||
clear_offset_calibration:
|
||||
name: "z1. Clear ${addon5_name2} Offset Cal"
|
||||
run_power_offset_calibration:
|
||||
name: "2. Run ${addon5_name2} Power Offset Cal"
|
||||
clear_power_offset_calibration:
|
||||
name: "z2. Clear ${addon5_name2} Power Offset Cal"
|
||||
run_gain_calibration:
|
||||
name: "3. Run ${addon5_name2} Gain Cal"
|
||||
clear_gain_calibration:
|
||||
name: "z3. Clear ${addon5_name2} Gain Cal"
|
||||
|
||||
# V & I Calibration Reference Fields
|
||||
####################################
|
||||
# Use these to input a known value being measured by a CT or voltage transformer
|
||||
number:
|
||||
- platform: atm90e32
|
||||
id: ${addon5_id1}
|
||||
reference_voltage:
|
||||
# will copy to phase_b/c for calibration reference
|
||||
phase_a:
|
||||
name: "${addon5_name1} Ref V 1"
|
||||
reference_current:
|
||||
phase_a:
|
||||
name: "${ct31_name} Ref Current"
|
||||
phase_b:
|
||||
name: "${ct32_name} Ref Current"
|
||||
phase_c:
|
||||
name: "${ct33_name} Ref Current"
|
||||
|
||||
- platform: atm90e32
|
||||
id: ${addon5_id2}
|
||||
reference_voltage:
|
||||
# needed to calibrate voltage registers even if not output
|
||||
phase_a:
|
||||
name: "${addon5_name2} Ref V 2"
|
||||
reference_current:
|
||||
phase_a:
|
||||
name: "${ct34_name} Ref Current"
|
||||
phase_b:
|
||||
name: "${ct35_name} Ref Current"
|
||||
phase_c:
|
||||
name: "${ct36_name} Ref Current"
|
||||
@@ -0,0 +1,39 @@
|
||||
# Offset calibration values fine tuned via the output of the semi-automatic calibrations
|
||||
# Values should be copied in from the meter's ESPHome log
|
||||
# See details on semi-automatic calibrations here:
|
||||
# https://esphome.io/components/sensor/atm90e32.html#calibration
|
||||
|
||||
sensor:
|
||||
- id: !extend ${addon5_id1}
|
||||
phase_a:
|
||||
offset_voltage: 0
|
||||
offset_current: 0
|
||||
offset_active_power: 0
|
||||
offset_reactive_power: 0
|
||||
phase_b:
|
||||
offset_voltage: 0
|
||||
offset_current: 0
|
||||
offset_active_power: 0
|
||||
offset_reactive_power: 0
|
||||
phase_c:
|
||||
offset_voltage: 0
|
||||
offset_current: 0
|
||||
offset_active_power: 0
|
||||
offset_reactive_power: 0
|
||||
|
||||
- id: !extend ${addon5_id2}
|
||||
phase_a:
|
||||
offset_voltage: 0
|
||||
offset_current: 0
|
||||
offset_active_power: 0
|
||||
offset_reactive_power: 0
|
||||
phase_b:
|
||||
offset_voltage: 0
|
||||
offset_current: 0
|
||||
offset_active_power: 0
|
||||
offset_reactive_power: 0
|
||||
phase_c:
|
||||
offset_voltage: 0
|
||||
offset_current: 0
|
||||
offset_active_power: 0
|
||||
offset_reactive_power: 0
|
||||
@@ -0,0 +1,65 @@
|
||||
# Details: https://esphome.io/components/sensor/atm90e32.html#calibration
|
||||
# Semi-automatic Calibration Buttons
|
||||
####################################
|
||||
button:
|
||||
- platform: atm90e32
|
||||
id: ${addon6_id1}
|
||||
run_offset_calibration:
|
||||
name: "1. Run ${addon6_name1} Offset Cal"
|
||||
clear_offset_calibration:
|
||||
name: "z1. Clear ${addon6_name1} Offset Cal"
|
||||
run_power_offset_calibration:
|
||||
name: "2. Run ${addon6_name1} Power Offset Cal"
|
||||
clear_power_offset_calibration:
|
||||
name: "z2. Clear ${addon6_name1} Power Offset Cal"
|
||||
run_gain_calibration:
|
||||
name: "3. Run ${addon6_name1} Gain Cal"
|
||||
clear_gain_calibration:
|
||||
name: "z3. Clear ${addon6_name1} Gain Cal"
|
||||
|
||||
- platform: atm90e32
|
||||
id: ${addon6_id2}
|
||||
run_offset_calibration:
|
||||
name: "1. Run ${addon6_name2} Offset Cal"
|
||||
clear_offset_calibration:
|
||||
name: "z1. Clear ${addon6_name2} Offset Cal"
|
||||
run_power_offset_calibration:
|
||||
name: "2. Run ${addon6_name2} Power Offset Cal"
|
||||
clear_power_offset_calibration:
|
||||
name: "z2. Clear ${addon6_name2} Power Offset Cal"
|
||||
run_gain_calibration:
|
||||
name: "3. Run ${addon6_name2} Gain Cal"
|
||||
clear_gain_calibration:
|
||||
name: "z3. Clear ${addon6_name2} Gain Cal"
|
||||
|
||||
# V & I Calibration Reference Fields
|
||||
####################################
|
||||
# Use these to input a known value being measured by a CT or voltage transformer
|
||||
number:
|
||||
- platform: atm90e32
|
||||
id: ${addon6_id1}
|
||||
reference_voltage:
|
||||
# will copy to phase_b/c for calibration reference
|
||||
phase_a:
|
||||
name: "${addon6_name1} Ref V 1"
|
||||
reference_current:
|
||||
phase_a:
|
||||
name: "${ct37_name} Ref Current"
|
||||
phase_b:
|
||||
name: "${ct38_name} Ref Current"
|
||||
phase_c:
|
||||
name: "${ct39_name} Ref Current"
|
||||
|
||||
- platform: atm90e32
|
||||
id: ${addon6_id2}
|
||||
reference_voltage:
|
||||
# needed to calibrate voltage registers even if not output
|
||||
phase_a:
|
||||
name: "${addon6_name2} Ref V 2"
|
||||
reference_current:
|
||||
phase_a:
|
||||
name: "${ct40_name} Ref Current"
|
||||
phase_b:
|
||||
name: "${ct41_name} Ref Current"
|
||||
phase_c:
|
||||
name: "${ct42_name} Ref Current"
|
||||
@@ -0,0 +1,39 @@
|
||||
# Offset calibration values fine tuned via the output of the semi-automatic calibrations
|
||||
# Values should be copied in from the meter's ESPHome log
|
||||
# See details on semi-automatic calibrations here:
|
||||
# https://esphome.io/components/sensor/atm90e32.html#calibration
|
||||
|
||||
sensor:
|
||||
- id: !extend ${addon6_id1}
|
||||
phase_a:
|
||||
offset_voltage: 0
|
||||
offset_current: 0
|
||||
offset_active_power: 0
|
||||
offset_reactive_power: 0
|
||||
phase_b:
|
||||
offset_voltage: 0
|
||||
offset_current: 0
|
||||
offset_active_power: 0
|
||||
offset_reactive_power: 0
|
||||
phase_c:
|
||||
offset_voltage: 0
|
||||
offset_current: 0
|
||||
offset_active_power: 0
|
||||
offset_reactive_power: 0
|
||||
|
||||
- id: !extend ${addon6_id2}
|
||||
phase_a:
|
||||
offset_voltage: 0
|
||||
offset_current: 0
|
||||
offset_active_power: 0
|
||||
offset_reactive_power: 0
|
||||
phase_b:
|
||||
offset_voltage: 0
|
||||
offset_current: 0
|
||||
offset_active_power: 0
|
||||
offset_reactive_power: 0
|
||||
phase_c:
|
||||
offset_voltage: 0
|
||||
offset_current: 0
|
||||
offset_active_power: 0
|
||||
offset_reactive_power: 0
|
||||
@@ -0,0 +1,65 @@
|
||||
# Details: https://esphome.io/components/sensor/atm90e32.html#calibration
|
||||
# Main Board Semi-automatic Calibration Buttons
|
||||
###############################################
|
||||
button:
|
||||
- platform: atm90e32
|
||||
id: ${main_meter_id1}
|
||||
run_offset_calibration:
|
||||
name: "1. Run ${main_meter_name1} Offset Cal"
|
||||
clear_offset_calibration:
|
||||
name: "z1. Clear ${main_meter_name1} Offset Cal"
|
||||
run_power_offset_calibration:
|
||||
name: "2. Run ${main_meter_name1} Power Offset Cal"
|
||||
clear_power_offset_calibration:
|
||||
name: "z2. Clear ${main_meter_name1} Power Offset Cal"
|
||||
run_gain_calibration:
|
||||
name: "3. Run ${main_meter_name1} Gain Cal"
|
||||
clear_gain_calibration:
|
||||
name: "z3. Clear ${main_meter_name1} Gain Cal"
|
||||
|
||||
- platform: atm90e32
|
||||
id: ${main_meter_id2}
|
||||
run_offset_calibration:
|
||||
name: "1. Run ${main_meter_name2} Offset Cal"
|
||||
clear_offset_calibration:
|
||||
name: "z1. Clear ${main_meter_name2} Offset Cal"
|
||||
run_power_offset_calibration:
|
||||
name: "2. Run ${main_meter_name2} Power Offset Cal"
|
||||
clear_power_offset_calibration:
|
||||
name: "z2. Clear ${main_meter_name2} Power Offset Cal"
|
||||
run_gain_calibration:
|
||||
name: "3. Run ${main_meter_name2} Gain Cal"
|
||||
clear_gain_calibration:
|
||||
name: "z3. Clear ${main_meter_name2} Gain Cal"
|
||||
|
||||
# Main Board V & I Calibration Reference Fields
|
||||
###############################################
|
||||
# Use these to input a known value being measured by a CT or voltage transformer
|
||||
number:
|
||||
- platform: atm90e32
|
||||
id: ${main_meter_id1}
|
||||
reference_voltage:
|
||||
# will copy to phase_b/c for calibration reference
|
||||
phase_a:
|
||||
name: "${main_meter_name1} Ref V 1"
|
||||
reference_current:
|
||||
phase_a:
|
||||
name: "${ct1_name} Ref Current"
|
||||
phase_b:
|
||||
name: "${ct2_name} Ref Current"
|
||||
phase_c:
|
||||
name: "${ct3_name} Ref Current"
|
||||
|
||||
- platform: atm90e32
|
||||
id: ${main_meter_id2}
|
||||
reference_voltage:
|
||||
# needed to calibrate voltage registers even if not output
|
||||
phase_a:
|
||||
name: "${main_meter_name2} Ref V 2"
|
||||
reference_current:
|
||||
phase_a:
|
||||
name: "${ct4_name} Ref Current"
|
||||
phase_b:
|
||||
name: "${ct5_name} Ref Current"
|
||||
phase_c:
|
||||
name: "${ct6_name} Ref Current"
|
||||
@@ -0,0 +1,39 @@
|
||||
# Offset calibration values fine tuned via the output of the semi-automatic calibrations
|
||||
# Values should be copied in from the meter's ESPHome log
|
||||
# See details on semi-automatic calibrations here:
|
||||
# https://esphome.io/components/sensor/atm90e32.html#calibration
|
||||
|
||||
sensor:
|
||||
- id: !extend ${main_meter_id1}
|
||||
phase_a:
|
||||
offset_voltage: 0
|
||||
offset_current: 0
|
||||
offset_active_power: 0
|
||||
offset_reactive_power: 0
|
||||
phase_b:
|
||||
offset_voltage: 0
|
||||
offset_current: 0
|
||||
offset_active_power: 0
|
||||
offset_reactive_power: 0
|
||||
phase_c:
|
||||
offset_voltage: 0
|
||||
offset_current: 0
|
||||
offset_active_power: 0
|
||||
offset_reactive_power: 0
|
||||
|
||||
- id: !extend ${main_meter_id2}
|
||||
phase_a:
|
||||
offset_voltage: 0
|
||||
offset_current: 0
|
||||
offset_active_power: 0
|
||||
offset_reactive_power: 0
|
||||
phase_b:
|
||||
offset_voltage: 0
|
||||
offset_current: 0
|
||||
offset_active_power: 0
|
||||
offset_reactive_power: 0
|
||||
phase_c:
|
||||
offset_voltage: 0
|
||||
offset_current: 0
|
||||
offset_active_power: 0
|
||||
offset_reactive_power: 0
|
||||
@@ -0,0 +1,223 @@
|
||||
# CircuitSetup 6 Channel Energy Meter Main Board with 1 add-on board, 3-Phase over ethernet - 12 current channels
|
||||
#
|
||||
# Uses the Lilygo T-ETH-Lite ESP32S3 and the CircuitSetup 6 Channel Energy Meter Ethernet Adapter.
|
||||
# Setup asumes JP12 and JP13 have been severed on the main and add-on board, and each phase has its
|
||||
# own voltage transformer hooked up to the main board jack, and VA2 on each meter.
|
||||
#
|
||||
# Current Trasnformers must be in phase with their respective voltage:
|
||||
# Phase 1: CT1-CT6 (main board, add-on board left side)
|
||||
# Phase 2: CT7-CT9 (main board right)
|
||||
# Phase 3: CT10-CT12 (add-on board right)
|
||||
|
||||
# See all options at https://esphome.io/components/sensor/atm90e32.html
|
||||
|
||||
substitutions:
|
||||
# Change the disp_name to something you want
|
||||
disp_name: Energy Meter
|
||||
friendly_name: CircuitSetup Energy Meter
|
||||
# Interval of how often the power data is updated
|
||||
update_time: 10s
|
||||
|
||||
# Change current_cal to the corresponding CT's that you're using
|
||||
# If different CTs per current channel, remove or change "${current_cal}" from
|
||||
# "gain_ct" below and replace with the CT calibration number respectively
|
||||
# Current Transformers:
|
||||
# 20A/25mA SCT-006: 11143
|
||||
# 30A/1V SCT-013-030: 8650
|
||||
# 50A/1V SCT-013-050: 15420
|
||||
# 50A/16.6mA SCT-010: 41334
|
||||
# 80A/26.6mA SCT-010: 41660
|
||||
# 100A/50ma SCT-013-000: 27518
|
||||
# 120A/40mA: SCT-016: 41787
|
||||
# 200A/100mA SCT-024: 27518
|
||||
# 200A/50mA SCT-024: 55036
|
||||
current_cal: '27518'
|
||||
|
||||
# This only needs to be changed if you're using something other than the
|
||||
# Jameco 9VAC Transformer:
|
||||
voltage_cal: '7305'
|
||||
|
||||
esphome:
|
||||
name: "${disp_name}"
|
||||
friendly_name: "${friendly_name}"
|
||||
name_add_mac_suffix: true
|
||||
platformio_options:
|
||||
board_build.flash_mode: dio
|
||||
project:
|
||||
name: circuitsetup.6c-energy-meter-ethernet
|
||||
version: "1.6"
|
||||
|
||||
packages:
|
||||
common: github://CircuitSetup/Expandable-6-Channel-ESP32-Energy-Meter/Software/ESPHome/6chan_common_ethernet.yaml
|
||||
|
||||
# Enable Home Assistant API
|
||||
# An encryption key is recommended and can be generated here:
|
||||
# https://esphome.io/components/api.html#configuration-variables
|
||||
api:
|
||||
# encryption:
|
||||
# key: "YOUR_ENCRYPTION_KEY_HERE"
|
||||
|
||||
# Enable OTA updating
|
||||
ota:
|
||||
- platform: esphome
|
||||
|
||||
web_server:
|
||||
port: 80
|
||||
|
||||
sensor:
|
||||
#IC1 Main
|
||||
- platform: atm90e32
|
||||
cs_pin: 8
|
||||
phase_a:
|
||||
voltage:
|
||||
name: ${disp_name} Volts Phase 1
|
||||
id: voltsPhase1
|
||||
accuracy_decimals: 1
|
||||
power:
|
||||
name: ${disp_name} CT1 Watts
|
||||
id: ct1Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_b:
|
||||
power:
|
||||
name: ${disp_name} CT2 Watts
|
||||
id: ct2Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_c:
|
||||
power:
|
||||
name: ${disp_name} CT3 Watts
|
||||
id: ct3Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
frequency:
|
||||
name: ${disp_name} Freq Phase 1
|
||||
line_frequency: 50Hz
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
#IC2 Main
|
||||
- platform: atm90e32
|
||||
cs_pin: 4
|
||||
phase_a:
|
||||
voltage:
|
||||
name: ${disp_name} Volts Phase 2
|
||||
id: voltsPhase2
|
||||
accuracy_decimals: 1
|
||||
power:
|
||||
name: ${disp_name} CT7 Watts
|
||||
id: ct7Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_b:
|
||||
power:
|
||||
name: ${disp_name} CT8 Watts
|
||||
id: ct8Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_c:
|
||||
power:
|
||||
name: ${disp_name} CT9 Watts
|
||||
id: ct9Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
line_frequency: 50Hz
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
#IC1 AddOn 1
|
||||
- platform: atm90e32
|
||||
cs_pin: 0
|
||||
phase_a:
|
||||
power:
|
||||
name: ${disp_name} CT4 Watts
|
||||
id: ct4Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_b:
|
||||
power:
|
||||
name: ${disp_name} CT5 Watts
|
||||
id: ct5Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_c:
|
||||
power:
|
||||
name: ${disp_name} CT6 Watts
|
||||
id: ct6Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
line_frequency: 50Hz
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
#IC2 AddOn 1
|
||||
- platform: atm90e32
|
||||
cs_pin: 16
|
||||
phase_a:
|
||||
voltage:
|
||||
name: ${disp_name} Volts Phase 3
|
||||
id: voltsPhase3
|
||||
accuracy_decimals: 1
|
||||
power:
|
||||
name: ${disp_name} CT10 Watts
|
||||
id: ct10Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_b:
|
||||
power:
|
||||
name: ${disp_name} CT11 Watts
|
||||
id: ct11Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_c:
|
||||
power:
|
||||
name: ${disp_name} CT12 Watts
|
||||
id: ct12Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
line_frequency: 50Hz
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
|
||||
#Total Watts Phase 1
|
||||
- platform: template
|
||||
name: ${disp_name} Total Watts Phase 1
|
||||
id: totalWattsPhase1
|
||||
lambda: return id(ct1Watts).state + id(ct2Watts).state + id(ct3Watts).state + id(ct4Watts).state + id(ct5Watts).state + id(ct6Watts).state ;
|
||||
accuracy_decimals: 1
|
||||
unit_of_measurement: W
|
||||
device_class: power
|
||||
update_interval: ${update_time}
|
||||
#Total Watts Phase 2
|
||||
- platform: template
|
||||
name: ${disp_name} Total Watts Phase 2
|
||||
id: totalWattsPhase2
|
||||
lambda: return id(ct7Watts).state + id(ct8Watts).state + id(ct9Watts).state ;
|
||||
accuracy_decimals: 1
|
||||
unit_of_measurement: W
|
||||
device_class: power
|
||||
update_interval: ${update_time}
|
||||
#Total Watts Phase 3
|
||||
- platform: template
|
||||
name: ${disp_name} Total Watts Phase 3
|
||||
id: totalWattsPhase3
|
||||
lambda: return id(ct10Watts).state + id(ct11Watts).state + id(ct12Watts).state ;
|
||||
accuracy_decimals: 1
|
||||
unit_of_measurement: W
|
||||
device_class: power
|
||||
update_interval: ${update_time}
|
||||
#Total Watts
|
||||
- platform: template
|
||||
name: ${disp_name} Total Watts
|
||||
id: totalWatts
|
||||
lambda: return id(totalWattsPhase1).state + id(totalWattsPhase2).state + id(totalWattsPhase3).state ;
|
||||
accuracy_decimals: 1
|
||||
unit_of_measurement: W
|
||||
device_class: power
|
||||
update_interval: ${update_time}
|
||||
#kWh
|
||||
- platform: total_daily_energy
|
||||
name: ${disp_name} Total kWh
|
||||
power_id: totalWatts
|
||||
filters:
|
||||
- multiply: 0.001
|
||||
unit_of_measurement: kWh
|
||||
device_class: energy
|
||||
state_class: total_increasing
|
||||
@@ -0,0 +1,459 @@
|
||||
# CircuitSetup 6 Channel Energy Meter Main Board with 6 add-on boards - 42 current channels
|
||||
# To reduce the number of sensors, only the power sensor for each current channel is output.
|
||||
# See all options at https://esphome.io/components/sensor/atm90e32.html
|
||||
|
||||
substitutions:
|
||||
# Change the disp_name to something you want
|
||||
disp_name: Energy Meter
|
||||
friendly_name: CircuitSetup Energy Meter
|
||||
# Interval of how often the power data is updated
|
||||
update_time: 10s
|
||||
|
||||
# Change current_cal to the corresponding CT's that you're using
|
||||
# If different CTs per current channel, remove or change "${current_cal}" from
|
||||
# "gain_ct" below and replace with the CT calibration number respectively
|
||||
# Current Transformers:
|
||||
# 20A/25mA SCT-006: 11143
|
||||
# 30A/1V SCT-013-030: 8650
|
||||
# 50A/1V SCT-013-050: 15420
|
||||
# 50A/16.6mA SCT-010: 41334
|
||||
# 80A/26.6mA SCT-010: 41660
|
||||
# 100A/50ma SCT-013-000: 27518
|
||||
# 120A/40mA: SCT-016: 41787
|
||||
# 200A/100mA SCT-024: 27518
|
||||
# 200A/50mA SCT-024: 55036
|
||||
current_cal: '11143' # 20A/25mA
|
||||
|
||||
# This only needs to be changed if you're using something other than the
|
||||
# Jameco 9VAC Transformer:
|
||||
voltage_cal: '7305'
|
||||
|
||||
packages:
|
||||
common: github://CircuitSetup/Expandable-6-Channel-ESP32-Energy-Meter/Software/ESPHome/6chan_common.yaml
|
||||
|
||||
sensor:
|
||||
#IC1 Main
|
||||
- platform: atm90e32
|
||||
cs_pin: 5
|
||||
phase_a:
|
||||
voltage:
|
||||
name: ${disp_name} Volts A Main
|
||||
id: ic1Volts
|
||||
accuracy_decimals: 1
|
||||
power:
|
||||
name: ${disp_name} CT1 Watts
|
||||
id: ct1Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_b:
|
||||
power:
|
||||
name: ${disp_name} CT2 Watts
|
||||
id: ct2Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_c:
|
||||
power:
|
||||
name: ${disp_name} CT3 Watts
|
||||
id: ct3Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
frequency:
|
||||
name: ${disp_name} Freq A Main
|
||||
line_frequency: 60Hz
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
#IC2 Main
|
||||
- platform: atm90e32
|
||||
cs_pin: 4
|
||||
phase_a:
|
||||
power:
|
||||
name: ${disp_name} CT4 Watts
|
||||
id: ct4Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_b:
|
||||
power:
|
||||
name: ${disp_name} CT5 Watts
|
||||
id: ct5Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_c:
|
||||
power:
|
||||
name: ${disp_name} CT6 Watts
|
||||
id: ct6Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
line_frequency: 60Hz
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
#IC1 AddOn 1
|
||||
- platform: atm90e32
|
||||
cs_pin: 0
|
||||
phase_a:
|
||||
power:
|
||||
name: ${disp_name} CT7 Watts
|
||||
id: ct7Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_b:
|
||||
power:
|
||||
name: ${disp_name} CT8 Watts
|
||||
id: ct8Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_c:
|
||||
power:
|
||||
name: ${disp_name} CT9 Watts
|
||||
id: ct9Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
line_frequency: 60Hz
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
#IC2 AddOn 1
|
||||
- platform: atm90e32
|
||||
cs_pin: 16
|
||||
phase_a:
|
||||
power:
|
||||
name: ${disp_name} CT10 Watts
|
||||
id: ct10Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_b:
|
||||
power:
|
||||
name: ${disp_name} CT11 Watts
|
||||
id: ct11Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_c:
|
||||
power:
|
||||
name: ${disp_name} CT12 Watts
|
||||
id: ct12Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
line_frequency: 60Hz
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
#IC1 AddOn 2
|
||||
- platform: atm90e32
|
||||
cs_pin: 27
|
||||
phase_a:
|
||||
power:
|
||||
name: ${disp_name} CT13 Watts
|
||||
id: ct13Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_b:
|
||||
power:
|
||||
name: ${disp_name} CT14 Watts
|
||||
id: ct14Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_c:
|
||||
power:
|
||||
name: ${disp_name} CT15 Watts
|
||||
id: ct15Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
line_frequency: 60Hz
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
#IC2 AddOn 2
|
||||
- platform: atm90e32
|
||||
cs_pin: 17
|
||||
phase_a:
|
||||
power:
|
||||
name: ${disp_name} CT16 Watts
|
||||
id: ct16Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_b:
|
||||
power:
|
||||
name: ${disp_name} CT17 Watts
|
||||
id: ct17Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_c:
|
||||
power:
|
||||
name: ${disp_name} CT18 Watts
|
||||
id: ct18Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
line_frequency: 60Hz
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
#IC1 AddOn 3
|
||||
- platform: atm90e32
|
||||
#do not use GPIO2 if ESP32 has an on-board LED assigned to it
|
||||
cs_pin: 2
|
||||
phase_a:
|
||||
power:
|
||||
name: ${disp_name} CT19 Watts
|
||||
id: ct19Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_b:
|
||||
power:
|
||||
name: ${disp_name} CT20 Watts
|
||||
id: ct20Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_c:
|
||||
power:
|
||||
name: ${disp_name} CT21 Watts
|
||||
id: ct21Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
line_frequency: 60Hz
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
#IC2 AddOn 3
|
||||
- platform: atm90e32
|
||||
cs_pin: 21
|
||||
phase_a:
|
||||
power:
|
||||
name: ${disp_name} CT22 Watts
|
||||
id: ct22Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_b:
|
||||
power:
|
||||
name: ${disp_name} CT23 Watts
|
||||
id: ct23Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_c:
|
||||
power:
|
||||
name: ${disp_name} CT24 Watts
|
||||
id: ct24Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
line_frequency: 60Hz
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
#IC1 AddOn 4
|
||||
- platform: atm90e32
|
||||
cs_pin: 13
|
||||
phase_a:
|
||||
power:
|
||||
name: ${disp_name} CT25 Watts
|
||||
id: ct25Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_b:
|
||||
power:
|
||||
name: ${disp_name} CT26 Watts
|
||||
id: ct26Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_c:
|
||||
power:
|
||||
name: ${disp_name} CT27 Watts
|
||||
id: ct27Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
line_frequency: 60Hz
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
#IC2 AddOn 4
|
||||
- platform: atm90e32
|
||||
cs_pin: 22
|
||||
phase_a:
|
||||
power:
|
||||
name: ${disp_name} CT28 Watts
|
||||
id: ct28Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_b:
|
||||
power:
|
||||
name: ${disp_name} CT29 Watts
|
||||
id: ct29Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_c:
|
||||
power:
|
||||
name: ${disp_name} CT30 Watts
|
||||
id: ct30Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
line_frequency: 60Hz
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
#IC1 AddOn 5
|
||||
- platform: atm90e32
|
||||
cs_pin: 14
|
||||
phase_a:
|
||||
power:
|
||||
name: ${disp_name} CT31 Watts
|
||||
id: ct31Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_b:
|
||||
power:
|
||||
name: ${disp_name} CT32 Watts
|
||||
id: ct32Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_c:
|
||||
power:
|
||||
name: ${disp_name} CT33 Watts
|
||||
id: ct33Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
line_frequency: 60Hz
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
#IC2 AddOn 5
|
||||
- platform: atm90e32
|
||||
cs_pin: 25
|
||||
phase_a:
|
||||
power:
|
||||
name: ${disp_name} CT34 Watts
|
||||
id: ct34Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_b:
|
||||
power:
|
||||
name: ${disp_name} CT35 Watts
|
||||
id: ct35Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_c:
|
||||
power:
|
||||
name: ${disp_name} CT36 Watts
|
||||
id: ct36Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
line_frequency: 60Hz
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
#IC1 AddOn 6
|
||||
- platform: atm90e32
|
||||
cs_pin: 15
|
||||
phase_a:
|
||||
power:
|
||||
name: ${disp_name} CT37 Watts
|
||||
id: ct37Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_b:
|
||||
power:
|
||||
name: ${disp_name} CT38 Watts
|
||||
id: ct38Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_c:
|
||||
power:
|
||||
name: ${disp_name} CT39 Watts
|
||||
id: ct39Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
line_frequency: 60Hz
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
#IC2 AddOn 6
|
||||
- platform: atm90e32
|
||||
cs_pin: 26
|
||||
phase_a:
|
||||
power:
|
||||
name: ${disp_name} CT40 Watts
|
||||
id: ct40Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_b:
|
||||
power:
|
||||
name: ${disp_name} CT41 Watts
|
||||
id: ct41Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_c:
|
||||
power:
|
||||
name: ${disp_name} CT42 Watts
|
||||
id: ct42Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
line_frequency: 60Hz
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
|
||||
#Total Watts Main
|
||||
- platform: template
|
||||
name: ${disp_name} Total Watts Main
|
||||
id: totalWattsMain
|
||||
lambda: return id(ct1Watts).state + id(ct2Watts).state + id(ct3Watts).state + id(ct4Watts).state + id(ct5Watts).state + id(ct6Watts).state ;
|
||||
accuracy_decimals: 1
|
||||
unit_of_measurement: W
|
||||
device_class: power
|
||||
update_interval: ${update_time}
|
||||
#Total Watts AddOn1
|
||||
- platform: template
|
||||
name: ${disp_name} Total Watts Add-on1
|
||||
id: totalWattsAddOn1
|
||||
lambda: return id(ct7Watts).state + id(ct8Watts).state + id(ct9Watts).state + id(ct10Watts).state + id(ct11Watts).state + id(ct12Watts).state ;
|
||||
accuracy_decimals: 1
|
||||
unit_of_measurement: W
|
||||
device_class: power
|
||||
update_interval: ${update_time}
|
||||
#Total Watts AddOn2
|
||||
- platform: template
|
||||
name: ${disp_name} Total Watts Add-on2
|
||||
id: totalWattsAddOn2
|
||||
lambda: return id(ct13Watts).state + id(ct14Watts).state + id(ct15Watts).state + id(ct16Watts).state + id(ct17Watts).state + id(ct18Watts).state ;
|
||||
accuracy_decimals: 1
|
||||
unit_of_measurement: W
|
||||
device_class: power
|
||||
update_interval: ${update_time}
|
||||
#Total Watts AddOn3
|
||||
- platform: template
|
||||
name: ${disp_name} Total Watts Add-on3
|
||||
id: totalWattsAddOn3
|
||||
lambda: return id(ct19Watts).state + id(ct20Watts).state + id(ct21Watts).state + id(ct22Watts).state + id(ct23Watts).state + id(ct24Watts).state ;
|
||||
accuracy_decimals: 1
|
||||
unit_of_measurement: W
|
||||
device_class: power
|
||||
update_interval: ${update_time}
|
||||
#Total Watts AddOn4
|
||||
- platform: template
|
||||
name: ${disp_name} Total Watts Add-on4
|
||||
id: totalWattsAddOn4
|
||||
lambda: return id(ct25Watts).state + id(ct26Watts).state + id(ct27Watts).state + id(ct28Watts).state + id(ct29Watts).state + id(ct30Watts).state ;
|
||||
accuracy_decimals: 1
|
||||
unit_of_measurement: W
|
||||
device_class: power
|
||||
update_interval: ${update_time}
|
||||
#Total Watts AddOn5
|
||||
- platform: template
|
||||
name: ${disp_name} Total Watts Add-on5
|
||||
id: totalWattsAddOn5
|
||||
lambda: return id(ct31Watts).state + id(ct32Watts).state + id(ct33Watts).state + id(ct34Watts).state + id(ct35Watts).state + id(ct36Watts).state ;
|
||||
accuracy_decimals: 1
|
||||
unit_of_measurement: W
|
||||
device_class: power
|
||||
update_interval: ${update_time}
|
||||
#Total Watts AddOn6
|
||||
- platform: template
|
||||
name: ${disp_name} Total Watts Add-on6
|
||||
id: totalWattsAddOn6
|
||||
lambda: return id(ct37Watts).state + id(ct38Watts).state + id(ct39Watts).state + id(ct40Watts).state + id(ct41Watts).state + id(ct42Watts).state ;
|
||||
accuracy_decimals: 1
|
||||
unit_of_measurement: W
|
||||
device_class: power
|
||||
update_interval: ${update_time}
|
||||
#Total Watts
|
||||
- platform: template
|
||||
name: ${disp_name} Total Watts
|
||||
id: totalWatts
|
||||
lambda: return id(totalWattsMain).state + id(totalWattsAddOn1).state + id(totalWattsAddOn2).state + id(totalWattsAddOn3).state + id(totalWattsAddOn4).state + id(totalWattsAddOn5).state + id(totalWattsAddOn6).state ;
|
||||
accuracy_decimals: 1
|
||||
unit_of_measurement: W
|
||||
device_class: power
|
||||
update_interval: ${update_time}
|
||||
#kWh
|
||||
- platform: total_daily_energy
|
||||
name: ${disp_name} Total kWh
|
||||
power_id: totalWatts
|
||||
filters:
|
||||
- multiply: 0.001
|
||||
unit_of_measurement: kWh
|
||||
device_class: energy
|
||||
state_class: total_increasing
|
||||
@@ -0,0 +1,481 @@
|
||||
# CircuitSetup 6 Channel Energy Meter Main Board with 6 add-on boards over ethernet - 42 current channels
|
||||
#
|
||||
# To reduce the number of sensors, only the power sensor for each current channel is output.
|
||||
#
|
||||
# Uses the Lilygo T-ETH-Lite ESP32S3 and the CircuitSetup 6 Channel Energy Meter Ethernet Adapter
|
||||
# See all options at https://esphome.io/components/sensor/atm90e32.html
|
||||
#
|
||||
# CS pins for the ESP32-S3 are different, and must be changed if previously using a WiFi ESP32:
|
||||
#Main board:
|
||||
# 5 -> 8
|
||||
# 4 -> 4 (stays the same)
|
||||
#Add-on boards:
|
||||
#CS (CT1-3):
|
||||
# 0 -> 0
|
||||
# 27 -> 18
|
||||
# 2 -> 2
|
||||
# 13 -> 3
|
||||
# 14 -> 41
|
||||
# 15 -> 15
|
||||
#CS2 (CT3-6):
|
||||
# 16 -> 16
|
||||
# 17 -> 17
|
||||
# 21 -> 21
|
||||
# 22 -> 20
|
||||
# 25 -> 39
|
||||
# 26 -> 38
|
||||
|
||||
substitutions:
|
||||
# Change the disp_name to something you want
|
||||
disp_name: Energy Meter
|
||||
friendly_name: CircuitSetup Energy Meter
|
||||
# Interval of how often the power data is updated
|
||||
update_time: 10s
|
||||
|
||||
# Change current_cal to the corresponding CT's that you're using
|
||||
# If different CTs per current channel, remove or change "${current_cal}" from
|
||||
# "gain_ct" below and replace with the CT calibration number respectively
|
||||
# Current Transformers:
|
||||
# 20A/25mA SCT-006: 11143
|
||||
# 30A/1V SCT-013-030: 8650
|
||||
# 50A/1V SCT-013-050: 15420
|
||||
# 50A/16.6mA SCT-010: 41334
|
||||
# 80A/26.6mA SCT-010: 41660
|
||||
# 100A/50ma SCT-013-000: 27518
|
||||
# 120A/40mA: SCT-016: 41787
|
||||
# 200A/100mA SCT-024: 27518
|
||||
# 200A/50mA SCT-024: 55036
|
||||
current_cal: '11143' # 20A/25mA
|
||||
|
||||
# This only needs to be changed if you're using something other than the
|
||||
# Jameco 9VAC Transformer:
|
||||
voltage_cal: '7305'
|
||||
|
||||
packages:
|
||||
common: github://CircuitSetup/Expandable-6-Channel-ESP32-Energy-Meter/Software/ESPHome/6chan_common_ethernet.yaml
|
||||
|
||||
sensor:
|
||||
#IC1 Main
|
||||
- platform: atm90e32
|
||||
cs_pin: 8
|
||||
phase_a:
|
||||
voltage:
|
||||
name: ${disp_name} Volts A Main
|
||||
id: ic1Volts
|
||||
accuracy_decimals: 1
|
||||
power:
|
||||
name: ${disp_name} CT1 Watts
|
||||
id: ct1Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_b:
|
||||
power:
|
||||
name: ${disp_name} CT2 Watts
|
||||
id: ct2Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_c:
|
||||
power:
|
||||
name: ${disp_name} CT3 Watts
|
||||
id: ct3Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
frequency:
|
||||
name: ${disp_name} Freq A Main
|
||||
line_frequency: 60Hz
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
#IC2 Main
|
||||
- platform: atm90e32
|
||||
cs_pin: 4
|
||||
phase_a:
|
||||
power:
|
||||
name: ${disp_name} CT4 Watts
|
||||
id: ct4Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_b:
|
||||
power:
|
||||
name: ${disp_name} CT5 Watts
|
||||
id: ct5Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_c:
|
||||
power:
|
||||
name: ${disp_name} CT6 Watts
|
||||
id: ct6Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
line_frequency: 60Hz
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
#IC1 AddOn 1
|
||||
- platform: atm90e32
|
||||
cs_pin: 0
|
||||
phase_a:
|
||||
power:
|
||||
name: ${disp_name} CT7 Watts
|
||||
id: ct7Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_b:
|
||||
power:
|
||||
name: ${disp_name} CT8 Watts
|
||||
id: ct8Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_c:
|
||||
power:
|
||||
name: ${disp_name} CT9 Watts
|
||||
id: ct9Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
line_frequency: 60Hz
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
#IC2 AddOn 1
|
||||
- platform: atm90e32
|
||||
cs_pin: 16
|
||||
phase_a:
|
||||
power:
|
||||
name: ${disp_name} CT10 Watts
|
||||
id: ct10Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_b:
|
||||
power:
|
||||
name: ${disp_name} CT11 Watts
|
||||
id: ct11Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_c:
|
||||
power:
|
||||
name: ${disp_name} CT12 Watts
|
||||
id: ct12Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
line_frequency: 60Hz
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
#IC1 AddOn 2
|
||||
- platform: atm90e32
|
||||
cs_pin: 18
|
||||
phase_a:
|
||||
power:
|
||||
name: ${disp_name} CT13 Watts
|
||||
id: ct13Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_b:
|
||||
power:
|
||||
name: ${disp_name} CT14 Watts
|
||||
id: ct14Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_c:
|
||||
power:
|
||||
name: ${disp_name} CT15 Watts
|
||||
id: ct15Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
line_frequency: 60Hz
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
#IC2 AddOn 2
|
||||
- platform: atm90e32
|
||||
cs_pin: 17
|
||||
phase_a:
|
||||
power:
|
||||
name: ${disp_name} CT16 Watts
|
||||
id: ct16Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_b:
|
||||
power:
|
||||
name: ${disp_name} CT17 Watts
|
||||
id: ct17Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_c:
|
||||
power:
|
||||
name: ${disp_name} CT18 Watts
|
||||
id: ct18Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
line_frequency: 60Hz
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
#IC1 AddOn 3
|
||||
- platform: atm90e32
|
||||
cs_pin: 2
|
||||
phase_a:
|
||||
power:
|
||||
name: ${disp_name} CT19 Watts
|
||||
id: ct19Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_b:
|
||||
power:
|
||||
name: ${disp_name} CT20 Watts
|
||||
id: ct20Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_c:
|
||||
power:
|
||||
name: ${disp_name} CT21 Watts
|
||||
id: ct21Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
line_frequency: 60Hz
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
#IC2 AddOn 3
|
||||
- platform: atm90e32
|
||||
cs_pin: 21
|
||||
phase_a:
|
||||
power:
|
||||
name: ${disp_name} CT22 Watts
|
||||
id: ct22Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_b:
|
||||
power:
|
||||
name: ${disp_name} CT23 Watts
|
||||
id: ct23Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_c:
|
||||
power:
|
||||
name: ${disp_name} CT24 Watts
|
||||
id: ct24Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
line_frequency: 60Hz
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
#IC1 AddOn 4
|
||||
- platform: atm90e32
|
||||
cs_pin: 3
|
||||
phase_a:
|
||||
power:
|
||||
name: ${disp_name} CT25 Watts
|
||||
id: ct25Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_b:
|
||||
power:
|
||||
name: ${disp_name} CT26 Watts
|
||||
id: ct26Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_c:
|
||||
power:
|
||||
name: ${disp_name} CT27 Watts
|
||||
id: ct27Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
line_frequency: 60Hz
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
#IC2 AddOn 4
|
||||
- platform: atm90e32
|
||||
cs_pin: 20
|
||||
phase_a:
|
||||
power:
|
||||
name: ${disp_name} CT28 Watts
|
||||
id: ct28Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_b:
|
||||
power:
|
||||
name: ${disp_name} CT29 Watts
|
||||
id: ct29Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_c:
|
||||
power:
|
||||
name: ${disp_name} CT30 Watts
|
||||
id: ct30Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
line_frequency: 60Hz
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
#IC1 AddOn 5
|
||||
- platform: atm90e32
|
||||
cs_pin: 41
|
||||
phase_a:
|
||||
power:
|
||||
name: ${disp_name} CT31 Watts
|
||||
id: ct31Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_b:
|
||||
power:
|
||||
name: ${disp_name} CT32 Watts
|
||||
id: ct32Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_c:
|
||||
power:
|
||||
name: ${disp_name} CT33 Watts
|
||||
id: ct33Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
line_frequency: 60Hz
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
#IC2 AddOn 5
|
||||
- platform: atm90e32
|
||||
cs_pin: 39
|
||||
phase_a:
|
||||
power:
|
||||
name: ${disp_name} CT34 Watts
|
||||
id: ct34Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_b:
|
||||
power:
|
||||
name: ${disp_name} CT35 Watts
|
||||
id: ct35Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_c:
|
||||
power:
|
||||
name: ${disp_name} CT36 Watts
|
||||
id: ct36Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
line_frequency: 60Hz
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
#IC1 AddOn 6
|
||||
- platform: atm90e32
|
||||
cs_pin: 15
|
||||
phase_a:
|
||||
power:
|
||||
name: ${disp_name} CT37 Watts
|
||||
id: ct37Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_b:
|
||||
power:
|
||||
name: ${disp_name} CT38 Watts
|
||||
id: ct38Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_c:
|
||||
power:
|
||||
name: ${disp_name} CT39 Watts
|
||||
id: ct39Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
line_frequency: 60Hz
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
#IC2 AddOn 6
|
||||
- platform: atm90e32
|
||||
cs_pin: 38
|
||||
phase_a:
|
||||
power:
|
||||
name: ${disp_name} CT40 Watts
|
||||
id: ct40Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_b:
|
||||
power:
|
||||
name: ${disp_name} CT41 Watts
|
||||
id: ct41Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_c:
|
||||
power:
|
||||
name: ${disp_name} CT42 Watts
|
||||
id: ct42Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
line_frequency: 60Hz
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
|
||||
#Total Watts Main
|
||||
- platform: template
|
||||
name: ${disp_name} Total Watts Main
|
||||
id: totalWattsMain
|
||||
lambda: return id(ct1Watts).state + id(ct2Watts).state + id(ct3Watts).state + id(ct4Watts).state + id(ct5Watts).state + id(ct6Watts).state ;
|
||||
accuracy_decimals: 1
|
||||
unit_of_measurement: W
|
||||
device_class: power
|
||||
update_interval: ${update_time}
|
||||
#Total Watts AddOn1
|
||||
- platform: template
|
||||
name: ${disp_name} Total Watts Add-on1
|
||||
id: totalWattsAddOn1
|
||||
lambda: return id(ct7Watts).state + id(ct8Watts).state + id(ct9Watts).state + id(ct10Watts).state + id(ct11Watts).state + id(ct12Watts).state ;
|
||||
accuracy_decimals: 1
|
||||
unit_of_measurement: W
|
||||
device_class: power
|
||||
update_interval: ${update_time}
|
||||
#Total Watts AddOn2
|
||||
- platform: template
|
||||
name: ${disp_name} Total Watts Add-on2
|
||||
id: totalWattsAddOn2
|
||||
lambda: return id(ct13Watts).state + id(ct14Watts).state + id(ct15Watts).state + id(ct16Watts).state + id(ct17Watts).state + id(ct18Watts).state ;
|
||||
accuracy_decimals: 1
|
||||
unit_of_measurement: W
|
||||
device_class: power
|
||||
update_interval: ${update_time}
|
||||
#Total Watts AddOn3
|
||||
- platform: template
|
||||
name: ${disp_name} Total Watts Add-on3
|
||||
id: totalWattsAddOn3
|
||||
lambda: return id(ct19Watts).state + id(ct20Watts).state + id(ct21Watts).state + id(ct22Watts).state + id(ct23Watts).state + id(ct24Watts).state ;
|
||||
accuracy_decimals: 1
|
||||
unit_of_measurement: W
|
||||
device_class: power
|
||||
update_interval: ${update_time}
|
||||
#Total Watts AddOn4
|
||||
- platform: template
|
||||
name: ${disp_name} Total Watts Add-on4
|
||||
id: totalWattsAddOn4
|
||||
lambda: return id(ct25Watts).state + id(ct26Watts).state + id(ct27Watts).state + id(ct28Watts).state + id(ct29Watts).state + id(ct30Watts).state ;
|
||||
accuracy_decimals: 1
|
||||
unit_of_measurement: W
|
||||
device_class: power
|
||||
update_interval: ${update_time}
|
||||
#Total Watts AddOn5
|
||||
- platform: template
|
||||
name: ${disp_name} Total Watts Add-on5
|
||||
id: totalWattsAddOn5
|
||||
lambda: return id(ct31Watts).state + id(ct32Watts).state + id(ct33Watts).state + id(ct34Watts).state + id(ct35Watts).state + id(ct36Watts).state ;
|
||||
accuracy_decimals: 1
|
||||
unit_of_measurement: W
|
||||
device_class: power
|
||||
update_interval: ${update_time}
|
||||
#Total Watts AddOn6
|
||||
- platform: template
|
||||
name: ${disp_name} Total Watts Add-on6
|
||||
id: totalWattsAddOn6
|
||||
lambda: return id(ct37Watts).state + id(ct38Watts).state + id(ct39Watts).state + id(ct40Watts).state + id(ct41Watts).state + id(ct42Watts).state ;
|
||||
accuracy_decimals: 1
|
||||
unit_of_measurement: W
|
||||
device_class: power
|
||||
update_interval: ${update_time}
|
||||
#Total Watts
|
||||
- platform: template
|
||||
name: ${disp_name} Total Watts
|
||||
id: totalWatts
|
||||
lambda: return id(totalWattsMain).state + id(totalWattsAddOn1).state + id(totalWattsAddOn2).state + id(totalWattsAddOn3).state + id(totalWattsAddOn4).state + id(totalWattsAddOn5).state + id(totalWattsAddOn6).state ;
|
||||
accuracy_decimals: 1
|
||||
unit_of_measurement: W
|
||||
device_class: power
|
||||
update_interval: ${update_time}
|
||||
#kWh
|
||||
- platform: total_daily_energy
|
||||
name: ${disp_name} Total kWh
|
||||
power_id: totalWatts
|
||||
filters:
|
||||
- multiply: 0.001
|
||||
unit_of_measurement: kWh
|
||||
device_class: energy
|
||||
state_class: total_increasing
|
||||
@@ -0,0 +1,272 @@
|
||||
# 6 Channel Example Config for Split Single Phase whole house, solar, and 2 other circuits
|
||||
# See all options at https://esphome.io/components/sensor/atm90e32.html
|
||||
|
||||
substitutions:
|
||||
# Change the disp_name to something you want
|
||||
disp_name: Energy Meter
|
||||
friendly_name: CircuitSetup Energy Meter
|
||||
# Interval of how often the power data is updated
|
||||
update_time: 10s
|
||||
|
||||
# Change current_cal to the corresponding CT's that you're using
|
||||
# If different CTs per current channel, remove or change "${current_cal}" from
|
||||
# "gain_ct" below and replace with the CT calibration number respectively
|
||||
# Current Transformers:
|
||||
# 20A/25mA SCT-006: 11143
|
||||
# 30A/1V SCT-013-030: 8650
|
||||
# 50A/1V SCT-013-050: 15420
|
||||
# 50A/16.6mA SCT-010: 41334
|
||||
# 80A/26.6mA SCT-010: 41660
|
||||
# 100A/50ma SCT-013-000: 27518
|
||||
# 120A/40mA: SCT-016: 41787
|
||||
# 200A/100mA SCT-024: 27518
|
||||
# 200A/50mA SCT-024: 55036
|
||||
house_current_cal: '27518'
|
||||
solar_current_cal: '27518'
|
||||
current_cal: '27518'
|
||||
|
||||
# This only needs to be changed if you're using something other than the
|
||||
# Jameco 9VAC Transformer:
|
||||
voltage_cal: '7305'
|
||||
|
||||
esphome:
|
||||
name: ${disp_name}
|
||||
friendly_name: "${friendly_name}"
|
||||
name_add_mac_suffix: true
|
||||
min_version: '2025.5.0'
|
||||
project:
|
||||
name: circuitsetup.6c-energy-meter
|
||||
version: "1.6"
|
||||
|
||||
packages:
|
||||
common: github://CircuitSetup/Expandable-6-Channel-ESP32-Energy-Meter/Software/ESPHome/6chan_common.yaml
|
||||
|
||||
# Enable Home Assistant API
|
||||
# An encryption key is recommended and can be generated here:
|
||||
# https://esphome.io/components/api.html#configuration-variables
|
||||
api:
|
||||
# encryption:
|
||||
# key: "YOUR_ENCRYPTION_KEY_HERE"
|
||||
|
||||
# Enable OTA updating
|
||||
ota:
|
||||
- platform: esphome
|
||||
|
||||
# Set up a wifi access point
|
||||
wifi:
|
||||
ap:
|
||||
|
||||
# In combination with the `ap` this allows
|
||||
# provisioning wifi credentials to the device.
|
||||
captive_portal:
|
||||
|
||||
# Sets up Bluetooth LE to provision wifi credentials
|
||||
# to the device.
|
||||
esp32_improv:
|
||||
authorizer: none
|
||||
|
||||
# Sets up the improv via serial client for wifi provisioning
|
||||
improv_serial:
|
||||
|
||||
web_server:
|
||||
port: 80
|
||||
|
||||
sensor:
|
||||
#IC1
|
||||
- platform: atm90e32
|
||||
cs_pin: 5
|
||||
#CT1
|
||||
phase_a:
|
||||
voltage:
|
||||
name: ${disp_name} Volts
|
||||
id: HouseL1Volts
|
||||
accuracy_decimals: 1
|
||||
current:
|
||||
name: ${disp_name} House L1 Amps
|
||||
id: HouseL1Amps
|
||||
power:
|
||||
name: ${disp_name} House L1 Watts
|
||||
id: HouseL1Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${house_current_cal}
|
||||
#CT2
|
||||
phase_b:
|
||||
current:
|
||||
name: ${disp_name} Solar L1 Amps
|
||||
id: SolarL1Amps
|
||||
power:
|
||||
name: ${disp_name} Solar L1 Watts
|
||||
id: SolarL1Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${solar_current_cal}
|
||||
#CT3
|
||||
phase_c:
|
||||
current:
|
||||
name: ${disp_name} Hot Water Amps
|
||||
id: HotWaterAmps
|
||||
power:
|
||||
name: ${disp_name} Hot Water Watts
|
||||
id: HotWaterWatts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
frequency:
|
||||
name: ${disp_name} Freq
|
||||
line_frequency: 60Hz
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
#IC2
|
||||
- platform: atm90e32
|
||||
cs_pin: 4
|
||||
#CT4
|
||||
phase_a:
|
||||
current:
|
||||
name: ${disp_name} Dryer Amps
|
||||
id: DryerAmps
|
||||
power:
|
||||
name: ${disp_name} Dryer Watts
|
||||
id: DryerWatts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
#CT5
|
||||
phase_b:
|
||||
current:
|
||||
name: ${disp_name} Solar L2 Amps
|
||||
id: SolarL2Amps
|
||||
power:
|
||||
name: ${disp_name} CT5 Watts
|
||||
id: SolarL2Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${solar_current_cal}
|
||||
#CT6
|
||||
phase_c:
|
||||
current:
|
||||
name: ${disp_name} House L2 Amps
|
||||
id: HouseL2Amps
|
||||
power:
|
||||
name: ${disp_name} House L2 Watts
|
||||
id: HouseL2Watts
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${house_current_cal}
|
||||
line_frequency: 60Hz
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
|
||||
#Total House Amps
|
||||
- platform: template
|
||||
name: ${disp_name} Total House Amps
|
||||
id: totalHouseAmps
|
||||
lambda: return id(HouseL1Amps).state + id(HouseL2Amps).state ;
|
||||
accuracy_decimals: 2
|
||||
unit_of_measurement: A
|
||||
device_class: current
|
||||
update_interval: ${update_time}
|
||||
|
||||
#Total House Watts
|
||||
- platform: template
|
||||
name: ${disp_name} Total House Watts
|
||||
id: totalHouseWatts
|
||||
lambda: return id(HouseL1Watts).state + id(HouseL2Watts).state ;
|
||||
accuracy_decimals: 1
|
||||
unit_of_measurement: W
|
||||
device_class: power
|
||||
update_interval: ${update_time}
|
||||
|
||||
#Total House Watts Negative
|
||||
- platform: template
|
||||
name: ${disp_name} Total House Return To Grid Watts
|
||||
id: returnToGridWatts
|
||||
lambda: |-
|
||||
if (id(totalHouseWatts).state > 0) {
|
||||
return 0;
|
||||
} else {
|
||||
return abs(id(totalHouseWatts).state) ;
|
||||
}
|
||||
accuracy_decimals: 1
|
||||
unit_of_measurement: W
|
||||
device_class: power
|
||||
update_interval: ${update_time}
|
||||
|
||||
#House Negative kWh (HA Return to Grid)
|
||||
- platform: total_daily_energy
|
||||
name: ${disp_name} House Return To Grid kWh
|
||||
power_id: returnToGridWatts
|
||||
filters:
|
||||
- multiply: 0.001
|
||||
unit_of_measurement: kWh
|
||||
device_class: energy
|
||||
state_class: total_increasing
|
||||
|
||||
#Total House Watts Positive
|
||||
- platform: template
|
||||
name: ${disp_name} Total House Positive Watts
|
||||
id: totalHousePositiveWatts
|
||||
lambda: |-
|
||||
if (id(totalHouseWatts).state < 0) {
|
||||
return 0;
|
||||
} else {
|
||||
return id(totalHouseWatts).state ;
|
||||
}
|
||||
accuracy_decimals: 1
|
||||
unit_of_measurement: W
|
||||
device_class: power
|
||||
update_interval: ${update_time}
|
||||
|
||||
#House positive kWh
|
||||
- platform: total_daily_energy
|
||||
name: ${disp_name} House kWh
|
||||
power_id: totalHousePositiveWatts
|
||||
filters:
|
||||
- multiply: 0.001
|
||||
unit_of_measurement: kWh
|
||||
device_class: energy
|
||||
state_class: total_increasing
|
||||
|
||||
#Total Solar Amps
|
||||
- platform: template
|
||||
name: ${disp_name} Total Solar Amps
|
||||
id: totalSolarAmps
|
||||
lambda: return id(SolarL1Amps).state + id(SolarL2Amps).state ;
|
||||
accuracy_decimals: 2
|
||||
unit_of_measurement: A
|
||||
device_class: current
|
||||
update_interval: ${update_time}
|
||||
|
||||
#Total Solar Watts
|
||||
- platform: template
|
||||
name: ${disp_name} Total Solar Watts
|
||||
id: totalSolarWatts
|
||||
lambda: return id(SolarL1Watts).state + id(SolarL2Watts).state ;
|
||||
accuracy_decimals: 1
|
||||
unit_of_measurement: W
|
||||
device_class: power
|
||||
update_interval: ${update_time}
|
||||
|
||||
#Solar kWh
|
||||
- platform: total_daily_energy
|
||||
name: ${disp_name} Solar kWh
|
||||
power_id: totalSolarWatts
|
||||
filters:
|
||||
- multiply: 0.001
|
||||
unit_of_measurement: kWh
|
||||
device_class: energy
|
||||
state_class: total_increasing
|
||||
|
||||
#Individual Hot Water kWh
|
||||
- platform: total_daily_energy
|
||||
name: ${disp_name} Hot Water kWh
|
||||
power_id: HotWaterWatts
|
||||
filters:
|
||||
- multiply: 0.001
|
||||
unit_of_measurement: kWh
|
||||
device_class: energy
|
||||
state_class: total_increasing
|
||||
|
||||
#Individual Dryer kWh
|
||||
- platform: total_daily_energy
|
||||
name: ${disp_name} Dryer kWh
|
||||
power_id: DryerWatts
|
||||
filters:
|
||||
- multiply: 0.001
|
||||
unit_of_measurement: kWh
|
||||
device_class: energy
|
||||
state_class: total_increasing
|
||||
@@ -0,0 +1,205 @@
|
||||
substitutions:
|
||||
# Change the disp_name to something you want
|
||||
disp_name: 6C
|
||||
# Interval of how often the power is updated
|
||||
update_time: 10s
|
||||
# Current Transformers:
|
||||
# 20A/25mA SCT-006: 11143
|
||||
# 30A/1V SCT-013-030: 8650
|
||||
# 50A/1V SCT-013-050: 15420
|
||||
# 50A/16.6mA SCT-010: 41334
|
||||
# 80A/26.6mA SCT-010: 41660
|
||||
# 100A/50ma SCT-013-000: 27518
|
||||
# 120A/40mA: SCT-016: 41787
|
||||
# 200A/100mA SCT-024: 27518
|
||||
# 200A/50mA SCT-024: 55036
|
||||
current_cal: '27518'
|
||||
# Jameco 9VAC Transformer: 42620
|
||||
voltage_cal: '42620'
|
||||
|
||||
esphome:
|
||||
name: 6chan_energy_meter
|
||||
platform: ESP32
|
||||
board: nodemcu-32s
|
||||
|
||||
wifi:
|
||||
ssid: !secret wifi_ssid
|
||||
password: !secret wifi_pass
|
||||
manual_ip:
|
||||
static_ip: !secret ip_eh_nrgnode
|
||||
gateway: !secret ip_gateway
|
||||
subnet: !secret ip_subnet
|
||||
dns1: !secret ip_dns1
|
||||
|
||||
# mqtt:
|
||||
# broker: !secret mqtt_broker
|
||||
# username: !secret mqtt_user
|
||||
# password: !secret mqtt_pass
|
||||
|
||||
# Enable logging
|
||||
logger:
|
||||
|
||||
# Enable Home Assistant API
|
||||
api:
|
||||
|
||||
ota:
|
||||
|
||||
web_server:
|
||||
port: 80
|
||||
|
||||
spi:
|
||||
clk_pin: 18
|
||||
miso_pin: 19
|
||||
mosi_pin: 23
|
||||
|
||||
sensor:
|
||||
- platform: wifi_signal
|
||||
name: ${disp_name} WiFi
|
||||
update_interval: 60s
|
||||
#IC1
|
||||
- platform: atm90e32
|
||||
cs_pin: 5
|
||||
phase_a:
|
||||
voltage:
|
||||
name: ${disp_name} Volts A
|
||||
id: ic1Volts
|
||||
accuracy_decimals: 1
|
||||
# filters:
|
||||
# - multiply: 2.0
|
||||
current:
|
||||
name: ${disp_name} CT1 Amps
|
||||
id: ct1Amps
|
||||
# The max value for current that the meter can output is 65.535. If you expect to measure current over 65A,
|
||||
# divide the gain_ct by 2 (120A CT) or 4 (200A CT) and multiply the current value by 2 or 4 by uncommenting the filter below
|
||||
# filters:
|
||||
# - multiply: 2.0
|
||||
gain_voltage: ${voltage_cal}
|
||||
# Voltage using a 9VAC power transformer
|
||||
# Note: If you can not get the voltage correct with the highest gain of 65535, uncomment the 2.0 multiply filter above and lower the gain as needed
|
||||
gain_ct: ${current_cal}
|
||||
phase_b:
|
||||
current:
|
||||
name: ${disp_name} CT2 Amps
|
||||
id: ct2Amps
|
||||
gain_ct: ${current_cal}
|
||||
phase_c:
|
||||
current:
|
||||
name: ${disp_name} CT3 Amps
|
||||
id: ct3Amps
|
||||
gain_ct: ${current_cal}
|
||||
frequency:
|
||||
name: ${disp_name} Freq A
|
||||
line_frequency: 60Hz
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
#IC2
|
||||
- platform: atm90e32
|
||||
cs_pin: 4
|
||||
phase_a:
|
||||
voltage:
|
||||
name: ${disp_name} Volts B
|
||||
id: ic2Volts
|
||||
accuracy_decimals: 1
|
||||
current:
|
||||
name: ${disp_name} CT4 Amps
|
||||
id: ct4Amps
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${current_cal}
|
||||
phase_b:
|
||||
current:
|
||||
name: ${disp_name} CT5 Amps
|
||||
id: ct5Amps
|
||||
gain_ct: ${current_cal}
|
||||
phase_c:
|
||||
current:
|
||||
name: ${disp_name} CT6 Amps
|
||||
id: ct6Amps
|
||||
gain_ct: ${current_cal}
|
||||
frequency:
|
||||
name: ${disp_name} Freq B
|
||||
line_frequency: 60Hz
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
|
||||
#Watts per channel
|
||||
- platform: template
|
||||
name: ${disp_name} CT1 Watts
|
||||
id: ct1Watts
|
||||
lambda: return id(ct1Amps).state * id(ic1Volts).state;
|
||||
accuracy_decimals: 0
|
||||
unit_of_measurement: W
|
||||
device_class: power
|
||||
update_interval: ${update_time}
|
||||
- platform: template
|
||||
name: ${disp_name} CT2 Watts
|
||||
id: ct2Watts
|
||||
lambda: return id(ct2Amps).state * id(ic1Volts).state;
|
||||
accuracy_decimals: 0
|
||||
unit_of_measurement: W
|
||||
device_class: power
|
||||
update_interval: ${update_time}
|
||||
- platform: template
|
||||
name: ${disp_name} CT3 Watts
|
||||
id: ct3Watts
|
||||
lambda: return id(ct3Amps).state * id(ic1Volts).state;
|
||||
accuracy_decimals: 0
|
||||
unit_of_measurement: W
|
||||
device_class: power
|
||||
update_interval: ${update_time}
|
||||
- platform: template
|
||||
name: ${disp_name} CT4 Watts
|
||||
id: ct4Watts
|
||||
lambda: return id(ct4Amps).state * id(ic2Volts).state;
|
||||
accuracy_decimals: 0
|
||||
unit_of_measurement: W
|
||||
device_class: power
|
||||
update_interval: ${update_time}
|
||||
- platform: template
|
||||
name: ${disp_name} CT5 Watts
|
||||
id: ct5Watts
|
||||
lambda: return id(ct5Amps).state * id(ic2Volts).state;
|
||||
accuracy_decimals: 0
|
||||
unit_of_measurement: W
|
||||
device_class: power
|
||||
update_interval: ${update_time}
|
||||
- platform: template
|
||||
name: ${disp_name} CT6 Watts
|
||||
id: ct6Watts
|
||||
lambda: return id(ct6Amps).state * id(ic2Volts).state;
|
||||
accuracy_decimals: 0
|
||||
unit_of_measurement: W
|
||||
device_class: power
|
||||
update_interval: ${update_time}
|
||||
#Total Amps
|
||||
- platform: template
|
||||
name: ${disp_name} Total Amps
|
||||
id: totalAmps
|
||||
lambda: return id(ct1Amps).state + id(ct2Amps).state + id(ct3Amps).state + id(ct4Amps).state + id(ct5Amps).state + id(ct6Amps).state ;
|
||||
accuracy_decimals: 2
|
||||
unit_of_measurement: A
|
||||
device_class: current
|
||||
update_interval: ${update_time}
|
||||
#Total Watts
|
||||
- platform: template
|
||||
name: ${disp_name} Total Watts
|
||||
id: totalWatts
|
||||
lambda: return id(totalAmps).state * id(ic1Volts).state;
|
||||
accuracy_decimals: 1
|
||||
unit_of_measurement: W
|
||||
device_class: power
|
||||
update_interval: ${update_time}
|
||||
#kWh
|
||||
- platform: total_daily_energy
|
||||
name: ${disp_name} Total kWh
|
||||
power_id: totalWatts
|
||||
filters:
|
||||
- multiply: 0.001
|
||||
unit_of_measurement: kWh
|
||||
device_class: energy
|
||||
state_class: total_increasing
|
||||
switch:
|
||||
- platform: restart
|
||||
name: ${disp_name} Restart
|
||||
time:
|
||||
- platform: sntp
|
||||
id: sntp_time
|
||||
@@ -0,0 +1,420 @@
|
||||
# CircuitSetup 6 Channel Energy Meter Main Board example config
|
||||
# See all options at https://esphome.io/components/sensor/atm90e32.html
|
||||
|
||||
substitutions:
|
||||
# Change the disp_name to something you want
|
||||
disp_name: Energy-Meter
|
||||
friendly_name: CircuitSetup Energy Meter Wifi
|
||||
# Interval of how often the power data is updated
|
||||
update_time: 60s
|
||||
|
||||
# Change current_cal to the corresponding CT's that you're using
|
||||
# If different CTs per current channel, remove or change "${current_cal}" from
|
||||
# "gain_ct" below and replace with the CT calibration number respectively
|
||||
# Current Transformers:
|
||||
# 20A/25mA SCT-006: 11143
|
||||
# 30A/1V SCT-013-030: 8650
|
||||
# 50A/1V SCT-013-050: 15420
|
||||
# 50A/16.6mA SCT-010: 41334
|
||||
# 80A/26.6mA SCT-010: 41660
|
||||
# 100A/50ma SCT-013-000: 27518
|
||||
# 120A/40mA: SCT-016: 41787
|
||||
# 200A/100mA SCT-024: 27518
|
||||
# 200A/50mA SCT-024: 55036
|
||||
current_cal_ct1: '27518'
|
||||
current_cal_ct2: '27518'
|
||||
current_cal_ct3: '27518'
|
||||
current_cal_ct4: '27518'
|
||||
current_cal_ct5: '27518'
|
||||
current_cal_ct6: '27518'
|
||||
# This only needs to be changed if you're using something other than the
|
||||
# Jameco 9VAC Transformer:
|
||||
voltage_cal1: '7305'
|
||||
voltage_cal2: '7305'
|
||||
|
||||
main_meter_name1: Meter 1-3
|
||||
main_meter_name2: Meter 4-6
|
||||
main_meter_id1: meter_main1
|
||||
main_meter_id2: meter_main2
|
||||
ct1_name: CT1
|
||||
ct2_name: CT2
|
||||
ct3_name: CT3
|
||||
ct4_name: CT4
|
||||
ct5_name: CT5
|
||||
ct6_name: CT6
|
||||
|
||||
#packages:
|
||||
# common: github://CircuitSetup/Expandable-6-Channel-ESP32-Energy-Meter/Software/ESPHome/6chan_common.yaml
|
||||
esphome:
|
||||
name: energy-meter
|
||||
friendly_name: "${friendly_name}"
|
||||
name_add_mac_suffix: true
|
||||
min_version: '2025.5.0'
|
||||
project:
|
||||
name: circuitsetup.6c-energy-meter
|
||||
version: "1.5"
|
||||
|
||||
esp32:
|
||||
board: nodemcu-32s
|
||||
|
||||
captive_portal:
|
||||
|
||||
improv_serial:
|
||||
|
||||
logger:
|
||||
level: DEBUG
|
||||
|
||||
# Enable OTA updating
|
||||
ota:
|
||||
- platform: esphome
|
||||
|
||||
web_server:
|
||||
port: 80
|
||||
|
||||
spi:
|
||||
interface: software
|
||||
clk_pin: 18
|
||||
miso_pin: 19
|
||||
mosi_pin: 23
|
||||
|
||||
time:
|
||||
- platform: homeassistant
|
||||
id: homeassistant_time
|
||||
|
||||
dashboard_import:
|
||||
package_import_url: github://CircuitSetup/Expandable-6-Channel-ESP32-Energy-Meter/Software/ESPHome/6chan_main_calibration_beta.yaml
|
||||
import_full_config: false
|
||||
|
||||
api:
|
||||
|
||||
wifi:
|
||||
# Set up a wifi access point
|
||||
ap:
|
||||
|
||||
sensor:
|
||||
#IC1
|
||||
- platform: atm90e32
|
||||
cs_pin: 5
|
||||
id: ${main_meter_id1}
|
||||
phase_a:
|
||||
voltage:
|
||||
name: Voltage 1
|
||||
id: ic1Volts
|
||||
accuracy_decimals: 1
|
||||
current:
|
||||
name: ${ct1_name} Amps
|
||||
id: ct1Amps
|
||||
# The max value for current that the meter can output is 65.535. If you expect to measure current over 65A,
|
||||
# divide the gain_ct by 2 (120A CT) or 4 (200A CT) and multiply the current and power values by 2 or 4 by uncommenting the filter below
|
||||
# filters:
|
||||
# - multiply: 2
|
||||
power:
|
||||
name: ${ct1_name} Watts
|
||||
id: ct1Watts
|
||||
# filters:
|
||||
# - multiply: 2
|
||||
reactive_power:
|
||||
name: ${ct1_name} VAR
|
||||
apparent_power:
|
||||
name: ${ct1_name} VA
|
||||
harmonic_power:
|
||||
name: ${ct1_name} Harmonic Power
|
||||
power_factor:
|
||||
name: ${ct1_name} PF
|
||||
phase_angle:
|
||||
name: ${ct1_name} Phase Angle
|
||||
peak_current:
|
||||
name: ${ct1_name} Peak Current
|
||||
gain_voltage: ${voltage_cal1}
|
||||
gain_ct: ${current_cal_ct1}
|
||||
offset_voltage: 0
|
||||
offset_current: 0
|
||||
offset_active_power: 0
|
||||
offset_reactive_power: 0
|
||||
phase_b:
|
||||
current:
|
||||
name: ${ct2_name} Amps
|
||||
id: ct2Amps
|
||||
power:
|
||||
name: ${ct2_name} Watts
|
||||
id: ct2Watts
|
||||
reactive_power:
|
||||
name: ${ct2_name} VAR
|
||||
apparent_power:
|
||||
name: ${ct2_name} VA
|
||||
harmonic_power:
|
||||
name: ${ct2_name} Harmonic Power
|
||||
power_factor:
|
||||
name: ${ct2_name} PF
|
||||
phase_angle:
|
||||
name: ${ct2_name} Phase Angle
|
||||
peak_current:
|
||||
name: ${ct2_name} Peak Current
|
||||
gain_voltage: ${voltage_cal1}
|
||||
gain_ct: ${current_cal_ct2}
|
||||
offset_voltage: 0
|
||||
offset_current: 0
|
||||
offset_active_power: 0
|
||||
offset_reactive_power: 0
|
||||
phase_c:
|
||||
current:
|
||||
name: ${ct3_name} Amps
|
||||
id: ct3Amps
|
||||
power:
|
||||
name: ${ct3_name} Watts
|
||||
id: ct3Watts
|
||||
reactive_power:
|
||||
name: ${ct3_name} VAR
|
||||
apparent_power:
|
||||
name: ${ct3_name} VA
|
||||
harmonic_power:
|
||||
name: ${ct3_name} Harmonic Power
|
||||
power_factor:
|
||||
name: ${ct3_name} PF
|
||||
phase_angle:
|
||||
name: ${ct3_name} Phase Angle
|
||||
peak_current:
|
||||
name: ${ct3_name} Peak Current
|
||||
gain_voltage: ${voltage_cal1}
|
||||
gain_ct: ${current_cal_ct3}
|
||||
offset_voltage: 0
|
||||
offset_current: 0
|
||||
offset_active_power: 0
|
||||
offset_reactive_power: 0
|
||||
frequency:
|
||||
name: Frequency 1
|
||||
chip_temperature:
|
||||
name: ${main_meter_name1} Chip Temp
|
||||
line_frequency: 60Hz
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
enable_offset_calibration: true
|
||||
enable_gain_calibration: true
|
||||
#IC2
|
||||
- platform: atm90e32
|
||||
cs_pin: 4
|
||||
id: ${main_meter_id2}
|
||||
phase_a:
|
||||
#this voltage is only needed if monitoring 2 voltages
|
||||
# voltage:
|
||||
# name: Voltage 2
|
||||
# id: ic2Volts
|
||||
# accuracy_decimals: 1
|
||||
current:
|
||||
name: ${ct4_name} Amps
|
||||
id: ct4Amps
|
||||
power:
|
||||
name: ${ct4_name} Watts
|
||||
id: ct4Watts
|
||||
reactive_power:
|
||||
name: ${ct4_name} VAR
|
||||
apparent_power:
|
||||
name: ${ct4_name} VA
|
||||
harmonic_power:
|
||||
name: ${ct4_name} Harmonic Power
|
||||
power_factor:
|
||||
name: ${ct4_name} PF
|
||||
phase_angle:
|
||||
name: ${ct4_name} Phase Angle
|
||||
peak_current:
|
||||
name: ${ct4_name} Peak Current
|
||||
gain_voltage: ${voltage_cal2}
|
||||
gain_ct: ${current_cal_ct4}
|
||||
offset_voltage: 0
|
||||
offset_current: 0
|
||||
offset_active_power: 0
|
||||
offset_reactive_power: 0
|
||||
phase_b:
|
||||
current:
|
||||
name: ${ct5_name} Amps
|
||||
id: ct5Amps
|
||||
power:
|
||||
name: ${ct5_name} Watts
|
||||
id: ct5Watts
|
||||
reactive_power:
|
||||
name: ${ct5_name} VAR
|
||||
apparent_power:
|
||||
name: ${ct5_name} VA
|
||||
harmonic_power:
|
||||
name: ${ct5_name} Harmonic Power
|
||||
power_factor:
|
||||
name: ${ct5_name} PF
|
||||
phase_angle:
|
||||
name: ${ct5_name} Phase Angle
|
||||
peak_current:
|
||||
name: ${ct5_name} Peak Current
|
||||
gain_voltage: ${voltage_cal2}
|
||||
gain_ct: ${current_cal_ct5}
|
||||
offset_voltage: 0
|
||||
offset_current: 0
|
||||
offset_active_power: 0
|
||||
offset_reactive_power: 0
|
||||
phase_c:
|
||||
current:
|
||||
name: ${ct6_name} Amps
|
||||
id: ct6Amps
|
||||
power:
|
||||
name: ${ct6_name} Watts
|
||||
id: ct6Watts
|
||||
reactive_power:
|
||||
name: ${ct6_name} VAR
|
||||
apparent_power:
|
||||
name: ${ct6_name} VA
|
||||
harmonic_power:
|
||||
name: ${ct6_name} Harmonic Power
|
||||
power_factor:
|
||||
name: ${ct6_name} PF
|
||||
phase_angle:
|
||||
name: ${ct6_name} Phase Angle
|
||||
peak_current:
|
||||
name: ${ct6_name} Peak Current
|
||||
gain_voltage: ${voltage_cal2}
|
||||
gain_ct: ${current_cal_ct6}
|
||||
offset_voltage: 0
|
||||
offset_current: 0
|
||||
offset_active_power: 0
|
||||
offset_reactive_power: 0
|
||||
#this is only needed if monitoring 2 voltages
|
||||
# frequency:
|
||||
# name: Frequency 2
|
||||
chip_temperature:
|
||||
name: ${main_meter_name2} Chip Temp
|
||||
line_frequency: 60Hz
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
enable_offset_calibration: true
|
||||
enable_gain_calibration: true
|
||||
|
||||
#Total Amps
|
||||
- platform: template
|
||||
name: ${disp_name} Total Amps
|
||||
id: totalAmps
|
||||
lambda: return id(ct1Amps).state + id(ct2Amps).state + id(ct3Amps).state + id(ct4Amps).state + id(ct5Amps).state + id(ct6Amps).state ;
|
||||
accuracy_decimals: 2
|
||||
unit_of_measurement: A
|
||||
device_class: current
|
||||
update_interval: ${update_time}
|
||||
#Total Watts
|
||||
- platform: template
|
||||
name: ${disp_name} Total Watts
|
||||
id: totalWatts
|
||||
lambda: return id(ct1Watts).state + id(ct2Watts).state + id(ct3Watts).state + id(ct4Watts).state + id(ct5Watts).state + id(ct6Watts).state ;
|
||||
accuracy_decimals: 1
|
||||
unit_of_measurement: W
|
||||
device_class: power
|
||||
update_interval: ${update_time}
|
||||
#kWh
|
||||
- platform: total_daily_energy
|
||||
name: ${disp_name} Total kWh
|
||||
power_id: totalWatts
|
||||
filters:
|
||||
- multiply: 0.001
|
||||
unit_of_measurement: kWh
|
||||
device_class: energy
|
||||
state_class: total_increasing
|
||||
|
||||
#wifi diagnostic
|
||||
- platform: wifi_signal
|
||||
name: ${disp_name} WiFi
|
||||
id: wifi_signal_db
|
||||
entity_category: diagnostic
|
||||
|
||||
- platform: copy
|
||||
source_id: wifi_signal_db
|
||||
id: wifi_signal_pct
|
||||
name: ${disp_name} WiFi %
|
||||
filters:
|
||||
- lambda: return min(max(2 * (x + 100.0), 0.0), 100.0);
|
||||
unit_of_measurement: "%"
|
||||
entity_category: diagnostic
|
||||
|
||||
switch:
|
||||
- platform: restart
|
||||
name: ${disp_name} Restart
|
||||
entity_category: diagnostic
|
||||
|
||||
text_sensor:
|
||||
- platform: atm90e32
|
||||
id: ${main_meter_id1}
|
||||
phase_status:
|
||||
phase_a:
|
||||
name: "${ct1_name} Status"
|
||||
phase_b:
|
||||
name: "${ct2_name} Status"
|
||||
phase_c:
|
||||
name: "${ct3_name} Status"
|
||||
frequency_status:
|
||||
name: "Frequency Status 1"
|
||||
|
||||
- platform: atm90e32
|
||||
id: ${main_meter_id2}
|
||||
phase_status:
|
||||
phase_a:
|
||||
name: "${ct4_name} Status"
|
||||
phase_b:
|
||||
name: "${ct5_name} Status"
|
||||
phase_c:
|
||||
name: "${ct6_name} Status"
|
||||
#this is only needed if monitoring 2 voltages
|
||||
# freq_status:
|
||||
# name: "Frequency Status 2"
|
||||
|
||||
button:
|
||||
- platform: atm90e32
|
||||
id: ${main_meter_id1}
|
||||
run_gain_calibration:
|
||||
name: "Run ${main_meter_name1} Gain Calibration"
|
||||
clear_gain_calibration:
|
||||
name: "Clear ${main_meter_name1} Gain Calibration"
|
||||
run_offset_calibration:
|
||||
name: "Run ${main_meter_name1} Offset Calibration"
|
||||
clear_offset_calibration:
|
||||
name: "Clear ${main_meter_name1} Offset Calibration"
|
||||
run_power_offset_calibration:
|
||||
name: "Run ${main_meter_name1} Power Offset Calibration"
|
||||
clear_power_offset_calibration:
|
||||
name: "Clear ${main_meter_name1} Power Offset Calibration"
|
||||
|
||||
- platform: atm90e32
|
||||
id: ${main_meter_id2}
|
||||
run_gain_calibration:
|
||||
name: "Run ${main_meter_name2} Gain Calibration"
|
||||
clear_gain_calibration:
|
||||
name: "Clear ${main_meter_name2} Gain Calibration"
|
||||
run_offset_calibration:
|
||||
name: "Run ${main_meter_name2} Offset Calibration"
|
||||
clear_offset_calibration:
|
||||
name: "Clear ${main_meter_name2} Offset Calibration"
|
||||
run_power_offset_calibration:
|
||||
name: "Run ${main_meter_name2} Power Offset Calibration"
|
||||
clear_power_offset_calibration:
|
||||
name: "Clear ${main_meter_name2} Power Offset Calibration"
|
||||
|
||||
number:
|
||||
- platform: atm90e32
|
||||
id: ${main_meter_id1}
|
||||
reference_voltage:
|
||||
# will copy to phase_b/c for calibration reference
|
||||
phase_a:
|
||||
name: "Ref Voltage 1"
|
||||
reference_current:
|
||||
phase_a:
|
||||
name: "${ct1_name} Ref Current"
|
||||
phase_b:
|
||||
name: "${ct2_name} Ref Current"
|
||||
phase_c:
|
||||
name: "${ct3_name} Ref Current"
|
||||
|
||||
- platform: atm90e32
|
||||
id: ${main_meter_id2}
|
||||
reference_voltage:
|
||||
# needed to calibrate voltage registers even if not output
|
||||
phase_a:
|
||||
name: "Ref Voltage 2"
|
||||
reference_current:
|
||||
phase_a:
|
||||
name: "${ct4_name} Ref Current"
|
||||
phase_b:
|
||||
name: "${ct5_name} Ref Current"
|
||||
phase_c:
|
||||
name: "${ct6_name} Ref Current"
|
||||
@@ -0,0 +1,100 @@
|
||||
# CircuitSetup 6 Channel Energy Meter 1st Add-on board config
|
||||
# Assumes jumpers are both in the 1st position
|
||||
|
||||
sensor:
|
||||
#IC1 AddOn 1
|
||||
############
|
||||
- platform: atm90e32
|
||||
release_device: true
|
||||
cs_pin: 0
|
||||
id: ${addon1_id1}
|
||||
phase_a:
|
||||
current:
|
||||
name: ${ct7_name} Amps
|
||||
id: ct7Amps
|
||||
power:
|
||||
name: ${ct7_name} Watts
|
||||
id: ct7Watts
|
||||
gain_voltage: ${voltage_cal1}
|
||||
gain_ct: ${current_cal_ct7}
|
||||
phase_b:
|
||||
current:
|
||||
name: ${ct8_name} Amps
|
||||
id: ct8Amps
|
||||
power:
|
||||
name: ${ct8_name} Watts
|
||||
id: ct8Watts
|
||||
gain_voltage: ${voltage_cal1}
|
||||
gain_ct: ${current_cal_ct8}
|
||||
phase_c:
|
||||
current:
|
||||
name: ${ct9_name} Amps
|
||||
id: ct9Amps
|
||||
power:
|
||||
name: ${ct9_name} Watts
|
||||
id: ct9Watts
|
||||
gain_voltage: ${voltage_cal1}
|
||||
gain_ct: ${current_cal_ct9}
|
||||
line_frequency: ${electric_freq}
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
enable_offset_calibration: ${offset_calibration}
|
||||
enable_gain_calibration: ${gain_calibration}
|
||||
#IC2 AddOn 1
|
||||
############
|
||||
- platform: atm90e32
|
||||
release_device: true
|
||||
cs_pin: 16
|
||||
id: ${addon1_id2}
|
||||
phase_a:
|
||||
current:
|
||||
name: ${ct10_name} Amps
|
||||
id: ct10Amps
|
||||
power:
|
||||
name: ${ct10_name} Watts
|
||||
id: ct10Watts
|
||||
gain_voltage: ${voltage_cal2}
|
||||
gain_ct: ${current_cal_ct10}
|
||||
phase_b:
|
||||
current:
|
||||
name: ${ct11_name} Amps
|
||||
id: ct11Amps
|
||||
power:
|
||||
name: ${ct11_name} Watts
|
||||
id: ct11Watts
|
||||
gain_voltage: ${voltage_cal2}
|
||||
gain_ct: ${current_cal_ct11}
|
||||
phase_c:
|
||||
current:
|
||||
name: ${ct12_name} Amps
|
||||
id: ct12Amps
|
||||
power:
|
||||
name: ${ct12_name} Watts
|
||||
id: ct12Watts
|
||||
gain_voltage: ${voltage_cal2}
|
||||
gain_ct: ${current_cal_ct12}
|
||||
line_frequency: ${electric_freq}
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
enable_offset_calibration: ${offset_calibration}
|
||||
enable_gain_calibration: ${gain_calibration}
|
||||
|
||||
#Total Amps AddOn1
|
||||
- platform: template
|
||||
name: ${friendly_name} Total Amps Add-on1
|
||||
id: totalAmpsAddOn1
|
||||
lambda: return id(ct7Amps).state + id(ct8Amps).state + id(ct9Amps).state + id(ct10Amps).state + id(ct11Amps).state + id(ct12Amps).state ;
|
||||
accuracy_decimals: 2
|
||||
unit_of_measurement: A
|
||||
device_class: current
|
||||
update_interval: ${update_time}
|
||||
|
||||
#Total Watts AddOn1
|
||||
- platform: template
|
||||
name: ${friendly_name} Total Watts Add-on1
|
||||
id: totalWattsAddOn1
|
||||
lambda: return id(ct7Watts).state + id(ct8Watts).state + id(ct9Watts).state + id(ct10Watts).state + id(ct11Watts).state + id(ct12Watts).state ;
|
||||
accuracy_decimals: 2
|
||||
unit_of_measurement: W
|
||||
device_class: power
|
||||
update_interval: ${update_time}
|
||||
@@ -0,0 +1,100 @@
|
||||
# CircuitSetup 6 Channel Energy Meter 2nd Add-on board config
|
||||
# Assumes jumpers are both in the 2nd position
|
||||
|
||||
sensor:
|
||||
#IC1 AddOn 2
|
||||
############
|
||||
- platform: atm90e32
|
||||
cs_pin: 27
|
||||
release_device: true
|
||||
id: ${addon2_id1}
|
||||
phase_a:
|
||||
current:
|
||||
name: ${ct13_name} Amps
|
||||
id: ct13Amps
|
||||
power:
|
||||
name: ${ct13_name} Watts
|
||||
id: ct13Watts
|
||||
gain_voltage: ${voltage_cal1}
|
||||
gain_ct: ${current_cal_ct13}
|
||||
phase_b:
|
||||
current:
|
||||
name: ${ct14_name} Amps
|
||||
id: ct14Amps
|
||||
power:
|
||||
name: ${ct14_name} Watts
|
||||
id: ct14Watts
|
||||
gain_voltage: ${voltage_cal1}
|
||||
gain_ct: ${current_cal_ct14}
|
||||
phase_c:
|
||||
current:
|
||||
name: ${ct15_name} Amps
|
||||
id: ct15Amps
|
||||
power:
|
||||
name: ${ct15_name} Watts
|
||||
id: ct15Watts
|
||||
gain_voltage: ${voltage_cal1}
|
||||
gain_ct: ${current_cal_ct15}
|
||||
line_frequency: ${electric_freq}
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
enable_offset_calibration: ${offset_calibration}
|
||||
enable_gain_calibration: ${gain_calibration}
|
||||
#IC2 AddOn 2
|
||||
############
|
||||
- platform: atm90e32
|
||||
release_device: true
|
||||
cs_pin: 17
|
||||
id: ${addon2_id2}
|
||||
phase_a:
|
||||
current:
|
||||
name: ${ct16_name} Amps
|
||||
id: ct16Amps
|
||||
power:
|
||||
name: ${ct16_name} Watts
|
||||
id: ct16Watts
|
||||
gain_voltage: ${voltage_cal2}
|
||||
gain_ct: ${current_cal_ct16}
|
||||
phase_b:
|
||||
current:
|
||||
name: ${ct17_name} Amps
|
||||
id: ct17Amps
|
||||
power:
|
||||
name: ${ct17_name} Watts
|
||||
id: ct17Watts
|
||||
gain_voltage: ${voltage_cal2}
|
||||
gain_ct: ${current_cal_ct17}
|
||||
phase_c:
|
||||
current:
|
||||
name: ${ct18_name} Amps
|
||||
id: ct18Amps
|
||||
power:
|
||||
name: ${ct18_name} Watts
|
||||
id: ct18Watts
|
||||
gain_voltage: ${voltage_cal2}
|
||||
gain_ct: ${current_cal_ct18}
|
||||
line_frequency: ${electric_freq}
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
enable_offset_calibration: ${offset_calibration}
|
||||
enable_gain_calibration: ${gain_calibration}
|
||||
|
||||
#Total Amps AddOn2
|
||||
- platform: template
|
||||
name: ${friendly_name} Total Amps Add-on2
|
||||
id: totalAmpsAddOn2
|
||||
lambda: return id(ct13Amps).state + id(ct14Amps).state + id(ct15Amps).state + id(ct16Amps).state + id(ct17Amps).state + id(ct18Amps).state ;
|
||||
accuracy_decimals: 2
|
||||
unit_of_measurement: A
|
||||
device_class: current
|
||||
update_interval: ${update_time}
|
||||
|
||||
#Total Watts AddOn2
|
||||
- platform: template
|
||||
name: ${friendly_name} Total Watts Add-on2
|
||||
id: totalWattsAddOn2
|
||||
lambda: return id(ct13Watts).state + id(ct14Watts).state + id(ct15Watts).state + id(ct16Watts).state + id(ct17Watts).state + id(ct18Watts).state ;
|
||||
accuracy_decimals: 2
|
||||
unit_of_measurement: W
|
||||
device_class: power
|
||||
update_interval: ${update_time}
|
||||
@@ -0,0 +1,101 @@
|
||||
# CircuitSetup 6 Channel Energy Meter 3rd Add-on board config
|
||||
# Assumes jumpers are both in the 3rd position
|
||||
|
||||
sensor:
|
||||
#IC1 AddOn 3
|
||||
############
|
||||
- platform: atm90e32
|
||||
release_device: true
|
||||
#if ESP32 has an LED for GPIO2, remove jumper or ESP32 from meter stack before programming via serial
|
||||
cs_pin: 2
|
||||
id: ${addon3_id1}
|
||||
phase_a:
|
||||
current:
|
||||
name: ${ct19_name} Amps
|
||||
id: ct19Amps
|
||||
power:
|
||||
name: ${ct19_name} Watts
|
||||
id: ct19Watts
|
||||
gain_voltage: ${voltage_cal1}
|
||||
gain_ct: ${current_cal_ct19}
|
||||
phase_b:
|
||||
current:
|
||||
name: ${ct20_name} Amps
|
||||
id: ct20Amps
|
||||
power:
|
||||
name: ${ct20_name} Watts
|
||||
id: ct20Watts
|
||||
gain_voltage: ${voltage_cal1}
|
||||
gain_ct: ${current_cal_ct20}
|
||||
phase_c:
|
||||
current:
|
||||
name: ${ct21_name} Amps
|
||||
id: ct21Amps
|
||||
power:
|
||||
name: ${ct21_name} Watts
|
||||
id: ct21Watts
|
||||
gain_voltage: ${voltage_cal1}
|
||||
gain_ct: ${current_cal_ct21}
|
||||
line_frequency: ${electric_freq}
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
enable_offset_calibration: ${offset_calibration}
|
||||
enable_gain_calibration: ${gain_calibration}
|
||||
#IC2 AddOn 3
|
||||
############
|
||||
- platform: atm90e32
|
||||
release_device: true
|
||||
cs_pin: 21
|
||||
id: ${addon3_id2}
|
||||
phase_a:
|
||||
current:
|
||||
name: ${ct22_name} Amps
|
||||
id: ct22Amps
|
||||
power:
|
||||
name: ${ct22_name} Watts
|
||||
id: ct22Watts
|
||||
gain_voltage: ${voltage_cal2}
|
||||
gain_ct: ${current_cal_ct22}
|
||||
phase_b:
|
||||
current:
|
||||
name: ${ct23_name} Amps
|
||||
id: ct23Amps
|
||||
power:
|
||||
name: ${ct23_name} Watts
|
||||
id: ct23Watts
|
||||
gain_voltage: ${voltage_cal2}
|
||||
gain_ct: ${current_cal_ct23}
|
||||
phase_c:
|
||||
current:
|
||||
name: ${ct24_name} Amps
|
||||
id: ct24Amps
|
||||
power:
|
||||
name: ${ct24_name} Watts
|
||||
id: ct24Watts
|
||||
gain_voltage: ${voltage_cal2}
|
||||
gain_ct: ${current_cal_ct24}
|
||||
line_frequency: ${electric_freq}
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
enable_offset_calibration: ${offset_calibration}
|
||||
enable_gain_calibration: ${gain_calibration}
|
||||
|
||||
#Total Amps AddOn3
|
||||
- platform: template
|
||||
name: ${friendly_name} Total Amps Add-on3
|
||||
id: totalAmpsAddOn3
|
||||
lambda: return id(ct19Amps).state + id(ct20Amps).state + id(ct21Amps).state + id(ct22Amps).state + id(ct23Amps).state + id(ct24Amps).state ;
|
||||
accuracy_decimals: 2
|
||||
unit_of_measurement: A
|
||||
device_class: current
|
||||
update_interval: ${update_time}
|
||||
|
||||
#Total Watts AddOn3
|
||||
- platform: template
|
||||
name: ${friendly_name} Total Watts Add-on3
|
||||
id: totalWattsAddOn3
|
||||
lambda: return id(ct19Watts).state + id(ct20Watts).state + id(ct21Watts).state + id(ct22Watts).state + id(ct23Watts).state + id(ct24Watts).state ;
|
||||
accuracy_decimals: 2
|
||||
unit_of_measurement: W
|
||||
device_class: power
|
||||
update_interval: ${update_time}
|
||||
@@ -0,0 +1,100 @@
|
||||
# CircuitSetup 6 Channel Energy Meter 4th Add-on board config
|
||||
# Assumes jumpers are both in the 4th position
|
||||
|
||||
sensor:
|
||||
#IC1 AddOn 4
|
||||
############
|
||||
- platform: atm90e32
|
||||
release_device: true
|
||||
cs_pin: 13
|
||||
id: ${addon4_id1}
|
||||
phase_a:
|
||||
current:
|
||||
name: ${ct25_name} Amps
|
||||
id: ct25Amps
|
||||
power:
|
||||
name: ${ct25_name} Watts
|
||||
id: ct25Watts
|
||||
gain_voltage: ${voltage_cal1}
|
||||
gain_ct: ${current_cal_ct25}
|
||||
phase_b:
|
||||
current:
|
||||
name: ${ct26_name} Amps
|
||||
id: ct26Amps
|
||||
power:
|
||||
name: ${ct26_name} Watts
|
||||
id: ct26Watts
|
||||
gain_voltage: ${voltage_cal1}
|
||||
gain_ct: ${current_cal_ct26}
|
||||
phase_c:
|
||||
current:
|
||||
name: ${ct27_name} Amps
|
||||
id: ct27Amps
|
||||
power:
|
||||
name: ${ct27_name} Watts
|
||||
id: ct27Watts
|
||||
gain_voltage: ${voltage_cal1}
|
||||
gain_ct: ${current_cal_ct27}
|
||||
line_frequency: ${electric_freq}
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
enable_offset_calibration: ${offset_calibration}
|
||||
enable_gain_calibration: ${gain_calibration}
|
||||
#IC2 AddOn 4
|
||||
############
|
||||
- platform: atm90e32
|
||||
release_device: true
|
||||
cs_pin: 22
|
||||
id: ${addon4_id2}
|
||||
phase_a:
|
||||
current:
|
||||
name: ${ct28_name} Amps
|
||||
id: ct28Amps
|
||||
power:
|
||||
name: ${ct28_name} Watts
|
||||
id: ct28Watts
|
||||
gain_voltage: ${voltage_cal2}
|
||||
gain_ct: ${current_cal_ct28}
|
||||
phase_b:
|
||||
current:
|
||||
name: ${ct29_name} Amps
|
||||
id: ct29Amps
|
||||
power:
|
||||
name: ${ct29_name} Watts
|
||||
id: ct29Watts
|
||||
gain_voltage: ${voltage_cal2}
|
||||
gain_ct: ${current_cal_ct29}
|
||||
phase_c:
|
||||
current:
|
||||
name: ${ct30_name} Amps
|
||||
id: ct30Amps
|
||||
power:
|
||||
name: ${ct30_name} Watts
|
||||
id: ct30Watts
|
||||
gain_voltage: ${voltage_cal2}
|
||||
gain_ct: ${current_cal_ct30}
|
||||
line_frequency: ${electric_freq}
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
enable_offset_calibration: ${offset_calibration}
|
||||
enable_gain_calibration: ${gain_calibration}
|
||||
|
||||
#Total Amps AddOn4
|
||||
- platform: template
|
||||
name: ${friendly_name} Total Amps Add-on4
|
||||
id: totalAmpsAddOn4
|
||||
lambda: return id(ct25Amps).state + id(ct26Amps).state + id(ct27Amps).state + id(ct28Amps).state + id(ct29Amps).state + id(ct30Amps).state ;
|
||||
accuracy_decimals: 2
|
||||
unit_of_measurement: A
|
||||
device_class: current
|
||||
update_interval: ${update_time}
|
||||
|
||||
#Total Watts AddOn4
|
||||
- platform: template
|
||||
name: ${friendly_name} Total Watts Add-on4
|
||||
id: totalWattsAddOn4
|
||||
lambda: return id(ct25Watts).state + id(ct26Watts).state + id(ct27Watts).state + id(ct28Watts).state + id(ct29Watts).state + id(ct30Watts).state ;
|
||||
accuracy_decimals: 2
|
||||
unit_of_measurement: W
|
||||
device_class: power
|
||||
update_interval: ${update_time}
|
||||
@@ -0,0 +1,100 @@
|
||||
# CircuitSetup 6 Channel Energy Meter 5th Add-on board config
|
||||
# Assumes jumpers are both in the 5th position
|
||||
|
||||
sensor:
|
||||
#IC1 AddOn 5
|
||||
############
|
||||
- platform: atm90e32
|
||||
release_device: true
|
||||
cs_pin: 14
|
||||
id: ${addon5_id1}
|
||||
phase_a:
|
||||
current:
|
||||
name: ${ct31_name} Amps
|
||||
id: ct31Amps
|
||||
power:
|
||||
name: ${ct31_name} Watts
|
||||
id: ct31Watts
|
||||
gain_voltage: ${voltage_cal1}
|
||||
gain_ct: ${current_cal_ct31}
|
||||
phase_b:
|
||||
current:
|
||||
name: ${ct32_name} Amps
|
||||
id: ct32Amps
|
||||
power:
|
||||
name: ${ct32_name} Watts
|
||||
id: ct32Watts
|
||||
gain_voltage: ${voltage_cal1}
|
||||
gain_ct: ${current_cal_ct32}
|
||||
phase_c:
|
||||
current:
|
||||
name: ${ct33_name} Amps
|
||||
id: ct33Amps
|
||||
power:
|
||||
name: ${ct33_name} Watts
|
||||
id: ct33Watts
|
||||
gain_voltage: ${voltage_cal1}
|
||||
gain_ct: ${current_cal_ct33}
|
||||
line_frequency: ${electric_freq}
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
enable_offset_calibration: ${offset_calibration}
|
||||
enable_gain_calibration: ${gain_calibration}
|
||||
#IC2 AddOn 5
|
||||
############
|
||||
- platform: atm90e32
|
||||
release_device: true
|
||||
cs_pin: 25
|
||||
id: ${addon5_id2}
|
||||
phase_a:
|
||||
current:
|
||||
name: ${ct34_name} Amps
|
||||
id: ct34Amps
|
||||
power:
|
||||
name: ${ct34_name} Watts
|
||||
id: ct34Watts
|
||||
gain_voltage: ${voltage_cal2}
|
||||
gain_ct: ${current_cal_ct34}
|
||||
phase_b:
|
||||
current:
|
||||
name: ${ct35_name} Amps
|
||||
id: ct35Amps
|
||||
power:
|
||||
name: ${ct35_name} Watts
|
||||
id: ct35Watts
|
||||
gain_voltage: ${voltage_cal2}
|
||||
gain_ct: ${current_cal_ct35}
|
||||
phase_c:
|
||||
current:
|
||||
name: ${ct36_name} Amps
|
||||
id: ct36Amps
|
||||
power:
|
||||
name: ${ct36_name} Watts
|
||||
id: ct36Watts
|
||||
gain_voltage: ${voltage_cal2}
|
||||
gain_ct: ${current_cal_ct36}
|
||||
line_frequency: ${electric_freq}
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
enable_offset_calibration: ${offset_calibration}
|
||||
enable_gain_calibration: ${gain_calibration}
|
||||
|
||||
#Total Amps AddOn5
|
||||
- platform: template
|
||||
name: ${friendly_name} Total Amps Add-on5
|
||||
id: totalAmpsAddOn5
|
||||
lambda: return id(ct31Amps).state + id(ct32Amps).state + id(ct33Amps).state + id(ct34Amps).state + id(ct35Amps).state + id(ct36Amps).state ;
|
||||
accuracy_decimals: 2
|
||||
unit_of_measurement: A
|
||||
device_class: current
|
||||
update_interval: ${update_time}
|
||||
|
||||
#Total Watts AddOn5
|
||||
- platform: template
|
||||
name: ${friendly_name} Total Watts Add-on5
|
||||
id: totalWattsAddOn5
|
||||
lambda: return id(ct31Watts).state + id(ct32Watts).state + id(ct33Watts).state + id(ct34Watts).state + id(ct35Watts).state + id(ct36Watts).state ;
|
||||
accuracy_decimals: 2
|
||||
unit_of_measurement: W
|
||||
device_class: power
|
||||
update_interval: ${update_time}
|
||||
@@ -0,0 +1,100 @@
|
||||
# CircuitSetup 6 Channel Energy Meter 6th Add-on board config
|
||||
# Assumes jumpers are both in the 6th position
|
||||
|
||||
sensor:
|
||||
#IC1 AddOn 6
|
||||
############
|
||||
- platform: atm90e32
|
||||
release_device: true
|
||||
cs_pin: 15
|
||||
id: ${addon6_id1}
|
||||
phase_a:
|
||||
current:
|
||||
name: ${ct37_name} Amps
|
||||
id: ct37Amps
|
||||
power:
|
||||
name: ${ct37_name} Watts
|
||||
id: ct37Watts
|
||||
gain_voltage: ${voltage_cal1}
|
||||
gain_ct: ${current_cal_ct37}
|
||||
phase_b:
|
||||
current:
|
||||
name: ${ct38_name} Amps
|
||||
id: ct38Amps
|
||||
power:
|
||||
name: ${ct38_name} Watts
|
||||
id: ct38Watts
|
||||
gain_voltage: ${voltage_cal1}
|
||||
gain_ct: ${current_cal_ct38}
|
||||
phase_c:
|
||||
current:
|
||||
name: ${ct39_name} Amps
|
||||
id: ct39Amps
|
||||
power:
|
||||
name: ${ct39_name} Watts
|
||||
id: ct39Watts
|
||||
gain_voltage: ${voltage_cal1}
|
||||
gain_ct: ${current_cal_ct39}
|
||||
line_frequency: ${electric_freq}
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
enable_offset_calibration: ${offset_calibration}
|
||||
enable_gain_calibration: ${gain_calibration}
|
||||
#IC2 AddOn 6
|
||||
############
|
||||
- platform: atm90e32
|
||||
release_device: true
|
||||
cs_pin: 26
|
||||
id: ${addon6_id2}
|
||||
phase_a:
|
||||
current:
|
||||
name: ${ct40_name} Amps
|
||||
id: ct40Amps
|
||||
power:
|
||||
name: ${ct40_name} Watts
|
||||
id: ct40Watts
|
||||
gain_voltage: ${voltage_cal2}
|
||||
gain_ct: ${current_cal_ct40}
|
||||
phase_b:
|
||||
current:
|
||||
name: ${ct41_name} Amps
|
||||
id: ct41Amps
|
||||
power:
|
||||
name: ${ct41_name} Watts
|
||||
id: ct41Watts
|
||||
gain_voltage: ${voltage_cal2}
|
||||
gain_ct: ${current_cal_ct41}
|
||||
phase_c:
|
||||
current:
|
||||
name: ${ct42_name} Amps
|
||||
id: ct42Amps
|
||||
power:
|
||||
name: ${ct42_name} Watts
|
||||
id: ct42Watts
|
||||
gain_voltage: ${voltage_cal2}
|
||||
gain_ct: ${current_cal_ct42}
|
||||
line_frequency: ${electric_freq}
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
enable_offset_calibration: ${offset_calibration}
|
||||
enable_gain_calibration: ${gain_calibration}
|
||||
|
||||
#Total Amps AddOn6
|
||||
- platform: template
|
||||
name: ${friendly_name} Total Amps Add-on6
|
||||
id: totalAmpsAddOn6
|
||||
lambda: return id(ct37Amps).state + id(ct38Amps).state + id(ct39Amps).state + id(ct40Amps).state + id(ct41Amps).state + id(ct42Amps).state ;
|
||||
accuracy_decimals: 2
|
||||
unit_of_measurement: A
|
||||
device_class: current
|
||||
update_interval: ${update_time}
|
||||
|
||||
#Total Watts AddOn6
|
||||
- platform: template
|
||||
name: ${friendly_name} Total Watts Add-on6
|
||||
id: totalWattsAddOn6
|
||||
lambda: return id(ct37Watts).state + id(ct38Watts).state + id(ct39Watts).state + id(ct40Watts).state + id(ct41Watts).state + id(ct42Watts).state ;
|
||||
accuracy_decimals: 2
|
||||
unit_of_measurement: W
|
||||
device_class: power
|
||||
update_interval: ${update_time}
|
||||
@@ -0,0 +1,123 @@
|
||||
sensor:
|
||||
# Main IC1
|
||||
#########
|
||||
- platform: atm90e32
|
||||
release_device: true
|
||||
cs_pin: 5
|
||||
id: ${main_meter_id1}
|
||||
phase_a:
|
||||
voltage:
|
||||
name: Voltage 1
|
||||
id: ic1Volts
|
||||
accuracy_decimals: 1
|
||||
current:
|
||||
name: ${ct1_name} Amps
|
||||
id: ct1Amps
|
||||
# The max value for current that the meter can output is 65.535. If you expect to measure current over 65A,
|
||||
# divide the gain_ct by 2 (120A CT) or 4 (200A CT) and multiply the current and power values by 2 or 4 by uncommenting the filter below
|
||||
# filters:
|
||||
# - multiply: 2
|
||||
power:
|
||||
name: ${ct1_name} Watts
|
||||
id: ct1Watts
|
||||
# filters:
|
||||
# - multiply: 2
|
||||
gain_voltage: ${voltage_cal1}
|
||||
gain_ct: ${current_cal_ct1}
|
||||
phase_b:
|
||||
current:
|
||||
name: ${ct2_name} Amps
|
||||
id: ct2Amps
|
||||
power:
|
||||
name: ${ct2_name} Watts
|
||||
id: ct2Watts
|
||||
gain_voltage: ${voltage_cal1}
|
||||
gain_ct: ${current_cal_ct2}
|
||||
phase_c:
|
||||
current:
|
||||
name: ${ct3_name} Amps
|
||||
id: ct3Amps
|
||||
power:
|
||||
name: ${ct3_name} Watts
|
||||
id: ct3Watts
|
||||
gain_voltage: ${voltage_cal1}
|
||||
gain_ct: ${current_cal_ct3}
|
||||
frequency:
|
||||
name: Frequency 1
|
||||
chip_temperature:
|
||||
name: ${main_meter_name1} Chip Temp
|
||||
line_frequency: ${electric_freq}
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
enable_offset_calibration: ${offset_calibration}
|
||||
enable_gain_calibration: ${gain_calibration}
|
||||
# Main IC2
|
||||
##########
|
||||
- platform: atm90e32
|
||||
release_device: true
|
||||
cs_pin: 4
|
||||
id: ${main_meter_id2}
|
||||
phase_a:
|
||||
#this voltage is only needed if monitoring 2 voltages
|
||||
# voltage:
|
||||
# name: Voltage 2
|
||||
# id: ic2Volts
|
||||
# accuracy_decimals: 1
|
||||
current:
|
||||
name: ${ct4_name} Amps
|
||||
id: ct4Amps
|
||||
power:
|
||||
name: ${ct4_name} Watts
|
||||
id: ct4Watts
|
||||
gain_voltage: ${voltage_cal2}
|
||||
gain_ct: ${current_cal_ct4}
|
||||
phase_b:
|
||||
current:
|
||||
name: ${ct5_name} Amps
|
||||
id: ct5Amps
|
||||
power:
|
||||
name: ${ct5_name} Watts
|
||||
id: ct5Watts
|
||||
gain_voltage: ${voltage_cal2}
|
||||
gain_ct: ${current_cal_ct5}
|
||||
phase_c:
|
||||
current:
|
||||
name: ${ct6_name} Amps
|
||||
id: ct6Amps
|
||||
power:
|
||||
name: ${ct6_name} Watts
|
||||
id: ct6Watts
|
||||
gain_voltage: ${voltage_cal2}
|
||||
gain_ct: ${current_cal_ct6}
|
||||
#this is only needed if monitoring 2 voltages
|
||||
# frequency:
|
||||
# name: Frequency 2
|
||||
chip_temperature:
|
||||
name: ${main_meter_name2} Chip Temp
|
||||
line_frequency: ${electric_freq}
|
||||
gain_pga: 1X
|
||||
update_interval: ${update_time}
|
||||
enable_offset_calibration: ${offset_calibration}
|
||||
enable_gain_calibration: ${gain_calibration}
|
||||
|
||||
#Total Amps Main
|
||||
################
|
||||
- platform: template
|
||||
name: ${friendly_name} Total Amps Main
|
||||
id: totalAmpsMain
|
||||
lambda: return id(ct1Amps).state + id(ct2Amps).state + id(ct3Amps).state + id(ct4Amps).state + id(ct5Amps).state + id(ct6Amps).state ;
|
||||
accuracy_decimals: 2
|
||||
unit_of_measurement: A
|
||||
device_class: current
|
||||
update_interval: ${update_time}
|
||||
|
||||
#Total Watts Main
|
||||
#################
|
||||
- platform: template
|
||||
name: ${friendly_name} Total Watts Main
|
||||
id: totalWattsMain
|
||||
lambda: return id(ct1Watts).state + id(ct2Watts).state + id(ct3Watts).state + id(ct4Watts).state + id(ct5Watts).state + id(ct6Watts).state ;
|
||||
accuracy_decimals: 1
|
||||
unit_of_measurement: W
|
||||
device_class: power
|
||||
update_interval: ${update_time}
|
||||
@@ -0,0 +1,123 @@
|
||||
# This file contains power quality values that are available for each phase
|
||||
# Enabling these on every current channel is possible, but will produce a lot of data
|
||||
# and sensors that are likely not needed.
|
||||
# More details on each sensor here: https://esphome.io/components/sensor/atm90e32.html#configuration-variables
|
||||
|
||||
sensor:
|
||||
- id: !extend ${addon1_id1}
|
||||
phase_a:
|
||||
reactive_power:
|
||||
name: ${ct7_name} VAR
|
||||
id: ct7VAR
|
||||
apparent_power:
|
||||
name: ${ct7_name} VA
|
||||
id: ct7VA
|
||||
harmonic_power:
|
||||
name: ${ct7_name} Harmonic
|
||||
id: ct7Har
|
||||
power_factor:
|
||||
name: ${ct7_name} Power Factor
|
||||
id: ct7PF
|
||||
phase_angle:
|
||||
name: ${ct7_name} Phase Angle
|
||||
id: ct7Angle
|
||||
peak_current:
|
||||
name: ${ct7_name} Peak A
|
||||
id: ct7Peak
|
||||
phase_b:
|
||||
reactive_power:
|
||||
name: ${ct8_name} VAR
|
||||
id: ct8VAR
|
||||
apparent_power:
|
||||
name: ${ct8_name} VA
|
||||
id: ct8VA
|
||||
harmonic_power:
|
||||
name: ${ct8_name} Harmonic
|
||||
id: ct8Har
|
||||
power_factor:
|
||||
name: ${ct8_name} Power Factor
|
||||
id: ct8PF
|
||||
phase_angle:
|
||||
name: ${ct8_name} Phase Angle
|
||||
id: ct8Angle
|
||||
peak_current:
|
||||
name: ${ct8_name} Peak A
|
||||
id: ct8Peak
|
||||
phase_c:
|
||||
reactive_power:
|
||||
name: ${ct9_name} VAR
|
||||
id: ct9VAR
|
||||
apparent_power:
|
||||
name: ${ct9_name} VA
|
||||
id: ct9VA
|
||||
harmonic_power:
|
||||
name: ${ct9_name} Harmonic
|
||||
id: ct9Har
|
||||
power_factor:
|
||||
name: ${ct9_name} Power Factor
|
||||
id: ct9PF
|
||||
phase_angle:
|
||||
name: ${ct9_name} Phase Angle
|
||||
id: ct9Angle
|
||||
peak_current:
|
||||
name: ${ct9_name} Peak A
|
||||
id: ct9Peak
|
||||
|
||||
- id: !extend ${addon1_id2}
|
||||
phase_a:
|
||||
reactive_power:
|
||||
name: ${ct10_name} VAR
|
||||
id: ct10VAR
|
||||
apparent_power:
|
||||
name: ${ct10_name} VA
|
||||
id: ct10VA
|
||||
harmonic_power:
|
||||
name: ${ct10_name} Harmonic
|
||||
id: ct10Har
|
||||
power_factor:
|
||||
name: ${ct10_name} Power Factor
|
||||
id: ct10PF
|
||||
phase_angle:
|
||||
name: ${ct10_name} Phase Angle
|
||||
id: ct10Angle
|
||||
peak_current:
|
||||
name: ${ct10_name} Peak A
|
||||
id: ct10Peak
|
||||
phase_b:
|
||||
reactive_power:
|
||||
name: ${ct11_name} VAR
|
||||
id: ct11VAR
|
||||
apparent_power:
|
||||
name: ${ct11_name} VA
|
||||
id: ct11VA
|
||||
harmonic_power:
|
||||
name: ${ct11_name} Harmonic
|
||||
id: ct11Har
|
||||
power_factor:
|
||||
name: ${ct11_name} Power Factor
|
||||
id: ct11PF
|
||||
phase_angle:
|
||||
name: ${ct11_name} Phase Angle
|
||||
id: ct11Angle
|
||||
peak_current:
|
||||
name: ${ct11_name} Peak A
|
||||
id: ct11Peak
|
||||
phase_c:
|
||||
reactive_power:
|
||||
name: ${ct12_name} VAR
|
||||
id: ct12VAR
|
||||
apparent_power:
|
||||
name: ${ct12_name} VA
|
||||
id: ct12VA
|
||||
harmonic_power:
|
||||
name: ${ct12_name} Harmonic
|
||||
id: ct12Har
|
||||
power_factor:
|
||||
name: ${ct12_name} Power Factor
|
||||
id: ct12PF
|
||||
phase_angle:
|
||||
name: ${ct12_name} Phase Angle
|
||||
id: ct12Angle
|
||||
peak_current:
|
||||
name: ${ct12_name} Peak A
|
||||
id: ct12Peak
|
||||
@@ -0,0 +1,123 @@
|
||||
# This file contains power quality values that are available for each phase
|
||||
# Enabling these on every current channel is possible, but will produce a lot of data
|
||||
# and sensors that are likely not needed.
|
||||
# More details on each sensor here: https://esphome.io/components/sensor/atm90e32.html#configuration-variables
|
||||
|
||||
sensor:
|
||||
- id: !extend ${addon2_id1}
|
||||
phase_a:
|
||||
reactive_power:
|
||||
name: ${ct13_name} VAR
|
||||
id: ct13VAR
|
||||
apparent_power:
|
||||
name: ${ct13_name} VA
|
||||
id: ct13VA
|
||||
harmonic_power:
|
||||
name: ${ct13_name} Harmonic
|
||||
id: ct13Har
|
||||
power_factor:
|
||||
name: ${ct13_name} Power Factor
|
||||
id: ct13PF
|
||||
phase_angle:
|
||||
name: ${ct13_name} Phase Angle
|
||||
id: ct13Angle
|
||||
peak_current:
|
||||
name: ${ct13_name} Peak A
|
||||
id: ct13Peak
|
||||
phase_b:
|
||||
reactive_power:
|
||||
name: ${ct14_name} VAR
|
||||
id: ct14VAR
|
||||
apparent_power:
|
||||
name: ${ct14_name} VA
|
||||
id: ct14VA
|
||||
harmonic_power:
|
||||
name: ${ct14_name} Harmonic
|
||||
id: ct14Har
|
||||
power_factor:
|
||||
name: ${ct14_name} Power Factor
|
||||
id: ct14PF
|
||||
phase_angle:
|
||||
name: ${ct14_name} Phase Angle
|
||||
id: ct14Angle
|
||||
peak_current:
|
||||
name: ${ct14_name} Peak A
|
||||
id: ct14Peak
|
||||
phase_c:
|
||||
reactive_power:
|
||||
name: ${ct15_name} VAR
|
||||
id: ct15VAR
|
||||
apparent_power:
|
||||
name: ${ct15_name} VA
|
||||
id: ct15VA
|
||||
harmonic_power:
|
||||
name: ${ct15_name} Harmonic
|
||||
id: ct15Har
|
||||
power_factor:
|
||||
name: ${ct15_name} Power Factor
|
||||
id: ct15PF
|
||||
phase_angle:
|
||||
name: ${ct15_name} Phase Angle
|
||||
id: ct15Angle
|
||||
peak_current:
|
||||
name: ${ct15_name} Peak A
|
||||
id: ct15Peak
|
||||
|
||||
- id: !extend ${addon2_id2}
|
||||
phase_a:
|
||||
reactive_power:
|
||||
name: ${ct16_name} VAR
|
||||
id: ct16VAR
|
||||
apparent_power:
|
||||
name: ${ct16_name} VA
|
||||
id: ct16VA
|
||||
harmonic_power:
|
||||
name: ${ct16_name} Harmonic
|
||||
id: ct16Har
|
||||
power_factor:
|
||||
name: ${ct16_name} Power Factor
|
||||
id: ct16PF
|
||||
phase_angle:
|
||||
name: ${ct16_name} Phase Angle
|
||||
id: ct16Angle
|
||||
peak_current:
|
||||
name: ${ct16_name} Peak A
|
||||
id: ct16Peak
|
||||
phase_b:
|
||||
reactive_power:
|
||||
name: ${ct17_name} VAR
|
||||
id: ct17VAR
|
||||
apparent_power:
|
||||
name: ${ct17_name} VA
|
||||
id: ct17VA
|
||||
harmonic_power:
|
||||
name: ${ct17_name} Harmonic
|
||||
id: ct17Har
|
||||
power_factor:
|
||||
name: ${ct17_name} Power Factor
|
||||
id: ct17PF
|
||||
phase_angle:
|
||||
name: ${ct17_name} Phase Angle
|
||||
id: ct17Angle
|
||||
peak_current:
|
||||
name: ${ct17_name} Peak A
|
||||
id: ct17Peak
|
||||
phase_c:
|
||||
reactive_power:
|
||||
name: ${ct18_name} VAR
|
||||
id: ct18VAR
|
||||
apparent_power:
|
||||
name: ${ct18_name} VA
|
||||
id: ct18VA
|
||||
harmonic_power:
|
||||
name: ${ct18_name} Harmonic
|
||||
id: ct18Har
|
||||
power_factor:
|
||||
name: ${ct18_name} Power Factor
|
||||
id: ct18PF
|
||||
phase_angle:
|
||||
name: ${ct18_name} Phase Angle
|
||||
id: ct18Angle
|
||||
peak_current:
|
||||
name: ${ct18_name} Peak A
|
||||
id: ct18Peak
|
||||
@@ -0,0 +1,123 @@
|
||||
# This file contains power quality values that are available for each phase
|
||||
# Enabling these on every current channel is possible, but will produce a lot of data
|
||||
# and sensors that are likely not needed.
|
||||
# More details on each sensor here: https://esphome.io/components/sensor/atm90e32.html#configuration-variables
|
||||
|
||||
sensor:
|
||||
- id: !extend ${addon3_id1}
|
||||
phase_a:
|
||||
reactive_power:
|
||||
name: ${ct19_name} VAR
|
||||
id: ct19VAR
|
||||
apparent_power:
|
||||
name: ${ct19_name} VA
|
||||
id: ct19VA
|
||||
harmonic_power:
|
||||
name: ${ct19_name} Harmonic
|
||||
id: ct19Har
|
||||
power_factor:
|
||||
name: ${ct19_name} Power Factor
|
||||
id: ct19PF
|
||||
phase_angle:
|
||||
name: ${ct19_name} Phase Angle
|
||||
id: ct19Angle
|
||||
peak_current:
|
||||
name: ${ct19_name} Peak A
|
||||
id: ct19Peak
|
||||
phase_b:
|
||||
reactive_power:
|
||||
name: ${ct20_name} VAR
|
||||
id: ct20VAR
|
||||
apparent_power:
|
||||
name: ${ct20_name} VA
|
||||
id: ct20VA
|
||||
harmonic_power:
|
||||
name: ${ct20_name} Harmonic
|
||||
id: ct20Har
|
||||
power_factor:
|
||||
name: ${ct20_name} Power Factor
|
||||
id: ct20PF
|
||||
phase_angle:
|
||||
name: ${ct20_name} Phase Angle
|
||||
id: ct20Angle
|
||||
peak_current:
|
||||
name: ${ct20_name} Peak A
|
||||
id: ct20Peak
|
||||
phase_c:
|
||||
reactive_power:
|
||||
name: ${ct21_name} VAR
|
||||
id: ct21VAR
|
||||
apparent_power:
|
||||
name: ${ct21_name} VA
|
||||
id: ct21VA
|
||||
harmonic_power:
|
||||
name: ${ct21_name} Harmonic
|
||||
id: ct21Har
|
||||
power_factor:
|
||||
name: ${ct21_name} Power Factor
|
||||
id: ct21PF
|
||||
phase_angle:
|
||||
name: ${ct21_name} Phase Angle
|
||||
id: ct21Angle
|
||||
peak_current:
|
||||
name: ${ct21_name} Peak A
|
||||
id: ct21Peak
|
||||
|
||||
- id: !extend ${addon3_id2}
|
||||
phase_a:
|
||||
reactive_power:
|
||||
name: ${ct22_name} VAR
|
||||
id: ct22VAR
|
||||
apparent_power:
|
||||
name: ${ct22_name} VA
|
||||
id: ct22VA
|
||||
harmonic_power:
|
||||
name: ${ct22_name} Harmonic
|
||||
id: ct22Har
|
||||
power_factor:
|
||||
name: ${ct22_name} Power Factor
|
||||
id: ct22PF
|
||||
phase_angle:
|
||||
name: ${ct22_name} Phase Angle
|
||||
id: ct22Angle
|
||||
peak_current:
|
||||
name: ${ct22_name} Peak A
|
||||
id: ct22Peak
|
||||
phase_b:
|
||||
reactive_power:
|
||||
name: ${ct23_name} VAR
|
||||
id: ct23VAR
|
||||
apparent_power:
|
||||
name: ${ct23_name} VA
|
||||
id: ct23VA
|
||||
harmonic_power:
|
||||
name: ${ct23_name} Harmonic
|
||||
id: ct23Har
|
||||
power_factor:
|
||||
name: ${ct23_name} Power Factor
|
||||
id: ct23PF
|
||||
phase_angle:
|
||||
name: ${ct23_name} Phase Angle
|
||||
id: ct23Angle
|
||||
peak_current:
|
||||
name: ${ct23_name} Peak A
|
||||
id: ct23Peak
|
||||
phase_c:
|
||||
reactive_power:
|
||||
name: ${ct24_name} VAR
|
||||
id: ct24VAR
|
||||
apparent_power:
|
||||
name: ${ct24_name} VA
|
||||
id: ct24VA
|
||||
harmonic_power:
|
||||
name: ${ct24_name} Harmonic
|
||||
id: ct24Har
|
||||
power_factor:
|
||||
name: ${ct24_name} Power Factor
|
||||
id: ct24PF
|
||||
phase_angle:
|
||||
name: ${ct24_name} Phase Angle
|
||||
id: ct24Angle
|
||||
peak_current:
|
||||
name: ${ct24_name} Peak A
|
||||
id: ct24Peak
|
||||
@@ -0,0 +1,123 @@
|
||||
# This file contains power quality values that are available for each phase
|
||||
# Enabling these on every current channel is possible, but will produce a lot of data
|
||||
# and sensors that are likely not needed.
|
||||
# More details on each sensor here: https://esphome.io/components/sensor/atm90e32.html#configuration-variables
|
||||
|
||||
sensor:
|
||||
- id: !extend ${addon4_id1}
|
||||
phase_a:
|
||||
reactive_power:
|
||||
name: ${ct25_name} VAR
|
||||
id: ct25VAR
|
||||
apparent_power:
|
||||
name: ${ct25_name} VA
|
||||
id: ct25VA
|
||||
harmonic_power:
|
||||
name: ${ct25_name} Harmonic
|
||||
id: ct25Har
|
||||
power_factor:
|
||||
name: ${ct25_name} Power Factor
|
||||
id: ct25PF
|
||||
phase_angle:
|
||||
name: ${ct25_name} Phase Angle
|
||||
id: ct25Angle
|
||||
peak_current:
|
||||
name: ${ct25_name} Peak A
|
||||
id: ct25Peak
|
||||
phase_b:
|
||||
reactive_power:
|
||||
name: ${ct26_name} VAR
|
||||
id: ct26VAR
|
||||
apparent_power:
|
||||
name: ${ct26_name} VA
|
||||
id: ct26VA
|
||||
harmonic_power:
|
||||
name: ${ct26_name} Harmonic
|
||||
id: ct26Har
|
||||
power_factor:
|
||||
name: ${ct26_name} Power Factor
|
||||
id: ct26PF
|
||||
phase_angle:
|
||||
name: ${ct26_name} Phase Angle
|
||||
id: ct26Angle
|
||||
peak_current:
|
||||
name: ${ct26_name} Peak A
|
||||
id: ct26Peak
|
||||
phase_c:
|
||||
reactive_power:
|
||||
name: ${ct27_name} VAR
|
||||
id: ct27VAR
|
||||
apparent_power:
|
||||
name: ${ct27_name} VA
|
||||
id: ct27VA
|
||||
harmonic_power:
|
||||
name: ${ct27_name} Harmonic
|
||||
id: ct27Har
|
||||
power_factor:
|
||||
name: ${ct27_name} Power Factor
|
||||
id: ct27PF
|
||||
phase_angle:
|
||||
name: ${ct27_name} Phase Angle
|
||||
id: ct27Angle
|
||||
peak_current:
|
||||
name: ${ct27_name} Peak A
|
||||
id: ct27Peak
|
||||
|
||||
- id: !extend ${addon4_id2}
|
||||
phase_a:
|
||||
reactive_power:
|
||||
name: ${ct28_name} VAR
|
||||
id: ct28VAR
|
||||
apparent_power:
|
||||
name: ${ct28_name} VA
|
||||
id: ct28VA
|
||||
harmonic_power:
|
||||
name: ${ct28_name} Harmonic
|
||||
id: ct28Har
|
||||
power_factor:
|
||||
name: ${ct28_name} Power Factor
|
||||
id: ct28PF
|
||||
phase_angle:
|
||||
name: ${ct28_name} Phase Angle
|
||||
id: ct28Angle
|
||||
peak_current:
|
||||
name: ${ct28_name} Peak A
|
||||
id: ct28Peak
|
||||
phase_b:
|
||||
reactive_power:
|
||||
name: ${ct29_name} VAR
|
||||
id: ct29VAR
|
||||
apparent_power:
|
||||
name: ${ct29_name} VA
|
||||
id: ct29VA
|
||||
harmonic_power:
|
||||
name: ${ct29_name} Harmonic
|
||||
id: ct29Har
|
||||
power_factor:
|
||||
name: ${ct29_name} Power Factor
|
||||
id: ct29PF
|
||||
phase_angle:
|
||||
name: ${ct29_name} Phase Angle
|
||||
id: ct29Angle
|
||||
peak_current:
|
||||
name: ${ct29_name} Peak A
|
||||
id: ct29Peak
|
||||
phase_c:
|
||||
reactive_power:
|
||||
name: ${ct30_name} VAR
|
||||
id: ct30VAR
|
||||
apparent_power:
|
||||
name: ${ct30_name} VA
|
||||
id: ct30VA
|
||||
harmonic_power:
|
||||
name: ${ct30_name} Harmonic
|
||||
id: ct30Har
|
||||
power_factor:
|
||||
name: ${ct30_name} Power Factor
|
||||
id: ct30PF
|
||||
phase_angle:
|
||||
name: ${ct30_name} Phase Angle
|
||||
id: ct30Angle
|
||||
peak_current:
|
||||
name: ${ct30_name} Peak A
|
||||
id: ct30Peak
|
||||
@@ -0,0 +1,123 @@
|
||||
# This file contains power quality values that are available for each phase
|
||||
# Enabling these on every current channel is possible, but will produce a lot of data
|
||||
# and sensors that are likely not needed.
|
||||
# More details on each sensor here: https://esphome.io/components/sensor/atm90e32.html#configuration-variables
|
||||
|
||||
sensor:
|
||||
- id: !extend ${addon5_id1}
|
||||
phase_a:
|
||||
reactive_power:
|
||||
name: ${ct31_name} VAR
|
||||
id: ct31VAR
|
||||
apparent_power:
|
||||
name: ${ct31_name} VA
|
||||
id: ct31VA
|
||||
harmonic_power:
|
||||
name: ${ct31_name} Harmonic
|
||||
id: ct31Har
|
||||
power_factor:
|
||||
name: ${ct31_name} Power Factor
|
||||
id: ct31PF
|
||||
phase_angle:
|
||||
name: ${ct31_name} Phase Angle
|
||||
id: ct31Angle
|
||||
peak_current:
|
||||
name: ${ct31_name} Peak A
|
||||
id: ct31Peak
|
||||
phase_b:
|
||||
reactive_power:
|
||||
name: ${ct32_name} VAR
|
||||
id: ct32VAR
|
||||
apparent_power:
|
||||
name: ${ct32_name} VA
|
||||
id: ct32VA
|
||||
harmonic_power:
|
||||
name: ${ct32_name} Harmonic
|
||||
id: ct32Har
|
||||
power_factor:
|
||||
name: ${ct32_name} Power Factor
|
||||
id: ct32PF
|
||||
phase_angle:
|
||||
name: ${ct32_name} Phase Angle
|
||||
id: ct32Angle
|
||||
peak_current:
|
||||
name: ${ct32_name} Peak A
|
||||
id: ct32Peak
|
||||
phase_c:
|
||||
reactive_power:
|
||||
name: ${ct33_name} VAR
|
||||
id: ct33VAR
|
||||
apparent_power:
|
||||
name: ${ct33_name} VA
|
||||
id: ct33VA
|
||||
harmonic_power:
|
||||
name: ${ct33_name} Harmonic
|
||||
id: ct33Har
|
||||
power_factor:
|
||||
name: ${ct33_name} Power Factor
|
||||
id: ct33PF
|
||||
phase_angle:
|
||||
name: ${ct33_name} Phase Angle
|
||||
id: ct33Angle
|
||||
peak_current:
|
||||
name: ${ct33_name} Peak A
|
||||
id: ct33Peak
|
||||
|
||||
- id: !extend ${addon5_id2}
|
||||
phase_a:
|
||||
reactive_power:
|
||||
name: ${ct34_name} VAR
|
||||
id: ct34VAR
|
||||
apparent_power:
|
||||
name: ${ct34_name} VA
|
||||
id: ct34VA
|
||||
harmonic_power:
|
||||
name: ${ct34_name} Harmonic
|
||||
id: ct34Har
|
||||
power_factor:
|
||||
name: ${ct34_name} Power Factor
|
||||
id: ct34PF
|
||||
phase_angle:
|
||||
name: ${ct34_name} Phase Angle
|
||||
id: ct34Angle
|
||||
peak_current:
|
||||
name: ${ct34_name} Peak A
|
||||
id: ct34Peak
|
||||
phase_b:
|
||||
reactive_power:
|
||||
name: ${ct35_name} VAR
|
||||
id: ct35VAR
|
||||
apparent_power:
|
||||
name: ${ct35_name} VA
|
||||
id: ct35VA
|
||||
harmonic_power:
|
||||
name: ${ct35_name} Harmonic
|
||||
id: ct35Har
|
||||
power_factor:
|
||||
name: ${ct35_name} Power Factor
|
||||
id: ct35PF
|
||||
phase_angle:
|
||||
name: ${ct35_name} Phase Angle
|
||||
id: ct35Angle
|
||||
peak_current:
|
||||
name: ${ct35_name} Peak A
|
||||
id: ct35Peak
|
||||
phase_c:
|
||||
reactive_power:
|
||||
name: ${ct36_name} VAR
|
||||
id: ct36VAR
|
||||
apparent_power:
|
||||
name: ${ct36_name} VA
|
||||
id: ct36VA
|
||||
harmonic_power:
|
||||
name: ${ct36_name} Harmonic
|
||||
id: ct36Har
|
||||
power_factor:
|
||||
name: ${ct36_name} Power Factor
|
||||
id: ct36PF
|
||||
phase_angle:
|
||||
name: ${ct36_name} Phase Angle
|
||||
id: ct36Angle
|
||||
peak_current:
|
||||
name: ${ct36_name} Peak A
|
||||
id: ct36Peak
|
||||
@@ -0,0 +1,123 @@
|
||||
# This file contains power quality values that are available for each phase
|
||||
# Enabling these on every current channel is possible, but will produce a lot of data
|
||||
# and sensors that are likely not needed.
|
||||
# More details on each sensor here: https://esphome.io/components/sensor/atm90e32.html#configuration-variables
|
||||
|
||||
sensor:
|
||||
- id: !extend ${addon6_id1}
|
||||
phase_a:
|
||||
reactive_power:
|
||||
name: ${ct37_name} VAR
|
||||
id: ct37VAR
|
||||
apparent_power:
|
||||
name: ${ct37_name} VA
|
||||
id: ct37VA
|
||||
harmonic_power:
|
||||
name: ${ct37_name} Harmonic
|
||||
id: ct37Har
|
||||
power_factor:
|
||||
name: ${ct37_name} Power Factor
|
||||
id: ct37PF
|
||||
phase_angle:
|
||||
name: ${ct37_name} Phase Angle
|
||||
id: ct37Angle
|
||||
peak_current:
|
||||
name: ${ct37_name} Peak A
|
||||
id: ct37Peak
|
||||
phase_b:
|
||||
reactive_power:
|
||||
name: ${ct38_name} VAR
|
||||
id: ct38VAR
|
||||
apparent_power:
|
||||
name: ${ct38_name} VA
|
||||
id: ct38VA
|
||||
harmonic_power:
|
||||
name: ${ct38_name} Harmonic
|
||||
id: ct38Har
|
||||
power_factor:
|
||||
name: ${ct38_name} Power Factor
|
||||
id: ct38PF
|
||||
phase_angle:
|
||||
name: ${ct38_name} Phase Angle
|
||||
id: ct38Angle
|
||||
peak_current:
|
||||
name: ${ct38_name} Peak A
|
||||
id: ct38Peak
|
||||
phase_c:
|
||||
reactive_power:
|
||||
name: ${ct39_name} VAR
|
||||
id: ct39VAR
|
||||
apparent_power:
|
||||
name: ${ct39_name} VA
|
||||
id: ct39VA
|
||||
harmonic_power:
|
||||
name: ${ct39_name} Harmonic
|
||||
id: ct39Har
|
||||
power_factor:
|
||||
name: ${ct39_name} Power Factor
|
||||
id: ct39PF
|
||||
phase_angle:
|
||||
name: ${ct39_name} Phase Angle
|
||||
id: ct39Angle
|
||||
peak_current:
|
||||
name: ${ct39_name} Peak A
|
||||
id: ct39Peak
|
||||
|
||||
- id: !extend ${addon6_id2}
|
||||
phase_a:
|
||||
reactive_power:
|
||||
name: ${ct40_name} VAR
|
||||
id: ct40VAR
|
||||
apparent_power:
|
||||
name: ${ct40_name} VA
|
||||
id: ct40VA
|
||||
harmonic_power:
|
||||
name: ${ct40_name} Harmonic
|
||||
id: ct40Har
|
||||
power_factor:
|
||||
name: ${ct40_name} Power Factor
|
||||
id: ct40PF
|
||||
phase_angle:
|
||||
name: ${ct40_name} Phase Angle
|
||||
id: ct40Angle
|
||||
peak_current:
|
||||
name: ${ct40_name} Peak A
|
||||
id: ct40Peak
|
||||
phase_b:
|
||||
reactive_power:
|
||||
name: ${ct41_name} VAR
|
||||
id: ct41VAR
|
||||
apparent_power:
|
||||
name: ${ct41_name} VA
|
||||
id: ct41VA
|
||||
harmonic_power:
|
||||
name: ${ct41_name} Harmonic
|
||||
id: ct41Har
|
||||
power_factor:
|
||||
name: ${ct41_name} Power Factor
|
||||
id: ct41PF
|
||||
phase_angle:
|
||||
name: ${ct41_name} Phase Angle
|
||||
id: ct41Angle
|
||||
peak_current:
|
||||
name: ${ct41_name} Peak A
|
||||
id: ct41Peak
|
||||
phase_c:
|
||||
reactive_power:
|
||||
name: ${ct42_name} VAR
|
||||
id: ct42VAR
|
||||
apparent_power:
|
||||
name: ${ct42_name} VA
|
||||
id: ct42VA
|
||||
harmonic_power:
|
||||
name: ${ct42_name} Harmonic
|
||||
id: ct42Har
|
||||
power_factor:
|
||||
name: ${ct42_name} Power Factor
|
||||
id: ct42PF
|
||||
phase_angle:
|
||||
name: ${ct42_name} Phase Angle
|
||||
id: ct42Angle
|
||||
peak_current:
|
||||
name: ${ct42_name} Peak A
|
||||
id: ct42Peak
|
||||
@@ -0,0 +1,123 @@
|
||||
# This file contains power quality values that are available for each phase
|
||||
# Enabling these on every current channel is possible, but will produce a lot of data
|
||||
# and sensors that are likely not needed.
|
||||
# More details on each sensor here: https://esphome.io/components/sensor/atm90e32.html#configuration-variables
|
||||
|
||||
sensor:
|
||||
- id: !extend ${main_meter_id1}
|
||||
phase_a:
|
||||
reactive_power:
|
||||
name: ${ct1_name} VAR
|
||||
id: ct1VAR
|
||||
apparent_power:
|
||||
name: ${ct1_name} VA
|
||||
id: ct1VA
|
||||
harmonic_power:
|
||||
name: ${ct1_name} Harmonic
|
||||
id: ct1Har
|
||||
power_factor:
|
||||
name: ${ct1_name} Power Factor
|
||||
id: ct1PF
|
||||
phase_angle:
|
||||
name: ${ct1_name} Phase Angle
|
||||
id: ct1Angle
|
||||
peak_current:
|
||||
name: ${ct1_name} Peak A
|
||||
id: ct1Peak
|
||||
phase_b:
|
||||
reactive_power:
|
||||
name: ${ct2_name} VAR
|
||||
id: ct2VAR
|
||||
apparent_power:
|
||||
name: ${ct2_name} VA
|
||||
id: ct2VA
|
||||
harmonic_power:
|
||||
name: ${ct2_name} Harmonic
|
||||
id: ct2Har
|
||||
power_factor:
|
||||
name: ${ct2_name} Power Factor
|
||||
id: ct2PF
|
||||
phase_angle:
|
||||
name: ${ct2_name} Phase Angle
|
||||
id: ct2Angle
|
||||
peak_current:
|
||||
name: ${ct2_name} Peak A
|
||||
id: ct2Peak
|
||||
phase_c:
|
||||
reactive_power:
|
||||
name: ${ct3_name} VAR
|
||||
id: ct3VAR
|
||||
apparent_power:
|
||||
name: ${ct3_name} VA
|
||||
id: ct3VA
|
||||
harmonic_power:
|
||||
name: ${ct3_name} Harmonic
|
||||
id: ct3Har
|
||||
power_factor:
|
||||
name: ${ct3_name} Power Factor
|
||||
id: ct3PF
|
||||
phase_angle:
|
||||
name: ${ct3_name} Phase Angle
|
||||
id: ct3Angle
|
||||
peak_current:
|
||||
name: ${ct3_name} Peak A
|
||||
id: ct3Peak
|
||||
|
||||
- id: !extend ${main_meter_id2}
|
||||
phase_a:
|
||||
reactive_power:
|
||||
name: ${ct4_name} VAR
|
||||
id: ct4VAR
|
||||
apparent_power:
|
||||
name: ${ct4_name} VA
|
||||
id: ct4VA
|
||||
harmonic_power:
|
||||
name: ${ct4_name} Harmonic
|
||||
id: ct4Har
|
||||
power_factor:
|
||||
name: ${ct4_name} Power Factor
|
||||
id: ct4PF
|
||||
phase_angle:
|
||||
name: ${ct4_name} Phase Angle
|
||||
id: ct4Angle
|
||||
peak_current:
|
||||
name: ${ct4_name} Peak A
|
||||
id: ct4Peak
|
||||
phase_b:
|
||||
reactive_power:
|
||||
name: ${ct5_name} VAR
|
||||
id: ct5VAR
|
||||
apparent_power:
|
||||
name: ${ct5_name} VA
|
||||
id: ct5VA
|
||||
harmonic_power:
|
||||
name: ${ct5_name} Harmonic
|
||||
id: ct5Har
|
||||
power_factor:
|
||||
name: ${ct5_name} Power Factor
|
||||
id: ct5PF
|
||||
phase_angle:
|
||||
name: ${ct5_name} Phase Angle
|
||||
id: ct5Angle
|
||||
peak_current:
|
||||
name: ${ct5_name} Peak A
|
||||
id: ct5Peak
|
||||
phase_c:
|
||||
reactive_power:
|
||||
name: ${ct6_name} VAR
|
||||
id: ct6VAR
|
||||
apparent_power:
|
||||
name: ${ct6_name} VA
|
||||
id: ct6VA
|
||||
harmonic_power:
|
||||
name: ${ct6_name} Harmonic
|
||||
id: ct6Har
|
||||
power_factor:
|
||||
name: ${ct6_name} Power Factor
|
||||
id: ct6PF
|
||||
phase_angle:
|
||||
name: ${ct6_name} Phase Angle
|
||||
id: ct6Angle
|
||||
peak_current:
|
||||
name: ${ct6_name} Peak A
|
||||
id: ct6Peak
|
||||
@@ -0,0 +1,25 @@
|
||||
# These fields display the status of each CT, or phase, with a short text description
|
||||
# See more details here: https://esphome.io/components/sensor/atm90e32.html#text-sensor
|
||||
|
||||
# Status Fields
|
||||
###############
|
||||
text_sensor:
|
||||
- platform: atm90e32
|
||||
id: ${addon1_id1}
|
||||
phase_status:
|
||||
phase_a:
|
||||
name: "${ct7_name} Status"
|
||||
phase_b:
|
||||
name: "${ct8_name} Status"
|
||||
phase_c:
|
||||
name: "${ct9_name} Status"
|
||||
|
||||
- platform: atm90e32
|
||||
id: ${addon1_id2}
|
||||
phase_status:
|
||||
phase_a:
|
||||
name: "${ct10_name} Status"
|
||||
phase_b:
|
||||
name: "${ct11_name} Status"
|
||||
phase_c:
|
||||
name: "${ct12_name} Status"
|
||||
@@ -0,0 +1,25 @@
|
||||
# These fields display the status of each CT, or phase, with a short text description
|
||||
# See more details here: https://esphome.io/components/sensor/atm90e32.html#text-sensor
|
||||
|
||||
# Status Fields
|
||||
###############
|
||||
text_sensor:
|
||||
- platform: atm90e32
|
||||
id: ${addon2_id1}
|
||||
phase_status:
|
||||
phase_a:
|
||||
name: "${ct13_name} Status"
|
||||
phase_b:
|
||||
name: "${ct14_name} Status"
|
||||
phase_c:
|
||||
name: "${ct15_name} Status"
|
||||
|
||||
- platform: atm90e32
|
||||
id: ${addon2_id2}
|
||||
phase_status:
|
||||
phase_a:
|
||||
name: "${ct16_name} Status"
|
||||
phase_b:
|
||||
name: "${ct17_name} Status"
|
||||
phase_c:
|
||||
name: "${ct18_name} Status"
|
||||
@@ -0,0 +1,25 @@
|
||||
# These fields display the status of each CT, or phase, with a short text description
|
||||
# See more details here: https://esphome.io/components/sensor/atm90e32.html#text-sensor
|
||||
|
||||
# Status Fields
|
||||
###############
|
||||
text_sensor:
|
||||
- platform: atm90e32
|
||||
id: ${addon3_id1}
|
||||
phase_status:
|
||||
phase_a:
|
||||
name: "${ct19_name} Status"
|
||||
phase_b:
|
||||
name: "${ct20_name} Status"
|
||||
phase_c:
|
||||
name: "${ct21_name} Status"
|
||||
|
||||
- platform: atm90e32
|
||||
id: ${addon3_id2}
|
||||
phase_status:
|
||||
phase_a:
|
||||
name: "${ct22_name} Status"
|
||||
phase_b:
|
||||
name: "${ct23_name} Status"
|
||||
phase_c:
|
||||
name: "${ct24_name} Status"
|
||||
@@ -0,0 +1,25 @@
|
||||
# These fields display the status of each CT, or phase, with a short text description
|
||||
# See more details here: https://esphome.io/components/sensor/atm90e32.html#text-sensor
|
||||
|
||||
# Status Fields
|
||||
###############
|
||||
text_sensor:
|
||||
- platform: atm90e32
|
||||
id: ${addon4_id1}
|
||||
phase_status:
|
||||
phase_a:
|
||||
name: "${ct25_name} Status"
|
||||
phase_b:
|
||||
name: "${ct26_name} Status"
|
||||
phase_c:
|
||||
name: "${ct27_name} Status"
|
||||
|
||||
- platform: atm90e32
|
||||
id: ${addon4_id2}
|
||||
phase_status:
|
||||
phase_a:
|
||||
name: "${ct28_name} Status"
|
||||
phase_b:
|
||||
name: "${ct29_name} Status"
|
||||
phase_c:
|
||||
name: "${ct30_name} Status"
|
||||
@@ -0,0 +1,25 @@
|
||||
# These fields display the status of each CT, or phase, with a short text description
|
||||
# See more details here: https://esphome.io/components/sensor/atm90e32.html#text-sensor
|
||||
|
||||
# Status Fields
|
||||
###############
|
||||
text_sensor:
|
||||
- platform: atm90e32
|
||||
id: ${addon5_id1}
|
||||
phase_status:
|
||||
phase_a:
|
||||
name: "${ct31_name} Status"
|
||||
phase_b:
|
||||
name: "${ct32_name} Status"
|
||||
phase_c:
|
||||
name: "${ct33_name} Status"
|
||||
|
||||
- platform: atm90e32
|
||||
id: ${addon5_id2}
|
||||
phase_status:
|
||||
phase_a:
|
||||
name: "${ct34_name} Status"
|
||||
phase_b:
|
||||
name: "${ct35_name} Status"
|
||||
phase_c:
|
||||
name: "${ct36_name} Status"
|
||||
@@ -0,0 +1,25 @@
|
||||
# These fields display the status of each CT, or phase, with a short text description
|
||||
# See more details here: https://esphome.io/components/sensor/atm90e32.html#text-sensor
|
||||
|
||||
# Status Fields
|
||||
###############
|
||||
text_sensor:
|
||||
- platform: atm90e32
|
||||
id: ${addon6_id1}
|
||||
phase_status:
|
||||
phase_a:
|
||||
name: "${ct37_name} Status"
|
||||
phase_b:
|
||||
name: "${ct38_name} Status"
|
||||
phase_c:
|
||||
name: "${ct39_name} Status"
|
||||
|
||||
- platform: atm90e32
|
||||
id: ${addon6_id2}
|
||||
phase_status:
|
||||
phase_a:
|
||||
name: "${ct40_name} Status"
|
||||
phase_b:
|
||||
name: "${ct41_name} Status"
|
||||
phase_c:
|
||||
name: "${ct42_name} Status"
|
||||
@@ -0,0 +1,30 @@
|
||||
# These fields display the status of each CT, or phase, with a short text description
|
||||
# See more details here: https://esphome.io/components/sensor/atm90e32.html#text-sensor
|
||||
|
||||
# Main Board Status Fields
|
||||
##########################
|
||||
text_sensor:
|
||||
- platform: atm90e32
|
||||
id: ${main_meter_id1}
|
||||
phase_status:
|
||||
phase_a:
|
||||
name: "${ct1_name} Status"
|
||||
phase_b:
|
||||
name: "${ct2_name} Status"
|
||||
phase_c:
|
||||
name: "${ct3_name} Status"
|
||||
frequency_status:
|
||||
name: "Frequency Status 1"
|
||||
|
||||
- platform: atm90e32
|
||||
id: ${main_meter_id2}
|
||||
phase_status:
|
||||
phase_a:
|
||||
name: "${ct4_name} Status"
|
||||
phase_b:
|
||||
name: "${ct5_name} Status"
|
||||
phase_c:
|
||||
name: "${ct6_name} Status"
|
||||
#this is only needed if monitoring 2 voltages
|
||||
# freq_status:
|
||||
# name: "Frequency Status 2"
|
||||
@@ -0,0 +1,14 @@
|
||||
media_player:
|
||||
- id: external_media_player
|
||||
platform: speaker
|
||||
|
||||
# Define the actions Home Assistant will call
|
||||
on_turn_on:
|
||||
- lambda: |-
|
||||
// No action needed, Home Assistant can call this service
|
||||
return;
|
||||
|
||||
on_turn_off:
|
||||
- lambda: |-
|
||||
// No action needed, Home Assistant can call this service
|
||||
return;
|
||||
@@ -0,0 +1,30 @@
|
||||
esphome:
|
||||
|
||||
api:
|
||||
reboot_timeout: 0s
|
||||
|
||||
substitutions:
|
||||
mqtt_root_topic: !secret mqtt_root_topic
|
||||
|
||||
mqtt:
|
||||
broker: !secret mqtt_broker
|
||||
port: !secret mqtt_port
|
||||
username: !secret mqtt_username
|
||||
password: !secret mqtt_password
|
||||
discover_ip: False
|
||||
discovery: false
|
||||
discovery_retain: false
|
||||
log_topic: null
|
||||
|
||||
topic_prefix: ${mqtt_root_topic}/${devicename}
|
||||
|
||||
# birth_message:
|
||||
# topic: ${mqtt_root_topic}/${devicename}/availability
|
||||
# payload: online
|
||||
# will_message:
|
||||
# topic: ${mqtt_root_topic}/${devicename}/availability
|
||||
# payload: offline
|
||||
|
||||
# shutdown_message:
|
||||
# topic: ${mqtt_root_topic}/${devicename}/availability
|
||||
# payload: shutdown
|
||||
@@ -0,0 +1,26 @@
|
||||
esphome:
|
||||
|
||||
api:
|
||||
reboot_timeout: 0s
|
||||
|
||||
substitutions:
|
||||
mqtt_root_topic: !secret mqtt_root_topic
|
||||
|
||||
mqtt:
|
||||
broker: !secret mqtt_broker
|
||||
port: !secret mqtt_port
|
||||
username: !secret mqtt_username
|
||||
password: !secret mqtt_password
|
||||
discover_ip: False
|
||||
discovery: false
|
||||
discovery_retain: false
|
||||
topic_prefix: null
|
||||
birth_message:
|
||||
topic: ${mqtt_root_topic}/${devicename}/availability
|
||||
payload: online
|
||||
will_message:
|
||||
topic: ${mqtt_root_topic}/${devicename}/availability
|
||||
payload: offline
|
||||
shutdown_message:
|
||||
topic: ${mqtt_root_topic}/${devicename}/availability
|
||||
payload: offline
|
||||
@@ -9,6 +9,7 @@ substitutions:
|
||||
network: wifi
|
||||
static_ip: !secret garage-cleversensor-ip
|
||||
i2c_id: bus_a
|
||||
mqtt_root_topic: !secret mqtt_root_topic
|
||||
|
||||
# For the ultrasonic sensors
|
||||
trigger1: 16
|
||||
@@ -54,6 +55,7 @@ packages:
|
||||
device_base: !include common/device_base.yaml
|
||||
web_server: !include common/web_server.yaml
|
||||
bme680: !include common/bme68x_bsec2_i2c.yaml
|
||||
mqtt: !include common/mqtt_all.yaml
|
||||
|
||||
# remote_receiver:
|
||||
# pin: ${ir_rx}
|
||||
@@ -115,6 +117,10 @@ binary_sensor:
|
||||
- platform: gpio
|
||||
name: "ESP32-EVB button"
|
||||
pin: ${button1}
|
||||
# on_press:
|
||||
# - mqtt.publish:
|
||||
# topic: "${mqtt_root_topic}/${devicename}/button"
|
||||
# payload: "pressed"
|
||||
|
||||
- platform: gpio
|
||||
name: "Garage Door"
|
||||
|
||||
@@ -4,14 +4,52 @@ substitutions:
|
||||
friendly_name: Home Assistant Voice 097b44
|
||||
comment: Clever Voice
|
||||
static_ip: !secret clints-home-assistant-voice
|
||||
power_switch_pin: GPIO3
|
||||
|
||||
packages:
|
||||
base: !include common/device_base.yaml
|
||||
network: !include common/wifi.yaml
|
||||
Nabu Casa.Home Assistant Voice PE: github://esphome/home-assistant-voice-pe/home-assistant-voice.yaml
|
||||
#power_buttons: !include common/media_player.yaml
|
||||
esphome:
|
||||
name: ${name}
|
||||
name_add_mac_suffix: false
|
||||
friendly_name: ${friendly_name}
|
||||
|
||||
button:
|
||||
- id: !remove local_restart_button
|
||||
- id: !remove local_restart_button
|
||||
|
||||
|
||||
# forget all of this extending bullshit and implement this:
|
||||
# https://www.home-assistant.io/integrations/universal/
|
||||
|
||||
switch:
|
||||
- platform: template
|
||||
name: "External Power Switch"
|
||||
id: external_power_switch
|
||||
turn_on_action:
|
||||
- logger.log: "External Power Switch turned on"
|
||||
- media_player.turn_on:
|
||||
id: external_media_player
|
||||
# - lambda: return;
|
||||
turn_off_action:
|
||||
- logger.log: "External Power Switch turned off"
|
||||
- media_player.turn_off:
|
||||
id: external_media_player
|
||||
# - lambda: return;
|
||||
|
||||
media_player:
|
||||
- id: !extend external_media_player
|
||||
|
||||
# Define the actions Home Assistant will call
|
||||
on_turn_on:
|
||||
- logger.log: "Media Player Turned On via on_turn_on action"
|
||||
# - lambda: |-
|
||||
# // No action needed, Home Assistant can call this service
|
||||
# return;
|
||||
|
||||
on_turn_off:
|
||||
- logger.log: "Media Player Turned Off via on_turn_off action"
|
||||
# - lambda: |-
|
||||
# // No action needed, Home Assistant can call this service
|
||||
# return;
|
||||
@@ -106,6 +106,7 @@ packages:
|
||||
wifi: !include common/wifi.yaml
|
||||
# device_base: !include common/complex_esp32_base.yaml
|
||||
device_base: !include common/device_base.yaml
|
||||
mqtt: !include common/mqtt_null.yaml
|
||||
|
||||
esp32:
|
||||
board: nodemcu-32s
|
||||
@@ -466,6 +467,13 @@ sensor:
|
||||
- throttle_average: ${throttle_time}
|
||||
# - heartbeat: ${watt_heartbeat}
|
||||
accuracy_decimals: 1
|
||||
qos: 1
|
||||
retain: true
|
||||
availability:
|
||||
topic: ${mqtt_root_topic}/${devicename}/${ct21Name}_w/status
|
||||
payload_available: online
|
||||
payload_not_available: offline
|
||||
state_topic: ${mqtt_root_topic}/${devicename}/${ct21Name}_w
|
||||
gain_voltage: ${voltage_cal}
|
||||
gain_ct: ${sct006}
|
||||
line_frequency: 60Hz
|
||||
@@ -796,6 +804,13 @@ sensor:
|
||||
unit_of_measurement: kWh
|
||||
device_class: energy
|
||||
state_class: total_increasing
|
||||
qos: 1
|
||||
retain: true
|
||||
availability:
|
||||
topic: ${mqtt_root_topic}/${devicename}/${ct21Name}_kwh/status
|
||||
payload_available: online
|
||||
payload_not_available: offline
|
||||
state_topic: ${mqtt_root_topic}/${devicename}/${ct21Name}_kwh
|
||||
# min_save_interval: ${update_time}
|
||||
|
||||
#kWh From CT 22
|
||||
|
||||
Reference in New Issue
Block a user