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 (可选, 时间): 检查传感器的间隔。 默认为
60s。 -
address (可选, 整数): 如果多个传感器连接到同一 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: ## 在设置时配置控制器设置 ## 确保 priority 低于 modbus_controller 的 setup_priority priority: -100 then: - lambda: |- auto new_address = 0x03;
if(new_address < 0x01 || new_address > 0xF7) // 合理性检查 { 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 设备接受的广播地址, # 所以如果您使用此地址,请确保只有一个 pzem 设备连接 # 到 uart 总线。 # address: 0xF8 modbus_id: mod_bus_pzem command_throttle: 0ms setup_priority: -10 update_interval: 30s