Integration of Heatpump Ochsner Tronic Smart Services (OTS) via Modbus

Hello and welcome abraxas_son!

Thank you so much for the info on undocumented modbus registers. I tried immediately and still have to look into it in detail. My first comments are:

  • 203 (Hot water temperature Scale 0.1) is now identical to 029 (after undocumented change from scale 1 to sclae 0.1)
  • 219 (Hot Water Setpoint): To me it seems to be the hot water setpoint for reduced. values corresponds to Values changed in OTS-App.
  • 246 (Power Consumption): Questio is on whether thisis the total Power Consumption or just L1. Actually L2, L3 are auxilary heater, thus they might be in seperate registers in order to compute “power demand” as shown in the app.
  • 213: also 1542 for me

How about other addresses ? Did you try to read other addresses as well ?

I will keep those entities and check which values they get and whether I can relate them to a functionality.

Hi Alfred,

I already tried all registers up to 247 but besides the few registers I listed above (and a few I added now below), I couldn’t find any other meaningful registers. Some were just duplicates of documented registers and all the others were returning 0. Perhaps some of the registers with 0 values might have meantingful readings at specific times, but I just checked briefly with ModbusMaster and didn’t observe for a longer period of time.

For address 246 (power consumption), I had not the chance yet to validate if its L1 only or total of all phases. Since the auxiliary heating element is barely in use (only when it’s really freezing outside), it might take until winter to find out.

For me I could confirm address 219 to hold the active warmwater setpoint, as it changes between “reduced” setpoint and “normal” setpoint based on the schedule defined in “comfort mode” (the one I use). And when the anti-legionella program is active, it matches the setpoint specified for the anti-legionella program.

Register 202 shows following pattern, but I have no idea what this could be :thinking:.

In the meantime, I could find out Register 229 is just a duplicate of 49 (heatpump status) :unamused:

Some other registered I found filled with values I can’t explain.

  • 30 (so far only 1, 2, 4, 11, 12, 31, perhaps a status code?)
  • 32 (so far only seen 450, 550, and 0)
  • 53 (values between 642-646)

Hi abraxas_son!

ad 219: I was mistaken - you are absolutely right, it is the setpoint of hot water temperature depending on schedule and mode.

ad 202: it somehow relates to heatpump operating status, but has a lot more values. Also trying to relate to power consumption did not help.

ad:229: as stated by you already, 229 is a copy of heatpump status

ad 246: this was supposed to hold the value of the power consumption. In order to check whether this covers just L1 oder L1+L2+L3 I switched off heatpump, swirched on auxilary heater and turned temperature up for hot water. However I cannot explain the results out of this action. Register 246 shows at the maximum register about 1840 W while my shelly for L2 shows more than 2500 W. For power of the heatpump during hot water heating the values of register 246 and shelly have been equal.


Registers for precise temperature values of hot water and room temperature.

I did contact Ochsner because of the breaking change of hot water temperature done may 1st (scale 0.1). According to Ochsners answer this was a mistake and as of today it is scale 1 as before and as documented. Addionally I got the information, that upon requets by users now additional registers are available holding precise temperature (scale 0.1) which will be officially documented soon.

  • register 147: precise_hot_water_temperature (scale 0.1)
  • register 153: precise_room_temperature_heating_circuit_1 (scale 0.1)
  • register 154: precise_room_temperature_heating_circuit_2 (scale 0.1)
  • register 154: precise_room_temperature_heating_circuit_3 (scale 0.1)
  • register 155: precise_room_temperature_heating_circuit_4 (scale 0.1)

I will try to keep in contact with ochsner regarding values reengineered by abraxas_son and my questions in particular regarding power consumption.
Also the yaml definition in this post will be updated to V0.93 to reflect these new registers.

1 Like

Hi Alfred,

first of all thank you for your great work.
I’m already reading my Ochsner Heatpump (Air Hawk 518 - has got the exakt same Modbus Registers) via NodeRed and saving the values to an influxdb for over 2 years by now.
Now I was looking for a way to transfer the values to Home Assistant as well and found your way to integrate it directly - awesome!

From my research I’m happy to be able to contribute at least a little piece to solve the “undocumented”-riddle:
Register 220 is the target temperature for the heating (Vorlauf_Soll). :slight_smile: