In the first part, we described how to connect PZEM-016 ModBus energy monitor using RS485 to TTL converter and Wemos D1 mini board using ESPHome add-on. You can read about it here.
This post was updated (07 April 2022) to be compatible with latest Home Assistant 2022.4.0
Now, in the second part, we will show you how to connect PZEM-016 energy monitor using RS485 to USB dongle. This is an easier way to connect, but it requires laying the RS485 bus line to the Home Assistant server location.
The required components and wiring diagram are shown below:


Plug RS485 to USB dongle into your Home Assistant 2022.4.0 server (my server info: core-2022.4.0, supervisor-2022.03.5, Home Assistant OS 7.6, Linux Operating System Version 5.10.108, update channel stable)
Add this code to your HA configuration.yaml file
modbus:
- name: rs485usb
type: serial
method: rtu
port: /dev/ttyUSB1
baudrate: 9600
stopbits: 1
bytesize: 8
parity: N
timeout: 1
sensors:
- name: HousePower_PhaseA_Voltage
unit_of_measurement: V
slave: 1
address: 0
input_type: input
scale: 0.1
offset: 0
precision: 1
data_type: int16
device_class: voltage
- name: HousePower_PhaseA_Current
unit_of_measurement: A
slave: 1
address: 1
count: 2
swap: word
input_type: input
scale: 0.001
offset: 0
precision: 1
data_type: int32
device_class: current
- name: HousePower_PhaseA_Power
unit_of_measurement: W
slave: 1
address: 3
count: 2
swap: word
input_type: input
scale: 0.1
offset: 0
precision: 1
data_type: int32
device_class: power
- name: HousePower_PhaseA_Wh
unit_of_measurement: Wh
slave: 1
address: 5
count: 2
swap: word
input_type: input
scale: 1
offset: 0
precision: 1
data_type: int32
device_class: energy
state_class: total_increasing
- name: HousePower_PhaseA_Frequency
unit_of_measurement: Hz
slave: 1
address: 7
input_type: input
scale: 0.1
offset: 0
precision: 1
data_type: int16
device_class: frequency
- name: HousePower_PhaseA_PowerFactor
unit_of_measurement: Pf
slave: 1
address: 8
input_type: input
scale: 0.01
offset: 0
precision: 1
data_type: int16
device_class: power_factor
Be careful and choose the correct port! (for example my port – /dev/ttyUSB2)
If everything works correctly, 6 new sensors (sensor.housepower_phasea_xxx) will appear in the system. You can add them to Home Assistant dashboard manually.
That’s all, PZEM-016 energy monitor is connected! 🙂
In the third part, we will tell you how you can get data from the PZEM-016 using MQTT.



Hi – This seems to work well – got it on the first try. However, for some reason the current always read 0.
Any ideas?
Are you sure you connected the sensor to only one wire (L or N), and not to both at once? AC cable should be also connected.
Sorry for the delay – I ended up using the TTL/Wemos as the power I wanted to monitor is no where near my HA. Attached to the Clothes Dryer Cable, I get a max of about .125A, which I am sure is not right (for safety sake, I connected power to 120V instead of to the dryer line itself (which, based on the 3 breakers assigned to this dryer, I would assume is really 3x the value I get, but that is still well less than 1A.)