[eBUS 2.0] Configuration support/contribution

In this thread, all changes to the configurations on the openHAB eBus 2.0 binding will be discussed.
So, if you want to help, use the Github repository to share your configurations.

Information
With the next release (Alpha 14) of the eBUS binding you will be able to use this repository directly withing openHAB.

Github Repository - eBUS Configuration

You will find the repository here: Github Repository - eBUS Configuration

General issue with the binding

Please use this link

2 Likes

awesome :slight_smile:

hi,
I’m trying to read some parameters from my mixer control unit (vr61/4) and one of them is HC2 Heating Curve. I can’t make this working for some reason. Value of it is 0.5 whereas it is read as 2.0. Content of my parser is

{
        "id": "custom-vr61",
        "vendor": "Vaillant",
        "label": "Vaillant VR61",
        "description": "Vaillant VR61 ",

        "authors":      ["Name, mail@mail"],

        "identification":       ["56 36 31 30 29"],

        "commands":
        [
                   {
            "label":    "HC2 Heating curve",
            "id":       "heating.temp_hcurve2",
            "command":  "B5 09",

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

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

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

what can be wrong there?

Could please attach a raw telegram as example and the expected value?

here it is

2017-11-27 17:08:11.323 [INFO ] [hab.binding.ebus.handler.EBusHandler] - Initialize eBUS pollings for ebus:custom-vr61:37d7981e ...
2017-11-27 17:08:11.325 [INFO ] [hab.binding.ebus.handler.EBusHandler] - Register polling for "heating.temp_hcurve2" every 60 sec. (initil delay 2 sec.)
2017-11-27 17:08:11.521 [TRACE] [de.csdev.ebus.core.EBusController   ] - waiting for slave answer ...
2017-11-27 17:08:12.224 [TRACE] [de.csdev.ebus.core.EBusController   ] - waiting for slave answer ...
2017-11-27 17:08:12.465 [TRACE] [de.csdev.ebus.core.EBusController   ] - waiting for slave answer ...
2017-11-27 17:08:13.325 [INFO ] [hab.binding.ebus.handler.EBusHandler] - Poll command "ebus:custom-vr61:37d7981e:custom-vr61_heating_temp-hcurve2#temp-hcurve" with "FF 50 B5 09 03 0D 15 00 26" ...
2017-11-27 17:08:13.327 [DEBUG] [de.csdev.ebus.core.EBusQueue        ] - Size of send queue is 1 ...
2017-11-27 17:08:13.392 [DEBUG] [de.csdev.ebus.core.EBusController   ] - Send: FF 50 B5 09 03 0D 15 00 26 @ 0. attempt
2017-11-27 17:08:13.393 [TRACE] [de.csdev.ebus.core.EBusController   ] - Send FF
2017-11-27 17:08:13.407 [TRACE] [de.csdev.ebus.core.EBusController   ] - Send 50
2017-11-27 17:08:13.409 [TRACE] [de.csdev.ebus.core.EBusController   ] - Send B5
2017-11-27 17:08:13.410 [TRACE] [de.csdev.ebus.core.EBusController   ] - Send 09
2017-11-27 17:08:13.412 [TRACE] [de.csdev.ebus.core.EBusController   ] - Send 03
2017-11-27 17:08:13.414 [TRACE] [de.csdev.ebus.core.EBusController   ] - Send 0D
2017-11-27 17:08:13.415 [TRACE] [de.csdev.ebus.core.EBusController   ] - Send 15
2017-11-27 17:08:13.417 [TRACE] [de.csdev.ebus.core.EBusController   ] - Send 00
2017-11-27 17:08:13.418 [TRACE] [de.csdev.ebus.core.EBusController   ] - Send 26
2017-11-27 17:08:13.455 [TRACE] [de.csdev.ebus.core.EBusController   ] - Waiting for slave answer ...
2017-11-27 17:08:13.471 [TRACE] [de.csdev.ebus.core.EBusController   ] - Slave answer received ...
2017-11-27 17:08:13.473 [TRACE] [de.csdev.ebus.core.EBusController   ] - Send Master ACK to Slave ...
2017-11-27 17:08:13.488 [TRACE] [de.csdev.ebus.core.EBusController   ] - Send SYN to bus ...
2017-11-27 17:08:13.506 [DEBUG] [de.csdev.ebus.core.EBusController   ] - Succesful send: FF 50 B5 09 03 0D 15 00 26 00 02 28 00 51 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
2017-11-27 17:08:13.510 [INFO ] [nding.ebus.handler.EBusBridgeHandler] - Received telegram from address FF to 50 with command heating.temp_hcurve2
2017-11-27 17:08:13.518 [INFO ] [hab.binding.ebus.handler.EBusHandler] - Handle received command by thing Vaillant VR61 with id ebus:custom-vr61:37d7981e ...
2017-11-27 17:08:13.521 [DEBUG] [hab.binding.ebus.handler.EBusHandler] - Key temp_hcurve with value 2.00


value seen in VRC is 0.40 (as I understood from john30 files, this thing is available only on that vr61/4 device, VRC reads it from ebus)

Hello @witek_1308,

you file nearly perfect. But your factor is wong, it should be 0.01 instead of 0.05.

You can use the command

smarthome:ebus resolve "FF 50 B5 09 03 0D 15 00 26 00 02 28 00 51 00"``

The result should look like

Check and unescape telegram
***************************

Original data : FF 50 B5 09 03 0D 15 00 26 00 02 28 00 51 00
Unescaped data: FF 50 B5 09 03 0D 15 00 26 00 02 28 00 51 00

Analyse the telegram
********************

FF 50 B5 09 03 0D 15 00 26 00 02 28 00 51 00
^^------------------------------------------ Source address       | Type: Master         | FF
   ^^--------------------------------------- Destination address  | Type: Slave          | 50
      ^^ ^^--------------------------------- Command              |                      | B5 09
            ^^------------------------------ Master Data Length   | Length: 3            | 03
               ^^ ^^ ^^--------------------- Master Data          |                      | 0D 15 00
                        ^^------------------ Master CRC           |                      | 26
                           ^^--------------- Slave ACK            |                      | 00
                              ^^------------ Slave Data Length    | Length: 2            | 02
                                 ^^ ^^------ Slave Data           |                      | 28 00
                                       ^^--- Slave CRC            |                      | 51
                                          ^^ Master ACK           |                      | 00

Resolve the telegram
********************

Found 1 command method(s) for this telegram.

Values from command 'heating.temp_hcurve2' with method 'GET' from collection 'custom-vr61'
  temp_hcurve          = 0.40

wow, it works now, thanks a lot. But more importantly I getting more and more about how to build own scripts (and test them) so hopefully can now jumpstart with them :slight_smile: thanks a lot

This is my configuration for heating hours (dwh and boiler). It is working, feel free to use it.
I don’t know how to make it part of the official config on github but hope @csowada will merge it one day.

{
        "id": "custom-vc206",
        "vendor": "Vaillant",
        "label": "Vaillant ecoTec 206",
        "description": "Vaillant ecoTec 206",

        "authors":      ["Witold Wojcik, witek_1308@poczta.onet.pl"],
        "identification": ["66 65 73 48 48"],

        "commands":
        [
                {
                "label": "Heating circuit hours D.080 (h)",
                "id": "heating.runtime",
                "command": "B5 09",

                "get": {
                        "master": [
                                {"type": "static", "default": "0D 28 00"}
                        ],

                        "slave": [
                        {"name": "runtime", "type": "word", "label": "Heating hours", "format":"%d hours"}
                        ]
                }
                },

                {
                "label": "Heating water hours D.081 (h)",
                "id": "dwheating.runtime",
                "command": "B5 09",

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

                        "slave": [
                        {"name": "runtime", "type": "word", "label": "Heating hours", "format":"%d hours"}
                        ]
                }
                }
        ]
}

1 Like

Adding reading of VF2 sensor temperature (used with VR61 and 2 heating circuits)

            "label":    "VF2 flow sensor temperature",
            "id":       "heating.vf2_sensor_hc2",
            "command":  "B5 09",

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

it works for me (together with HC2 curve fixed as suggested by @csowada above, hence not pasting again). Min and max values are just default ones as I don’t know what should be correct (definitely even flow of 0 degrees doesn’t make much sense)

I am trying to make configuration file for Vaillant VRC 700 controller. There is some useful information on ebus-wiki and there is ebusd configuration file available. Ebusd configuration file format is known to me so I decided to translate it to ebus binding .json .
Problem is that many (most of?) parameters are using EXP (single precision float, big endian) data type, still not supported.

@csowada, is it possible to map it soon?
This is only obstacle for me to make configuration file for this device but can’t map it myself.
Thank you!

Can you send me an example byte-telegram and the name of the ebusd configuration file and value.
Then I can quickly add the missing data type. This is the general problem with vaillant devices, I have no telegrams to check the results.

 Succesful send: FF 15 B5 24 06 02 00 01 00 04 00 C2 00 08 03 01 04 00 00 00 44 42 DC 00

This is telegram for reading setpoint temperature for domestic hot water (HwcTempDesired) captured after changing it to 49. Last part of slave response changed to 00 00 44 42. I tried to convert it to several datatypes and it is signed single float with byte order ABCD (42 44 00 00). It can be confirmed in vaillant _templates.csv and 15.700.csv (for tempv data type is EXP). Seems you need to convert long to single.
After changing setpoint to 46, there is 00 00 38 42 at the end of slave data and that confirmes my theory.

So, was easy to implement. Will be available in the next release.

I am glad to hear that. Thank you for quick response. Could you, please, compile and send me binding so i could prepare and test configuration file. (and use it of course :slight_smile: ) Maybe you could include it in next release?

Okay, here a unsupported test release in the new kar format, I hope it works on your systems.
My current work is focused on the release preparation. I’m working on an automatic deployment for the ebus core lib.

https://drive.google.com/open?id=1lxLlfJ5tAZtA0M7zeSy0luMhonph1jQL

If it works you should try the new global template system. You could try to adapt the ebusd templates. Here an example that is part of the last version.

https://github.com/csowada/ebus/blob/master/de.csdev.ebus/src/main/resources/commands/vaillant-templates.json

Yes, it works with my current config! I will start adapting templates. Thank you!

What is name (key) of new datatype?

The Name for the new data type is
float

Today I tried to load simple configuration file to test is it possible to read new data type in my setup. It failed. After that I stopped opehnab service, cleared /var/lib/openhab2/cache and /var/lib/openhab2/tmp and started service again.
After that ebus binding is no longer visible in openhab.
Openhab is 2.2.0 running on Ubuntu 16.04. ebus-distro-0.9.16-SNAPSHOT.kar is in /opt/openhab2/addons and kar:list says it is installed.
What am I doing wrong?

Here is test configuration:

{
    "id": "custom-vrc700",
    "vendor": "Vaillant",
    "label": "Vaillant VRC 700",
    "description": "Vaillant weather compensating regulation VRC 700",
	
    "authors":      ["Sinisa Mikulandra, mikulandra@inet.hr"],
    "identification": ["37 30 30 30 30"],

    "commands":
    [
		{
            "label":    "DHW",
            "id":       "dhw.setpoint",
            "command":  "B5 24",

            "get": {
                "master": [
                    {"type": "static", "default": "02 00 01 00"},
					{"type": "static", "default": "04 00"}
				],
                "slave": [
                    {"name": "unknown", "type": "float", "label": "unknown", "format":"%.1f°C"},
					{"name": "dhw.setpoint1", "type": "float", "label": "dhw setpoint", "format":"%.1f°C"}
				]
            }
        }
    ]
}

You could try

feature:install openhab-binding-ebus

But I’m also new to kar format. I have the same problem here.
I have attached a zip file with all required files, extract the three files to addons dir. It is the same version as the kar file.

https://drive.google.com/open?id=10dSxb0hl-3LQV2-6PzEcmUJJKRNKfIig

If you have installed your custom configuration you can use the console command

smarthome:ebus resolve "FF 15 B5 24 06 02 00 01 00 04 00 C2 00 08 03 01 04 00 00 00 44 42 DC 00"

to check you configuration file. If you re-save the eBUS binding configuration in Paper UI it should reload the configuration files.

And in general you configuration file looks good, but I’ve not time to test it today.

After placing those three .jar into addons, binding works.
It can resolve test telegram and data conversion is OK. After loading test configuration (2 posts before) and creating thing in paperUI it is visible and reading correct value for new data type!

Problems started when I tried to adopt test configuration to use template.
This is test configuration with template:

{
    "id": "custom-vrc700",
    "vendor": "Vaillant",
    "label": "Vaillant VRC 700",
    "description": "Vaillant weather compensating regulation VRC 700",
	
    "authors":      ["Sinisa Mikulandra, mikulandra@inet.hr"],
    "identification": ["37 30 30 30 30"],
	
	"templates": [    
    	{"name":"b5.tempv", "template": [
				{"type": "byte", "length": "4"},
				{"name": "temp", "type": "float", "label": "%s temperature", "format": "%.1f°C"}
			]
		}
	],	

    "commands":
    [
		{
            "label":    "HWC",
            "id":       "hwc.setpoint",
            "command":  "B5 24",

            "get": {
                "master": [
                    {"type": "static", "default": "02 00 01 00"},
					{"type": "static", "default": "04 00"}
				],
                "slave": [
                 {"type": "template-block", "id":"b5.tempv", "name":"hwc_setpoint", "label":"HWC setpoint"}	
				
				]
            }
        }
    ]
}

After restarting of binding, configuration is listed in new things page, but can’t be configured and added.
This is from openhab.log:

2018-01-11 12:07:36.901 [WARN ] [ebus.cfg.std.EBusConfigurationReader] - Property 'name' is not allowed for type 'template-block', ignore property !
2018-01-11 12:07:36.908 [ERROR] [dev.ebus.command.EBusCommandRegistry] - error!
de.csdev.ebus.cfg.EBusConfigurationReaderException: Unable to find a template-block with id b5.tempv!

I could make configuration file without using templates, but it would be wrong approach so please help.