Energy metering with Eastron SDM630 v2 Modbus

Working Version here with a SDM630 Modbus v2 and a Waveshare RS485 to RJ45/Ethernet

Waveshare:

hass config:

modbus:
  # SDM630 PowerMeter
  - name: eastron
    type: rtuovertcp
    host: 10.0.0.28
    port: 502
    retry_on_empty: true
    close_comm_on_error: false
    retries: 10
    timeout: 15
    delay: 2
    sensors:
      - name: Phase 1 line to neutral volts
        unique_id: l1_neutral_volts
        count: 2
        data_type: float32
        precision: 2
        address: 0
        input_type: input
        slave: 1
        unit_of_measurement: V
        state_class: measurement
        device_class: voltage
      - name: Phase 2 line to neutral volts
        unique_id: l2_neutral_volts
        count: 2
        data_type: float32
        precision: 2
        address: 2
        input_type: input
        slave: 1
        unit_of_measurement: V
        state_class: measurement
        device_class: voltage
      - name: Phase 3 line to neutral volts
        unique_id: l3_neutral_volts
        count: 2
        data_type: float32
        precision: 2
        address: 4
        input_type: input
        slave: 1
        unit_of_measurement: V
        state_class: measurement
        device_class: voltage
      - name: Phase 1 current
        unique_id: l1_current
        count: 2
        data_type: float32
        precision: 2
        address: 6
        input_type: input
        slave: 1
        unit_of_measurement: A
        state_class: measurement
        device_class: current
      - name: Phase 2 current
        unique_id: l2_current
        count: 2
        data_type: float32
        precision: 2
        address: 8
        input_type: input
        slave: 1
        unit_of_measurement: A
        state_class: measurement
        device_class: current
      - name: Phase 3 current
        unique_id: l3_current
        count: 2
        data_type: float32
        precision: 2
        address: 10
        input_type: input
        slave: 1
        unit_of_measurement: A
        state_class: measurement
        device_class: current
      - name: Phase 1 power
        unique_id: l1_power
        count: 2
        data_type: float32
        precision: 2
        address: 12
        input_type: input
        slave: 1
        unit_of_measurement: W
        state_class: measurement
        device_class: power
      - name: Phase 2 power
        unique_id: l2_power
        count: 2
        data_type: float32
        precision: 2
        address: 14
        input_type: input
        slave: 1
        unit_of_measurement: W
        state_class: measurement
        device_class: power
      - name: Phase 3 power
        unique_id: l3_power
        count: 2
        data_type: float32
        precision: 2
        address: 16
        input_type: input
        slave: 1
        unit_of_measurement: W
        state_class: measurement
        device_class: power
      - name: Phase 1 Volt amps
        unique_id: l1_volt_amps
        count: 2
        data_type: float32
        precision: 2
        address: 18
        input_type: input
        slave: 1
        unit_of_measurement: VA
        state_class: measurement
        device_class: apparent_power
      - name: Phase 2 Volt amps
        unique_id: l2_volt_amps
        count: 2
        data_type: float32
        precision: 2
        address: 20
        input_type: input
        slave: 1
        unit_of_measurement: VA
        state_class: measurement
        device_class: apparent_power
      - name: Phase 3 Volt amps
        unique_id: l3_volt_amps
        count: 2
        data_type: float32
        precision: 2
        address: 22
        input_type: input
        slave: 1
        unit_of_measurement: VA
        state_class: measurement
        device_class: apparent_power
      - name: Phase 1 volt amps reactive
        unique_id: l1_volt_amps_reactive
        count: 2
        data_type: float32
        precision: 2
        address: 24
        input_type: input
        slave: 1
        unit_of_measurement: VAr
        state_class: measurement
        device_class: reactive_power
      - name: Phase 2 volt amps reactive
        unique_id: l2_volt_amps_reactive
        count: 2
        data_type: float32
        precision: 2
        address: 26
        input_type: input
        slave: 1
        unit_of_measurement: VAr
        state_class: measurement
        device_class: reactive_power
      - name: Phase 3 volt amps reactive
        unique_id: l3_volt_amps_reactive
        count: 2
        data_type: float32
        precision: 2
        address: 28
        input_type: input
        slave: 1
        unit_of_measurement: VAr
        state_class: measurement
        device_class: reactive_power
      - name: Phase 1 power factor
        unique_id: l1_power_factor
        count: 2
        data_type: float32
        precision: 2
        address: 30
        input_type: input
        slave: 1
        unit_of_measurement: "%"
        state_class: measurement
        device_class: power_factor
      - name: Phase 2 power factor
        unique_id: l2_power_factor
        count: 2
        data_type: float32
        precision: 2
        address: 32
        input_type: input
        slave: 1
        unit_of_measurement: "%"
        state_class: measurement
        device_class: power_factor
      - name: Phase 3 power factor
        unique_id: l3_power_factor
        count: 2
        data_type: float32
        precision: 2
        address: 34
        input_type: input
        slave: 1
        unit_of_measurement: "%"
        state_class: measurement
        device_class: power_factor
      - name: Phase 1 phase angle
        unique_id: l1_phase_angle
        count: 2
        data_type: float32
        precision: 2
        address: 36
        input_type: input
        slave: 1
        unit_of_measurement: Degree
        state_class: measurement
        device_class: power
      - name: Phase 2 phase angle
        unique_id: l2_phase_angle
        count: 2
        data_type: float32
        precision: 2
        address: 38
        input_type: input
        slave: 1
        unit_of_measurement: Degree
        state_class: measurement
        device_class: power
      - name: Phase 3 phase angle
        unique_id: l3_phase_angle
        count: 2
        data_type: float32
        precision: 2
        address: 40
        input_type: input
        slave: 1
        unit_of_measurement: Degree
        state_class: measurement
        device_class: power
      - name: Average line to neutral volts
        unique_id: average_line_neutral_volt
        count: 2
        data_type: float32
        precision: 2
        address: 42
        input_type: input
        slave: 1
        unit_of_measurement: V
        state_class: measurement
        device_class: voltage
      - name: Average line current
        unique_id: average_line_current
        count: 2
        data_type: float32
        precision: 2
        address: 46
        input_type: input
        slave: 1
        unit_of_measurement: A
        state_class: measurement
        device_class: current
      - name: Sum of line currents
        unique_id: sum_line_currents
        count: 2
        data_type: float32
        precision: 2
        address: 48
        input_type: input
        slave: 1
        unit_of_measurement: A
        state_class: measurement
        device_class: current
      - name: Total system power
        unique_id: total_system_power
        scan_interval: 5
        count: 2
        data_type: float32
        precision: 2
        address: 52
        input_type: input
        slave: 1
        unit_of_measurement: W
        state_class: measurement
        device_class: power
      - name: Total system volt amps
        unique_id: total_system_volt_amps
        count: 2
        data_type: float32
        precision: 2
        address: 56
        input_type: input
        slave: 1
        unit_of_measurement: VA
        state_class: measurement
        device_class: apparent_power
      - name: Total system VAr
        unique_id: total_system_var
        count: 2
        data_type: float32
        precision: 2
        address: 60
        input_type: input
        slave: 1
        unit_of_measurement: VAr
        state_class: measurement
        device_class: reactive_power
      - name: Total system power factor
        unique_id: total_system_power_factor
        count: 2
        data_type: float32
        precision: 2
        address: 62
        input_type: input
        slave: 1
        unit_of_measurement: "%"
        state_class: measurement
        device_class: power_factor
      - name: Total system phase angle
        unique_id: total_system_phase_angle
        count: 2
        data_type: float32
        precision: 2
        address: 66
        input_type: input
        slave: 1
        unit_of_measurement: Degree
        state_class: measurement
      - name: Frequency of supply voltages
        unique_id: frequency_of_supply_voltages
        count: 2
        data_type: float32
        precision: 2
        address: 70
        input_type: input
        slave: 1
        unit_of_measurement: Hz
        state_class: measurement
        device_class: frequency
      - name: Import kWh since last reset
        unique_id: Import_kWh_since_last_reset
        count: 2
        data_type: float32
        precision: 2
        address: 72
        input_type: input
        slave: 1
        unit_of_measurement: kWh
        state_class: total_increasing
        device_class: energy
      - name: Export kWh since last reset
        unique_id: Export_kWh_since_last_reset
        count: 2
        data_type: float32
        precision: 2
        address: 74
        input_type: input
        slave: 1
        unit_of_measurement: kWh
        state_class: total_increasing
        device_class: energy
      - name: Import VArh since last reset
        unique_id: Import_VArh_since_last_reset
        count: 2
        data_type: float32
        precision: 2
        address: 76
        input_type: input
        slave: 1
        unit_of_measurement: kVArh
        state_class: total
      - name: Export VArh since last reset
        unique_id: Export_VArh_since_last_reset
        count: 2
        data_type: float32
        precision: 2
        address: 78
        input_type: input
        slave: 1
        unit_of_measurement: kVArh
        state_class: total_increasing
      - name: VAh since last reset
        unique_id: VAh_since_last_reset
        count: 2
        data_type: float32
        precision: 2
        address: 80
        input_type: input
        slave: 1
        unit_of_measurement: kVAh
        state_class: total
      - name: Ah since last reset
        unique_id: Ah_since_last_reset
        count: 2
        data_type: float32
        precision: 2
        address: 82
        input_type: input
        slave: 1
        unit_of_measurement: Ah
        state_class: total
      - name: Total system power demand
        unique_id: Total_system_power_demand
        count: 2
        data_type: float32
        precision: 2
        address: 84
        input_type: input
        slave: 1
        unit_of_measurement: W
        state_class: measurement
        device_class: power
      - name: Maximum total system power demand
        unique_id: Maximum_total_system_power_demand
        count: 2
        data_type: float32
        precision: 2
        address: 86
        input_type: input
        slave: 1
        unit_of_measurement: W
        state_class: measurement
        device_class: power
      - name: Total system VA demand
        unique_id: Total_system_VA_demand
        count: 2
        data_type: float32
        precision: 2
        address: 100
        input_type: input
        slave: 1
        unit_of_measurement: VA
        state_class: measurement
        device_class: apparent_power
      - name: Maximum total system VA demand
        unique_id: Maximum_total_system_VA_demand
        count: 2
        data_type: float32
        precision: 2
        address: 102
        input_type: input
        slave: 1
        unit_of_measurement: VA
        state_class: measurement
        device_class: apparent_power
      - name: Neutral current demand
        unique_id: Neutral_current_demand
        count: 2
        data_type: float32
        precision: 2
        address: 104
        input_type: input
        slave: 1
        unit_of_measurement: A
        state_class: measurement
        device_class: current
      - name: Maximum neutral current demand
        unique_id: Maximum_neutral_current_demand
        count: 2
        data_type: float32
        precision: 2
        address: 106
        input_type: input
        slave: 1
        unit_of_measurement: A
        state_class: measurement
        device_class: current
      - name: Line 1 to Line 2 volts
        unique_id: Line1_to_Line2_volts
        count: 2
        data_type: float32
        precision: 2
        address: 200
        input_type: input
        slave: 1
        unit_of_measurement: V
        state_class: measurement
        device_class: voltage
      - name: Line 2 to Line 3 volts
        unique_id: Line2_to_Line3_volts
        count: 2
        data_type: float32
        precision: 2
        address: 202
        input_type: input
        slave: 1
        unit_of_measurement: V
        state_class: measurement
        device_class: voltage
      - name: Line 3 to Line 1 volts
        unique_id: Line3_to_Line1_volts
        count: 2
        data_type: float32
        precision: 2
        address: 204
        input_type: input
        slave: 1
        unit_of_measurement: V
        state_class: measurement
        device_class: voltage
      - name: Average line to line volts
        unique_id: Average_line_to_line_volts
        count: 2
        data_type: float32
        precision: 2
        address: 206
        input_type: input
        slave: 1
        unit_of_measurement: V
        state_class: measurement
        device_class: voltage
      - name: Neutral current
        unique_id: Neutral_current
        count: 2
        data_type: float32
        precision: 2
        address: 224
        input_type: input
        slave: 1
        unit_of_measurement: A
        state_class: measurement
        device_class: current
      - name: Phase 1 L/N volts THD
        count: 2
        data_type: float32
        precision: 2
        address: 234
        input_type: input
        slave: 1
        unit_of_measurement: "%"
        state_class: measurement
        device_class: power_factor
      - name: Phase 2 L/N volts THD
        count: 2
        data_type: float32
        precision: 2
        address: 236
        input_type: input
        slave: 1
        unit_of_measurement: "%"
        state_class: measurement
        device_class: power_factor
      - name: Phase 3 L/N volts THD
        count: 2
        data_type: float32
        precision: 2
        address: 238
        input_type: input
        slave: 1
        unit_of_measurement: "%"
        state_class: measurement
        device_class: power_factor
      - name: Phase 1 Current THD
        count: 2
        data_type: float32
        precision: 2
        address: 240
        input_type: input
        slave: 1
        unit_of_measurement: "%"
        state_class: measurement
        device_class: power_factor
      - name: Phase 2 Current THD
        count: 2
        data_type: float32
        precision: 2
        address: 242
        input_type: input
        slave: 1
        unit_of_measurement: "%"
        state_class: measurement
        device_class: power_factor
      - name: Phase 3 Current THD
        count: 2
        data_type: float32
        precision: 2
        address: 244
        input_type: input
        slave: 1
        unit_of_measurement: "%"
        state_class: measurement
        device_class: power_factor
      - name: Average line to neutral volts THD
        count: 2
        data_type: float32
        precision: 2
        address: 248
        input_type: input
        slave: 1
        unit_of_measurement: "%"
        state_class: measurement
        device_class: power_factor
      - name: Average line current THD
        count: 2
        data_type: float32
        precision: 2
        address: 250
        input_type: input
        slave: 1
        unit_of_measurement: "%"
        state_class: measurement
        device_class: power_factor
      - name: Total system power factor
        count: 2
        data_type: float32
        precision: 2
        address: 254
        input_type: input
        slave: 1
        unit_of_measurement: Degree
        state_class: measurement
      - name: Phase 1 current demand
        count: 2
        data_type: float32
        precision: 2
        address: 258
        input_type: input
        slave: 1
        unit_of_measurement: A
        state_class: measurement
        device_class: current
      - name: Phase 2 current demand
        count: 2
        data_type: float32
        precision: 2
        address: 260
        input_type: input
        slave: 1
        unit_of_measurement: A
        state_class: measurement
        device_class: current
      - name: Phase 3 current demand
        count: 2
        data_type: float32
        precision: 2
        address: 262
        input_type: input
        slave: 1
        unit_of_measurement: A
        state_class: measurement
        device_class: current
      - name: Maximum phase 1 current demand
        count: 2
        data_type: float32
        precision: 2
        address: 264
        input_type: input
        slave: 1
        unit_of_measurement: A
        state_class: measurement
        device_class: current
      - name: Maximum phase 2 current demand
        count: 2
        data_type: float32
        precision: 2
        address: 266
        input_type: input
        slave: 1
        unit_of_measurement: A
        state_class: measurement
        device_class: current
      - name: Maximum phase 3 current demand
        count: 2
        data_type: float32
        precision: 2
        address: 268
        input_type: input
        slave: 1
        unit_of_measurement: A
        state_class: measurement
        device_class: current
      - name: Line 1 to line 2 volts THD
        count: 2
        data_type: float32
        precision: 2
        address: 334
        input_type: input
        slave: 1
        unit_of_measurement: "%"
        state_class: measurement
        device_class: power_factor
      - name: Line 2 to line 3 volts THD
        count: 2
        data_type: float32
        precision: 2
        address: 336
        input_type: input
        slave: 1
        unit_of_measurement: "%"
        state_class: measurement
        device_class: power_factor
      - name: Line 3 to line 1 volts THD
        count: 2
        data_type: float32
        precision: 2
        address: 338
        input_type: input
        slave: 1
        unit_of_measurement: "%"
        state_class: measurement
        device_class: power_factor
      - name: Average line to line volts THD
        count: 2
        data_type: float32
        precision: 2
        address: 340
        input_type: input
        slave: 1
        unit_of_measurement: "%"
        state_class: measurement
        device_class: power_factor
      - name: Total kWh
        unique_id: Total_kWh
        count: 2
        data_type: float32
        precision: 2
        address: 342
        input_type: input
        slave: 1
        unit_of_measurement: kWh
        state_class: total
        device_class: energy
      - name: Total kVArh
        unique_id: Total_kVArh
        count: 2
        data_type: float32
        precision: 2
        address: 344
        input_type: input
        slave: 1
        unit_of_measurement: kVArh
        state_class: total
      - name: L1 import kWh
        unique_id: L1_import_kWh
        count: 2
        data_type: float32
        precision: 2
        address: 346
        input_type: input
        slave: 1
        unit_of_measurement: kWh
        state_class: total_increasing
        device_class: energy
      - name: L2 import kWh
        unique_id: L2_import_kWh
        count: 2
        data_type: float32
        precision: 2
        address: 348
        input_type: input
        slave: 1
        unit_of_measurement: kWh
        state_class: total_increasing
        device_class: energy
      - name: L3 import kWh
        unique_id: L3_import_kWh
        count: 2
        data_type: float32
        precision: 2
        address: 350
        input_type: input
        slave: 1
        unit_of_measurement: kWh
        state_class: total_increasing
        device_class: energy
      - name: L1 export kWh
        unique_id: L1_export_kWh
        count: 2
        data_type: float32
        precision: 2
        address: 352
        input_type: input
        slave: 1
        unit_of_measurement: kWh
        state_class: total_increasing
        device_class: energy
      - name: L2 export kWh
        unique_id: L2_export_kWh
        count: 2
        data_type: float32
        precision: 2
        address: 354
        input_type: input
        slave: 1
        unit_of_measurement: kWh
        state_class: total_increasing
        device_class: energy
      - name: L3 export kWh
        unique_id: L3_export_kWh
        count: 2
        data_type: float32
        precision: 2
        address: 356
        input_type: input
        slave: 1
        unit_of_measurement: kWh
        state_class: total_increasing
        device_class: energy
      - name: L1 total kWh
        unique_id: L1_total_kWh
        count: 2
        data_type: float32
        precision: 2
        address: 358
        input_type: input
        slave: 1
        unit_of_measurement: kWh
        state_class: total
        device_class: energy
      - name: L2 total kWh
        unique_id: L2_total_kWh
        count: 2
        data_type: float32
        precision: 2
        address: 360
        input_type: input
        slave: 1
        unit_of_measurement: kWh
        state_class: total
        device_class: energy
      - name: L3 total kWh
        unique_id: L3_total_kWh
        count: 2
        data_type: float32
        precision: 2
        address: 362
        input_type: input
        slave: 1
        unit_of_measurement: kWh
        state_class: total
        device_class: energy
      - name: L1 import kVArh
        unique_id: L1_import_kVArh
        count: 2
        data_type: float32
        precision: 2
        address: 364
        input_type: input
        slave: 1
        unit_of_measurement: kVArh
        state_class: total_increasing
      - name: L2 import kVArh
        unique_id: L2_import_kVArh
        count: 2
        data_type: float32
        precision: 2
        address: 366
        input_type: input
        slave: 1
        unit_of_measurement: kVArh
        state_class: total_increasing
      - name: L3 import kVArh
        unique_id: L3_import_kVArh
        count: 2
        data_type: float32
        precision: 2
        address: 368
        input_type: input
        slave: 1
        unit_of_measurement: kVArh
        state_class: total_increasing
      - name: L1 export kVArh
        unique_id: L1_export_kVArh
        count: 2
        data_type: float32
        precision: 2
        address: 370
        input_type: input
        slave: 1
        unit_of_measurement: kVArh
        state_class: total_increasing
      - name: L2 export kVArh
        unique_id: L2_export_kVArh
        count: 2
        data_type: float32
        precision: 2
        address: 372
        input_type: input
        slave: 1
        unit_of_measurement: kVArh
        state_class: total_increasing
      - name: L3 export kVArh
        unique_id: L3_export_kVArh
        count: 2
        data_type: float32
        precision: 2
        address: 374
        input_type: input
        slave: 1
        unit_of_measurement: kVArh
        state_class: total_increasing
      - name: L1 total kVArh
        unique_id: L1_total_kVArh
        count: 2
        data_type: float32
        precision: 2
        address: 376
        input_type: input
        slave: 1
        unit_of_measurement: kVArh
        state_class: total
      - name: L2 total kVArh
        unique_id: L2_total_kVArh
        count: 2
        data_type: float32
        precision: 2
        address: 378
        input_type: input
        slave: 1
        unit_of_measurement: kVArh
        state_class: total
      - name: L3 total kVArh
        unique_id: L3_total_kVArh
        count: 2
        data_type: float32
        precision: 2
        address: 380
        input_type: input
        slave: 1
        unit_of_measurement: kVArh
        state_class: total
