Connect PZEM-016 Energy Meter (ModBus) to Home Assistant – part 1 (via RS485 to TTL converter using Wemos D1 mini esp8266 and ESPHome)

There are several ways to connect PZEM-016 energy meter (RS485 ModBus output). I will cover each of them.

The first way to connect – using RS485 to TTL converter, Wemos D1 mini (esp8266) board and ESPHOME add-on (ver. 1.18.0) in Home Assistant 2021 (core-2021.6.0, supervisor-2021.05.4, Home Assistant OS 5.13) This method is convenient because PZEM-016 is connected via a wireless network (ESPHome WiFi).

The wiring diagram is shown below:

pzem-016-rs485-ttl-esp8266-d1-mini
pzem-016-rs485-ttl-esp8266-d1-mini

Please note that the ports of the converter are connected as is, not crosswise – A to A, B to B, TX to TX, RX to RX!

Use 5V connector, not 3.3V from D1 mini (yes, it safe), otherwise the system will not work correctly.

Next, you need to open ESPHOME add-on and add your Wemos D1 mini board with code:

esphome:
  name: esphome006
  platform: ESP8266
  board: d1_mini

#visit techlifetravel.com for more info

wifi:
  ssid: "YOUR_AP"
  password: "YOUR_AP_PASSWORD"
  fast_connect: on

# Enable logging
logger:

# Enable Home Assistant API
api:
  password: "YOUR_HA_API_PASSWORD"

ota:
  password: "YOUR_HA_API_PASSWORD"
  
#
uart:
  rx_pin: D5
  tx_pin: D6
  baud_rate: 9600
  stop_bits: 1

sensor:
  - platform: pzemac
    current:
      name: "PZEM-016 Current"
    voltage:
      name: "PZEM-016 Voltage"
    energy:
      name: "PZEM-016 Energy"
    power:
      name: "PZEM-016 Power"
    frequency:
      name: "PZEM-016 Frequency"
    power_factor:
      name: "PZEM-016 Power Factor"
    update_interval: 10s
#
  - platform: wifi_signal
    name: "esphome006 WiFi signal"
    update_interval: 60s
  - platform: uptime
    name: esphome006 Uptime
    
time:
  - platform: homeassistant
    id: hass_time

If everything is done correctly, then in the esphome log you will see the data coming from your PZEM-016 energy monitor:

[03:12:38][D][pzemac:049]: PZEM AC: V=232.3 V, I=0.000 A, P=0.5 W, E=91.0 Wh, F=50.0 Hz, PF=1.00
[03:12:38][D][sensor:099]: 'PZEM-016 Voltage': Sending state 232.30000 V with 1 decimals of accuracy
[03:12:38][D][sensor:099]: 'PZEM-016 Current': Sending state 0.00000 A with 3 decimals of accuracy
[03:12:38][D][sensor:099]: 'PZEM-016 Power': Sending state 0.50000 W with 2 decimals of accuracy
[03:12:38][D][sensor:099]: 'PZEM-016 Energy': Sending state 91.00000 Wh with 0 decimals of accuracy
[03:12:38][D][sensor:099]: 'PZEM-016 Frequency': Sending state 50.00000 Hz with 1 decimals of accuracy
[03:12:38][D][sensor:099]: 'PZEM-016 Power Factor': Sending state 1.00000  with 2 decimals of accuracy

Now you can add PZEM-016 energy meter readings to your Home Assistant dashboard:

This completes the setup. In the second part you can read how to connect PZEM-016 using a RS485 to USB converter directly to Home Assistant server.

Advertisement
Previous articleDokuWiki on a USB Stick in 2021
Next articleConnect PZEM-016 Energy Meter (ModBus) to Home Assistant – part 2 (directly via RS485 to USB dongle)

1 COMMENT

LEAVE A REPLY

Please enter your comment!
Please enter your name here