Integration of an Eltako Modbus Electric Meter

I was a little surprised that nobody tried to integrate a dsz15dzmod-3x80a via modbus directly into Homeassistant

So i tried it and failed - but probably you could help me here:
in linux i can read each of the entities via mbpoll like this:

mbpoll -m rtu -a 1 -b 9600 -d 8 -s 1 -P none -t 3:hex -r 99 -c 2 /dev/ttyUSB1

This is the modbus documentation of the electric meter:

but in homeassistant i accordingly created a modbus.yaml but the readings don’t work there - here my testing config:

- name: eltako
  type: serial
  method: rtu
  port: /dev/ttyUSB1
  #port: /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A5069RR4-if00-port0
  baudrate: 9600
  stopbits: 1
  bytesize: 8
  parity: N
  timeout: 5
  sensors:
    # mbpoll -m rtu -a 1 -b 9600 -d 8 -s 1 -P none -t 3:hex -r 1 -c 2 /dev/ttyUSB1
    - name: "Spannung L1-N"
      unit_of_measurement: "V"
      slave: 1
      address: 0
      input_type: holding
      # liest zwei Register aus:
      data_type: int16
#      count: 2
      scale: 0.1

    # mbpoll -m rtu -a 1 -b 9600 -d 8 -s 1 -P none -t 3:hex -r 3 -c 2 /dev/ttyUSB1
    - name: "Spannung L2-N"
      unit_of_measurement: "V"
      slave: 1
      address: 2
      input_type: holding
      data_type: int32
      scale: 0.1

    # mpoll -m rtu -a 1 -b 9600 -d 8 -s 1 -P none -t 3:hex -r 5 -c 2 /dev/ttyUSB1
    - name: "Spannung L3-N"
      unit_of_measurement: "V"
      slave: 1
      address: 4
      input_type: holding
      data_type: int64
      scale: 0.1

    # mbpoll -m rtu -a 1 -b 9600 -d 8 -s 1 -P none -t 3:hex -r 7 -c 2 /dev/ttyUSB1
    - name: "Strom L1"
      unit_of_measurement: "A"
      slave: 1
      address: 6
      input_type: holding
      data_type: float16
      scale: 0.001

    # mbpoll -m rtu -a 1 -b 9600 -d 8 -s 1 -P none -t 3:hex -r 9 -c 2 /dev/ttyUSB1
    - name: "Strom L2"
      unit_of_measurement: "A"
      slave: 1
      address: 8
      input_type: holding
      data_type: float32
      scale: 0.001

    # mbpoll -m rtu -a 1 -b 9600 -d 8 -s 1 -P none -t 3:hex -r 11 -c 2 /dev/ttyUSB1
    - name: "Strom L3"
      unit_of_measurement: "A"
      slave: 1
      address: 10
      input_type: holding
      data_type: float64
      scale: 0.001

    # L1 active power
    # mbpoll -m rtu -a 1 -b 9600 -d 8 -s 1 -P none -t 3:hex -r 13 -c 2 /dev/ttyUSB1
    - name: "L1 Active Power"
      unit_of_measurement: "kW"
      slave: 1
      address: 12
      input_type: holding
      data_type: uint16
      scale: 0.001

    # L2 active power
    # mbpoll -m rtu -a 1 -b 9600 -d 8 -s 1 -P none -t 3:hex -r 15 -c 2 /dev/ttyUSB1
    - name: "L2 Active Power"
      unit_of_measurement: "kW"
      slave: 1
      address: 14
      input_type: holding
      data_type: uint32
      scale: 0.001

    # L3 active power
    # mbpoll -m rtu -a 1 -b 9600 -d 8 -s 1 -P none -t 3:hex -r 17 -c 2 /dev/ttyUSB1
    - name: "L3 Active Power"
      unit_of_measurement: "kW"
      slave: 1
      address: 16
      input_type: holding
      data_type: uint64
      scale: 0.001

    # L1 power factor
    # mbpoll -m rtu -a 1 -b 9600 -d 8 -s 1 -P none -t 3:hex -r 31 -c 2 /dev/ttyUSB1
    - name: "L1 Power Factor"
      unit_of_measurement: ""
      slave: 1
      address: 30
      input_type: holding
      data_type: int16