3 Likes

Great. Just one more question before I buy the equipments. To connect two SDM630 units I only need one RS485 to Ethernet unit, right?

Yes. You can actually have 247 modbus devices on a single RS485 bus. Just make sure you are setting each device to a unique address. Please note that what we call address on the SDM630 is called ‘slave’ in your HA modbus set up. The address in HA refers to the address of a value (acutally a register) within a modbus device.

Here’s a picture I made while adding a third SDM630.

All devices are connected in parallel, and I twisted the wire to make improve the signal transmission.

1 Like

Hi,

How can we check if the connection is made between home-assistant and the unit.
Got the exact same one but cant get it to work so it seems?

Hi there.

I’m looking to buy a 3-phase meter to use with Home Assistant, I see that Eastron has released a “TCP” version of the SDM630 with an integrated ethernet port and Modbus/TCP. Has anyone tried it already?

Hi,

I have the EASTRON SDM630 MODBUS-MID V2
and I use Waveshare RS232/485/422 zu RJ45 Ethernet Konverter as a Gateway.

I am desperate. I cannot manage to get this two devices to work together or in Home Assistant.

First I tried to configure the gateway without the meter but I got no data even no random
noise data. Then I connected the power meter to it. The configuration looks fine. Both gateway
and power meter have the same serial properties:

  1. Baud rate: 9600
  2. Databits: 8
  3. Parity: even
  4. Stopbits: 1

