Lambda Heat Pump in OpenHab

sorry, was very busy during the pre-xmas-times….

Will give it a test tomorrow.

@fzahn, @beluga: It’s no necessary anymore.
I found a solution.

I just updated to Openhab 5.1 and tried to install your binding from the Add-on Store, but can’t find it. At least I don’t get hits, when I search for Lambda - any ideas?

That is true! I remember that in 5.1.0.M3 and 5.1.0.M4 it was shown ???
The other Modbus bindings (Stiebel eltron, Sungrow, E3DC, Studer …) are not shown either.
Searching in
https://www.openhab.org/addons/
shows Lambda Heat Pump.

But you can load the general Modbus Binding in the Add-On Store.
Then you go to things, click on the blue Button “+”, Modbus Binding and add a Bridge thing, configure it, and then add boiler, buffer, General Sections, Heat Pump, Heating Circuit, …

1 Like

Need to check. I’m sure I have seen another report of modbus bindings not shown. Let me get back to this.

1 Like

Bug reported here

1 Like

Now that we have binding/modbus access (thanks @chilobo), how do we use it best?
(BTW is there already any thread on this I’m missing?)

I believe the most common and generic use case is to tell the heat pump to either not heat at all or to pre-heat/increase buffer temperature, either at maximum or at a defined power level.
The latter is when we have pv surplus or cheap times with a dynamic power tariff.
The “stop heating” is required in expensive times with a dynamic power tariff or when your utility company tells you to stop consumption.

So how do we do that? Can we use the emanager-group#actual-power channel for both cases?
where do I get the maximum value? Or does the heat pump accept a cmd to run at , i.e. 65535?

In the Lambda display, there seem to be two values for the “Leistungsvorgabe”, a min and a max.
Wondering how to set them both and how that does translate into the only single Modbus reg. 102 / channel in the binding?

2 Likes

@ emanager-group#actual-power:
With ENERGIE MANAGEMENT - Betriebsart set to Automatik in the UI
you have to renew this register every 60+ (?) s, I do it every 60 s. If you fail to do so the heatpump produces an error message. My guess is that “Leistungsvorgabe Minimum” and “Maximum” are just limiting values for the power, you cannot change them via Modbus. As long as the value sent to actual-power is within this range the heatpump should use this value for overheating. I guess if you send a value above maximum it is just ignored. My experience shows that the heat pump uses up to about 1,x kW to generate heat for the boiler.

@ stop-heating:
There does not seem a possibility to shut off the heatpump by modbus.
So another approach would be to shut off the demand generated by the heating circuit and the boiler heating.
So I tested while my lambda was generating heat for the boiler:
I wrote 0 to register 5006 Heating Circuit Operating Mode.
Then register 5001 Heating Circuit Operating State changed from 0 (HEATING) to 12 (OFF).
The UI of the Lambda showed X X in the upper right corner of its window.
5 minutes later it changed back to 0 and the symbol in the UI changed back to the heating symbol.
Obviously the lambda changed that back by itself.

btw: ModbusTester and Openhab show -1 for register 5006 when its not in use.

Seems you have to write 0 to Heating Circuit Operating Mode every 4 minutes to keep the heating circuit from working.

@ restricting boiler heating:
I wrote 41.0 to register 2050 (Maxium boiler temperature) and will monitor if boiler heating is suspended until the temperatur drops below this value.

Result: Boiler heating resumes when the temperature drops below 39 °C because of the “Einschalthysterese -2.0 K”. (Not changeable with level 2.)

lambda was heating the heating circuit.
I wrote 0 to register 5006.
lambda shows X X in the heating circuit window and a snow flake in the heatpump window (Standby frost).
After 5 minutes heating was resumed.
I wrote 0 again, waited about 3 minutes and wrote it again.
My lambda went into TIME-BLOCK (operating state 15) for 15 minutes.
Afterwards it startet heating the heating circuit.
I will stop my tests now and leave it to you…

