[eBUS 2.0] New binding - Release Candidate 7b

A new Alpha release is available, maybe the last Alpha before switch to a more code stable beta release.

With this release you can use the new online repository for configuration files. This allows us to update the configuration files without a new binding release.

Use this URL if you want to use the online version

https://raw.githubusercontent.com/csowada/ebus-configuration/master/index-configuration.json

Alpha 0.0.14 (2017-11-20)

Features:

  • add support to load complete configuration bundles via URL
  • add device scan function, rename inquire function
  • add CSV writer for resolved and unresolved telegrams
  • add metrics service to collect eBUS data

Bugfixes:

  • also use master addresses for device table
  • activate unused resolve failed events
  • delete unused projects from source
  • remove closed connection streams on close

Configurations:

  • add identification for Wolf MM
  • add outside temperature and datetime to Vaillant VRC 4307470

Alpha 0.0.14 (2017-11-20)

Features:

  • Update to eBUS library 0.0.14, github
  • Add advance CSV file logging to eBUS binding configuration
  • Add configuration bundle URL to eBUS binding configuration
  • Add polling per thing

Hi @csowada

Thanks. Version A.14 is working but:
there is error in log after “bai_boiler_temp-d-flow-ext”:

2017-11-21 10:43:08.865 [INFO ] [hab.binding.ebus.handler.EBusHandler] - Poll command "ebus:bai:ee4561f6:08:bai_boiler_temp-d-flow-ext#temp-d-flow-ext" with "FF 08 B5 09 03 0D 6E 04 4A" ...
2017-11-21 10:43:09.755 [ERROR] [e.csdev.ebus.core.EBusControllerBase] - Error while firing onTelegramReceived events!
java.lang.ArrayIndexOutOfBoundsException: null
     at java.lang.System.arraycopy(Native Method) ~[?:?]                                                                                                                                              
     at de.csdev.ebus.command.EBusCommandUtils.decodeValueList(EBusCommandUtils.java:369 [12:org.openhab.binding.ebus:2.2.0.201711201929]                                                          
     at de.csdev.ebus.command.EBusCommandUtils.decodeTelegram(EBusCommandUtils.java:422) [12:org.openhab.binding.ebus:2.2.0.201711201929]                                                             
     at de.csdev.ebus.service.parser.EBusParserService.onTelegramReceived(EBusParserService.java:94) [12:org.openhab.binding.ebus:2.2.0.201711201929]                                                 
     at de.csdev.ebus.core.EBusControllerBase$2.run(EBusControllerBase.java:101) [12:org.openhab.binding.ebus:2.2.0.201711201929]                                                                     
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:?]                                                                                                         
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:?]                                                                                                         
     at java.lang.Thread.run(Thread.java:748) [?:?]

and I have two requests/questions:

1, I’m missing “sdflame” from ebusd

2, Can you help me understand how to implement this from ebus1.x to ebus 2.0:

[
    {
    "comment":  "Vaillant - Operational Data from Room Controller to Burner Control Unit",
    "device":   "Vaillant",
    "id":       "set_custom_values",
    "class":    "protherm",
    "command":  "B5 10",
    "data":     "00 00 FF FF FF FF 00 FF 00",
    "dst":      "08",
    "debug":    1,

    "values": {
        "heating_water_target_temp": {"type": "data1c", "pos": 8, "label": "Lead water target temperature", "min": 0,"max": 100},
        "hot_water_target_temp": {"type": "data1c", "pos": 9, "label": "Service water target temperature", "min": 0,"max": 100},
        "turn_off_heating": {"type": "byte", "pos": 12, "label": "TURN OFF heating", "min": 0, "max": 5},
        "turn_off_hot_water": {"type": "bit", "pos": 12, "bit": 2, "label": "TURN OFF hot water"}
    }
}

]

I need to set Heating Water Target Temp

Just installed the .14 version, and it’s working pretty well, detection of every devices is fast, and the statistic on the ebus metrics are really useful (now I can see that my failed telegram rate is ~70% as discussed :wink: ).