I tried several tools like

  1. mbpoll (linux) → mbpoll.jpg
  2. ModScan → modscan.jjpg

Either no data is sent or the connection times out. I can ping the gateway so it should be
reachable.

I also tried to configure the gateway in Home Assistant. Same result. No data and even no
log entries although I got this in my configuration:

logger:
  logs:
    homeassistant.components.modbus: debug
    pymodbus.client: debug

I noticed that the small phone handset in the SDM630 display is missing. So I guess there is no
communication between both of them.

At the moment I am using a simple bulb and the 1p2w setting in the SDM630. Maybe that’s the
cause that the modbus is not working? Is modbus only active with a 3p4w setting?
I know this is a Home Assistant forum but maybe someone else had the same problems.

I would appreciate any kind of help and ideas.

Best regards
Goran

Hi Goran,

Have you got this to work in the end? I Was troubled with another type of Waveshare interface and got a little bit further by swapping the A and B signals around (seems like it was incorrectly labeled on the interface itself…). You may give that a try, though you may have tried that already of course.

Cheers,

Kim

Hi Kim,

I purchased an Modbus-To-USB dongle to test it directly at the computer.
It worked out of the box. So I guess the gateway does not work or cannot be configured properly.
I returned it.

At the end I found another solution:

I tried it and it works like a charme

