ATM90E32 功率传感器
atm90e32 传感器平台允许您在 ESPHome 中使用 ATM90E32 电压/电流和功率传感器
(数据手册)。此传感器常见于 CircuitSetup 2 和 6 通道能量计以及 Gelidus Research 2 通道功率计中。
与设备的通信通过 SPI 总线 完成,因此您需要在配置中包含带有
已设置 mosi_pin 和 miso_pin 的 spi: 条目。
ATM90E32 芯片最多可测量三个交流电压,尽管通常只使用一个 电压测量值用于家庭的 mains 电源相。通过 CT 钳读取三个电流测量值。
CircuitSetup 分相单相能量计 可以读取 2 个电流通道和 1 个(可扩展至 2 个)电压通道。

CircuitSetup 6 通道能量计 一次可以读取 6 个电流通道和 2 个电压通道,该板上有两个 ATM90E32 芯片,需要在 ESPHome 中配置两个传感器。

-
cs_pin (必选, Pin Schema): CS 连接的引脚。对于 6 通道电表主板,此值始终为 5 和 4。对于附加板,每个 CS 引脚可以选择跳线,但默认为 0 和 16。
-
line_frequency (必选, string): 供电电压的交流电源频率。可选值为
50Hz、60Hz。 -
id (可选, ID): 如果使用多个带有校准按钮、参考电压/电流量和相状态字段的
atm90e32芯片,则需要此项 -
phase_a (可选): 第 1 相的配置选项。
-
voltage (可选): 使用此相的电压值,单位为伏特(RMS)。 来自 Sensor 的所有选项。
-
current (可选): 使用此相的电流值,单位为安培。来自 Sensor 的所有选项。
-
power (可选): 使用此相的功率值,单位为瓦特。来自 Sensor 的所有选项。
-
reactive_power (可选): 使用此相的无功功率值,单位为 VAR。来自 Sensor 的所有选项。
-
apparent_power (可选): 使用此相的视在功率值,单位为 VA。来自 Sensor 的所有选项。
-
power_factor (可选): 使用此相的功率因数值。来自 Sensor 的所有选项。
-
phase_angle (可选): 使用此相的相角值,单位为度。来自 Sensor 的所有选项。
-
peak_current (可选): 使用此相的峰值电流值,单位为安培。来自 Sensor 的所有选项。
-
harmonic_power (可选): 使用此相的谐波功率值。来自 Sensor 的所有选项。
-
gain_voltage (可选, int): 电压增益值,用于将低压交流变压器放大回家用 mains 电源。 默认为
7305。 -
gain_ct (可选, int): 此相的 CT 钳校准值。 默认为
27961。 -
offset_voltage (可选, int): 在电流和电压为 0 时通过偏移校准功能获得的电压偏移 默认为
0 -
offset_current (可选, int): 在电流和电压为 0 时通过偏移校准功能获得的电流偏移 默认为
0 -
offset_active_power (可选, int): 在电流为 0 且插入并校准了电压变压器时,通过功率偏移校准功能获得的有功功率偏移。 默认为
0 -
offset_reactive_power (可选, int): 在电流为 0 且插入并校准了电压变压器时,通过功率偏移校准功能获得的无功功率偏移。 默认为
0 -
forward_active_energy (可选): 使用此相的正向有功能量值,单位为瓦时。 来自 Sensor 的所有选项。
-
reverse_active_energy (可选): 使用此相的反向有功能量值,单位为瓦时。 来自 Sensor 的所有选项。
-
-
phase_b (可选): 第 2 相的配置选项。与
phase_a选项相同。 -
phase_c (可选): 第 3 相的配置选项。与
phase_a选项相同。 -
frequency (可选): 使用电表计算出的频率值。来自 Sensor 的所有选项。
-
peak_current_signed (可选, boolean): 控制峰值电流输出为有符号或绝对值。默认为
false。 -
chip_temperature (可选): 使用芯片温度值。来自 Sensor 的所有选项。
-
gain_pga (可选, string): 当 CT 钳输出太低且
gain_ct已满时增加此项。可选值为1X、2X、4X。默认为1X,适合大多数 CT 钳。 -
current_phases (可选): 电表的相数,
2或36 通道可扩展能量计应设置为3,分相单相电表应设置为2。默认为3。 -
update_interval (可选, Time): 检查传感器的时间间隔。默认为
60s。 -
enable_gain_calibration (可选, boolean): 如果为 true,则启用基于相应电压、
reference_voltage和电流、reference_current参考字段中输入值的电压增益 (gain_voltage) 和电流 (gain_ct) 增益校准。对于多个 ATM90E32 传感器,每个传感器单独启用,并通过 id 值对映射其按钮。例如,当定义了多个时使用id: chip1。运行后,值存储在芯片内存中,重启和 OTA 软件更新后可用。 -
enable_offset_calibration (可选, boolean): 如果为 true,则启用电压 (
offset_voltage) 和电流传感器的精细偏移噪声 0 电平校准 (offset_current),以及有功功率 (offset_active_power) 和无功功率 (offset_reactive_power) 的功率偏移。需要按钮来操作校准功能。对于多个 ATM90E32 传感器,每个传感器单独启用,并通过 id 值对映射其按钮。例如,当定义了多个时使用id: chip1。运行后,值存储在芯片内存中,重启和 OTA 软件更新后可用。偏移校准只能在所有电压和电流输入为 0 值时执行。建议使用 USB 电源。对于功率偏移校准,应仅连接电压变压器。
text_sensor: - platform: atm90e32 id: chip1 phase_status: phase_a: name: "Phase A Status" phase_b: name: "Phase B Status" phase_c: name: "Phase C Status" freq_status: name: "Frequency Status"配置变量:
-
id (可选, ID): 上方定义的
atm90e32传感器的 ID。使用多个传感器时必填。 -
phase_status (可选): 启用每相状态条件:
-
phase_a (可选): 相 A 状态字段。 来自 Text Sensor 的所有选项。
将报告:
-
过电流: 电流 ≥ 65.53 A 时检测到。
-
过压/欠压: 基于配置的
line_frequency。例如:- 在
60Hz(预期 120V)下,欠压 = <78%,过压 = >122%。 - 在
50Hz(预期 220V)下,欠压 = <78%,过压 = >122%。
- 在
-
缺相: 指示该相是否已断开。
如果没有条件满足,传感器报告
Okay。
-
-
phase_b (可选): 相 B 状态字段。与相 A 选项相同
-
phase_c (可选): 相 C 状态字段。与相 A 选项相同
-
-
frequency_status (可选): 基于频率阈值报告状态。
来自 Text Sensor 的所有选项。
-
对于
50Hz系统:- 频率 ≤ 47Hz 时为
LOW - 频率 ≥ 53Hz 时为
HIGH
- 频率 ≤ 47Hz 时为
-
对于
60Hz系统:- 频率 ≤ 57Hz 时为
LOW - 频率 ≥ 63Hz 时为
HIGH
- 频率 ≤ 57Hz 时为
如果频率在预期范围内,输出为
Normal。 -
button: - platform: atm90e32 id: chip1 run_gain_calibration: name: "Run Gain Calibration" clear_gain_calibration: name: "Clear Gain Calibration" run_offset_calibration: name: "Run Offset Calibration" clear_offset_calibration: name: "Clear Offset Calibration" run_power_offset_calibration: name: "Run Power Offset Calibration" clear_power_offset_calibration: name: "Clear Power Offset Calibration"配置变量:
-
id (可选, ID): 上方定义的
atm90e32传感器的 ID。使用多个传感器时必填。 -
run_gain_calibration (可选): 运行增益校准的按钮。
enable_gain_calibration必须为True。这些值可以永久存储在gain_voltage和gain_ct中。 来自 Button 的所有选项。 -
clear_gain_calibration (可选): 从闪存清除增益校准并使用默认值的按钮,或在
gain_voltage和gain_ct下定义的值。 来自 Button 的所有选项。 -
run_offset_calibration (可选): 运行偏移校准的按钮。
enable_offset_calibration必须为True。这些值可以永久存储在offset_voltage和offset_current中。 来自 Button 的所有选项。 -
clear_offset_calibration (可选): 从闪存清除增益校准并使用默认值的按钮,或在
offset_voltage和offset_current下定义的值。 来自 Button 的所有选项。 -
run_power_offset_calibration (可选): 运行功率偏移校准的按钮。
enable_offset_calibration必须为True。这些值可以永久存储在offset_active_power和offset_reactive_power中。 来自 Button 的所有选项。 -
clear_power_offset_calibration (可选): 从闪存清除增益校准并使用默认值的按钮,或在
offset_active_power和offset_reactive_power下定义的值。 来自 Button 的所有选项。
Number
Section titled “Number”可以配置 number 实体以在运行时提供校准电压和电流参考值。
number: - platform: atm90e32 id: chip1 reference_voltage: phase_a: name: "Phase A Ref Voltage" phase_b: name: "Phase B Ref Voltage" phase_c: name: "Phase C Ref Voltage" reference_current: phase_a: name: "Phase A Ref Current" phase_b: name: "Phase B Ref Current" phase_c: name: "Phase C Ref Current"配置变量:
-
id (可选, ID): 上方定义的
atm90e32传感器的 ID。使用多个传感器时必填。 -
reference_voltage (可选): 电压变压器连接的已知电压的精细增益校准。它用于计算
gain_voltage的值。需与run_gain_calibration按钮配合使用。enable_gain_calibration必须为True。以下每个相默认值为min_value: 100、max_value: 200、mode: box、optimistic: True、step: 0.1。 -
reference_current (可选): CT 正在测量的电路已知电流的精细增益校准。它用于计算
gain_ct的值。需与run_gain_calibration按钮配合使用。enable_gain_calibration必须为True。以下每个相默认值为min_value: 1、max_value: 200、mode: box、optimistic: True、step: 0.1。
为了获得准确的电压和电流读数,建议校准您的电压变压器和 CT 钳。 ESPHome 支持 ATM90E32 电表的自动增益和偏移校准。
要使用这些功能,请确保:
enable_gain_calibration和/或enable_offset_calibration设置为true。- 已配置相应的校准按钮和参考字段。
- 您使用可靠的参考设备(Kill-A-Watt、万用表、已知负载)。
默认配置设计用于:
- 电流变压器: SCT-013-000
- 电压变压器: Jameco Reliapro 9V AC
可以使用消耗已知电流的负载进行校准。为了更精确的校准,请使用 Kill-A-Watt 电表或能够测量 mains 电压的万用表。
使用您所在区域的预期 mains 电压,110V/230V,使用可靠的万用表,或插入 Kill-A-Watt 并选择电压 获取真实的参考电压。在 Home Assistant 中电表的设备页面中,将此值输入到参考电压字段中。
点击运行增益校准时,软件执行以下计算:
新 gain_voltage =(您的电压读数 / ESPHome 电压读数)* 现有 gain_voltage 值
新的电压增益值保存到 ESP 闪存并立即应用。您可以在 ESPHome 日志中查看结果。
将值复制到 YAML 配置中的 gain_voltage 以在重新刷写时保留(OTA 更新不会擦除闪存)。
以下是 Split Single Energy Meter 的常见电压校准值: 对于电表 ≤ v1.3:
-
42080 - 9V AC 变压器 - Jameco 112336
-
32428 - 12V AC 变压器 - Jameco 167151 对于电表 > v1.4:
-
37106 - 9V AC 变压器 - Jameco 157041
-
38302 - 9V AC 变压器 - Jameco 112336
-
29462 - 12V AC 变压器 - Jameco 167151 对于电表 ≥ v1.4 rev.3:
-
3920 - 9V AC 变压器 - Jameco 157041
以下是 Expandable 6 Channel Energy Meter 的常见电压校准值: 对于电表 ≤ v1.2:
-
42080 - 9V AC 变压器 - Jameco 112336
-
32428 - 12V AC 变压器 - Jameco 167151 对于电表 > v1.3:
-
7305 - 9V AC 变压器 - Jameco 157041
在已知或已测量负载(如暖风机或吹风机)的带电导线周围连接电流变压器。 在 Home Assistant 中电表的设备页面中,将此值输入到相应的参考电流字段中。 任何留空的参考字段将不会被计算。
点击运行增益校准时,软件执行以下计算:
新 gain_ct =(您的电流读数 / ESPHome 电流读数)* 现有 gain_ct 值
新的电流增益值保存到 ESP 闪存并立即应用。您可以在 ESPHome 日志中查看结果。
将值复制到 YAML 配置中的 gain_ct 以在重新刷写时保留(OTA 更新不会擦除闪存)。
两个相同的 CT 电流传感器可能具有不同的
gain_ct 值,这是由于制造公差造成的,尽管差异很小。电流校准可以
进行一次并用于所有传感器,也可以对每个传感器重复进行。
以下是 Split Single Phase Energy Meter 在 gain_pga 设置为 4X 时的常见电流校准值:
- 200A/100mA SCT-024: 12597
以下是 Split Single Phase Energy Meter 在 gain_pga 设置为 2X 时的常见电流校准值:
- 20A/25mA SCT-006: 10170
- 100A/50mA SCT-013-000: 25498
- 120A/40mA SCT-016: 39473
- Magnalab 100A: 46539
以下是 Expandable 6 Channel Energy Meter 在 gain_pga 设置为 1X 时的常见电流校准值:
- 20A/25mA SCT-006: 11131
- 30A/1V SCT-013-030: 8650
- 50A/1V SCT-013-050: 15420
- 80A/26.6mA SCT-010: 41996(注意这在 2^16/10^3 安培时会饱和)
- 100A/50mA SCT-013-000: 27961
- 120A/40mA: SCT-016: 41880
- 200A/100mA SCT-024: 27518
- 200A/50mA SCT-024: 55036
ATM90E32 芯片具有高精度的内置能力,可以按相计算消耗的能量。 每相的正向和反向有功能量以瓦时为单位进行计数。 正向有功能量用于计算消耗的能量,而反向有功能量用于计算输出的能量 (例如,在太阳能光伏安装中)。 计数器在每次从 ATM90E32 芯片读取给定的有功能量值时重置。
当前实现面向以固定间隔检索能量值并将它们存储在 时序数据库(如 InfluxDB)中的用户。
示例:
sensor:#IC1 Main - platform: atm90e32 cs_pin: GPIOXX phase_a: forward_active_energy: name: ${disp_name} ct1 FAWattHours id: ct1FAWattHours state_topic: ${disp_name}/ct1/forward_active_energy reverse_active_energy: name: ${disp_name} ct1 RAWattHours id: ct1RAWattHours state_topic: ${disp_name}/ct1/reverse_active_energy如果使用了 power、power_factor、reactive_power、forward_active_energy 或 reverse_active_energy 配置变量, 必须确保 ATM90E32 的电压来自与电流变压器安装的相同的相。这在分相或多相安装中很重要。在 240 分相布线的房屋中(在美国很常见),一个简单的测试方法是反转一条线上电流变压器的方向。如果功率因数 不改变符号,很可能提供给 ATM90E32 的电压来自另一相。
CircuitSetup 可扩展 6 通道板可以通过切断跳线 JP12/13 轻松处理这种情况, 以允许在 J3 焊盘上输入单独的 VA2。确保连接到 CT 1-3 的电流采样点与 VA 供电的相相同(圆孔插孔),连接到 CT3-6 的采样点与 VA2 供电的相相同。请参阅 CicuitSetup 仓库以获取更多详细信息。
如果使用多板堆叠,请记住切断所有板上的 JP12/13,并将 VA2 馈送到每个板。VA 通过 堆叠头馈送到所有板。另一个细节是每个电压变压器需要具有 相同的极性;接反就相当于接错了相。
请注意,电流测量值是 RMS 值,因此始终为正。确定方向的唯一方法是 查看功率因数。如果只有大量的电阻性负载且没有电源(PF 接近 1),最简单 的方法是创建一个模板传感器,从 Irms*Vrms 计算功率并忽略所有这些细节。另一方面, 您可能会对某些负载的无功程度感到惊讶,而 CirciuitSetup 设计能够很好地 处理这些情况。
交流系统中的谐波功率是指偏离理想正弦波形的偏差,由基本频率的倍数 引起。它由非线性负载导致,并可能导致电压失真、设备 过热和保护装置误操作等问题。ATM90E32 可以输出高级谐波功率测量 为总线上功率异常的监控提供重要的分析数据。
谐波功率示例:
sensor: - platform: atm90e32 phase_a: harmonic_power: name: ${disp_name} CT1 Harmonic Power交流系统中的相角表示正弦波形相对于参考点的角位移。 它是电压和电流之间时间差的度量。相角对于功率因数评估 和高效功率传输至关重要。此高级测量功能在 ATM90E32 上可用。
相角示例:
sensor: - platform: atm90e32 phase_a: phase_angle: name: ${disp_name} L1 Phase Angle交流系统中的峰值电流是指交流波形的最大值。它表示每个正弦波形周期中 达到的最高幅度。峰值电流对于组件尺寸选择和评估系统中电气设备 的容量很重要。此高级测量在 ATM90E32 上可用。 峰值电流可以使用布尔参数以有符号或无符号格式显示,涵盖所有相。 默认值为 false,即无符号。
峰值电流示例:
sensor: - platform: atm90e32 phase_a: peak_current: name: ${disp_name} CT1 Peak Current peak_current_signed: True# Example configuration entry for split single phase meterspi: clk_pin: GPIOXX miso_pin: GPIOXX mosi_pin: GPIOXX
sensor: - platform: atm90e32 cs_pin: GPIOXX phase_a: voltage: name: "EMON Line Voltage A" current: name: "EMON CT1 Current" power: name: "EMON Active Power CT1" reactive_power: name: "EMON Reactive Power CT1" power_factor: name: "EMON Power Factor CT1" gain_voltage: 3920 gain_ct: 39473 phase_c: current: name: "EMON CT2 Current" power: name: "EMON Active Power CT2" reactive_power: name: "EMON Reactive Power CT2" power_factor: name: "EMON Power Factor CT2" gain_voltage: 3920 gain_ct: 39473 frequency: name: "EMON Line Frequency" chip_temperature: name: "EMON Chip Temperature" line_frequency: 50Hz current_phases: 2 gain_pga: 2X update_interval: 60s# Example configuration CircuitSetup 6 Channel Energy Meter Main Board with power quality parameterssubstitutions: disp_name: energy-meter friendly_name: "CircuitSetup Energy Meter" update_time: 60s current_cal_ct1: '27518' current_cal_ct2: '27518' current_cal_ct3: '27518' current_cal_ct4: '27518' current_cal_ct5: '27518' current_cal_ct6: '27518' 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
spi: clk_pin: 18 miso_pin: 19 mosi_pin: 23
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: ${friendly_name} Total Amps id: totalAmps lambda: return id(ct1Amps).get_state() + id(ct2Amps).get_state() + id(ct3Amps).get_state() + id(ct4Amps).get_state() + id(ct5Amps).get_state() + id(ct6Amps).get_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(ct1Watts).get_state() + id(ct2Watts).get_state() + id(ct3Watts).get_state() + id(ct4Watts).get_state() + id(ct5Watts).get_state() + id(ct6Watts).get_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
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# frequency_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: 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: phase_a: name: "Ref Voltage 2" #needed to calibrate voltage registers even if not output reference_current: phase_a: name: "${ct4_name} Ref Current" phase_b: name: "${ct5_name} Ref Current" phase_c: name: "${ct6_name} Ref Current"# Example configuration CircuitSetup 6 Channel Energy Meter Main Board + 1 add-on board
substitutions: disp_name: energy-meter friendly_name: CircuitSetup Energy Meter 12x update_time: 10s current_cal: '27518' voltage_cal: '7305'
sensor:#IC1 Main - platform: atm90e32 cs_pin: 5 phase_a: voltage: name: ${disp_name} Volts A id: ic1Volts accuracy_decimals: 1 current: name: ${disp_name} CT1 Amps id: ct1Amps power: name: ${disp_name} CT1 Watts id: ct1Watts gain_voltage: ${voltage_cal} gain_ct: ${current_cal} phase_b: current: name: ${disp_name} CT2 Amps id: ct2Amps power: name: ${disp_name} CT2 Watts id: ct2Watts gain_voltage: ${voltage_cal} gain_ct: ${current_cal} phase_c: current: name: ${disp_name} CT3 Amps id: ct3Amps power: name: ${disp_name} CT3 Watts id: ct3Watts gain_voltage: ${voltage_cal} gain_ct: ${current_cal} frequency: name: ${disp_name} Frequency line_frequency: 60Hz gain_pga: 1X update_interval: ${update_time}#IC2 Main - platform: atm90e32 cs_pin: 4 phase_a: current: name: ${disp_name} CT4 Amps id: ct4Amps power: name: ${disp_name} CT4 Watts id: ct4Watts gain_voltage: ${voltage_cal} gain_ct: ${current_cal} phase_b: current: name: ${disp_name} CT5 Amps id: ct5Amps power: name: ${disp_name} CT5 Watts id: ct5Watts gain_voltage: ${voltage_cal} gain_ct: ${current_cal} phase_c: current: name: ${disp_name} CT6 Amps id: ct6Amps 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 - platform: atm90e32 cs_pin: 0 phase_a: current: name: ${disp_name} CT7 Amps id: ct7Amps power: name: ${disp_name} CT7 Watts id: ct7Watts gain_voltage: ${voltage_cal} gain_ct: ${current_cal} phase_b: current: name: ${disp_name} CT8 Amps id: ct8Amps power: name: ${disp_name} CT8 Watts id: ct8Watts gain_voltage: ${voltage_cal} gain_ct: ${current_cal} phase_c: current: name: ${disp_name} CT9 Amps id: ct9Amps 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 - platform: atm90e32 cs_pin: 16 phase_a: current: name: ${disp_name} CT10 Amps id: ct10Amps power: name: ${disp_name} CT10 Watts id: ct10Watts gain_voltage: ${voltage_cal} gain_ct: ${current_cal} phase_b: current: name: ${disp_name} CT11 Amps id: ct11Amps power: name: ${disp_name} CT11 Watts id: ct11Watts gain_voltage: ${voltage_cal} gain_ct: ${current_cal} phase_c: current: name: ${disp_name} CT12 Amps id: ct12Amps 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}
#Total Amps Main - platform: template name: ${disp_name} Total Amps Main id: totalAmpsMain lambda: return id(ct1Amps).get_state() + id(ct2Amps).get_state() + id(ct3Amps).get_state() + id(ct4Amps).get_state() + id(ct5Amps).get_state() + id(ct6Amps).get_state() ; accuracy_decimals: 2 unit_of_measurement: A device_class: current update_interval: ${update_time}#Total Amps AddOn - platform: template name: ${disp_name} Total Amps Add-on id: totalAmpsAddOn lambda: return id(ct7Amps).get_state() + id(ct8Amps).get_state() + id(ct9Amps).get_state() + id(ct10Amps).get_state() + id(ct11Amps).get_state() + id(ct12Amps).get_state() ; accuracy_decimals: 2 unit_of_measurement: A device_class: current update_interval: ${update_time}#Total Amps - platform: template name: ${disp_name} Total Amps id: totalAmps lambda: return id(totalAmpsMain).get_state() + id(totalAmpsAddOn).get_state() ; accuracy_decimals: 2 unit_of_measurement: A device_class: current update_interval: ${update_time}
#Total Watts Main - platform: template name: ${disp_name} Total Watts Main id: totalWattsMain lambda: return id(ct1Watts).get_state() + id(ct2Watts).get_state() + id(ct3Watts).get_state() + id(ct4Watts).get_state() + id(ct5Watts).get_state() + id(ct6Watts).get_state() ; accuracy_decimals: 1 unit_of_measurement: W device_class: power update_interval: ${update_time}#Total Watts AddOn - platform: template name: ${disp_name} Total Watts Add-on id: totalWattsAddOn lambda: return id(ct7Watts).get_state() + id(ct8Watts).get_state() + id(ct9Watts).get_state() + id(ct10Watts).get_state() + id(ct11Watts).get_state() + id(ct12Watts).get_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).get_state() + id(totalWattsAddOn).get_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