eBUS Pre-Release for 1.8.0


I updated the eBUS (heating) binding for the next release 1.8.0.

What’s New

  • New parameter “set” allows to set a value
  • Changed syntax of item configuration, but old syntax is still valid
  • Improved sender timings
  • Enhanced Wolf and Vaillant configurations (still need help for more commands! thx to nokoraes for Villant)
  • JSon configuration now adjusted to each other and translated to english
  • Changed many id’s due to previous point
  • Add CSV support to record raw telegrams
  • Smaller bugfixes
  • Degraded old commands to testing/unstable

If you are interest in this update check pull request https://github.com/openhab/openhab/pull/2981

The updates wiki documentation is available here https://github.com/csowada/openhab/tree/ebus-update-pr1/bundles/binding/org.openhab.binding.ebus


Do you know if Saunier Duvall is compatible with this?

I have a Isofast F35 boiler and have searched the Internet for information on how to interface to it but can’t find a definitive answer, just that Saunier Duvall sells some eBus thermostats

I’ve looked at the documentation and they use the eBUS interface for this device. I also saw that Saunier Duval is part of the vaillant group. Maybe this device is compatible with vaillant commands.
But if this device follows the eBUS standard it should work with the standard eBUS commands.

New Version available, see post #1


I’ve created a new binary so it is easier to test the new release. It would be great if I could get feedback.

There are three things that I need to know.

  1. Does the binding run in general, which hardware?
  2. Does the included commands run well?
  3. Is the wiki manual and the command overview okay?

Download file: eBUS Binding 1.8.0 RC1


I have made a few changes to the bai configuration

  • level_modulation-kw should be part load, id and description was changed
  • there was an error in the flow temperature which is now corrected
  • number of starts and hours were added
  • I am testing now with the attached file as custom config
  • some of the values don’t work on my setup but the config is the same as in ebusd, maybe they work for someone else
    vaillant-bai00-configuration.json (6.6 KB)

Config vaillant-vrc470 is tested and everything seems to work.
My only issue is that the day, night, dhw setpoints and the currently displayed desired temperature don’t display anything after the comma (all data1c values). This means that when I see 20.5 on the display, the value in openhab is 20. Changing to data2c doesn’t work. Maybe this is just the way it’s sent on the bus.

I added vaillant-vrc430. The commands are similar to vrc470 (but there aren’t as many), so this should normally work without any issues.
vaillant-vrc430-configuration.json (7.1 KB)

I cleaned up the common vaillant values. I haven’t tested the solar values, but the others work on my setup.
This config might help for some people as these don’t require polling.
vaillant-common.json (1.8 KB)

Testing and errors
In general everything runs well, I’ve been testing the 1.8.0 snapshots for quite some time without any issues.

I contiuously test the following items, so these certainly work. I’m now testing with the attached bai file as custom config and the included vrc470 config.