#      scale: 0.001

    # L2 power factor
    # mbpoll -m rtu -a 1 -b 9600 -d 8 -s 1 -P none -t 3:hex -r 33 -c 2 /dev/ttyUSB1
    - name: "L2 Power Factor"
      unit_of_measurement: ""
      slave: 1
      address: 32
      input_type: holding
      data_type: int32

    # L3 power factor
    # mbpoll -m rtu -a 1 -b 9600 -d 8 -s 1 -P none -t 3:hex -r 35 -c 2 /dev/ttyUSB1
    - name: "L3 Power Factor"
      unit_of_measurement: ""
      slave: 1
      address: 34
      input_type: holding
      data_type: int64

    # mbpoll -m rtu -a 1 -b 9600 -d 8 -s 1 -P none -t 3:hex -r 53 -c 2 /dev/ttyUSB1
    - name: "Total active power"
      unit_of_measurement: "kW"
      slave: 1
      address: 52
      input_type: holding
      data_type: int32
      scale: 1

    # mbpoll -m rtu -a 1 -b 9600 -d 8 -s 1 -P none -t 3:hex -r 63 -c 2 /dev/ttyUSB1
    - name: "Total Power Factor"
      unit_of_measurement: ""
      slave: 1
      address: 62
      input_type: holding
      data_type: int32
      scale: 1

    # mbpoll -m rtu -a 1 -b 9600 -d 8 -s 1 -P none -t 3:hex -r 73 -c 2 /dev/ttyUSB1
    - name: "Gesamtbezogene Wirkenergie"
      unit_of_measurement: "kWh"
      slave: 1
      address: 72
      input_type: holding
      data_type: float32
      # count: 2
      scale: 0.001

      # mbpoll -m rtu -a 1 -b 9600 -d 8 -s 1 -P none -t 3:hex -r 75 -c 2 /dev/ttyUSB1
    - name: "Gesamteingespeiste Wirkenergie"
      unit_of_measurement: "kWh"
      slave: 1
      address: 74
      input_type: holding
      data_type: string
      count: 2
      scale: 0.001

    # mbpoll -m rtu -a 1 -b 9600 -d 8 -s 1 -P none -t 3:hex -r 97 -c 2 /dev/ttyUSB1
    - name: "Teilbezogene Wirkenergie"
      unit_of_measurement: "kWh"
      slave: 1
      address: 96
      input_type: holding
      data_type: float32

    # mbpoll -m rtu -a 1 -b 9600 -d 8 -s 1 -P none -t 3:hex -r 99 -c 2 /dev/ttyUSB1
    - name: "Teileingespeiste Wirkenergie"
      unit_of_measurement: "kWh"
      slave: 1
      address: 98
      input_type: holding
      data_type: float32
      scale: 0.001

but none of the data_types produces working entries:

what can i do?

My HAOS Instance:

Home Assistant
Core 2024.11.3
Supervisor 2024.11.4
Operating System 13.2
Frontend 20241106.2

The FTDI in HAOS:

in the Error log are repeated error-entries

2024-12-04 11:51:23.280 ERROR (MainThread) [homeassistant.components.modbus.modbus] Pymodbus: eltako: Error: device: 1 address: 6 -> pymodbus returned isError True
2024-12-04 11:51:23.526 ERROR (MainThread) [homeassistant.components.modbus.modbus] Pymodbus: eltako: Error: device: 1 address: 12 -> pymodbus returned isError True
2024-12-04 11:51:23.726 ERROR (MainThread) [homeassistant.components.modbus.modbus] Pymodbus: eltako: Error: device: 1 address: 30 -> pymodbus returned isError True
2024-12-04 11:51:38.267 ERROR (MainThread) [homeassistant.components.modbus.modbus] Pymodbus: eltako: Error: device: 1 address: 6 -> pymodbus returned isError True
2024-12-04 11:51:38.465 ERROR (MainThread) [homeassistant.components.modbus.modbus] Pymodbus: eltako: Error: device: 1 address: 12 -> pymodbus returned isError True
2024-12-04 11:51:38.709 ERROR (MainThread) [homeassistant.components.modbus.modbus] Pymodbus: eltako: Error: device: 1 address: 30 -> pymodbus returned isError True
2024-12-04 11:51:53.260 ERROR (MainThread) [homeassistant.components.modbus.modbus] Pymodbus: eltako: Error: device: 1 address: 6 -> pymodbus returned isError True
2024-12-04 11:51:53.435 ERROR (MainThread) [homeassistant.components.modbus.modbus] Pymodbus: eltako: Error: device: 1 address: 12 -> pymodbus returned isError True
2024-12-04 11:51:53.644 ERROR (MainThread) [homeassistant.components.modbus.modbus] Pymodbus: eltako: Error: device: 1 address: 30 -> pymodbus returned isError True
2024-12-04 11:52:08.232 ERROR (MainThread) [homeassistant.components.modbus.modbus] Pymodbus: eltako: Error: device: 1 address: 6 -> pymodbus returned isError True
2024-12-04 11:52:08.442 ERROR (MainThread) [homeassistant.components.modbus.modbus] Pymodbus: eltako: Error: device: 1 address: 12 -> pymodbus returned isError True
2024-12-04 11:52:08.688 ERROR (MainThread) [homeassistant.components.modbus.modbus] Pymodbus: eltako: Error: device: 1 address: 30 -> pymodbus returned isError True
2024-12-04 11:52:23.375 ERROR (MainThread) [homeassistant.components.modbus.modbus] Pymodbus: eltako: Error: device: 1 address: 6 -> pymodbus returned isError True
2024-12-04 11:52:23.624 ERROR (MainThread) [homeassistant.components.modbus.modbus] Pymodbus: eltako: Error: device: 1 address: 12 -> pymodbus returned isError True
2024-12-04 11:52:23.867 ERROR (MainThread) [homeassistant.components.modbus.modbus] Pymodbus: eltako: Error: device: 1 address: 30 -> pymodbus returned isError True

For easier debugging i reduced the config to one value:

- name: eltako
  type: serial
  method: rtu
  port: /dev/ttyUSB1
  #port: /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A5069RR4-if00-port0
  baudrate: 9600
  stopbits: 1
  bytesize: 8
  parity: N
  timeout: 5
  sensors:
    # mbpoll -m rtu -a 1 -b 9600 -d 8 -s 1 -P none -t 3:hex -r 1 -c 2 /dev/ttyUSB0
    - name: "Spannung L1-N"
      unit_of_measurement: "V"
      slave: 1
      address: 0
      input_type: holding
      data_type: int32  # Korrekt für 4-Byte-Integer
      scale: 0.1