However, waiting for some answer from esera support, which complete lack of answer is really despising me now, I start again to code unresolved messages, knowing that I need to ignore the missed ack from the boiler.

So I added some telegram definitions in the bai configuration file:

        {
            "label":    "Operational Data from Room Controller to Burner Control Unit",
            "id":       "boiler.control.setopdata",
            "command":  "B5 10",

            "broadcast": {
                "master": [
                    {"type": "static", "default": "00 00"},
					{"name": "lead_water_target_temp", "type": "data1c", "label": "Lead water target temperature", "min": 0, "max": 100, "format":"%.1f°C"},
					{"name": "srv_water_target_temp", "type": "data1c", "label": "Service water target temperature", "min": 0, "max": 100, "format":"%.1f°C"},
                    {"type": "static", "default": "FF FF"},
                    {"type": "byte", "children": [
						{"name": "turnoff_water_heating", "type": "bit", "label": "Turn off water heating"},
						{"type": "bit"},
						{"name": "turnoffservice_water_heating", "type": "bit", "label": "Turn off service water heating"},
						{"type": "bit"},
						{"type": "bit"},
						{"type": "bit"},
						{"name": "unknown", "type": "bit", "label": "unknown"},
						{"type": "bit"}
					]},
                    {"type": "static", "default": "00 00"}
				],
                "slave": [
                    {"type": "static", "default": "01"}
                ]
            }
        },

Which seems properly interpreted:

2017-11-25 00:48:31.128 [INFO ] [nding.ebus.handler.EBusBridgeHandler] - Received telegram from address 10 to 08 with command boiler.control.setopdata
2017-11-25 00:48:31.132 [INFO ] [hab.binding.ebus.handler.EBusHandler] - Handle received command by thing Vaillant Custom BAI00 with id ebus:custombai:73dcff5d ...
2017-11-25 00:48:31.135 [DEBUG] [hab.binding.ebus.handler.EBusHandler] - Key turnoffservice_water_heating with value true
2017-11-25 00:48:31.141 [DEBUG] [hab.binding.ebus.handler.EBusHandler] - Key srv_water_target_temp with value 50
2017-11-25 00:48:31.147 [DEBUG] [hab.binding.ebus.handler.EBusHandler] - Key lead_water_target_temp with value 40.5
2017-11-25 00:48:31.152 [DEBUG] [hab.binding.ebus.handler.EBusHandler] - Key turnoff_water_heating with value false
2017-11-25 00:48:31.157 [DEBUG] [hab.binding.ebus.handler.EBusHandler] - Key unknown with value false

Then the long possible answer:

        {
            "label":    "Operational Data of Burner Control Unit to Room Control Unit",
            "id":       "boiler.control.getopdata",
            "command":  "B5 11",

            "broadcast": {
                "master": [
                    {"type": "static", "default": "01"}
				],
                "slave": [
					{"name": "lead_water_temp", "type": "data1c", "label": "Lead water temperature", "min": 0, "max": 100, "format":"%.1f°C"},
					{"name": "lead_water_return_temp", "type": "data1c", "label": "Lead water return temperature", "min": 0, "max": 100, "format":"%.1f°C"},
                    {"name": "get_temp_outside", "type": "data2b", "label": "Outside Temperature", "min": -50, "max": 50, "format":"%.1f°C"},
					{"name": "srv_water_temp", "type": "data1c", "label": "Service water temperature", "min": 0, "max": 100, "format":"%.1f°C"},
					{"name": "srv_water_return_temp", "type": "data1c", "label": "Service water return temperature", "min": 0, "max": 100, "format":"%.1f°C"},
                    {"type": "byte", "children": [
						{"name": "lead_heating", "type": "bit", "label": "Lead water heating", "mapping": {"0":"Off", "1":"On"}},
						{"name": "servicewater_heating", "type": "bit", "label": "Service water heating", "mapping": {"0":"Off", "1":"On"}}
					]},
                    {"type": "static", "default": "00 FF"}
                ]
            }
        },