Number	TempBuitenCV	"Temperatuur buiten [%.1f °C]"	(gWeer,Temperatuur,gCV,CVChart,TempBuitenChart,gPersistence)	{ ebus="id:controller.temp_outside.temp_outside, cmd:controller.temp_outside, dst:15, refresh:300" }
Number	TempCVRuimte	"Temperatuur woonkamer [%.1f °C]"	(Temperatuur,gCV,gPersistence)	{ ebus="id:controller.temp_room.temp_room, cmd:controller.temp_room, dst:15, refresh:300" }
Number	SetTempCVRuimte "Setpunt ruimte [%.1f °C]" (Temperatuur,gCV,gPersistence) { ebus="id:controller.temp_d_room_disp, cmd:controller.temp_d_room_disp, dst:15, refresh:300" }
Number	CVHC1OpMode	"Bedrijfsmodus"	(gCV)	{ ebus="id:heating.heating_circuit_program, cmd:heating.heating_circuit_program, dst:15, refresh:300, set:heating.set_heating_circuit_program.program" }
Number	CVHC1SfMode	"Speciale modus"	(gCV)	{ ebus="id:heating.heating_circuit_special_program, cmd:heating.heating_circuit_special_program, dst:15, refresh:300, set:heating.set_heating_circuit_special_program.program" }
Number	SetTempCVDag	"Dag [%.1f °C]"	(gCV)	{ ebus="id:heating.temp_d_day, cmd:heating.temp_d_day, dst:15, refresh:300, set:heating.set_temp_d_day.temp_d_day" }
Number	SetTempCVNacht	"Nacht [%.1f °C]"	(gCV)	{ ebus="id:heating.temp_d_night, cmd:heating.temp_d_night, dst:15, refresh:300, set:heating.set_temp_d_night.temp_d_night" }
Number	SetTempWarmWater	"Warm water [%.1f °C]"	(gCV)	{ ebus="id:dhw.temp_d_dhw, cmd:dhw.temp_d_dhw, dst:15, refresh:300, set:dhw.set_temp_d_dhw.temp_d_dhw" }
Number	SetTempBufferBoven	"Setpunt buffer boven [%.1f °C]"	(gCV)	{ ebus="id:dhw.temp_d_actual_dhw, cmd:dhw.temp_d_actual_dhw, dst:15, refresh:300" }
Number	CVHC1Stooklijn	"Stooklijn [%.1f]"	(gCV)	{ ebus="id:heating.temp_hcurve, cmd:heating.temp_hcurve, dst:15, refresh:300, set:heating.set_temp_hcurve.temp_hcurve" }

Number	TempBufferBoven	"Temperatuur buffer boven [%.1f °C]"	(gCV,ZonneboilerChart,gPersistence)	{ ebus="id:dhw.temp_cylinder.temp_cylinder, cmd:dhw.temp_cylinder, dst:08, refresh:60" }
Number	SetTempCVVertrek	"Setpunt ketel vertrek [%.1f °C]"	(gCV,CVChart,gPersistence)	{ ebus="id:boiler.temp_d_flow, cmd:boiler.temp_d_flow, dst:08, refresh:60" }
Number	TempCVVertrek	"Temperatuur ketel vertrek [%.1f °C]"	(gCV,CVChart,gPersistence)	{ ebus="id:boiler.temp_flow.temp_flow, cmd:boiler.temp_flow, dst:08, refresh:60" }
Number	TempCVRetour	"Temperatuur ketel retour [%.1f °C]"	(gCV,CVChart,gPersistence)	{ ebus="id:boiler.temp_return.temp_return, cmd:boiler.temp_return, dst:08, refresh:60" }
Number	CVBelastingP	"Belasting ketel [%d %%]"	(gCV,CVChart,gPersistence)	{ ebus="id:boiler.level_modulation, cmd:boiler.level_modulation, dst:08, refresh:60" }
Number	CVPomp	"Pomp [MAP(1aan0uit.map):%s]"	(gCV)	{ ebus="id:boiler.pump, cmd:boiler.pump, dst:08, refresh:300" }
Number	CVFanSpeedSet	"Ventilatorsnelheid [%d rpm]"	(gCV)	{ ebus="id:boiler.speed_d_fan, cmd:boiler.speed_d_fan, dst:08, refresh:300" }
Number	CVWaterdruk	"Waterdruk [%.2f bar]"	(gCV)	{ ebus="id:boiler.pressure.pressure, cmd:boiler.pressure, dst:08, refresh:300" }
Number	CVIonisatie	"Ionisatie [%d µA]"	(gCV)	{ ebus="id:boiler.value_io.value_io, cmd:boiler.value_io, dst:08, refresh:300" }
Number	CVHCHours	"Draaiuren CV [%d h]"	(gCV)	{ ebus="id:heating.runtime, cmd:heating.runtime, dst:08, refresh:300" }
Number	CVDHWHours	"Draaiuren SWW [%d h]"	(gCV)	{ ebus="id:dhw.runtime, cmd:dhw.runtime, dst:08, refresh:300" }
Number	CVHCStarts	"Starts CV [%d x100]"	(gCV)	{ ebus="id:heating.starts, cmd:heating.starts, dst:08, refresh:300" }
Number	CVDHWStarts	"Starts SWW [%d x100]"	(gCV)	{ ebus="id:dhw.starts, cmd:dhw.starts, dst:08, refresh:300" }

