[eBUS 2.0] New binding - Release Candidate 7b

Regarding the json file, should I presume that they are mbedded in the jar file and cannot be modified from within the openhab2 installation ?

So what could be the way to replace json file by a test version ? For exemple, my broacast messages bbelow should be integrated in the vrc json file, and it would be a good way to validate json before providing it back to you as an enhanced version with broader devices message support.

Additionnaly, could it be possible to add the same csv report as the version 1.x ? This is so convenient to identify the unknown messages and to check what is discussed on the ebus between the devices !

Maybe using a powershell script could help to make a first json draft, that could be edited after ?

Something like:

Get-Content -path web_url.csv | ConvertFrom-Csv -Delimiter ‘,’ | ConvertTo-Json

Hi Christophe,

Those are not errors but information [INFO]

I will try to use your file in my system today evening

You can’t modify the build-in configurations, but you can create a complete copy with a different id and name. Auto discovery etc. works the same way as the build-in command. Later on, I can cherry-pick the changes that are new to the binding :slight_smile: .
Do you have a registered a device with the slave address 15 (10 is the master address) with your configuration Test Vaillant VRC 430(f)/470(f). You should also change the label or you could mix-up it with the build-in version.

If you add the identification block, auto discovery should also show your custom configuration.

Here an example

{
    "id":           "custom",
    "vendor":       "Vaillant",
    "label":        "Vaillant Custom VRC430/470(f)",
    "description":  "Vaillant Custom VRC430/470(f)",

    "authors":      [
                    "Christian Sowada, opensource@cs-dev.de",
                    "Christophe P @ openhab community"
                    ],

    "identification": [
                    "34 33 30 30 30",
                    "34 37 30 30 30",
                    "46 34 37 30 30",
                    "46 34 33 30 30"
                    ],

    "commands":
    [
        {
            "label":    "Outside temperature",
            "id":       "controller.broadcast.temp_outside",
            "command":  "B5 16",
    
            "broadcast": {
                "master": [
                    {"type": "static", "default": "01"},
                    {"name":"temp_outside", "type": "data2b", "label": "Outside Temperature", "min": -50, "max": 50, "format":"%.1f°C"}
                ]
            }
        },
        
        {
            "label":    "Outside temperature",
            "id":       "controller.broadcast.datetime",
            "command":  "B5 16",
    
            "broadcast": {
                "master": [
                    {"type": "static", "default": "00"},
                    {"name": "datetime", "type":"datetime"}
                ]
            }
        }
    ]
}

Ok, with your help now I think I get it, so I made a custom version of VRC json file, and the additionnal definition are included.

Outside temperature broadcast messages are properly interpretated:

2017-11-07 17:29:42.840 [INFO ] [nding.ebus.handler.EBusBridgeHandler] - Received telegram from address 10 to FE with command controller.broadcast.temp_outside
2017-11-07 17:29:42.844 [INFO ] [hab.binding.ebus.handler.EBusHandler] - Handle received command by thing Vaillant Custom VRC430/470(f) with id ebus:custom:c5c0e30e ...
2017-11-07 17:29:42.848 [DEBUG] [hab.binding.ebus.handler.EBusHandler] - Key temp_outside with value 7
2017-11-07 17:29:42.866 [ItemStateChangedEvent     ] - ebus_custom_c5c0e30e_custom_controller_broadcast_temp_outside_temp_outside changed from NULL to 7

Datetime is working too:

2017-11-07 17:30:22.441 [INFO ] [nding.ebus.handler.EBusBridgeHandler] - Received telegram from address 10 to FE with command controller.broadcast.datetime
2017-11-07 17:30:22.444 [INFO ] [hab.binding.ebus.handler.EBusHandler] - Handle received command by thing Vaillant Custom VRC430/470(f) with id ebus:custom:c5c0e30e ...
2017-11-07 17:30:22.448 [DEBUG] [hab.binding.ebus.handler.EBusHandler] - Key datetime with value 07.11.2017 17:30:25
2017-11-07 17:30:22.473 [ItemStateChangedEvent     ] - ebus_custom_c5c0e30e_custom_controller_broadcast_datetime_datetime changed from NULL to 2017-11-07T17:30:25.440+0100

The full json file is now:

{
	"id":           "custom",
    "vendor":       "Vaillant",
    "label":        "Vaillant Custom VRC430/470(f)",
    "description":  "Vaillant Custom VRC430/470(f)",

    "authors":      [
                    "Christian Sowada, opensource@cs-dev.de",
                    "Christophe P @ openhab community"
                    ],

    "identification": [
                    "34 33 30 30 30",
                    "34 37 30 30 30",
                    "46 34 37 30 30",
                    "46 34 33 30 30"
                    ],
    
    "commands":
    [
    
        {
            "label":    "Broadcast Outside temperature",
            "id":       "controller.broadcast.temp_outside",
            "command":  "B5 16",
    
            "broadcast": {
                "master": [
                    {"type": "static", "default": "01"},
                    {"name":"temp_outside", "type": "data2b", "label": "Outside Temperature", "min": -50, "max": 50, "format":"%.1f°C"}
                ]
            }
        },
		
        {
            "label":    "Broadcast DateTime",
            "id":       "controller.broadcast.datetime",
            "command":  "B5 16",
    
            "broadcast": {
                "master": [
                    {"type": "static", "default": "00"},
                    {"name": "datetime", "type":"datetime"}
                ]
            }
        },
		
        {
            "label":    "Raw room temperature",
            "id":       "controller.temp_room",
            "command":  "B5 09",

            "get": {
                "master": [
                    {"type": "static", "default": "0D 00 00"}
                ],
                "slave": [
                    {"name": "temp_room", "type": "data2c", "label": "Room temperature", "min": -30, "max": 60, "format":"%.1f°C"},
                    {"name": "status", "type": "uchar", "label": "Room temperature status",
                        "mapping": {"0":"Ok", "85":"Circuit", "170":"Cutoff"}}
                ]
            }
        },

        {
            "label":    "Global system off",
            "id":       "heating.status_global_system_off",
            "command":  "B5 09",

            "get": {
                "master": [
                    {"type": "static", "default": "0D 01 00"}
                ],
                "slave": [
                    {"name": "status_global_system_off", "type": "uchar", "label": "Activation of operation mode system off", "min": 0, "max": 1, "format":"%d",
                        "mapping": {"0":"Off", "1":"On"}}
                ]
            }
        },

        {
            "label":    "Holiday Setpoint",
            "id":       "dhw.temp_d_holiday",
            "command":  "B5 09",

            "template": [
                {"name": "temp_d_holiday", "type": "data2c", "label": "Holiday setpoint", "format":"%.1f°C"}
            ],

            "get": {
                "master": [
                    {"type": "static", "default": "0D 22 00"}
                ],
                "slave": [
                    {"type": "template-block"}
                ]
            },

            "set": {
                "master": [
                    {"type": "static", "default": "0E 22 00"},
                    {"type": "template-block"}
                ]
            }
        },

        {
            "label":    "HC1 Day Setpoint",
            "id":       "heating.temp_d_day",
            "command":  "B5 09",

            "template": [
                {"name": "temp_d_day", "type": "data1c", "label": "HC1 Day setpoint", "min": 0, "max": 100, "format":"%.1f°C"}
            ],

            "get": {
                "master": [
                    {"type": "static", "default": "0D 27 00"}
                ],
                "slave": [
                    {"type": "template-block"}
                ]
            },

            "set": {
                "master": [
                    {"type": "static", "default": "0E 27 00"},
                    {"type": "template-block"}
                ]
            }
        },

        {
            "label":    "HC1 Operation mode",
            "id":       "heating.program_heating_circuit",
            "command":  "B5 09",

            "template": [
                {"name": "program", "type": "uchar", "label": "HC1 Operation mode", "format":"%d",
                    "mapping": {"0":"Off", "1":"Manual", "2":"Auto", "3":"Day", "4":"Night", "5":"Summer"}}
            ],

            "get": {
                "master": [
                    {"type": "static", "default": "0D 2F 00"}
                ],
                "slave": [
                    {"type": "template-block"}
                ]
            },

            "set": {
                "master": [
                    {"type": "static", "default": "0E 2F 00"},
                    {"type": "template-block"}
                ]
            }
        },

        {
            "label":    "HC1 Night Setpoint",
            "id":       "heating.temp_d_night",
            "command":  "B5 09",

            "template": [
                {"name": "temp_d_night", "type": "data1c", "label": "HC1 Night setpoint", "min": 0, "max": 100, "format":"%.1f°C"}
            ],

            "get": {
                "master": [
                    {"type": "static", "default": "0D 30 00"}
                ],
                "slave": [
                    {"type": "template-block"}
                ]
            },

            "set": {
                "master": [
                    {"type": "static", "default": "0E 30 00"},
                    {"type": "template-block"}
                ]
            }
        },

        {
            "label":    "HC1 Heating curve",
            "id":       "heating.temp_hcurve",
            "command":  "B5 09",

            "template": [
                {"name": "temp_hcurve", "type": "uint", "label": "HC1 Heating curve", "factor": 0.01, "format":"%.1f"}
            ],

            "get": {
                "master": [
                    {"type": "static", "default": "0D 31 00"}
                ],
                "slave": [
                    {"type": "template-block"}
                ]
            },

            "set": {
                "master": [
                    {"type": "static", "default": "0E 31 00"},
                    {"type": "template-block"}
                ]
            }
        },

        {
            "label":    "HC1 Manual Setpoint",
            "id":       "heating.temp_d_man",
            "command":  "B5 09",

            "template": [
                {"name": "temp_d_man", "type": "data1c", "label": "HC1 Day setpoint", "min": 0, "max": 100, "format":"%.1f°C"}
            ],

            "get": {
                "master": [
                    {"type": "static", "default": "0D 32 00"}
                ],
                "slave": [
                    {"type": "template-block"}
                ]
            },

            "set": {
                "master": [
                    {"type": "static", "default": "0E 32 00"},
                    {"type": "template-block"}
                ]
            }
        },

        {
            "label":    "HC1 Manual override setpoint",
            "id":       "heating.temp_d_room_override",
            "command":  "B5 09",

            "get": {
                "master": [
                    {"type": "static", "default": "0D 3C 00"}
                ],
                "slave": [
                    {"name": "temp_d_room_override", "type": "data1c", "label": "HC1 Manual override setpoint", "min": 0, "max": 100, "format":"%.1f°C"}
                ]
            }
        },

        {
            "label":    "DHW Operation mode",
            "id":       "dhw.program_dhw_circuit",
            "command":  "B5 09",

            "template": [
                {"name": "program", "type": "uchar", "label": "DHW Operation mode", "min": 0, "max": 2, "format":"%d",
                        "mapping": {"0":"Off", "1":"Manual", "2":"Auto"}}
            ],

            "get": {
                "master": [
                    {"type": "static", "default": "0D 42 00"}
                ],
                "slave": [
                    {"type": "template-block"}
                ]
            },

            "set": {
                "master": [
                    {"type": "static", "default": "0E 42 00"},
                    {"type": "template-block"}
                ]
            }
        },

        {
            "label":    "Domestic Hot Water Setpoint",
            "id":       "dhw.temp_d_dhw",
            "command":  "B5 09",

            "template": [
                {"name": "temp_d_dhw", "type": "data1c", "label": "DHW setpoint", "format":"%.1f°C"}
            ],

            "get": {
                "master": [
                    {"type": "static", "default": "0D 44 00"}
                ],
                "slave": [
                    {"type": "template-block"}
                ]
            },

            "set": {
                "master": [
                    {"type": "static", "default": "0E 44 00"},
                    {"type": "template-block"}
                ]
            }
        },

        {
            "label":    "Set HC1 Special operation mode",
            "id":       "heating.program_heating_circuit_special",
            "command":  "B5 09",

            "template": [
                {"name": "program", "type": "uchar", "label": "HC1 Operation mode", "format":"%d",
                    "mapping": {"0":"Nothing", "1":"Party", "2":"OneDayHome", "3":"OneDayNotHome", "4":"Holiday", "5":"Home", "6":"QuickVeto", "7":"OneTimeVentilation", "8":"WhisperMode", "9":"LoadDHW"}}
            ],

            "get": {
                "master": [
                    {"type": "static", "default": "0D 5D 00"}
                ],
                "slave": [
                    {"type": "template-block"}
                ]
            },

            "set": {
                "master": [
                    {"type": "static", "default": "0E 5D 00"},
                    {"type": "template-block"}
                ]
            }
        },
        
        {
            "label":    "Controller time",
            "id":       "controller.time",
            "command":  "B5 09",

            "template": [
                {"name": "time", "type": "time", "variant": "hex_short", "label": "Controller time"}
            ],
    
            "get": {
                "master": [
                    {"type": "static", "default": "0D 60 00"}
                ],
                "slave": [
                    {"type": "template-block"}
                ]
            },
            "set": {
                "master": [
                    {"type": "static", "default": "0E 60 00"},
                    {"type": "template-block"}
                ]
            }
        },
        
        {
            "label":    "Controller date",
            "id":       "controller.date",
            "command":  "B5 09",

            "template": [
                {"name": "date", "type": "date", "variant": "hex_short", "label": "Controller date"}
            ],
    
            "get": {
                "master": [
                    {"type": "static", "default": "0D 60 00"}
                ],
                "slave": [
                    {"type": "template-block"}
                ]
            },
            "set": {
                "master": [
                    {"type": "static", "default": "0E 60 00"},
                    {"type": "template-block"}
                ]
            }
        },
        
        {
            "label":    "Outside temperature",
            "id":       "controller.temp_outside",
            "command":  "B5 09",

            "get": {
                "master": [
                    {"type": "static", "default": "0D 62 00"}
                ],
                "slave": [
                    {"name": "temp_outside", "type": "data2c", "label": "Outside temperature", "min": -60, "max": 80, "format":"%.1f°C"},
                    {"name": "status", "type": "uchar", "label": "Outside temperature status",
                        "mapping": {"0":"Ok", "85":"Circuit", "170":"Cutoff"}}
                ]
            }
        },

        {
            "label":    "Displayed room temperature",
            "id":       "controller.temp_room_disp",
            "command":  "B5 09",

            "get": {
                "master": [
                    {"type": "static", "default": "0D 80 00"}
                ],
                "slave": [
                    {"name": "temp_room_disp", "type": "data2c", "label": "Room temperature", "min": -30, "max": 60, "format":"%.1f°C"}
                ]
            }
        },

        {
            "label":    "Domestic Hot Water actual desired temperature",
            "id":       "controller.temp_d_actual_dhw",
            "command":  "B5 09",

            "get": {
                "master": [
                    {"type": "static", "default": "0D 86 00"}
                ],
                "slave": [
                    {"name": "temp_d_actual_dhw", "type": "data1c", "label": "DHW actual desired temperature", "min": 0, "max": 100, "format":"%.1f°C"}
                ]
            }
        }
	
    ]
}