Seen as:

2017-11-25 00:52:33.696 [INFO ] [nding.ebus.handler.EBusBridgeHandler] - Received telegram from address 10 to 08 with command boiler.control.getopdata
2017-11-25 00:52:33.700 [INFO ] [hab.binding.ebus.handler.EBusHandler] - Handle received command by thing Vaillant Custom BAI00 with id ebus:custombai:73dcff5d ...
2017-11-25 00:52:33.703 [DEBUG] [hab.binding.ebus.handler.EBusHandler] - Key get_temp_outside with value 11.625
2017-11-25 00:52:33.710 [DEBUG] [hab.binding.ebus.handler.EBusHandler] - Key servicewater_heating with value false
2017-11-25 00:52:33.717 [DEBUG] [hab.binding.ebus.handler.EBusHandler] - Key lead_water_return_temp with value 33
2017-11-25 00:52:33.724 [DEBUG] [hab.binding.ebus.handler.EBusHandler] - Key lead_heating with value true
2017-11-25 00:52:33.730 [DEBUG] [hab.binding.ebus.handler.EBusHandler] - Key srv_water_temp with value 36
2017-11-25 00:52:33.738 [DEBUG] [hab.binding.ebus.handler.EBusHandler] - Key srv_water_return_temp with value 40
2017-11-25 00:52:33.743 [DEBUG] [hab.binding.ebus.handler.EBusHandler] - Key lead_water_temp with value 41

, a shorter version telegram:

        {
            "label":    "Short Operational Data of Burner Control Unit to Room Control Unit",
            "id":       "boiler.control.getshortopdata",
            "command":  "B5 11",

            "broadcast": {
                "master": [
                    {"type": "static", "default": "02"}
				],
                "slave": [
                    {"type": "static", "default": "03 3C 96 50"},
					{"name": "srv_target_water_temp", "type": "data1c", "label": "Service water target temperature", "min": 0, "max": 100, "format":"%.1f°C"}
                ]
            }
        },

Note that the sequence have been described as “03 3C 96 46” instead of the 03 3C 96 50 I can see on my telegrams on the ebus wiki here http://ebus-wiki.org/doku.php/ebus/serviceb511
.
Seen as:

2017-11-25 01:05:04.268 [INFO ] [nding.ebus.handler.EBusBridgeHandler] - Received telegram from address 10 to 08 with command boiler.control.getshortopdata
2017-11-25 01:05:04.271 [INFO ] [hab.binding.ebus.handler.EBusHandler] - Handle received command by thing Vaillant Custom BAI00 (08) with id ebus:custombai:80ca8c44:08 ...
2017-11-25 01:05:04.273 [DEBUG] [hab.binding.ebus.handler.EBusHandler] - Key srv_target_water_temp with value 45
2017-11-25 01:05:04.282 [ItemStateChangedEvent     ] - ebus_custombai_80ca8c44_08_custombai_boiler_control_getshortopdata_srv_target_water_temp changed from NULL to 45

And finally:

        {
            "label":    "Get DateTime",
            "id":       "boiler.control.getdatetime",
            "command":  "B5 04",
    
            "broadcast": {
                "master": [
                    {"type": "static", "default": "00"}
                ],
                "slave": [
                    {"name":"get_status", "type": "byte", "label":"status", "format":"%d",
                        "mapping": {"0":"NoReception", "01":"Reception", "02":"Synchronized", "03":"DataValid"}},
                    {"name": "get_datetime", "type":"datetime"},
                    {"name":"get_temp_outside", "type": "data2b", "label": "Outside Temperature", "min": -50, "max": 50, "format":"%.1f°C"}
                ]
            }
        },

Which seems properly interpreted as well, but the mapping result is not what I would like:

2017-11-25 00:16:59.583 [INFO ] [nding.ebus.handler.EBusBridgeHandler] - Received telegram from address 10 to 08 with command boiler.control.getdatetime
2017-11-25 00:16:59.586 [INFO ] [hab.binding.ebus.handler.EBusHandler] - Handle received command by thing Vaillant Custom BAI00 (08) with id ebus:custombai:80ca8c44:08 ...
2017-11-25 00:16:59.589 [DEBUG] [hab.binding.ebus.handler.EBusHandler] - Key get_temp_outside with value 11.875
2017-11-25 00:16:59.595 [DEBUG] [hab.binding.ebus.handler.EBusHandler] - Key get_status with value 3
2017-11-25 00:16:59.601 [DEBUG] [hab.binding.ebus.handler.EBusHandler] - Key get_datetime with value 25.11.2017 00:17:02

For the record, the “Unresolved telegrams ratio” seems to calculate the "“Resolved telegrams ratio” instead, I have 73 Resolved telegrams , 47 Unresolved telegrams and “Unresolved telegrams ratio” is displaying with 60.8%.

And regarding the modified VRC configuration, the label for the datetime broadcast have a copy paste issue, it should be related to the date :slight_smile:

1 Like

Hi,

How can install the Alpha 14, I can’t find the jar File to install it

There is no direct link (yet I guess) for the last version but going to the previous link let you navigate to the last version that is there: https://drive.google.com/drive/folders/0B5Vjy5Qe0CabU3JrNElnT3BvUmc

There is a thing I don’t get regarding the templates. From what I can see in the doc (https://github.com/csowada/ebus/blob/master/de.csdev.ebus/doc/configuration.md) a template is defined at a command block level.
But for me a template purpose would be to use a common template on multiple command blocks or even on multiple json files.

How could a single template be used on multiple places so that it need only to be defined once ?

Hi, long time haven’t been here…
I have just installed v14 (from v12), I did it as before - remove all leftovers and recreated bridge from the beginning. Then I waited for autodiscovery to find things and I used them.
data/time doesn’t work for me and it throws nasty error:

2017-11-25 16:59:23.398 [WARN ] [hab.binding.ebus.handler.EBusHandler] - Unexpected datatype EBusDateTime for channel ebus:vrc430_controller_time_time !
2017-11-25 16:59:23.400 [ERROR] [e.csdev.ebus.core.EBusControllerBase] - Error while firing onTelegramReceived events!
java.lang.ArrayIndexOutOfBoundsException: 3
        at de.csdev.ebus.command.datatypes.ext.EBusTypeDate.decodeInt(EBusTypeDate.java:110)[224:org.openhab.binding.ebus:2.2.0.201710221201]
        at de.csdev.ebus.command.datatypes.ext.EBusTypeDate.decodeInt(EBusTypeDate.java:1)[224:org.openhab.binding.ebus:2.2.0.201710221201]
        at de.csdev.ebus.command.datatypes.EBusAbstractType.decode(EBusAbstractType.java:88)[224:org.openhab.binding.ebus:2.2.0.201710221201]
        at de.csdev.ebus.command.EBusCommandUtils.decodeValueList(EBusCommandUtils.java:355)[224:org.openhab.binding.ebus:2.2.0.201710221201]
        at de.csdev.ebus.command.EBusCommandUtils.decodeTelegram(EBusCommandUtils.java:407)[224:org.openhab.binding.ebus:2.2.0.201710221201]
        at de.csdev.ebus.service.parser.EBusParserService.onTelegramReceived(EBusParserService.java:93)[224:org.openhab.binding.ebus:2.2.0.201710221201]
        at de.csdev.ebus.core.EBusControllerBase$2.run(EBusControllerBase.java:101)[224:org.openhab.binding.ebus:2.2.0.201710221201]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)[:1.8.0_151]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)[:1.8.0_151]
        at java.lang.Thread.run(Thread.java:748)[:1.8.0_151]
2017-11-25 16:59:46.106 [INFO ] [hab.binding.ebus.handler.EBusHandler] - Initialize eBUS pollings for ebus::vrc430_15 ...

