跳转到内容

Peacefair PZEM-004T V3 电能监测仪

NOTE

此页面不完整,需要进一步完善。如果您想要贡献,请参阅我们的 开发者网站。此页面缺少:

  • 此设备实际使用时的图片/截图/示例配置。

pzemac 传感器平台允许您在 ESPHome 中使用 PZEM-004T V3 电能监测仪 (网站数据手册)。

传感器可以以多种配置连接 - 请参阅 制造商网站 获取更多信息。

WARNING

请注意,PZEM 模块内部的计量芯片由交流侧供电,在 ESPHome 设备启动期间必须保持开启,否则测量结果将不可见。

PZEM-004T 版本 3。

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。

此动作在执行时重置给定 ID 的 pzemac 设备的总电能值。

on_...:
then:
- pzemac.reset_energy: pzemac_1

您可以使用以下配置更改传感器的地址。 您必须将 modbus_controlleraddress 设置为当前地址,并将 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