Best regards
Goran

Thanks a lot, now i got it working. Herzlichen Dank nach dieser Anleitung funktioniert nun das Auslesen mit dem SDM630 Modbus v2 and a Waveshare RS485 to RJ45/Ethernet

@TomTomTom
I can confirm Modbus on the SDM630 works in the 1p2w settings as well.
Waveshare settings that I used:
Work mode: TCP Server.
Protocol: Modbus TCP to RTU

With that I tested if I could pull data using other tools first. With QModMaster I was able to pull data (0x04), Unit ID to what you set the SDM630 to, Start address 200, nr of registers 2, data format float, precision 3. This gave an output of 237 which is the L1 Voltage.

After this I got it to work on the Raspberry that has HASS installed. First I tried to replicate above using a Modbus integration in Node-Red as this makes it easier to play around with.

modbus:
  - name: "sdm630"
    retries: 10
    delay: 10
    message_wait_milliseconds: 1000
    timeout: 10
    type: tcp
    host: 192.168.2.40
    port: 502
    sensors:
      - name: sdm630_line_1_to_line_2_volts
        slave: 2
        address: 200
        input_type: input
        data_type: float32
        precision: 2
        unit_of_measurement: V
        device_class: voltage
      - name: sdm630_frequency_of_supply_voltages
        address: 70
        precision: 2
        input_type: input
        slave: 2
        data_type: float32
        unit_of_measurement: Hz

