E3DC with the new modbus binding

Danke für die Anleitung.
Ich hatte Openhab 2.3 mit funktionierendem Modus Bindung für E3DC. Nach der Aktualisierung auf Openhab 2.4 funktioniert es nicht mehr.

Mit dieser Anleitung hab ich das Modbus Binding für meine E3DC-Anlage wieder hingekriegt.

Lediglich der Wert für den Hausverbrauch wird nicht korrekt ausgelesen:

Thing data Consumption “E3DC Consumption” [ readStart=“71”, readValueType=“int32_swap”]

Number E3DC_Haus “E3DC Hausverbrauch” <poweroutlet> (E3DC) { channel=“modbus:data:e3dc:polling:Consumption:number” }

Ich hab Thing und Item schon gelöscht und neu angelegt. Lt. log wird der Wert einmalig ermittelt (aber mit nem falschen Wert) … dann erfolgt kein Update mehr.

Wie komm ich dem Fehler auf die Spur ?


Ist es normal, dass er bei Things unter dem Modbus garnichts anzeigt?


Die Dateien liegen unter folgenden Verzeichnissen:


Jetzt muss ich nur noch die Grafik von oben hin bekommen und dann über Homebridge ins Apple Homekit bekommen…

Hello everybody,
how can it be that I have wonderful data in the web interface but not in the iOS app. It’s also strange that it does display the German translations in iOS but not on the web interface.
Can someone tell me where to change something?
Thank you.

Hi, just used this great tutorial to integrate the E3DC in openhab. It is working flawlessly.
i have one question: how can you set switches? currently everything is just reading. how does writing Modbus states work? I want to trigger “Ladesperre” for example using openhab automation.


That would be this Item, yes?

This is not going to be straightforward.
First thing you need to find out is if the device (about which I know nothing) will actually let you switch this from modbus?
If so, how? There is no rule that modbus status and control have to in the same register or even register type.

If we assume the likely case for now, reading and writing from the same modbus register, we run into a snag.

Thing data EMS_Charge_Lock		"E3DC EMS charging locked"		[ readStart="84.0", readValueType="bit"]
Thing data EMS_DisCharge_Lock		"E3DC EMS discharging locked"		[ readStart="84.1", readValueType="bit"]

This group of device status are represented as single bits in a 16-bit register. (that the 84.0 part, bit 0 in register 84)
It is not possible for modbus binding to write a single bit in a register.
The closest you can do is write the whole register with that one bit set as you wish.
That would not be too difficult - but the hard part is what about the other bits? Presumably you need to remember what they are and write the register with all of the important bits set the way they last were, except the one you want to change.

That can be done with some coding, but I won’t go into it unless needed. Find out how your E3DC expects modbus writing to happen.

The general idea for bits-in-register writing is here

Thanks for your explaination.
i’ve just checked the vendor documentation and on top of the document it says “control via modbus is not possible, only read access” :frowning:

That’s disappointing. Marketing decision perhaps.

As I mentioned above, for controlling the E3DC via openhab, we would need a binding that builds on the E3DC RSCP interface.

“I would really like to be able to control the E3DC system via Openhab at some point in time. Anyone of the experts interested in developing a binding for that, using the E3DC RSCP interface?”

Maybe this can help:

1 Like

@mal , based on your excellent work integrating the E3DC system: I will get a Stiebel Eltron heatpump installed, including its Internet Service Gateway (ISG), supporting Modbus TCP/IP. What do I need to do to use the Openhab Modbus Binding to communicate with the heatpump? Ideally, I like to control the heatpump via Openhab, using excess solar energy, as reported by the E3DC Modbus connection.
Thanks a lot for your advice.

@ffr the magic happens in step 3 of the tutorial. You need to get the modbus documentation for your Stiebel Eltron pump. Accordng to the documentation you can then create the things.
I can’t tell if the heatpump can be controlled via modbus, though the Modbus Binding is capable of that (didn’t try it).
You might want to consider using the E3DC SG ready interface board. Newer heatpumps should have SG ready implemented.

Not an exact answer, but I hope it helps.

But still could not really makeup a proper documentation on RSCP. Just some example application which are in C and not so easy to rebuild/reengineer given encryption is required, etc.

@bjoernbrings We need to have a binding for that. I’m diving into RSCP currently (.NET not Java yet). It’s not that complicated, but last time I worked on a binding, the build environment was a real PITA.

What the RSCP binding needs:

  • synchronous tcp websocket communication (send telegram and wait for reply telegram)
  • encrypt the telegrams with Rijndael256 (block and key size 256 bit) using Bouncy Castle
  • polling loop/timer
  • and of course the protocol fiddling

The communication and polling part can be found in other bindings already. I didn’t check if a bindings uses Bouncy Castle already. The protocol handling / telegram interpretation is time consuming IMO.
I just reinstalled Openhab, maybe I find the time to work on this in the next months.

Meanwhile someone else might build something around this python implementation. It talks JSON on first glance.

1 Like

Thanks for the quick response. I know about the SG ready interface. My understanding is that it requires a serial connection between the E3DC and the heatpump. It is also not as flexible as an Openhab rulset.

If you could get some example program in Java running I should definitly be able to make that an binding

Thanks for sharing this !!!

Maybe this git project is helpful, I didn’t do the coding. But in my point of view with my limited experience in coding it will be a solid base to start a binding, because the hard work RSCP is already done. I tested the sample file on my own E3Dc and it is working fine.

The RSCPTag file looks quite interesting as it lists all the TAGs but without any further info. But it shows that the author has deeper insights beyond the documentation that is open to anyone by E3DC.

Our E3DC device requires username and password for RCSP (that is modbus I think?) Currently I am using it with a python script since there is a library for it, but integrating it directly would be better…
So where do I need to put username and password?

I have read all responses now so RCSP is able to control the device and modbus works without authentication but cant control it?

NVM, I found it now, seems to be new in the device since I never saw that option