If I remember correctly, the LAMBDA service had to set the write permissions to writable registers once.
Edit: Modbus is enabled by default, but read-only! If you want to write, the service technician must enable it.
If I remember correctly, the LAMBDA service had to set the write permissions to writable registers once.
Edit: Modbus is enabled by default, but read-only! If you want to write, the service technician must enable it.
Thanks for confirming.
This is soooo German. Yuck.
I asked to enable the E-Manager by mail to the lambda-support. Within one day they configured it to
E-Meter Kommunikationsart: ModBus Client
E-Meter Messpunkt: E-Eintrag
Might be they allowed writing automatically when I asked for using the E-Manager.
Regarding limiting heating: You might try to switch off the heating circuit(s) writing 0 to register 06: Operating mode. This register ist RW. I never tried it, might be interesting.
If you use the lambda heating water for domestic use you could try to lower the Maximum Boiler Temperature (Register 50).
Is anybody able to test the solar part? I have added it to the binding but have no possibility to test it.
I can test the Lambda Solar module in OH5.0 M3 if you give me a new jar. I managed to get good values from read-only registers for the other modules simply by configuring things and items in the gui. I can also read a solar registers with a regular modbus data thing.
Thanks very much for developing this binding
I will send you the jar later, I am travelling right now. Itmay be you habe to contact Lamda if you want to habve writing enabled.
Greeings
Christian
This is the version compiled for Java 17:
https://drive.google.com/file/d/1tQFdGsDOukC3OnIa3eNrUN-i5gQFG1E9/view?usp=sharing
and this for Java 21:
https://drive.google.com/file/d/1__yIuFvBoWHBluXSBzWqvG4sR4POBIXO/view?usp=sharing
Running the Java 21 version but the new Lambda Solar thing has no channels probably due to an extra r in solarr: [core.internal.thing.ThingTypeResource] - Cannot find channel group type: modbus:solarr
Thank you for finding this error, here is the new version:
Version for Java 21
I noticed that the first and second solar channels have the same label âSolar Error Numberâ. The second one should be âSolar Operating Stateâ. The item created from this channel doesnât show the text of the state â0=STBY, 1=HEATING, 2=ERROR, 3=OFFâ
All the solar and heating circuit channel names end with a semicolon as do the items that are created from them.
Nothing to do with the solar module, but the boiler channel âActual Low Temperatureâ should probably be âBoiler Actual Low Temperatureâ to be consistent with the other channels.
Other than the above it all looks good for my setup OH5.0.0 M3, Lambda EU08L, SW V.1.1.0 Feb20 2025, FW V0.0.8 -3k Feb 19 2025 ( if Iâm looking in the right place). I donât see all RO registers shown in the Lambda modbus protocol of 13.02.2025 even when using PowerHud modbus tester in particular two I am interested in: âBoiler Actual circulation temp.â and âBoiler Actual circulation pump stateâ. A few days ago I asked Lambda support to enable them but no response from them so far. I also asked them to enable RW registers for me as I canât see most of them in OH even though I see values for a lot of them in PowerHud. I wonder if it would be possible to catch these in the binding and display them as read-only? Just a thought.
Anyway the bottom line is that the binding works superbly and is very easy to setup using the gui to created the bridge, things and items. I realised after a while that I didnât need to create modbus poller things. Very many thanks for creating this binding.
Thank you for the valuable feedback. I didnât look into the solar part because I do not have a thermic module. I guess I will be able to correct the errors on tuesday, tomorrow will be a busy day.
Regarding:
âBoiler Actual circulation temp.â and âBoiler Actual circulation pump stateâ:
The modbus document I downloaded on 23.02.25 does not show these values.
On page 1 it states Datum: 13.02.2025
The modbus document before dated 28.11.2025 had a section General Systems Settings with registers 00..11 and 50..58 which disappeared in the newer one.
Here is the new version for Java 21:
https://drive.google.com/file/d/1rhdXaaCY2GM7gOr22GRjDUbipcUIa5d4/view?usp=drive_link
Did you try to write the Channel Actual Power in the E-Manager section? This is the only one I really use and it works for me. But Lambda Support had to configure my lambda to E-Eintrag as state in my posting from July 1st 2024. Could be that they enabled writing to the other registers marked RW in this process too.
I remember changing Maximum buffer temperature and Maximum boiler temperature. This changed the values but I donât remember if the values changed the values shown in the user interface of the heat pump.
The new jar fixes my three issues thanks.
I received a reply from Lambda Support saying that my software version 20/2025 already has the registers âActual temperature circulation sensorâ and âActual state of circulation pumpâ but I get an error trying to read them using PowerHud. Iâll let support know.
Support also told me I already have access to the RW registers and indeed I am able to update them from PowerHud but not from OH. Perhaps you could show me your definition of item Lambda_Boiler_Maximum_Temperature and its channel definition so I can try and work out why the default item created by the gui only shows null.
I am working with a dsl script, for example:
var double Boiler_MT_Neu = 44.5
lambdaboiler_maximumboilertemperature.sendCommand(Boiler_MT_Neu)
Shortly after executing this code the item in Openhab reflects this value. But in the Lambda userinterface in my Browser still Solltemp shows the old value: 43,5 °C. So my guess that you can change âSolltemperaturâ does not seem to be valid.
The same happens with the maximum temperature of the buffer.
I checked with the Lambda download section:
https://lambda-wp.at/wp-content/uploads/2025/04/Modbus-Beschreibung-und-Protokoll.pdf
shows âActual temperature circulation sensorâ, but the file I got on Feb 22nd doesnât.
I will implement the two registers.
I found another new register in the heating circuit section:
07 Target temperatur flow line
I implemented usage of these 3 registers but get an error when registering the polltasks.
PowerHud shows an error too when I try to access more than 4 registers at adress 2000 and more than 7 at adress 5000.
I wrote a mail asking to add the registers in my firmware and begged to make register boiler 05 RW.
I tried again with 5.0.0 stable and I cannot get a Lambda Boiler thing to read or write to Solltemp in the Lambda heat pump. In case it helps, the normal modbus poller and data things shown below do work.
Things:
Bridge modbus:tcp:Test1Bridge "Test 1 Bridge"
[ host="192.168.0.105", port=502, id=1, label="Test 1 Bridge", enableDiscovery=true ]
{
Bridge poller Test1Poller2050 "Test 1 Poller 2050" [ start=2050, length=1, refresh=3000, type="holding" ]
{
Thing data Test1BoilerMaxTemp "Test 1 Boiler Max Temp"
[ readStart="2050", readValueType="int16", writeType="holding", updateUnchangedValuesEveryMillis= 1000, writeValueType="int16", writeMultipleEvenWithSingleRegisterOrCoil=true, writeMaxTries=3, writeStart="2050"]
}
}
Items:
Number Boiler_Max_Temp_Test_1 "Boiler Max Temp Test 1 [%.1f °C]"
{ channel="modbus:data:Test1Bridge:Test1Poller2050:Test1BoilerMaxTemp:number"
[ profile="modbus:gainOffset", gain="0.1" , pre-gain-offset="0" ]
}
// Dummy Switch item to run a test rule to update the state of the item above
Switch LambdaTestRule "Lambda Test Rule"
Rules:
rule "Set Boiler Maximum Temperature"
when
Item LambdaTestRule changed
then
val targetTemp = 52.5
logInfo("Lambda.Rules", "Test rule changing item to " + targetTemp)
Boiler_Max_Temp_Test_1.sendCommand(targetTemp)
end
I tried a DSL script with âmyâ Binding:
var double Boiler_MT_Neu = 42.5
logInfo("Lambda_Testskript", "Boiler1 MT alt : " + String.format("%.1f", ((lambdaboiler_maximumboilertemperature.state) as Number).floatValue) +"°C")
logInfo("Lambda_Testskript", "Boiler_MT_Neu : " + Boiler_MT_Neu + "°C")
lambdaboiler_maximumboilertemperature.sendCommand(Boiler_MT_Neu)
logInfo("Lambda_Testskript", "Boiler1 MT neu : " + String.format("%.1f", ((lambdaboiler_maximumboilertemperature.state) as Number).floatValue) +"°C")
results in:
2025-09-05 10:42:57.003 [INFO ] [.core.model.script.Lambda_Testskript] - Boiler1 MT alt : 44.0°C
2025-09-05 10:42:57.004 [INFO ] [.core.model.script.Lambda_Testskript] - Boiler_MT_Neu : 42.5°C
2025-09-05 10:42:57.005 [INFO ] [.core.model.script.Lambda_Testskript] - Boiler1 MT neu : 44.0°C
Calling it again after ~ 15 s I get:
2025-09-05 10:55:43.765 [INFO ] [.core.model.script.Lambda_Testskript] - Boiler1 MT alt : 42.5°C
2025-09-05 10:55:43.765 [INFO ] [.core.model.script.Lambda_Testskript] - Boiler_MT_Neu : 42.5°C
2025-09-05 10:55:43.766 [INFO ] [.core.model.script.Lambda_Testskript] - Boiler1 MT neu : 42.5°C
Seems script and binding are working for Maximum Boiler temperature.
But:
Looking into the lambda userinterface with level 2 I cannot find 42.5°C.
Maximale Solltemperatur is 65°C
Solltemperatur ist 43°C
Hi, Iâm also having issues writing the max boiler temperature on OH 5.0.2 with the latest snapshot. I have a strong gut feeling, that writeMultipleEvenWithSingleRegisterOrCoil is not true for this channel. I had tried with PowerHud to write a single register (function 6) and it didnât complain. However the Lambda user interface did not reflect the change.
I then contacted Lambda support and they said everything was alright. As proof they sent screenshots, where they used the tool mbpoll with the option -W which makes it use function 10 (=writeMultipleEvenWithSingleRegisterOrCoil) to write the register. I tried myself with mbpoll -W [âŠ] and the changes were immediately reflected in my Lambdaâs user interface.
Seems something is wrong with the binding. I used PowerHud Modbus Tester with 16-Write Multiple Registers with register 2050. The value shows in the UI of the heat pump but not in the corresponding Item in OpenHab. I have to look into this.
Seems MaximumBufferTemperatur and the registers >=5050 of heatingcircuit are off too. So it is a general problem with the registers in the 50s.
Thank you!
Thanks for looking into this! Maybe one hint: the maximum boiler temp register also wasnât read on my side. The linked item only contains a non-NULL value since I tried to write it. There are some other items which show a NULL-value, but I didnât yet check if this part of the problem.