I had the feeling HASS only picks up Modbus configurations after a reload btw.

hello,

it’s my first time here so forgive any dumb mistakes.

but i had the same problems as descript above, i have the feeling it’s due to the fact the baudrate is to low for the modbus to function correctly, i have the same Waveshare modbus and the SDM630, and had the same problem.

I’ve set the baudrate on the SDM630 to 38400 and in the setting of the modbus.
mine is now working perfectly without losing any data or disconnection all the time. and its responding really quick.

here is my YAML and some pics of the settings that i have used.

modbus:
  - name: "sdm630"
    retries: 10
    delay: 10
    message_wait_milliseconds: 1000
    timeout: 10
    type: tcp
    host: 192.168.2.200
    port: 502
    sensors:
      - name: L1_volts
        unique_id: l1_neutral_volts
        slave: 2
        address: 0
        input_type: input
        data_type: float32
        precision: 2
        unit_of_measurement: V
        device_class: voltage
      - name: L2_volts
        unique_id: l2_neutral_volts
        slave: 2
        address: 2
        input_type: input
        data_type: float32
        precision: 2
        unit_of_measurement: V
        device_class: voltage
      - name: L3_volts
        unique_id: l3_neutral_volts
        slave: 2
        address: 4
        input_type: input
        data_type: float32
        precision: 2
        unit_of_measurement: V
        device_class: voltage
      - name: frequency
        unique_id: frequency
        address: 70
        precision: 2
        input_type: input
        slave: 2
        data_type: float32
        unit_of_measurement: Hz
      - name: L1_KW
        unique_id: L1_KW
        address: 12
        precision: 2
        input_type: input
        slave: 2
        scale: 0.001
        data_type: float32
        unit_of_measurement: KW
      - name: L2_KW
        unique_id: L2_KW
        address: 14
        precision: 2
        input_type: input
        slave: 2
        scale: 0.001
        data_type: float32
        unit_of_measurement: KW
      - name: L3_KW
        unique_id: L3_KW
        address: 16
        precision: 2
        input_type: input
        slave: 2
        scale: 0.001
        data_type: float32
        unit_of_measurement: KW
      - name: total_power_KW
        unique_id: totaal_KW
        address: 52
        precision: 2
        input_type: input
        slave: 2
        scale: 0.001
        data_type: float32
        unit_of_measurement: KW

Hello, how do you differentiate the individual electricity meters, any photos of the screens.
Thank you.

What do you mean? In HA configuration, or the configuration of the power meters?

Your power meters need to be configured to different addresses. Then, in HA, you basically use these addresses to talk to the devices. I am happy to share some pictures, but it would be great if you could tell a bit more on what you want to know.

For the power meter, here’s a manual: https://www.photovoltaikforum.com/core/attachment/153858-sdm630-modbus-v2-manual-incl-protocoll-pdf/

Page 14 shows how to set the address on the SDM630. In HA the device address is mentioned in the YAML as ‘slave’. That is what you use to differentiate between different devices. Note that ‘address’ means a different address within a device to read different values (power, amps, volts, etc…). It is typically called coil, register, location or address.

Hello, I am concerned with how to easily add data from only one specific electricity meter to the HA control panel, when there will be more electricity meters (approx. 30 units). I would have multiple control panels in HA, each with one meter.
Thank you.
I can’t speak English, translate by Google.

Hello, I understand the address settings in the SDM630 electricity meter and the slave in YAML. I found your YAML where sdm630a and sdm630b are. How to easily create one control panel in HA for sdm630a only and another control panel for sdm630b only.
Thank you.

Hello, I think I already know how to do it. I’ll set up my first control panel and then copy the code. I’ll just replace the sdm630a with the sdm630c.

Excellent. If you have 30 units, that is lot. I’d love to see some pictures of that. Also, you may want to use something else then A, B, C, etc… maybe the address of the device. When doing that, you also can easily use search and replace on on the YAML.

Hello, that’s just my goal (30 pcs). I just got the SDM630 and HA connection now. My next problem is creating a network between buildings. Only some of the buildings have an Ethernet cable.

Hello,
I would like to buy a SDM630 Modbus and it seems that only the V3 version is available.
What changes between versions V2 and V3?
Do they have the same register numbers?
Thanks

Hi, i am also using V3. I is working, too!