Proxon T300 Water Heater / Modbus / Hi/Lo Word

Hi,

I have a Proxon/Zimmermann T300 Water Heater connected via Modbus.

There is a legionalla-function which heats to 70°C every week when enabled. There are registers 59 and 60 counting the seconds when this happened last.

    - name: "T300 Legionellenfunktion Zähler"
      unique_id: t300_legionellenfunkt_zaehler
      slave: 20
      address: 59
      input_type: input
      scale: 1
      precision: 0
      data_type: uint32
      swap: word
      device_class: duration
      state_class: measurement
      unit_of_measurement: s

It works, but the readings don’t make sense: after about 24 hours ist should read ca. 24 * 60 * 60 = 86400 seconds, Hi should be 1 (2^16) and Lo 20864. But I get 11 and 6887 (8.3 days approx.)

What am I missing here?

When I’m done and everything works, I will share my setup here.

Regards,
Heiko

Read the protocol sheet of your device. Adjust data_type and swap according to that.

The spec says uint16 for both registers, so is uint32 wrong?

Quite likely, without swap.

When I don’t use swap, the values get even weirder.

The calculation in HA is correct, 2^16 * Hi + Lo, as delivered by modbus.

The question is, how to interpret (and convert) it to the real time

Try if it’s counting 0.1s units, that comes more close to the numbers you posted…

I don’t know what you mean now…

Thats right, perhaps the documentation I got is wrong here

It is! I monitored just the Low-“Word” and it jumps to Zero after about 7100 Seconds (7168 = 1024 * 8 maybe?)

So the documentation is wrong here, I am not yet finished with my integration, when done, I will share it here.