But my guess is that if you use register 5006 and 2050 wisely you should be able to shut your lambda off during expensive times.
Please publish your results!

1 Like

Thanks for your testing.
According to the modbus docs, 15 is “Standby”. 14 is “time-off”. So what does “time block” mean?

Is there any way to find out how to accomplish simple shutoff other than reverse engineering?
Ask the Lambda support?
Unfortunately I don’t have a Lambda heat pump of my own so cannot experiment with it or call support.

In the latest modbus description dated 19.2.25 Operating state 15 of the heatpump is described as TIME-BLOCK.
The UI of the lambda shows a counter of about 15 min going down.

Reverse engineering? It’s just that there are no descriptions of the different states.
It seems that you only have to touch two write-enabled registers - that’s no “Hexenwerk”.

Ok, I was looking at the wrong table sorry
So to sum up:
for blocking I need to write 0 to 5006 and repeat every 15 mins and to get the hp to consume my pv surplus I need to write the value to 102 and repeat every minute
Correct?

I tried writing 102 using mbpoll but get write failures.
That’s probably because it’s not using the right function code to use multi-register-writes.

I now used the modbus binding to write 102 and get this, so apparently writing works.

BUT: register 103 does not change (just some watts as it always does)

Any idea what I’m missing?

2026-01-12 23:00:02.433 [DEBUG] [rg.openhab.binding.modbus.internal.handler.ModbusDataThingHandler] - Successful write, matching request ModbusWriteRegisterRequestBlueprint [slaveId=2, reference=102, registers=ModbusRegisterArray(08AE), maxTries=3, getFunctionCode()=WRITE_MULTIPLE_REGISTERS]

I guess you have to write 5006 every 4 minutes to prevent that your machine starts heating the heating circuit after 5 minutes.

I am confused.

In https://community.openhab.org/t/lambda-heat-pump-in-openhab/156799/113?u=chilobo you stated that you do not have a Lambda heat pump to test, in your latest post you seem to have one.

{ In my case support@lambda-wp.at enabled modbus support and configured the E-Manager to mode “E-Eintrag”. I am not sure if you can do this on your own if you have access to the levels above 2. If you cannot write register 102 ask the supplier of your heat pump to enable modbus controlling. }

btw: Try PowerHud Modbus Tester, it seems reliable.

Did you enable “Betreibsart Automatik” in the UI of your heat pump when testing? Afterwards the symbols in this screen show the power supplied by your register and the power the heat pump is using.

I have remote modbus access to one at times, but not physical so cannot scroll through display etc, do you know where to enable modbus in the menus? is there any default password?

PowerHud vs openHABian-included mbpoll: that’s not a tool matter but to use the parameters the heat pump requires you to like the function code for multi-register writes.

Not sure, if I mistakenly broke something or if there is a unit bug with heat-pump-vol-sink in the Heat Pump Group. In the Lambda GUI the unit is m^3/hr, but in my Openhab it shows as l/min. The numerical values are however the same. Is it just me? I’m currently running OH 5.1.3.

1 Like

I just used the unit l/min which was given in the modbus document.
In the GUI the numerical value shows up in the heatpump sections labeled WA-Vol.
My first guess is that the unit in the modbus document is wrong. But then the factor 0,01 should be wrong too. The value of 511 shown by the register corresponds to 0.511 m³/h in the GUI.
So in OH it should either appear with value 0.511 and unit m³/h or as 511 with unit l/h.

I will ask Lambda support, hopefully they will send an answer.

1 Like

Lambda support didn’t answer. I asked in the home assistant thread in github. Ralf Winter confirms that the ModBus documentation is wrong. He prefers to use l/h, giving values around 700 l/h instead of m³/h, giving values aroung 0,700 m³/h.
@Beluga: What do you think? 700 l/h is easier to identify, 0,7 m³/h corresponds to the value shown in the UI…

Hi Christian, thanks for diving into this little issue. I think I would prefer l/h but the main thing for me is that the denominator is hours not minutes. :slight_smile: