Modbus wrong units/configuration? (Ochsner Europa 333 Genius Wärmepumpe / Heating pump)

Hi guys,
I managed to read (and write) into the modbus registers of my heat pump.
the only thing is that I don’t understand the values provided by modbus in case of photovoltaik excess (enough power provided for special usage). Means when I have “to much power” coming from the sun I can make my heat pump use it for boiling up the water with the internal heating rod. This works quite good, but the strange thing is that the values provided by the HP don’t make sense to me.

As you see the “ueberschussleistung” - sensor gets the right value written into it, 2831W (the power that is left over from the sun above consumption of the house.
But the both other sensors, totale_ueberschussleistung (I think Ochsner means how much W the heating rod is cunsumpting - plz have a look into the description at the bottom) and variablie_heizleistung (this is a percentage value, not sure what Ochsner means by that) dont make sense to me as these values are kind of to low. Maybe I did a mistake of the confuguration?

Ochsner description:

So here is my configuration:

modbus:
  - name: BrauchwasserWP
    type: serial
    baudrate: 9600
    bytesize: 8
    method: rtu
    parity: E
    port: /dev/ttyUSB0
    stopbits: 1
    sensors:
      - name: WP_Temperatur_Anzeige
        unit_of_measurement: °C
        slave: 1
        address: 2000
        input_type: input
        scale: 0.1
        precision: 1
        device_class: temperature
      - name: WP_Temperatur_Mitte
        unit_of_measurement: °C
        slave: 1
        address: 2001
        input_type: input
        scale: 0.1
        precision: 1
        device_class: temperature
      - name: WP_Temperatur_Oben
        unit_of_measurement: °C
        slave: 1
        address: 2002
        input_type: input
        scale: 0.1
        precision: 1
        device_class: temperature
      - name: WP_Temperatur_Verdampfer
        unit_of_measurement: °C
        slave: 1
        address: 2003
        input_type: input
        scale: 0.1
        precision: 1
        device_class: temperature
      - name: WP_Sollwert_Temperatur
        unit_of_measurement: °C
        slave: 1
        address: 2200
        input_type: input
        scale: 0.1
        precision: 1
        device_class: temperature
      - name: WP_Überschussleistung
        unit_of_measurement: W
        slave: 1
        address: 2010
        device_class: power
      - name: WP_Variable_Heizleistung
        unit_of_measurement: "%"
        slave: 1
        address: 2011
        scale: 0.1
        device_class: power_factor
      - name: WP_Totale_Überschussleistung
        unit_of_measurement: W
        slave: 1
        address: 2012
        scale: 0.1
        device_class: power
1 Like

Theses three sensors show me the usage:

Hey, I ordered the same heat pump and this is the script I was looking for!
Have you figured out the issue? If I’m not totally mistaken, it is not a simple on off switch with the Genius. You can tell the electric heater how much power you would like to provide in this 0,1 percentage steps.
Edit: How many max W has the electric heater? Is 1750 Watt in total? Then 10% would be 175W of it. The total “Überschussleistung” is measured on daily level or really in total since you have switched on the device?

Many thanks and rdgs
Hotte

Hi Hotte,
regarding your questions: I still have no idea (also Ochsner still didn’t answer me) what exactly this “totale Überschussleistung” means, as its jumping sometimes up to 3200(W) → which doesn’t make sense at all, as this would be higher than my complete household cunsumption (compared when heating up). So don’t trust this value.
But there are two electric heating rods, the one as a backup if the heatpump fails or its to cold, and the variable one which you can trigger here via modbus. It has 700W.

So I managed to create an automation where you write your PV sureplus, and then Genius itself puts the energy into the variable heating rod.
Now, if there is energy available from PV (and heating is needed) - HASS will send the surplus to the Genius to additionally heat with the heating rod, looks like this (only that the water is already warm enough and no heating is needed. Also its raining and there is not enough energy)

1 Like

Hi Woody,

thanks a lot. Can you post your config here?
If I’m not fully mistaken you “simple” write the surplus value in register 2201?
How often do you do this?
What type of cable did you use?

My headpump will be delivered in November. Unfortunatley it takes longer then expected.

I’m sure that I have further questions… :wink:

Thx
Hotte

Sure, just PM me I’ll give you my mobile number - gern auch auf deutsch :wink:
Dont take the overpriced amazon stuff, I took this one:

Works like charm!

You can use any cable as there is no load on the lines, I took a network cable that was lying around. No need for special “modbus” cable.

Yes, you just need to write the surplus in the register within 10 minutes - or it will stop heating due to timeout. Documentation tells to write the surplus every 5 seconds, so just choose a span that feels comfortable. I took 10 seconds.
Also critical: you need to write the negative values as two-complement representation (Zweierkomplement) into the register, which means you need to add the negative values to 65535.
And I put a “backup” buffer of 300W, which means the surplus of higher than 300W will be written into the register.

Example: PV delivers 753W, the Ochsner will get an surplus of 453W - and will put the energy into the rod. If a cloud reduces the PV production to 140W - Ochsner will reduce the energy by (300-140) 160W. And this happens in my case every 10 seconds.

service: modbus.write_register
data:
  address: 2201
  slave: 1
  hub: BrauchwasserWP
  value: |
    {% set offset = 300  | int %}
    {% set pvprod = states("sensor.pv_ueberschuss") | int %}
    {% if pvprod > offset %}
      {{ pvprod - offset }}
    {%- else -%}
      {{ 65535 + (pvprod - offset) }}
    {%- endif %}
1 Like

And this is the way it looks like when there is enough production from PV for heating up the water:

Looks awesome!

You have decent sized PV… :wink:
Mine has only 6.1 KW, so I guess I will not have so much energy left.

And thx 4 the offer to PM you!
Currently I have a gas heating system and I want to replace it with a combination of PV, the heat pump and a Pellet heater for the winter.
I guess you have also some recommendations how to include all those systems into the the HASS.

Rgds
Hotte

Sure, probably the heatpump is the Europa 333 Genius for warm water only - and not for heating, right? Then you made a great choice with the PV system, as it will probably cover all your energy needed for warm water during the nonheating period. Do you have a battery?
My warm water heating pump (the one described) runs only in the time between 12 and 18 o`clock - it is enough to cover all our shower and bath periods. And - what a coincidence - there is always sun shining in that period :wink:
Yes, as we have also a second heating pump for … heating :sweat_smile: (Ochsner Air 18) with radiators - and not underfloor heating - we needed a pretty big PV system. Also we have a 16,5kWh battery. As it was only build in april I have currently no valid values about the big heating pump because it is in standby since april I can only tell that in may, june and july we had 98% autarchie. But in winter it will pretty sure go down. we will see.
But also the “big” heating pump has an interface for PV surplus. Its rudimentary, but works - just have a look at the term “SG-Ready”. Which means you can inform the devices that there is surplus in your system and the device itself decides what to do with the energy. The Ochsner Europa for example can raise the flow temperature (Vorlauftemperatur) so you dont need to warm up during night time. But be careful with that function - because of “lime” (Kalk) - if your water is hard than you can damage your heating pump.

Regarding your question about the other systems, I think if you go for pallets the PV system will not help you there, the only possibility is to get a “smart” device for statistics, like when heating is running, what temperature and so on. Or may be how much pellets are left and stuff like that. Just decide if you really need this in HASS and want to pay the extra costs for these features.

Yes, I do have a 5.1 Battery from BYD. In total I have 16 solar panels from Meyer Burger with 385 W each, so little under 6.2 KW in total. I think it is enough to produce warm watter during the none heating period. Additional I have a central de-scaler, so water hardness is not an issue.So I can increase the temperatur up to 65 degrees before sunset. The building orentiation is not ideal to install additional solar panels, therefore I looked for a different “system” for heating. I need to officially replace my gas heating systems in 6 year. In RLP you need to replace it after 30 years, no matter if the heating systems fulfills the emission values. I asked now for an offer for a watter-beared Pellet heater with 18KW in total. So enough energy to head my 160 qm². Idea is to “loop” the hot water from the Pellet heater through the Ochsner register (heat exchanger) and then to the additional buffer. The buffer is connected then to the gas heater. I can decide which energy source I use, by setting the heating times differntly. For the heater I don’t need the HASS, maybe for an electrical switch via shelly for a pump for the additional buffer. I need to consult my heating technician if the pump from the Pellet oven is sufficient. Bit I guess it is. Attached you can find an overview how it should look like latest in November. The solar panel should be installaed in 8 weeks. The Ochnser will arrive beginning November. For the Pellet oven I do not have a delivery date yet.

One more question: I understood that the Kostal is also able to provide modbus via TCP. Why did you connect via “modbus cable?”

I dont have Kostal, I have the Ochsner. It doesnt provide TCP.

True, don’t know why I was assuming that you have Kostal as well… Anyway, thanks a lot for all the valuable information’s, will PM you when I have all the stuff in place.
Btw. there is also an integration with HASS for my Pellet oven (MCZ Meastro). Need to figure out how this can be integrated. But prio 1 is to connect the Kostal with the Ochsner.

1 Like

Finally the Heatpump is running! :slight_smile:

Today / tomorrow I’ll try to set up the Modbus. Maybe I take your offer to support…

A quick update.
I setup the modbus config and it is working properly.
The 16 bit dual complement „tips“ over at 37768. From there you have the negative values. Therefore u subtract the negative value from 65535. Also clear.

The positive values you can provide straight away into register 2201, also fine.
Here is my issue:
I checked what the rod actually consumed. I have a Shelly where I measure the consumption of the Ochsner. If I put the positive values in, it seems to be random what the head pump consumes.
If I enter 300 Watt, the pump will go up to 5xx Watt.
Has anyone an idea what the issues is?

I also don’t understand what Ochsner did there as I also don’t have the correct usage values, but I think this is somehow related to this chart (page 29 in the user manual)
image

Hello @Woody_HomeAss i have now already access via modbus to my europa genius, thanks so much for your posts!!

but for me its not really clear what ochsner wants which its dual complement values, do you know what exact values Ochsner whats for values?
i now have implemented an new Sensor for pv_uerberschuss which have the whole house value and sends an positive value in your script, it does work, but not perfectly…

Hi,

yes, I looked it up as well. But Ochsner also recommends to write the surplus every 5-10 Seconds via Modbus. But the value what Ochsner actually apply are somehow “rubbish”. The values are adding up. So if I put 2 time 300 in, it consumes something between 600 to 800 watts. According to the manual the value should be always overwritten. I only recognised it, as the shelly shows the actual consumption.

I interpretate the chart above that you have a certain value range that can be covered with the rod. If you out of that range, the headpump kicks in. Will write an E-Mail to Ochsner this week.
I created a workaround, that works somehow… Main idea is that I wait for the timeout. I write a value in (700 works fine) and I wait until the Ochsner terminates. Then I check with my shelly if the Ochsner is on idle. If yes, I will send again 700 in.

alias: WP_Surplus
description: “”
trigger:

  • platform: time_pattern
    seconds: “10”
    condition:
  • condition: numeric_state
    entity_id: sensor.scb_battery_soc
    above: 90
    action:
  • if:
    • condition: numeric_state
      entity_id: sensor.scb_grid_power
      below: -1500
    • condition: numeric_state
      entity_id: sensor.shellypro4_power
      below: 10
    • condition: numeric_state
      entity_id: sensor.wp_anzeige_temperatur
      below: 66
      then:
    • service: modbus.write_register
      data:
      address: 2201
      slave: 1
      value: 700
      hub: BrauchwasserWP
      else: []
      mode: single

Hi,

Positive will be provided as they come. So 700 surplus is 700 via modbus.
0 = 0 :slight_smile:
-1 = 65535
-2 = 65534

ok?

Rgds
Hotte