in the debug logs than appears this:

2024-12-04 14:56:21.298 DEBUG (SyncWorker_4) [pymodbus.logging] Current transaction state - TRANSACTION_COMPLETE
2024-12-04 14:56:21.298 DEBUG (SyncWorker_4) [pymodbus.logging] Running transaction 228
2024-12-04 14:56:21.298 DEBUG (SyncWorker_4) [pymodbus.logging] SEND: 0x0 0xe4 0x0 0x0 0x0 0x6 0x2 0x3 0x40 0x69 0x0 0x3c
2024-12-04 14:56:21.298 DEBUG (SyncWorker_4) [pymodbus.logging] New Transaction state "SENDING"
2024-12-04 14:56:21.301 DEBUG (SyncWorker_4) [pymodbus.logging] Changing transaction state from "SENDING" to "WAITING FOR REPLY"
2024-12-04 14:56:21.575 DEBUG (SyncWorker_4) [pymodbus.logging] Changing transaction state from "WAITING FOR REPLY" to "PROCESSING REPLY"
2024-12-04 14:56:21.575 DEBUG (SyncWorker_4) [pymodbus.logging] RECV: 0x0 0xe4 0x0 0x0 0x0 0x7b 0x2 0x3 0x78 0xc 0x1c 0x0 0x4a 0x0 0x0 0x0 0x0 0x0 0xe5 0x0 0xe6 0x3 0xe8 0x0 0x0 0x8 0xd 0x0 0x1e 0x0 0x3d 0x1b 0x86 0x0 0x23 0x0 0xf6 0xff 0xff 0xff 0xff 0x0 0x0 0xff 0xff 0xff 0xff 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0xf 0x0 0x0 0x0 0x0 0x0 0xa2 0x9 0x9 0x0 0xe7 0x9 0x12 0x1 0xa4 0x0 0x1 0x0 0x1 0xff 0xff 0x0 0x1 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x1 0xfa 0x0 0x1e 0x0 0x0 0x0 0x0 0x0 0x0
2024-12-04 14:56:21.575 DEBUG (SyncWorker_4) [pymodbus.logging] Processing: 0x0 0xe4 0x0 0x0 0x0 0x7b 0x2 0x3 0x78 0xc 0x1c 0x0 0x4a 0x0 0x0 0x0 0x0 0x0 0xe5 0x0 0xe6 0x3 0xe8 0x0 0x0 0x8 0xd 0x0 0x1e 0x0 0x3d 0x1b 0x86 0x0 0x23 0x0 0xf6 0xff 0xff 0xff 0xff 0x0 0x0 0xff 0xff 0xff 0xff 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0xf 0x0 0x0 0x0 0x0 0x0 0xa2 0x9 0x9 0x0 0xe7 0x9 0x12 0x1 0xa4 0x0 0x1 0x0 0x1 0xff 0xff 0x0 0x1 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x1 0xfa 0x0 0x1e 0x0 0x0 0x0 0x0 0x0 0x0
2024-12-04 14:56:21.575 DEBUG (SyncWorker_4) [pymodbus.logging] Factory Response[ReadHoldingRegistersResponse': 3]
2024-12-04 14:56:21.575 DEBUG (SyncWorker_4) [pymodbus.logging] Adding transaction 228
2024-12-04 14:56:21.576 DEBUG (SyncWorker_4) [pymodbus.logging] Very short frame (NO MBAP):  wait for more data
2024-12-04 14:56:21.576 DEBUG (SyncWorker_4) [pymodbus.logging] Getting transaction 228
2024-12-04 14:56:21.576 DEBUG (SyncWorker_4) [pymodbus.logging] Changing transaction state from "PROCESSING REPLY" to "TRANSACTION_COMPLETE"
2024-12-04 14:56:21.576 DEBUG (SyncWorker_4) [pymodbus.logging] [3100, 74, 0, 0, 229, 230, 1000, 0, 2061, 30, 61, 7046, 35, 246, 65535, 65535, 0, 65535, 65535, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2319, 0, 0, 162, 2313, 231, 2322, 420, 1, 1, 65535, 1, 0, 0, 0, 0, 0, 0, 0, 506, 30, 0, 0, 0]
2024-12-04 14:56:21.577 DEBUG (SyncWorker_42) [pymodbus.logging] Current transaction state - TRANSACTION_COMPLETE
2024-12-04 14:56:21.577 DEBUG (SyncWorker_42) [pymodbus.logging] Running transaction 229
2024-12-04 14:56:21.577 DEBUG (SyncWorker_42) [pymodbus.logging] SEND: 0x0 0xe5 0x0 0x0 0x0 0x6 0x2 0x3 0x40 0xbf 0x0 0x58
2024-12-04 14:56:21.577 DEBUG (SyncWorker_42) [pymodbus.logging] New Transaction state "SENDING"
2024-12-04 14:56:21.577 DEBUG (SyncWorker_42) [pymodbus.logging] Changing transaction state from "SENDING" to "WAITING FOR REPLY"

as the value is allways “0” in Homeassistant - there seems to be something wrong with the interpreted HEX-values or it conversion?
grafik

Cause this is a wall of text meanwhile - here the short summary question:
if i can Read a Modbus Smartmeter entry with this command:

sudo mbpoll -m rtu -a 1 -b 9600 -d 8 -s 1 -P none -t 3:hex -r 1 -c 2 /dev/ttyUSB0

and get this output:

mbpoll 1.0-0 - FieldTalk(tm) Modbus(R) Master Simulator
Copyright © 2015-2019 Pascal JEAN, https://github.com/epsilonrt/mbpoll
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions; type 'mbpoll -w' for details.

Protocol configuration: Modbus RTU
Slave configuration...: address = [1]
                        start reference = 1, count = 2
Communication.........: /dev/ttyUSB0,       9600-8N1 
                        t/o 1.00 s, poll rate 1000 ms
Data type.............: 16-bit register, input register table

-- Polling slave 1... Ctrl-C to stop)
[1]: 	0x0000
[2]: 	0x59BC
-- Polling slave 1... Ctrl-C to stop)
[1]: 	0x0000
[2]: 	0x59BC
-- Polling slave 1... Ctrl-C to stop)
[1]: 	0x0000
[2]: 	0x59AC
-- Polling slave 1... Ctrl-C to stop)
[1]: 	0x0000
[2]: 	0x59AC
^C--- /dev/ttyUSB0 poll statistics ---
4 frames transmitted, 4 received, 0 errors, 0.0% frame loss