I get the following errors (they don’t seem serious to me).
On startup

2015-12-15 20:13:37.942 [WARN ] [o.b.e.i.c.EBusCommandProcessor] - No data to send for item SetTempCVRuimte! Check your item configuration.
2015-12-15 20:13:39.943 [WARN ] [o.b.e.i.c.EBusCommandProcessor] - No data to send for item SetTempBufferBoven! Check your item configuration.
2015-12-15 20:13:42.947 [WARN ] [o.b.e.i.c.EBusCommandProcessor] - No data to send for item SetTempWarmWater! Check your item configuration.
2015-12-15 20:13:48.947 [WARN ] [o.b.e.i.c.EBusCommandProcessor] - No data to send for item CVHC1Stooklijn! Check your item configuration.
2015-12-15 20:13:49.941 [WARN ] [o.b.e.i.c.EBusCommandProcessor] - No data to send for item CVHC1OpMode! Check your item configuration.

When everything is running

2015-12-15 10:55:15.212 [WARN ] [i.c.AbstractEBusWriteConnector] - eBus collision detected! 0x00
2015-12-15 10:55:15.259 [WARN ] [i.c.AbstractEBusWriteConnector] - eBus collision detected! 0x10
2015-12-15 10:57:13.555 [WARN ] [i.c.AbstractEBusWriteConnector] - Slave CRC wrong, resend!
2015-12-15 10:57:13.560 [WARN ] [i.c.AbstractEBusWriteConnector] - Delay 84785us, allowed max. 104us...
2015-12-15 10:57:13.563 [WARN ] [i.c.AbstractEBusWriteConnector] - eBus collision detected! 0x06
2015-12-15 10:57:13.573 [WARN ] [.ebus.internal.utils.EBusUtils] - eBUS telegram answer-crc invalid, skip data!
2015-12-15 10:58:13.563 [WARN ] [i.c.AbstractEBusWriteConnector] - Slave CRC wrong, resend!
2015-12-15 10:58:13.569 [WARN ] [i.c.AbstractEBusWriteConnector] - Delay 85356us, allowed max. 104us...
2015-12-15 10:58:13.580 [WARN ] [i.c.AbstractEBusWriteConnector] - eBus collision detected! 0x06
2015-12-15 10:58:13.617 [WARN ] [.ebus.internal.utils.EBusUtils] - eBUS telegram answer-crc invalid, skip data!
2015-12-15 11:00:00.266 [INFO ] [g.openhab.io.net.exec.ExecUtil] - executed commandLine '/home/pi/SBFspot/SBFspot.sh > /dev/null'
2015-12-15 11:02:13.560 [WARN ] [i.c.AbstractEBusWriteConnector] - Slave CRC wrong, resend!
2015-12-15 11:02:13.564 [WARN ] [i.c.AbstractEBusWriteConnector] - Delay 83139us, allowed max. 104us...
2015-12-15 11:02:13.569 [WARN ] [i.c.AbstractEBusWriteConnector] - eBus collision detected! 0x00
2015-12-15 11:02:13.589 [WARN ] [.ebus.internal.utils.EBusUtils] - eBUS telegram answer-crc invalid, skip data!
2015-12-15 11:04:25.929 [WARN ] [i.c.AbstractEBusWriteConnector] - eBus collision with SYN detected!
2015-12-15 11:04:26.049 [WARN ] [i.c.AbstractEBusWriteConnector] - Delay 6883us, allowed max. 104us...
2015-12-15 11:04:26.051 [WARN ] [i.c.AbstractEBusWriteConnector] - eBus collision with SYN detected!

Wiki and manual

-There are some things that need to be updated in the example openhab.cfg (the configuration names don’t match).
-Maybe add a few item config examples for vaillant.
-Include the complete lines to be added to logback.xml for the logging part (I lost quite some time figuring this out).

Thank you for developing this. It’s really useful!

Thank you for your great work.

I add you changes to the new version. I fixed the send routine for serial that was affected by the cpu usage improvements.
This version is only a test version to see if the send and receive routine works better.

1.8.0 Release Candidate 2 - Test only

Hello @nikoraes
I’m going to add new entry in valiant-vrc430-configuration.json
I get 430.csv but I don’t undestand where I can find detailed information.
No all section are clear for me.
“comment”: " HC1 Operation mode", Clear
“device”: “Vaillant VRC 430”, Clear
“id”: “heating_circuit_program”, ??? Can be find in 430.csv ?
“class”: “heating”, ??? Can be find in 430.csv ?
“command”: “B5 09”, Clear
“data”: “0D 2F 00”, Clear
“dst”: “15”, Clear

For exampel the same entry in 430 an 470 has differnet class ( Heating for vrc430 and controller for 470

Hello @Tomek,

id and class are used by this binding to differentiates the telegrams. You use both in your item configuration (see here).

And here is the list of all current used classes and ids by this binding.

To your example: Yes, I try to keep the classes and ids clean, it should be “heating” because it is related to heating. But sometimes it is not clear.

If you use the current syntax of the commands I can add it directly into the binding.

Do you know this document?


Hello @csowada
Yes i Try to understand but I’m no expert in programming:)
I try to create a few entries and let you now

I find in log something like this
2015-12-17 13:43:41 TRACE o.o.b.e.i.c.AbstractEBusWriteConnector[:150]- No access to ebus because the lock counter

Is it ok?

Yes, thats okay. All bus participants must share the same line, so sometimes the binding must wait a short while before it’s allowed to write to the bus.

The message is still not optimal :wink:

I’m currently testing the version you posted.
Everything still works and I’m now using the included configuration files.

There are just two more things I would like to change:
For temp_d_room_1 the id should be changed to temp_d_room_disp
level_modulation should be changed to pump_modulation or something similar. At least I think this is what it is.

Thank you,

I will look for your suggested changes.
I hope I can release the final release candidate with all configurations, last fixes this weekend.

I included these changes in the attached configuration files.
The error in the vrc430 file that @Tomek found is also corrected.

I also checked the descriptions of the bai configuration file with the manual of the boiler and I added a few more untested values.

vaillant-vrc430-configuration.json (7.1 KB)
vaillant-vrc470-configuration.json (9.7 KB)
vaillant-bai00-configuration.json (15.9 KB)


I released the lastest release cantidate on github. I also updates the documentation including the new ids.

@nikoraes Many thanks to your great work. I used you files but I changed some ids. If want to add new commands it would be great if you could modify the original file from github. Than it’s easier for me to find the differences.

Download RC3

Documentation RC3

Great works
Many thanks

Thank you!

I will review the bai configuration again. You changed a few ids back that dont really make sense :-).

Let me explain, why I changed the ids.

  1. All configurations with the same result (ex. DHW Temp.) should use the same class and id. So Wolf, Vaillant incl. Common devices should use the same classes and ids for the the basic set.
  2. The first part of the id should something like temperature, status, state, runtime etc. followed by the device, additional info etc., if necessary.
  3. I used the translation from the wolf manuels, but vaillant uses different translations. I’m not 100% familiar with the technical wording.

So I will discuss the id’s with you because, we need to align it for Wolf and Vaillant too. But we should do this before release freeze for release 1.8.0.

For me it would be great if you could look through the lists below and make suggestions for id’s that fits for all similar values.