then what I observe is that my own parsers still don’t work (for HC2 Heating curve from VR61 added manually as well as boiler pressure) but this I’m going to post in a dedicated thread as soon as I collect necessary logs

edit - what captured my attention after posting the above is ebus:2.2.0.201710221201 at the end of the error lines. I’m pretty sure I am using v14:

pi@dom-pi:/usr/share/openhab2/addons $ ls
openhab-addons-2.1.0.kar  org.openhab.binding.ebus-2.2.0-20171120.jar  README

and restarted OH2 since then couple of times (as for some reason I need to manually remove links in jsondb as otherwise I’m getting error about not being able to delegate update to an item)

Hi,
in the description of the alpha 14 is mentioned that the new version is capable to write a csv with unparsable messages, but there is no description how i can activate this. Can you please explain how i can activate this feature?

Hi,

it’s in the advanced settings of the ebus bridge in Paper UI, you need to click the “Show more” button.
2 csv are created in the openhab2 log folder, ebus-resolved.csv and ebus-unresolved.csv.

Oh my false, I’ve forgot to add the download link. I’ve modified the first post.

Great work! Could you help and share your code on github? You can fork the configuration https://github.com/csowada/ebus-configuration repository and add your code.

I will check you other reported issues next days. But you error rate with 70% is very high :frowning: I hope you will get feedback from esera.

Yes, you are right. I already have this on my todo list. The current solution is not consequent and I will change this. But I must check the complexity of the change first. Maybe I start on file level to avoid file load order issues.

Mh, could you check the bundle list on your console with bundle:list ?

Hi Christian, I already made a fork and will implement my changes inside it soon. I never made push/pull request on Github, guess it’s time to learn :wink:

Is it possible to add comments in the json file ? There are some case where it could be useful.

hmm,
something went wrong

224 | Active    |  80 | 2.2.0.201710221201     | eBUS Binding
225 | Installed |  80 | 2.2.0.201711201929     | eBUS Binding

how can I fix it? is it as easy as stop the old bundle, activate the new one and remove the old? or maybe I’ll have to do something in the configuration as well to make changes happening?

You should check http://docs.openhab.org/administration/bundles.html to stop/remove the old binding. I guess that you can solve this issue by cleaning the tmp and cache directory. But I’m not an expert for the Karaf system.

thanks I fixed it (it was enough to just uninstall old bundle in the console).
from what I see you added date/time which works fine for me but name of the parameter is Outside temperature :wink:
the time and date parameters separately, don’t work for me (they show some strange content). I wonder if this can be changed to allow set too? Need for it is pragmatic - VRC doesn’t have an internal battery, it has a capacitor only which typically fails resetting date/time to midnight after energy outage. It happened to me couple of times that I didn’t realize it and haven’t had warm water. Nice to have in case you are looking for improvement ideas :slight_smile:

I see boiler pressure working fine - good stuff!

I have a strange issue with the Aplha 14 on my test env, Paper Ui works as intended, but the logs shows no entry since this morning. I do not have either data since this point in my grafana/Influxdb.

It’s the second time I get this, the first time I just restarted openhab2 and forget it, but here I let it at this state to try to get what is going wrong.

What should I look at to see what could be the issue ?

Hi Christian, i´m new to OH and am using FHEM at the Moment (i hate it).

Now i´m trying to switch to OH2, so i have to get my Vaillant Geotherm VWL 61/3 working with ebus.
Is the binding ready for this heating pump? If not, how can I support you?

At the Moment the Bridge remains “Uninitialized” with Status: UNINITIALIZED - HANDLER_INITIALIZING_ERROR de/csdev/ebus/core/connection/EBusSerialNRJavaSerialConnection.

I´m using a Esara USB EBUS Coupler, trimmed to work with FHEM.

Would be great to be able to switch over to OH2.

Are the FHEM and OH hosted on the same RPi ?
First guess then would be that your virtual serial device is still connected to FHEM. You should make sure it’s logically unbond to FHEM before attempting to connect to it from the OH ebus binding.