[SOLVED] [OH3] [MODBUS] Struggling adressing registers on a DTS-6619 Smartmeter

Hello community,

I got a Sinotimer DTS-6619 Smartmeter and want to read values via MODBUS. The basic setup is working, I can connect to the meter, poll data and populate items. For completeness, the setup of the bridge:

UID: modbus:serial:ab8e7b09e7
label: Modbus Serial Slave
thingTypeUID: modbus:serial
configuration:
  baud: 9600
  connectMaxTries: 1
  timeBetweenTransactionsMillis: 35
  stopBits: "1.0"
  parity: even
  receiveTimeoutMillis: 1500
  dataBits: 8
  echo: false
  encoding: rtu
  flowControlIn: none
  flowControlOut: none
  port: /dev/ttyUSB2
  connectTimeoutMillis: 10000
  id: 21
  enableDiscovery: true

But I am struggling with the configuration of the registers. In the manual, the first register is the data register, for example I want to read Phase A Voltage.

So I set up a poller reading two bytes starting at 0:

UID: modbus:poller:ab8e7b09e7:0cfca4d4af
label: Sinotimer L1 Voltage
thingTypeUID: modbus:poller
configuration:
  length: 2
  start: 0
  refresh: 5000
  maxTries: 3
  cacheMillis: 50
  type: holding
bridgeUID: modbus:serial:ab8e7b09e7

Then a corresponding modbus data:

UID: modbus:data:0cfca4d4af:2ddfdb9f64
label: Modbus Data Sinotimer L1 Voltage
thingTypeUID: modbus:data
configuration:
  readValueType: float32
  readTransform: default
  writeTransform: default
  readStart: "0"
  updateUnchangedValuesEveryMillis: 1000
  writeMultipleEvenWithSingleRegisterOrCoil: false
  writeMaxTries: 3
bridgeUID: modbus:poller:ab8e7b09e7:0cfca4d4af

But instead of giving me back the first value of the data register (which should be some voltage), it populates my item with the first value of the parameter register (which is the baud rate, 9.600).

The manual mentions a “command code 0x04” to read the first (data) register, but I have no idea where to configure this.

Can anyone hint me in the right direction?

Modbus function code FC04 would be an instruction to read input type registers.

Input registers and Holding registers are physically different things.

You’ll need to edit your poller Thing to change type, and may need to restart to correct the already scheduled polling cycle.

You were right, changing the poller type from “Holding register” to “Input register” is polling the desired values. Thank you for your hint.

1 Like