Next step: get the B5 10 and B5 11 messages !

1 Like

Hi @ all, sorry for the late answer. With my rpi with raspbian it works without the error. At the moment i work on a parser for the 620/3 controller

I have what seems to be a difference in the ebus messages between the last alpha and the version org.openhab.binding.ebus-1.9.0-FIX-001.jar I played with to collect a lot of messages in the csv, especially for the B9 10 messages.

In log of the Alpha, I get always this messages in the logs for this sequence (as well as many others):
2017-11-07 19:59:33.273 [DEBUG] [nding.ebus.handler.EBusBridgeHandler] - eBUS telegram error; Slave answered with 01 [ERROR: UNEXPECTED_RESPONSE, DATA: 10 08 B5 10 09 00 00 60 64 FF FF 00 00 00 49 01]

But on the csv file of the 1.9, the messages seems completly captured. I found the exact same content, marked as unkown:

2017-11-06 05:35:49;"02";"10";"08";B5 10;"09";00 00 60 64 FF FF 00 00 00;"49";"00";"01";01;"9A";<unknown>

That’s the sequence I try to implement in the vrc json file

could a fix not be implemented in the alpha 2.x ?

Yes, I can check this.
In general, a big compliment for your detailed error messages. It’s much easier for me. :+1:

1 Like

