Dear all,
I've been struggling for hours and hours now to get this setup working, so it's time to ask for some help ![]()
This is my first ESPHome appliance/experience and I'm trying to use ESPHome (current version: 2026.6.4) to get data from the SDM120M in HomeAssistant and the internet states ESPHome has a good solution for that ![]()
I have a
-
Eastron SDM120M
-
this UART-RS485 converter (UART TTL to RS485 Two-way Converter | Elecrow) connected ground-ground, A-A and B-B
-
a Doit 38 pin ESP32-32D connected with pin 16 and 17 to TX/RX and vin to vcc and gnd to gnd while powered by USB
-
I figured I have the UART TX/RX and the ESPHome config for this module allright since the UART-RS485 module repeats and the ESP receives the messages send
However... I haven't succeded in getting any response from the meter yet.
I clicked on the meter and discovered some parameters and used those:
- id = 1
- baud = 9600
- prty = none
I allready succeeded in updating the firmware via OTA and have this config right now:
esphome:
name: rs548-kwh-meter-pv
friendly_name: RS548-kWh-meter pv
area: Meterkast
esp32:
board: esp32doit-devkit-v1
framework:
type: esp-idf
advanced:
enable_full_printf: true
variant: ESP32
logger:
level: DEBUG
api:
encryption:
key: *******
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
ap:
ssid: sdm120m-reader-AP
password: *********
# UART voor RS485 (TTL side)
uart:
id: uart_rs485
tx_pin:
number: GPIO16
rx_pin: GPIO17
baud_rate: 9600
data_bits: 8
parity: NONE
stop_bits: 1
debug:
direction: BOTH
dummy_receiver: false
after:
delimiter: \n
debug_prefix: "[UART-RS485] "
# Modbus component (geen DE/RE pin nodig bij mijn Elecrow board)
sensor:
- platform: sdm_meter
modbus_id: modbus1
address: 0x1
total_power:
name: Total Power
device_class: power
unit_of_measurement: W
- platform: sdm_meter
modbus_id: modbus1
address: 0x2
total_power:
name: Total Power2
device_class: power
unit_of_measurement: W
- platform: sdm_meter
modbus_id: modbus1
address: 0x3
total_power:
name: Total Power3
device_class: power
unit_of_measurement: W
- platform: sdm_meter
modbus_id: modbus1
address: 0x4
total_power:
name: Total Power4
device_class: power
unit_of_measurement: W
- platform: sdm_meter
modbus_id: modbus1
address: 0x5
total_power:
name: Total Power5
device_class: power
unit_of_measurement: W
- platform: sdm_meter
modbus_id: modbus1
address: 0x6
total_power:
name: Total Power6
device_class: power
unit_of_measurement: W
- platform: sdm_meter
modbus_id: modbus1
address: 0x7
total_power:
name: Total Power7
device_class: power
unit_of_measurement: W
- platform: sdm_meter
modbus_id: modbus1
address: 0x8
total_power:
name: Total Power8
device_class: power
unit_of_measurement: W
- platform: sdm_meter
modbus_id: modbus1
address: 0x9
total_power:
name: Total Power9
device_class: power
unit_of_measurement: W
ota:
- platform: esphome
captive_portal:
id: sdm120m_reader_AP
modbus:
- id: modbus1
role: client
As you can see I just tried different addresses to see if that is the problem, without any luck.
I really don't know what is going wrong, Is there anyone who sees what I did wrong or what I can do to check where the problem is?
I'm not everyday able to fysically check the setup so if nessecary to check it locally it takes some time. So I would prefer to do a check via new firmware over fysical acces, but solving the problem is the main priority.
Looking out for your answers ![]()
edit: added yaml code in code tags</>








