[eBUS 2.0] New binding - Release Candidate 7b

It looks good but you have started with the worst datatype. Vaillant has x datatypes for time. I only implemented the standard at the moment. But you can try this for now :

{
"id": "custom-vrc470",
"vendor": "Vaillant",
"label": "Vaillant VRC 470",
"description": "Vaillant VRC 470",

"authors":      ["Name, mail@mail"],
"identification": ["34 33 30 30 30", "34 37 30 30 30"],

"commands":
[
    {
        "label":    "Time of VRC",
        "id":       "vrc.time",
        "command":  "B5 09",

        "get": {
            "master": [
                {"type": "static", "default": "0D 60 00"}
            ],
            "slave": [
                {"name": "vrc_hour", "type": "byte", "label": "Hour"},
                {"name": "vrc_min", "type": "byte", "label": "Minute"},
                {"name": "vrc_sec", "type": "byte", "label": "Second"}
            ]
        }
    }
]

You can help me a lot if you have a complete hex string telegram as example. So I can directly verify the results.

And you should surround the code with three ` signs. There is a button called “JavaScript code fence” in the editor. The editor has modified your double quotes.

Now I found the issue. This are the settings from the ebus.cfg in your openhab2 directory. I assume that you had the ebus 1.x binding installed?! You can leave it or clean the file.
But you need this file to add your custom configuration permanent to openhab2. If you set it in paper ui it is only stored until the next restart.

The new ebus.cfg

configurationUrl=file:///C:/Users/MyName/openhab2/custom-configuration.json
configurationUrl1=
configurationUrl2=

thanks for all the hints.

  • your fix doesn’t work. regarding telegrams, I don’t have them handy. Can I capture them somehow from ebus? I’m happy to do so but I didn’t see any entry in log about received telegram for these values, just polling (I’m not in DEBUG now, just INFO)
  • ebus 1.x - yes I had it installed before I moved to 2.x. But before I moved to 2.x I renamed ebus.cfg to something else. Very important remark about PaperUI behavior. I’ll keep this in mind.
  • java script fence - good stuff, will use it next time

Regarding stability I found this very stable. I am polling 12 items from 3 things (BAI00, VRC, VR81) most of them every 60sec (with some exceptions of longer period) and it works all fine. I moved to reliable FTDI chip from known source and good so far. Before with previous chip but enforces 1.1 speed it was stable too.

By the way - how to find identification address of the device? I am writing now parsers for vr61 (it stores some elements of HC2) and no idea where to get this from. Checked John30’s files, tried to sniff my ebus for some time to maybe see some broadcasts from it but didn’t get anything meaningful. Any hint?

Hi,

first of all, thank you for the new Ebus binding in version 2.
I found some new Values for the Vaillant System. Perhaps somebody also needs this values.
I have this Parts from Vaillant.

  1. eco TEC Plus VC 146
  2. auro MATIC VRS620/3
  3. all STOR VPS 800
  4. aqua Flow exclusive VPM 20/25!
		"comment":	"<Controller> Solar",
		"device":   "Vaillant VRC 620-3",
		"id":		"Solar",
		"class":	"controller",
		"command":	"B5 04",
		"data": 	"12",
		"dst":		"EC",
		
		"values": {
			"Temp_Kol2":				{"type": "data2c", "pos": 15, "label": "Temp Ofen"},
			"Pumpe_Kol2": 				{"type": "byte", "pos": 17, "label": "Status Pumpe Ofen"} 
		}
	},
{
		"comment":	"<Controller> Speicher Temperatur (°C)",
		"device":   "Vaillant VRC 620-3",
		"id":		"Temp_SP",
		"class":	"controller",
		"command":	"B5 04",
		"data": 	"10",
		"dst":		"EC",
		"values": {
			"Temp_SP1":		{"type": "data2c", "pos": 10, "label": "SP1 Temperatur"},
			"Temp_SP2":		{"type": "data2c", "pos": 12, "label": "SP2 Temperatur"},
			"Temp_TD2":		{"type": "data2c", "pos": 18, "label": "TD2 Temperatur"}
		}
	},
 {
        "comment":  "<Controller> Position Dreiwegeventil D.035",
        "device":   "Vaillant VRC 620-3",
        "id":       "Position_Dreiwegeventil",
        "class":    "controller",
        "command":  "B5 09",
        "data":     "0D 54 00",
        "dst":      "08",

        "values": {
            "Position_Dreiwegeventil": {"type": "uchar", "pos": 12, "label": "Position 3 Way Valve"}
        }
    },

The State of the 3-Way Valve has this values:
0=Heating
40=parallel loading
100=Hot Water

The most Information are from this Document
vaillant_ebus_v0.6.0.pdf (342.5 KB)

I need someone to coach me how to write own parsers. I’ve chosen something trully simple from BAI00 group but no results. Whereas I see polling in the log file, I don’t see response for this for some reason. Is it formatting issue or what?
I spent lot of time on it and ran out of ideas.

example of different parameters I’m querying from the heating unit:

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

        "authors":      ["name, mail"],
        "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"}
                        ]
                }
                }
        ]
}

and

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

        "authors":      ["name, mail"],
        "identification": ["66 65 73 48 48"],

        "commands":
        [
                {
                "label": "<Boiler> System pressure (bar)",
                "id": "boiler.pressure",
                "command": "B5 09",

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

                        "slave": [
                        {"name": "pressure", "type": "word", "label": "System pressure", "factor": 0.01, "min": 0, "max": 10, "format":"%.2f bar"},
                        {"name": "status", "type": "uchar", "label": "Status system pressure","format":"%d",
                         "mapping": {"0":"Ok", "85":"Circuit", "170":"Cutoff"}}
                        ]
                }
                }
        ]
}

for my tests I put them in separate files to test one by one. Parsers read them properly, polling starts and then nothing. Is this formatting issue? I’m completely lost now…

For me your files are looking good. If you have set debugging to debug level than you should see something like Successfully send: XX XX XX after the polling command or an error with no slave response. Maybe you send the command to the wrong device/slave address?

@csowada,
it seems it sends it:
2017-10-04 09:35:30.330 [DEBUG] [nding.ebus.handler.EBusBridgeHandler] - eBUS telegram error; Received SYN byte while receiving telegram! [ERROR: INVALID_SYN, DATA: 00 AA]
2017-10-04 09:35:35.954 [DEBUG] [nding.ebus.handler.EBusBridgeHandler] - eBUS telegram error; No response from slave! AA [ERROR: NO_SLAVE_RESPONSE, DATA: 10 76 07 04 00 05]
2017-10-04 09:35:36.209 [DEBUG] [nding.ebus.handler.EBusBridgeHandler] - eBUS telegram error; No response from slave! AA [ERROR: NO_SLAVE_RESPONSE, DATA: 10 76 07 04 00 05]
2017-10-04 09:35:36.449 [DEBUG] [nding.ebus.handler.EBusBridgeHandler] - eBUS telegram error; No response from slave! AA [ERROR: NO_SLAVE_RESPONSE, DATA: 10 76 07 04 00 05]
2017-10-04 09:35:38.940 [INFO ] [hab.binding.ebus.handler.EBusHandler] - Poll command “ebus:custom-vc206:e4b8f276:custom-vc206_heating_runtime#runtime” with “FF 08 B5 09 03 0D 28 00 EA” …
2017-10-04 09:35:38.942 [DEBUG] [de.csdev.ebus.core.EBusQueue ] - Size of send queue is 1 …
2017-10-04 09:35:38.990 [DEBUG] [de.csdev.ebus.core.EBusController ] - Send: FF 08 B5 09 03 0D 28 00 EA @ 0. attempt
2017-10-04 09:35:39.070 [DEBUG] [de.csdev.ebus.core.EBusController ] - Succesful send: FF 08 B5 09 03 0D 28 00 EA 00 02 FE 0E C2 00
2017-10-04 09:35:39.085 [DEBUG] [nding.ebus.handler.EBusBridgeHandler] - eBUS telegram error; Received SYN byte while receiving telegram! [ERROR: INVALID_SYN, DATA: 00 AA]
2017-10-04 09:35:53.940 [INFO ] [hab.binding.ebus.handler.EBusHandler] - Poll command “ebus:custom-vc206:e4b8f276:custom-vc206_heating_runtime#runtime” with “FF 08 B5 09 03 0D 28 00 EA” …
2017-10-04 09:35:53.942 [DEBUG] [de.csdev.ebus.core.EBusQueue ] - Size of send queue is 1 …
2017-10-04 09:35:54.128 [DEBUG] [de.csdev.ebus.core.EBusController ] - Send: FF 08 B5 09 03 0D 28 00 EA @ 0. attempt
2017-10-04 09:35:54.208 [DEBUG] [de.csdev.ebus.core.EBusController ] - Succesful send: FF 08 B5 09 03 0D 28 00 EA 00 02 FE 0E C2 00
2017-10-04 09:35:54.224 [DEBUG] [nding.ebus.handler.EBusBridgeHandler] - eBUS telegram error; Received SYN byte while receiving telegram! [ERROR: INVALID_SYN, DATA: 00 AA]
2017-10-04 09:36:08.940 [INFO ] [hab.binding.ebus.handler.EBusHandler] - Poll command “ebus:custom-vc206:e4b8f276:custom-vc206_heating_runtime#runtime” with “FF 08 B5 09 03 0D 28 00 EA” …
2017-10-04 09:36:08.942 [DEBUG] [de.csdev.ebus.core.EBusQueue ] - Size of send queue is 1 …
2017-10-04 09:36:09.025 [DEBUG] [de.csdev.ebus.core.EBusController ] - Send: FF 08 B5 09 03 0D 28 00 EA @ 0. attempt
2017-10-04 09:36:09.106 [DEBUG] [de.csdev.ebus.core.EBusController ] - Succesful send: FF 08 B5 09 03 0D 28 00 EA 00 02 FE 0E C2 00
2017-10-04 09:36:09.121 [DEBUG] [nding.ebus.handler.EBusBridgeHandler] - eBUS telegram error; Received SYN byte while receiving telegram! [ERROR: INVALID_SYN, DATA: 00 AA]
2017-10-04 09:36:10.037 [INFO ] [hab.binding.ebus.handler.EBusHandler] - Poll command “ebus:bai:714b46bc:bai_boiler_temp-d-flow#temp-d-flow” with “FF 08 B5 09 03 0D 39 00 43” …
2017-10-04 09:36:10.038 [DEBUG] [de.csdev.ebus.core.EBusQueue ] - Size of send queue is 1 …

then in another poll:
2017-10-04 09:36:23.940 [INFO ] [hab.binding.ebus.handler.EBusHandler] - Poll command “ebus:custom-vc206:e4b8f276:custom-vc206_heating_runtime#runtime” with “FF 08 B5 09 03 0D 28 00 EA” …
2017-10-04 09:36:23.941 [DEBUG] [de.csdev.ebus.core.EBusQueue ] - Size of send queue is 1 …
2017-10-04 09:36:24.000 [DEBUG] [de.csdev.ebus.core.EBusController ] - Send: FF 08 B5 09 03 0D 28 00 EA @ 0. attempt
2017-10-04 09:36:24.046 [INFO ] [hab.binding.ebus.handler.EBusHandler] - Poll command “ebus:bai:714b46bc:bai_boiler_temp-flow#temp-flow” with “FF 08 B5 09 03 0D 18 00 BC” …
2017-10-04 09:36:24.047 [DEBUG] [de.csdev.ebus.core.EBusQueue ] - Size of send queue is 2 …
2017-10-04 09:36:24.081 [DEBUG] [de.csdev.ebus.core.EBusController ] - Succesful send: FF 08 B5 09 03 0D 28 00 EA 00 02 FE 0E C2 00
2017-10-04 09:36:24.096 [DEBUG] [nding.ebus.handler.EBusBridgeHandler] - eBUS telegram error; Received SYN byte while receiving telegram! [ERROR: INVALID_SYN, DATA: 00 AA]
2017-10-04 09:36:24.224 [DEBUG] [de.csdev.ebus.core.EBusController ] - Send: FF 08 B5 09 03 0D 18 00 BC @ 0. attempt
2017-10-04 09:36:24.227 [DEBUG] [re.connection.AbstractEBusConnection] - InputBuffer is not empty before sending: 1 bytes waiting !

as you see I send it to the same address (08/03) as other BAI00 elements as this is definitely owned by the heating unit. I use same identification of the BAI (copied directly from your json which seem to work for parameters you prepared)

Thank you for your log, it looks good from your side. I assume an issue with custom file handling withing the binding. I will check that this evening.

Can you please send me a more detailed log with this setting? Can you also use the “Code fances” feature of the editor for logs. It is much easier to read. Or you send me the log via email.

I’m not sure about the ERROR: INVALID_SYN, DATA: 00 AA errors? Maybe normal, maybe the reason.

log:set TRACE de.csdev.ebus.core.EBusController 

Hi,

for the water pressure i use this syntax in version 1. On the next Weekend, I will migrate it to the new binding.

{
		"comment":  "<Controller> Wasserdruck (bar)",
		"device":   "Vaillant VRC 620-3",
		"id":       "Druck_Wasser",
		"class":    "controller",
		"command":  "B5 09",
		"data":     "0D 02 00",
		"dst":      "08",
		"values": {
			"Druck_Wasser": {"type": "word", "pos": 12, "label": "System pressure (bar)", "factor": 0.001}
		}
	},

I’ve checked your configurations and they are correct. It worked in my test environment. But there could be a timing issue in the alpha 9, but I’m not sure. I can only test with a dummy connection, because of the missing device.
But I’m already working on Alpha 10. It is a large update to the last version and contains more data types for date and time. It also contains a simple update routine to update things in case of changed configurations.

Thanks for the update, it’s sounds strange (probably this is the reason why time reading you prepared didn’t work for me too).
I’ll wait for the Alpha 10 in that case and will see how it behaves. Hopefully it changes something for me. Until then I give up on own parsers.

I’m still working on the new release, but yesterday I configurated the productive configuration to use the 2.x binding as daily driver. I found an issue with master-master telegrams. I will fix this and than I’m hopefully ready for a new release.

I hope that your custom configurations work out of the box with the new version, but I’ve not explicite changed code for your issue.

But in general I can say the binding is very stable and only contains few smaller issues. I’ll change the binding after the next alpha to beta status. That I’m focused on more configuration files.

good news, waiting impatiently for the new release. own parsers would be good as there will be immedaitely more contributors to the project (I’m planning to do VR61 stuff which controls circuit 2 as well as add some BAI then I could share my stuff when working)

I can prepare & test Vaillant VR68 - solar module just after i will be able to test own paraser

@csowada

Could you please tell me how to discover new think with custom paraser

My confirm:
configurationUrl=file:///etc/openhab2/ebus_cust.json
configurationUrl1=
configurationUrl2=

my custom
ebus_cust.json
{
“id”: “VR68”,
“vendor”: “Vaillant”,
“label”: “Vaillant VR68”,
“description”: “Vaillant VR68 solar”,

"authors":      ["name, email@gmail.com"],
"identification": [],

"commands":
[
{
        "label": "<VR 68> SP1 temperature (°C)",
        "id":      "vr68.temp_SP1",
        "command": "B5 09",

        "get": {
                "master": [
                        {"type": "data2c", "default": "0D 00 00"}
                ],
                "slave": [
                          {"name": "runtime", "type": "data2c", "label": "SP1", "format":"%.2f °C"}
                ]

        }
    },

]

}

You must know the magic 5 byte identification for Discovery for your device or create the thing manually via

Inbox > (+) > eBUS binding > Vaillant VR68 (custom-device).

I’ve checked the config file from ebusd and the id could be 73 6F 6C 30 30.

But keep in mind that @witek_1308 has some problems with custom parser, but maybe it works for you.

And you should surround the code with three ` signs. There is a button called “JavaScript code fence” in the editor. The editor has modified your double quotes, so I’m not able to copy/past your code! And for logs you should use “Code fence”.

Hi @csowada
Could you tell how to find Master address and where in ebusd config you found Identification
I found slave for vr68 EC

No problem, you can find the source address in the filename ec.sol.sc.csv, it starts with the source address, separated with a dot. That is the reason why you see some link files in the directory.
The id is the second word in the second line. In your example its sol00. I convert it with a string-hex online converter.