Hello all configuration editors,

I’ve started a new thread and Github repository to share your configuration files.
Unfortunately, in the old 1.x binding thread, many configurations have gone down because of the length of the thread. Therefore, I would like to provide all interested parties with a platform where we can share and complete new configurations.

With the next release, this repository can also be used directly in openHAB as an online source.

Here is the new topic [eBUS 2.0] Configuration support/contribution

and here is the git repository https://github.com/csowada/ebus-configuration

I hope I find some interested community members that can help to improve the binding.

I believe there’s a typo here, should be [eBUS 2.0] Configuration support/contribution :wink:

Sorry to ask again, but do you plan to implement csv report in the
2.x binding as well ? Because for me it’s the best tool to identify the unkown messages, then to improve json configuration files.
I use it to import messages in Excel and by using pivot table and filtering, I can have extensive list of messages in a very comprehensive way.

You are right, wrong link.

The new version has it’s own logger. So you can write all raw telegrams to a self defined output file.

Hi,

did you get time to have a look to telegram seen as error ? Not that I want to put pressure, it’s just that for now I’m stuck on that to continue to improve the vrc configuration.

Yes I started a modified version. But my new productive server is not stable and I have to fix this first. Sorry.
I hope I find time before weekend.

No worry, I was just a bit suprised that you was so quiet after creating the configuration repository :wink:

During this time I’m playing with RFLink integration through MQTT.

For those who need a Hardware Bridge, this thread at FHEM Board might be interesting:

FHEM EBUS Platine Sammelbestellung

@ChrisPe,

I build a special Pre-Alpha version that could maybe fix your reading issue. It also contains the latest enhancements like your csv logger. You can find the option under your ebus bridge thing. You find the logs in openhab logs directory.

Also the bundle url loader is within this version, but still untested.

This version is also NOT available via the market place!

Download:
https://drive.google.com/uc?export=download&id=1G8OjoYetT6IJCCZdE2wLXAAj1vsqyzOJ

Hi Christian, just went home late, so these are very quick check, but I can note:
Very (very) quick detection of eBus Standard device on 08, 15 and … 04 (no idea why, there should be no device here).

openhab> smarthome:ebus list
Thing UID                                | Label                                    | Type
-----------------------------------------+------------------------------------------+-----------
ebus:bridge:a592e2b1                     | eBUS Bridge                              | bridge
ebus:custom:a592e2b1:15                  | Vaillant Custom VRC430/470(f) (15)       | node
ebus:std:a592e2b1:15                     | eBUS Standard (15)                       | node
ebus:std:a592e2b1:08                     | eBUS Standard (08)                       | node
ebus:std:a592e2b1:04                     | eBUS Standard (04)                       | node

I still have the “Slave answered” error messages:

2017-11-16 00:25:40.937 [DEBUG] [nding.ebus.handler.EBusBridgeHandler] - eBUS telegram error; Slave answered with 01 [ERROR: UNEXPECTED_RESPONSE, DATA: 10 08 B5 10 09 00 00 00 64 FF FF 05 00 00 83 01]
2017-11-16 00:25:47.015 [DEBUG] [nding.ebus.handler.EBusBridgeHandler] - eBUS telegram error; Slave answered with 0A [ERROR: UNEXPECTED_RESPONSE, DATA: 10 08 B5 04 01 00 3D 0A]
2017-11-16 00:25:47.282 [DEBUG] [nding.ebus.handler.EBusBridgeHandler] - eBUS telegram error; Slave answered with 05 [ERROR: UNEXPECTED_RESPONSE, DATA: 10 08 B5 11 01 02 8A 05]
2017-11-16 00:25:50.883 [DEBUG] [nding.ebus.handler.EBusBridgeHandler] - eBUS telegram error; Slave answered with 01 [ERROR: UNEXPECTED_RESPONSE, DATA: 10 08 B5 10 09 00 00 00 64 FF FF 05 00 00 83 01]
2017-11-16 00:25:56.987 [DEBUG] [nding.ebus.handler.EBusBridgeHandler] - eBUS telegram error; Slave answered with 08 [ERROR: UNEXPECTED_RESPONSE, DATA: 10 08 B5 11 01 00 88 08]'''

I need to dig a bit in the csv file I activated. Found them in /srv/openhab2-logs/:
ebus-resolved.csv and ebus-unresolved.csv, that’s going to help :slight_smile:

Is there a way to set directly the polling period for all channel of a thing without going to edit all of them one by one ?

I think the difference to the 1.8 binding is, that you not have seen the error. The new binding shows more details. This telegrams are always wrong or only sometimes?
And the 04 device is the binding it self. As already said, the binding was not final.
Can you send me a larger log and the CSV files to get an overview of your setup? You can send it via PM or email at openhab (at) cs-dev (dot) de

I just sent you the log files by mail.

What is strange is that these telegram are marked as error in this Alpha, and seems to be the case for every of these telegram.
They are listed as unknown in the csv file on 1.9-FIX001.

I’m creating full log on the 1.9-FIX001 again (openhab.log history is not complete).
Just to be sure, how should I activate the appropriate log level ?

Hello @ChrisPe,

thank you for your log files. I have quickly checked your errors. And I can see that you have the same behavior in 1.x binding. But you can’t the the issue there. The 2.x binding is more detailed.

Here an example telegram I’ve checked, it looks like it is send every 10 seconds.

10 08 B5 10 09 00 00 56 64 FF FF 00 00 00 A8 00 01 01 9A 00

Half of the telegram is received correct, the rest is received invalid. You can see that you only receive some of the telegram in 1.x binding.

I would suggest to check the input of your adapter on a lower level. You could use a terminal program like hterm and use the symbol “AA” as new line delimiter. Then you can compare the received data and search for the telegram above. You can send me a log of this raw data if you want.