everything was closed.
Have a nice day !

the output value 59AC is transformed into decimal 22956 which corresponds to the 229,56V

why is this translated to homeassistant modbus config like this not working?

- name: eltako
  type: serial
  method: rtu
  #port: /dev/ttyUSB1
  port: /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A5069RR4-if00-port0
  baudrate: 9600
  stopbits: 1
  bytesize: 8
  parity: N
  sensors:
    - name: "Spannung L1-N"
      unit_of_measurement: "V"
      slave: 1
      address: 0
      input_type: holding
      data_type: int32
      scale: 0.01

i only get this in the logs:

2024-12-05 17:33:50.580 DEBUG (MainThread) [pymodbus.logging] Adding transaction 0
2024-12-05 17:33:50.580 DEBUG (MainThread) [pymodbus.logging] Resetting frame - Current Frame in buffer - 
2024-12-05 17:33:50.580 DEBUG (MainThread) [pymodbus.logging] send: 0x1 0x3 0x0 0x0 0x0 0x2 0xc4 0xb
2024-12-05 17:33:50.606 DEBUG (MainThread) [pymodbus.logging] recv: 0x1 old_data:  addr=None
2024-12-05 17:33:50.607 DEBUG (MainThread) [pymodbus.logging] Processing: 0x1
2024-12-05 17:33:50.607 DEBUG (MainThread) [pymodbus.logging] recv: 0x3 old_data:  addr=None
2024-12-05 17:33:50.608 DEBUG (MainThread) [pymodbus.logging] Processing: 0x1 0x3
2024-12-05 17:33:50.609 DEBUG (MainThread) [pymodbus.logging] recv: 0x4 old_data:  addr=None
2024-12-05 17:33:50.609 DEBUG (MainThread) [pymodbus.logging] Processing: 0x1 0x3 0x4
2024-12-05 17:33:50.610 DEBUG (MainThread) [pymodbus.logging] recv: 0x0 old_data:  addr=None
2024-12-05 17:33:50.610 DEBUG (MainThread) [pymodbus.logging] Processing: 0x1 0x3 0x4 0x0
2024-12-05 17:33:50.610 DEBUG (MainThread) [pymodbus.logging] Frame - not ready
2024-12-05 17:33:50.611 DEBUG (MainThread) [pymodbus.logging] recv: 0x0 old_data:  addr=None
2024-12-05 17:33:50.611 DEBUG (MainThread) [pymodbus.logging] Processing: 0x1 0x3 0x4 0x0 0x0
2024-12-05 17:33:50.611 DEBUG (MainThread) [pymodbus.logging] Frame - not ready
2024-12-05 17:33:50.612 DEBUG (MainThread) [pymodbus.logging] recv: 0x0 old_data:  addr=None
2024-12-05 17:33:50.612 DEBUG (MainThread) [pymodbus.logging] Processing: 0x1 0x3 0x4 0x0 0x0 0x0
2024-12-05 17:33:50.612 DEBUG (MainThread) [pymodbus.logging] Frame - not ready
2024-12-05 17:33:50.613 DEBUG (MainThread) [pymodbus.logging] recv: 0x0 old_data:  addr=None
2024-12-05 17:33:50.613 DEBUG (MainThread) [pymodbus.logging] Processing: 0x1 0x3 0x4 0x0 0x0 0x0 0x0
2024-12-05 17:33:50.613 DEBUG (MainThread) [pymodbus.logging] Frame - not ready
2024-12-05 17:33:50.614 DEBUG (MainThread) [pymodbus.logging] recv: 0xfa old_data:  addr=None
2024-12-05 17:33:50.614 DEBUG (MainThread) [pymodbus.logging] Processing: 0x1 0x3 0x4 0x0 0x0 0x0 0x0 0xfa
2024-12-05 17:33:50.614 DEBUG (MainThread) [pymodbus.logging] Frame - not ready
2024-12-05 17:33:50.615 DEBUG (MainThread) [pymodbus.logging] recv: 0x33 old_data:  addr=None
2024-12-05 17:33:50.615 DEBUG (MainThread) [pymodbus.logging] Processing: 0x1 0x3 0x4 0x0 0x0 0x0 0x0 0xfa 0x33
2024-12-05 17:33:50.615 DEBUG (MainThread) [pymodbus.logging] Getting Frame - 0x3 0x4 0x0 0x0 0x0 0x0
2024-12-05 17:33:50.615 DEBUG (MainThread) [pymodbus.logging] Factory Response[ReadHoldingRegistersResponse': 3]
2024-12-05 17:33:50.615 DEBUG (MainThread) [pymodbus.logging] Frame advanced, resetting header!!
2024-12-05 17:33:50.615 DEBUG (MainThread) [pymodbus.logging] Getting transaction 0
2024-12-05 17:33:50.646 DEBUG (MainThread) [pymodbus.logging] Adding transaction 0
2024-12-05 17:33:50.646 DEBUG (MainThread) [pymodbus.logging] Resetting frame - Current Frame in buffer - 
2024-12-05 17:33:50.646 DEBUG (MainThread) [pymodbus.logging] send: 0x1 0x3 0x0 0x2 0x0 0x2 0x65 0xcb
2024-12-05 17:33:50.666 DEBUG (MainThread) [pymodbus.logging] recv: 0x1 old_data:  addr=None
2024-12-05 17:33:50.666 DEBUG (MainThread) [pymodbus.logging] Processing: 0x1
2024-12-05 17:33:50.667 DEBUG (MainThread) [pymodbus.logging] recv: 0x3 old_data:  addr=None
2024-12-05 17:33:50.667 DEBUG (MainThread) [pymodbus.logging] Processing: 0x1 0x3
2024-12-05 17:33:50.668 DEBUG (MainThread) [pymodbus.logging] recv: 0x4 old_data:  addr=None
2024-12-05 17:33:50.668 DEBUG (MainThread) [pymodbus.logging] Processing: 0x1 0x3 0x4
2024-12-05 17:33:50.669 DEBUG (MainThread) [pymodbus.logging] recv: 0x0 old_data:  addr=None
2024-12-05 17:33:50.669 DEBUG (MainThread) [pymodbus.logging] Processing: 0x1 0x3 0x4 0x0
2024-12-05 17:33:50.669 DEBUG (MainThread) [pymodbus.logging] Frame - not ready
2024-12-05 17:33:50.670 DEBUG (MainThread) [pymodbus.logging] recv: 0x0 old_data:  addr=None
2024-12-05 17:33:50.670 DEBUG (MainThread) [pymodbus.logging] Processing: 0x1 0x3 0x4 0x0 0x0
2024-12-05 17:33:50.670 DEBUG (MainThread) [pymodbus.logging] Frame - not ready
2024-12-05 17:33:50.671 DEBUG (MainThread) [pymodbus.logging] recv: 0x0 old_data:  addr=None
2024-12-05 17:33:50.671 DEBUG (MainThread) [pymodbus.logging] Processing: 0x1 0x3 0x4 0x0 0x0 0x0
2024-12-05 17:33:50.671 DEBUG (MainThread) [pymodbus.logging] Frame - not ready
2024-12-05 17:33:50.672 DEBUG (MainThread) [pymodbus.logging] recv: 0x0 old_data:  addr=None
2024-12-05 17:33:50.672 DEBUG (MainThread) [pymodbus.logging] Processing: 0x1 0x3 0x4 0x0 0x0 0x0 0x0
2024-12-05 17:33:50.672 DEBUG (MainThread) [pymodbus.logging] Frame - not ready
2024-12-05 17:33:50.673 DEBUG (MainThread) [pymodbus.logging] recv: 0xfa old_data:  addr=None
2024-12-05 17:33:50.673 DEBUG (MainThread) [pymodbus.logging] Processing: 0x1 0x3 0x4 0x0 0x0 0x0 0x0 0xfa
2024-12-05 17:33:50.673 DEBUG (MainThread) [pymodbus.logging] Frame - not ready
2024-12-05 17:33:50.674 DEBUG (MainThread) [pymodbus.logging] recv: 0x33 old_data:  addr=None
2024-12-05 17:33:50.674 DEBUG (MainThread) [pymodbus.logging] Processing: 0x1 0x3 0x4 0x0 0x0 0x0 0x0 0xfa 0x33
2024-12-05 17:33:50.674 DEBUG (MainThread) [pymodbus.logging] Getting Frame - 0x3 0x4 0x0 0x0 0x0 0x0
2024-12-05 17:33:50.674 DEBUG (MainThread) [pymodbus.logging] Factory Response[ReadHoldingRegistersResponse': 3]
2024-12-05 17:33:50.674 DEBUG (MainThread) [pymodbus.logging] Frame advanced, resetting header!!
2024-12-05 17:33:50.674 DEBUG (MainThread) [pymodbus.logging] Getting transaction 0
2024-12-05 17:33:55.254 DEBUG (SyncWorker_5) [pymodbus.logging] Current transaction state - TRANSACTION_COMPLETE
2024-12-05 17:33:55.254 DEBUG (SyncWorker_5) [pymodbus.logging] Running transaction 14
2024-12-05 17:33:55.254 DEBUG (SyncWorker_5) [pymodbus.logging] SEND: 0x0 0xe 0x0 0x0 0x0 0x6 0x2 0x3 0x40 0x69 0x0 0x3c
2024-12-05 17:33:55.254 DEBUG (SyncWorker_5) [pymodbus.logging] New Transaction state "SENDING"
2024-12-05 17:33:55.255 DEBUG (SyncWorker_5) [pymodbus.logging] Changing transaction state from "SENDING" to "WAITING FOR REPLY"
2024-12-05 17:33:55.754 DEBUG (SyncWorker_5) [pymodbus.logging] Changing transaction state from "WAITING FOR REPLY" to "PROCESSING REPLY"
2024-12-05 17:33:55.754 DEBUG (SyncWorker_5) [pymodbus.logging] RECV: 0x0 0xe 0x0 0x0 0x0 0x7b 0x2 0x3 0x78 0xc 0x6 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0xdc 0x0 0x0 0x0 0x0 0x1 0x7d 0x0 0x0 0x0 0x0 0x1 0xee 0x0 0x0 0x0 0x0 0xff 0xff 0xff 0xff 0x0 0x0 0xff 0xff 0xff 0xff 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x8 0xfb 0x0 0x0 0x0 0x0 0x0 0xb0 0x8 0xfd 0x1 0x54 0x9 0x5 0x2 0xf 0x0 0x0 0x0 0x0 0xff 0xff 0x0 0x1 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x3 0xb5 0x3 0xb5 0x0 0x0 0x0 0x0 0x0 0x0
2024-12-05 17:33:55.754 DEBUG (SyncWorker_5) [pymodbus.logging] Processing: 0x0 0xe 0x0 0x0 0x0 0x7b 0x2 0x3 0x78 0xc 0x6 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0xdc 0x0 0x0 0x0 0x0 0x1 0x7d 0x0 0x0 0x0 0x0 0x1 0xee 0x0 0x0 0x0 0x0 0xff 0xff 0xff 0xff 0x0 0x0 0xff 0xff 0xff 0xff 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x8 0xfb 0x0 0x0 0x0 0x0 0x0 0xb0 0x8 0xfd 0x1 0x54 0x9 0x5 0x2 0xf 0x0 0x0 0x0 0x0 0xff 0xff 0x0 0x1 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x3 0xb5 0x3 0xb5 0x0 0x0 0x0 0x0 0x0 0x0
2024-12-05 17:33:55.754 DEBUG (SyncWorker_5) [pymodbus.logging] Factory Response[ReadHoldingRegistersResponse': 3]
2024-12-05 17:33:55.755 DEBUG (SyncWorker_5) [pymodbus.logging] Adding transaction 14
2024-12-05 17:33:55.755 DEBUG (SyncWorker_5) [pymodbus.logging] Very short frame (NO MBAP):  wait for more data
2024-12-05 17:33:55.755 DEBUG (SyncWorker_5) [pymodbus.logging] Getting transaction 14
2024-12-05 17:33:55.755 DEBUG (SyncWorker_5) [pymodbus.logging] Changing transaction state from "PROCESSING REPLY" to "TRANSACTION_COMPLETE"
2024-12-05 17:33:55.755 DEBUG (SyncWorker_5) [pymodbus.logging] [3078, 0, 0, 0, 0, 220, 0, 0, 381, 0, 0, 494, 0, 0, 65535, 65535, 0, 65535, 65535, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2299, 0, 0, 176, 2301, 340, 2309, 527, 0, 0, 65535, 1, 0, 0, 0, 0, 0, 0, 0, 949, 949, 0, 0, 0]
2024-12-05 17:33:55.757 DEBUG (SyncWorker_0) [pymodbus.logging] Current transaction state - TRANSACTION_COMPLETE
2024-12-05 17:33:55.757 DEBUG (SyncWorker_0) [pymodbus.logging] Running transaction 15
2024-12-05 17:33:55.757 DEBUG (SyncWorker_0) [pymodbus.logging] SEND: 0x0 0xf 0x0 0x0 0x0 0x6 0x2 0x3 0x40 0xbf 0x0 0x58
2024-12-05 17:33:55.757 DEBUG (SyncWorker_0) [pymodbus.logging] New Transaction state "SENDING"
2024-12-05 17:33:55.757 DEBUG (SyncWorker_0) [pymodbus.logging] Changing transaction state from "SENDING" to "WAITING FOR REPLY"
2024-12-05 17:33:56.555 DEBUG (SyncWorker_0) [pymodbus.logging] Changing transaction state from "WAITING FOR REPLY" to "PROCESSING REPLY"
2024-12-05 17:33:56.555 DEBUG (SyncWorker_0) [pymodbus.logging] RECV: 0x0 0xf 0x0 0x0 0x0 0xb3 0x2 0x3 0xb0 0x0 0x0 0x1 0xc3 0x0 0x0 0xb 0xc5 0x0 0xe 0xae 0xe5 0x0 0xe 0xae 0xe5 0x0 0x0 0x0 0x5a 0x0 0x0 0x5 0xe8 0x0 0x2 0xbd 0x46 0x0 0x2 0xbd 0x46 0x0 0x0 0x0 0x55 0x0 0x0 0x5 0x72 0x0 0x2 0x77 0xfe 0x0 0x2 0x77 0xfe 0x0 0x0 0x2 0x5d 0x0 0x0 0x10 0xe 0x0 0xe 0x8b 0x94 0x0 0xe 0x8b 0x94 0x0 0x0 0x7 0x30 0x0 0x0 0x26 0xaf 0x0 0x6 0x5c 0x16 0x0 0x6 0x5c 0x16 0x0 0x0 0x0 0x1 0x0 0x0 0x0 0x7 0x0 0x0 0x2 0x4 0x0 0x0 0x2 0x4 0x0 0x0 0x0 0x26 0x0 0x0 0x1 0x56 0x0 0x3 0xa7 0xe8 0x0 0x3 0xa7 0xe8 0x0 0x0 0x2 0x21 0x0 0x0 0x7 0x9f 0x0 0x0 0x5e 0x2f 0x0 0x0 0x5e 0x2f 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
2024-12-05 17:33:56.555 DEBUG (SyncWorker_0) [pymodbus.logging] Processing: 0x0 0xf 0x0 0x0 0x0 0xb3 0x2 0x3 0xb0 0x0 0x0 0x1 0xc3 0x0 0x0 0xb 0xc5 0x0 0xe 0xae 0xe5 0x0 0xe 0xae 0xe5 0x0 0x0 0x0 0x5a 0x0 0x0 0x5 0xe8 0x0 0x2 0xbd 0x46 0x0 0x2 0xbd 0x46 0x0 0x0 0x0 0x55 0x0 0x0 0x5 0x72 0x0 0x2 0x77 0xfe 0x0 0x2 0x77 0xfe 0x0 0x0 0x2 0x5d 0x0 0x0 0x10 0xe 0x0 0xe 0x8b 0x94 0x0 0xe 0x8b 0x94 0x0 0x0 0x7 0x30 0x0 0x0 0x26 0xaf 0x0 0x6 0x5c 0x16 0x0 0x6 0x5c 0x16 0x0 0x0 0x0 0x1 0x0 0x0 0x0 0x7 0x0 0x0 0x2 0x4 0x0 0x0 0x2 0x4 0x0 0x0 0x0 0x26 0x0 0x0 0x1 0x56 0x0 0x3 0xa7 0xe8 0x0 0x3 0xa7 0xe8 0x0 0x0 0x2 0x21 0x0 0x0 0x7 0x9f 0x0 0x0 0x5e 0x2f 0x0 0x0 0x5e 0x2f 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
2024-12-05 17:33:56.555 DEBUG (SyncWorker_0) [pymodbus.logging] Factory Response[ReadHoldingRegistersResponse': 3]
2024-12-05 17:33:56.555 DEBUG (SyncWorker_0) [pymodbus.logging] Adding transaction 15
2024-12-05 17:33:56.555 DEBUG (SyncWorker_0) [pymodbus.logging] Very short frame (NO MBAP):  wait for more data
2024-12-05 17:33:56.555 DEBUG (SyncWorker_0) [pymodbus.logging] Getting transaction 15
2024-12-05 17:33:56.555 DEBUG (SyncWorker_0) [pymodbus.logging] Changing transaction state from "PROCESSING REPLY" to "TRANSACTION_COMPLETE"
2024-12-05 17:33:56.556 DEBUG (SyncWorker_0) [pymodbus.logging] [0, 451, 0, 3013, 14, 44773, 14, 44773, 0, 90, 0, 1512, 2, 48454, 2, 48454, 0, 85, 0, 1394, 2, 30718, 2, 30718, 0, 605, 0, 4110, 14, 35732, 14, 35732, 0, 1840, 0, 9903, 6, 23574, 6, 23574, 0, 1, 0, 7, 0, 516, 0, 516, 0, 38, 0, 342, 3, 42984, 3, 42984, 0, 545, 0, 1951, 0, 24111, 0, 24111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
2024-12-05 17:33:56.556 DEBUG (SyncWorker_0) [pymodbus.logging] handle: [b'\x00\x00', b'\x01\xc3']
2024-12-05 17:33:56.556 DEBUG (SyncWorker_0) [pymodbus.logging] handle: [b'\x00\x00', b'\x0b\xc5']
2024-12-05 17:33:56.556 DEBUG (SyncWorker_0) [pymodbus.logging] handle: [b'\x00\x0e', b'\xae\xe5']
2024-12-05 17:33:56.556 DEBUG (SyncWorker_0) [pymodbus.logging] handle: [b'\x00\x0e', b'\xae\xe5']
2024-12-05 17:33:56.556 DEBUG (SyncWorker_0) [pymodbus.logging] handle: [b'\x00\x00', b'\x00Z']
2024-12-05 17:33:56.556 DEBUG (SyncWorker_0) [pymodbus.logging] handle: [b'\x00\x00', b'\x05\xe8']
2024-12-05 17:33:56.556 DEBUG (SyncWorker_0) [pymodbus.logging] handle: [b'\x00\x02', b'\xbdF']
2024-12-05 17:33:56.556 DEBUG (SyncWorker_0) [pymodbus.logging] handle: [b'\x00\x02', b'\xbdF']
2024-12-05 17:33:56.556 DEBUG (SyncWorker_0) [pymodbus.logging] handle: [b'\x00\x00', b'\x00U']
2024-12-05 17:33:56.556 DEBUG (SyncWorker_0) [pymodbus.logging] handle: [b'\x00\x00', b'\x05r']
2024-12-05 17:33:56.556 DEBUG (SyncWorker_0) [pymodbus.logging] handle: [b'\x00\x02', b'w\xfe']
2024-12-05 17:33:56.556 DEBUG (SyncWorker_0) [pymodbus.logging] handle: [b'\x00\x02', b'w\xfe']

So - to solve the problem I opened myself:
The documentation was a bit confusing and here is a working Eltako two-directional counter configuration for Homeassistant:

I still have to check whether the scaling is all right - but here it is for the general public so that no one like me has to start from scratch:

- name: "Stromzähler OG"
  type: serial
  method: rtu
  #port: /dev/ttyUSB1
  port: /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A5069RR4-if00-port0
  baudrate: 9600
  stopbits: 1
  bytesize: 8
  parity: N
#  timeout: 5
  sensors:
    # mbpoll -m rtu -a 1 -b 9600 -d 8 -s 1 -P none -t 3:hex -r 1 -c 2 /dev/ttyUSB0
    # mbpoll -m rtu -a 1 -b 9600 -d 8 -s 1 -P none -t 3:hex -r 3 -c 2 /dev/ttyUSB0
    # mbpoll -m rtu -a 1 -b 9600 -d 8 -s 1 -P none -t 3:hex -r 5 -c 2 /dev/ttyUSB0
    - name: "Spannung L-N"
      unit_of_measurement: "V"
      slave: 1
      slave_count: 2
      address: 0
      input_type: input
      data_type: uint32
      scale: 0.01

    # mbpoll -m rtu -a 1 -b 9600 -d 8 -s 1 -P none -t 3:hex -r 7 -c 2 /dev/ttyUSB0
    # mbpoll -m rtu -a 1 -b 9600 -d 8 -s 1 -P none -t 3:hex -r 9 -c 2 /dev/ttyUSB0
    # mbpoll -m rtu -a 1 -b 9600 -d 8 -s 1 -P none -t 3:hex -r 11 -c 2 /dev/ttyUSB0
    - name: "Strom L"
      unit_of_measurement: "A"
      slave: 1
      slave_count: 2 # add 2 additional following devices L1-L3
      address: 6 # mbpoll address -1
      input_type: input
      data_type: uint32

    # L1 active power
    # mbpoll -m rtu -a 1 -b 9600 -d 8 -s 1 -P none -t 3:hex -r 13 -c 2 /dev/ttyUSB0
    # mbpoll -m rtu -a 1 -b 9600 -d 8 -s 1 -P none -t 3:hex -r 15 -c 2 /dev/ttyUSB0
    # mbpoll -m rtu -a 1 -b 9600 -d 8 -s 1 -P none -t 3:hex -r 17 -c 2 /dev/ttyUSB0
    - name: "Active Power L"
      unit_of_measurement: "kW"
      slave: 1
      slave_count: 2
      address: 12
      input_type: input
      data_type: uint32
      #scale: 0.001

    # L1 power factor
    # mbpoll -m rtu -a 1 -b 9600 -d 8 -s 1 -P none -t 3:hex -r 31 -c 2 /dev/ttyUSB0
    # mbpoll -m rtu -a 1 -b 9600 -d 8 -s 1 -P none -t 3:hex -r 33 -c 2 /dev/ttyUSB0
    # mbpoll -m rtu -a 1 -b 9600 -d 8 -s 1 -P none -t 3:hex -r 35 -c 2 /dev/ttyUSB0
    - name: "Power Factor L"
      unit_of_measurement: "W"
      slave: 1
      slave_count: 2
      address: 30
      input_type: input
      data_type: uint32
      #scale: 0.01

    # mbpoll -m rtu -a 1 -b 9600 -d 8 -s 1 -P none -t 3:hex -r 53 -c 2 /dev/ttyUSB0
    - name: "Total active power"
      unit_of_measurement: "kW"
      slave: 1
      address: 52
      input_type: input
      data_type: uint32
      #scale: 1

    # mbpoll -m rtu -a 1 -b 9600 -d 8 -s 1 -P none -t 3:hex -r 63 -c 2 /dev/ttyUSB0
    - name: Gesamt-Leistungsfaktor #"Total Power Factor"
      #unit_of_measurement: ""
      slave: 1
      address: 62
      input_type: input
      data_type: uint32
      scale: 0.001
      precision: 3
      device_class: power_factor

      # mbpoll -m rtu -a 1 -b 9600 -d 8 -s 1 -P none -t 3:hex -r 73 -c 2 /dev/ttyUSB0
    - name: "Gesamtbezogene Wirkenergie OG"
      unit_of_measurement: "kWh"
      slave: 1
      address: 72
      input_type: input
      data_type: int32
      scale: 0.01
      device_class: energy
      state_class: total_increasing
      precision: 2

      # mbpoll -m rtu -a 1 -b 9600 -d 8 -s 1 -P none -t 3:hex -r 75 -c 2 /dev/ttyUSB0
    - name: "Gesamteingespeiste Wirkenergie OG"
      unit_of_measurement: "kWh"
      slave: 1
      address: 74
      input_type: input
      data_type: int32
      scale: 0.01
      precision: 2


    # mbpoll -m rtu -a 1 -b 9600 -d 8 -s 1 -P none -t 3:hex -r 97 -c 2 /dev/ttyUSB0
    - name: "Teilbezogene Wirkenergie OG"
      unit_of_measurement: "kWh"
      slave: 1
      address: 96
      input_type: input
      data_type: int32
      scale: 0.01
      precision: 2

      # mbpoll -m rtu -a 1 -b 9600 -d 8 -s 1 -P none -t 3:hex -r 99 -c 2 /dev/ttyUSB0
    - name: "Teileingespeiste Wirkenergie OG"
      unit_of_measurement: "kWh"
      slave: 1
      address: 98
      input_type: input
      data_type: int32
      scale: 0.01
      precision: 2