Peacefair PZEM-004T V3 电能监测器
pzemac 传感器平台允许您在 ESPHome 中使用 PZEM-004T V3 电能监测器(网页,数据手册)。
该传感器可以采用多种连接配置,更多信息请参阅制造商网页。
WARNING
请注意,PZEM 模块内部的计量芯片由交流侧供电,因此在 ESPHome 设备启动时它必须已经通电,否则将无法看到测量结果。

WARNING
本页涉及 PZEM004T 的 V3 版本。 如需使用较早的 V1 变型,请参阅 pzem004t。
与该组件的通信通过 UART 并使用 Modbus 进行。因此您必须在配置中设置一个 uart: 条目,将 TX 和 RX 引脚设置为您开发板上的某两个引脚,并将波特率设置为 9600。
# 示例配置条目uart: rx_pin: D1 tx_pin: D2 baud_rate: 9600
modbus:
sensor: - platform: pzemac current: name: "PZEM-004T V3 Current" voltage: name: "PZEM-004T V3 Voltage" energy: name: "PZEM-004T V3 Energy" power: name: "PZEM-004T V3 Power" frequency: name: "PZEM-004T V3 Frequency" power_factor: name: "PZEM-004T V3 Power Factor" update_interval: 60s-
current (可选): 使用传感器电流值,单位为安培。 Sensor 的所有选项。
-
energy (可选): 使用传感器的(有功)电能值,单位为瓦时。 Sensor 的所有选项。
-
power (可选): 使用传感器的(有功)功率值,单位为瓦。 Sensor 的所有选项。
-
voltage (可选): 使用传感器电压值,单位为伏。 Sensor 的所有选项。
-
frequency (可选): 使用传感器频率值,单位为赫兹。 Sensor 的所有选项。
-
power_factor (可选): 使用传感器的功率因数值。 Sensor 的所有选项。
-
update_interval (可选, Time): 检查传感器的间隔。默认为
60s。 -
address (可选, int): 当多个传感器连接到同一 UART 总线时,指定该传感器的地址。您需要手动设置每个设备的地址。默认为
1。 -
modbus_id (可选, ID): 手动指定 Modbus 集线器的 ID。
pzemac.reset_energy 动作
Section titled “pzemac.reset_energy 动作”执行此动作时,将重置给定 ID 的 pzemac 设备的总电能值。
on_...: then: - pzemac.reset_energy: pzemac_1更改 PZEM-004T 的地址
Section titled “更改 PZEM-004T 的地址”您可以使用以下配置来更改传感器的地址。
您必须将 modbus_controller 的 address 设置为当前地址,并将 on_boot lambda 中的 new_address 设置为新地址。
WARNING
此操作只能执行一次!更改地址后,在使用实际传感器代码之前,应将此代码从 ESP 中移除。
esphome: ... on_boot: ## 在启动时配置控制器设置 ## 确保优先级低于 modbus_controller 的 setup_priority priority: -100 then: - lambda: |- auto new_address = 0x03;
if(new_address < 0x01 || new_address > 0xF7) // sanity check { ESP_LOGE("ModbusLambda", "Address needs to be between 0x01 and 0xF7"); return; }
esphome::modbus_controller::ModbusController *controller = id(pzem); auto set_addr_cmd = esphome::modbus_controller::ModbusCommandItem::create_write_single_command( controller, 0x0002, new_address);
delay(200) ; controller->queue_command(set_addr_cmd); ESP_LOGI("ModbusLambda", "PZEM Addr set");
modbus: send_wait_time: 200ms id: mod_bus_pzem
modbus_controller: - id: pzem # 当前设备地址。 address: 0x1 # 特殊地址 0xF8 是一个广播地址,任何 pzem 设备都会接受它, # 因此如果使用此地址,请确保 uart 总线上只连接了一个 pzem 设备。 # address: 0xF8 modbus_id: mod_bus_pzem command_throttle: 0ms setup_priority: -10 update_interval: 30sPZEM-004T-100A-D-P(V1.0)
Section titled “PZEM-004T-100A-D-P(V1.0)”
- 丝印标注为 V1.0,可能会误导用户尝试使用 pzem004t。
- 与其他板子的一个显著区别是标有 5V、RX、TX、CF、GND 的 5 针连接器。
- 至少在几厘米长的导线上,通过 5V 引脚供电 3.3V 时似乎可以正常工作。 此情况下无需电平转换器或更改电阻。