PZEM004T v1 (bản xuất khẩu) or V3 nội địa - tham khảo giá trên
shopee
ESP32, ESP32-C3 SuperMini ... nếu là ESP32-C3 SuperMini thì nên mua bản có anten (tham khảo ở
shopee
)
Tham khảo thêm phần cứng
Nếu mẫu PZEM004T đang dùng không phù hợp hoặc cần so sánh phiên bản khác, có thể tham khảo thêm
một mẫu PZEM004T khác trên Shopee
. Trước khi đấu nối, mình vẫn cần kiểm tra đúng phiên bản, sơ đồ chân và điện áp của module.
esphome:name:pzem004t-mqttfriendly_name:PZEM004T to MQTTmin_version:2025.3.2name_add_mac_suffix:trueplatformio_options:board_build.f_flash:40000000Lboard_build.flash_mode:dioboard_build.flash_size:4MBesp32:board:esp32-c3-devkitm-1framework:type:esp-idfuart:rx_pin:8tx_pin:9baud_rate:9600modbus:mqtt:broker:"192.168.0.4"username:"user"password:"password"discovery:falsediscover_ip:falsewifi:ssid:"WIFI SSID"password:"********"ota:- platform:esphomepassword:"******"logger:level:INFOsensor:- platform:pzemaccurrent:name:"PZEM-004T Current"voltage:name:"PZEM-004T Voltage"energy:# Nhân Energy với 0.001 để quy đổi đơn vị từ Wh sang kWhname:"PZEM-004T Energy"filters:- multiply:0.001power:name:"PZEM-004T Power"frequency:name:"PZEM-004T Frequency"power_factor:name:"PZEM-004T Power Factor"update_interval:2s- platform:wifi_signalname:"WiFi Signal dB"id:wifi_signal_dbupdate_interval:300s- platform:copysource_id:wifi_signal_dbname:"WiFi Signal Percent"filters:- lambda:return min(max(2 * (x + 100.0), 0.0), 100.0);unit_of_measurement:"Signal %"
UID:mqtt:topic:17653025f5:3574a13d85label:PZEM004T Power MonitorthingTypeUID:mqtt:topicconfiguration:{}bridgeUID:mqtt:broker:17653025f5location:Housechannels:- id:PZEM004T_House_VoltagechannelTypeUID:mqtt:numberlabel:PZEM004T House Voltagedescription:""configuration:stateTopic:pzem004t-mqtt-be5d84/sensor/pzem-004t_voltage/state- id:PZEM004T_House_PowerchannelTypeUID:mqtt:numberlabel:PZEM004T House Powerdescription:""configuration:stateTopic:pzem004t-mqtt-be5d84/sensor/pzem-004t_power/state- id:PZEM004T_House_CurrentchannelTypeUID:mqtt:numberlabel:PZEM004T House Currentdescription:""configuration:stateTopic:pzem004t-mqtt-be5d84/sensor/pzem-004t_current/state- id:PZEM004T_House_EnergychannelTypeUID:mqtt:numberlabel:PZEM004T House Energydescription:""configuration:stateTopic:pzem004t-mqtt-be5d84/sensor/pzem-004t_energy/state- id:PZEM004T_House_FreqchannelTypeUID:mqtt:numberlabel:PZEM004T House Frequencydescription:""configuration:stateTopic:pzem004t-mqtt-be5d84/sensor/pzem-004t_frequency/state- id:PZEM004T_House_PowerFactorchannelTypeUID:mqtt:numberlabel:PZEM004T House PowerFactordescription:""configuration:stateTopic:pzem004t-mqtt-be5d84/sensor/pzem-004t_power_factor/state- id:PZEM004T_House_Sensor_StatuschannelTypeUID:mqtt:stringlabel:PZEM004T House Sensor Statusdescription:""configuration:stateTopic:pzem004t-mqtt/status- id:PZEM004T_House_Wifi_Sginal_Level_dBchannelTypeUID:mqtt:numberlabel:PZEM004T House Wifi Sginal Level dBdescription:""configuration:stateTopic:pzem004t-mqtt-be5d84/sensor/wifi_signal_db/state- id:PZEM004T_House_Wifi_Sginal_Level_PercentchannelTypeUID:mqtt:numberlabel:PZEM004T House Wifi Sginal Level Percentdescription:""configuration:stateTopic:pzem004t-mqtt-be5d84/sensor/wifi_signal_percent/state
BONUS DSL Script tính số điện sử dụng trong ngày,tháng, khoảng thời gian
Dữ liệu sẽ update vào 3 item là: Energy_Consumption_Day, Energy_Consumption_Month, Energy_Consumption_Period.
logInfo("EnergyConsumption", "Current Energy: " + PZEM004T_House_Energy.state.toString + " - " + now.toString)
val startOfDay = now.with(LocalTime.MIDNIGHT)
val startOfMonth = now.withDayOfMonth(1).with(LocalTime.MIDNIGHT)
val startOfPeriod = now.withMonth(4).withDayOfMonth(1).with(LocalTime.MIDNIGHT) // Bắt đầu vào 1 tháng 4
val dayAgoValue = PZEM004T_House_Energy.persistedState(startOfDay)
val monthAgoValue = PZEM004T_House_Energy.persistedState(startOfMonth)
val periodAgoValue = PZEM004T_House_Energy.persistedState(startOfPeriod)
val currentEnergy = PZEM004T_House_Energy.state as QuantityType<Number>
val dayEnergy = dayAgoValue.state as QuantityType<Number>
val monthEnergy = monthAgoValue.state as QuantityType<Number>
val periodEnergy = periodAgoValue.state as QuantityType<Number>
val dailyConsumption = (currentEnergy.subtract(dayEnergy)).doubleValue
val monthlyConsumption = (currentEnergy.subtract(monthEnergy)).doubleValue
val periodConsumption = (currentEnergy.subtract(periodEnergy)).doubleValue
// Update Items with calculated values
Energy_Consumption_Day.postUpdate(dailyConsumption)
Energy_Consumption_Month.postUpdate(monthlyConsumption)
Energy_Consumption_Period.postUpdate(periodConsumption)
Góp Ý / Bình Luận / Đánh giá