eBUS Binding 4.x [4.0.0;5.0.0)

ebus

With this binding, heating and ventilation systems that have an eBUS can be addressed. The corresponding hardware is required. Connections are possible via serial, TCP and ebusd.

Requirements

  • openHAB 4.x
  • eBUS Hardware Interface (Serial, Ethernet, ebusd)
  • eBUS protocol compatible Heating System

Changelog

or just check GitHub Releases for the latest or older versions.

Resources

or just check GitHub Releases for the latest or older versions.

Hi,

I tried to port the ebusd HMU configuration to the openhab ebus binding config, but without success.

I’m running openHAB 4.0.3 with the ebus binding installed from marketplace.

As hardware I use the ebus adapter v5 connected to ebusd version 23.2.23.2.

The bridge configuration looks like this:

UID: ebus:bridge:1be388fcf0
label: eBUS Bridge
thingTypeUID: ebus:bridge
configuration:
  masterAddress: FF
  networkDriver: ebusd
  serialPortDriver: buildin
  ipAddress: 192.168.101.26
  port: 8888
  advancedLogging: true

I also added my new configuration file to the binding configuration. In the log the ebus binding claims that the configfile is loaded and also there is a new HMU device recognized and shown in the inbox. If I add the new device and link some items to the channels the item values are all ‘NULL’ even if I set the channel polling config to poll every 20 seconds.

In the ebusd log I can see that the ebus binding is sending direct commands to the ebusd and that ebusd sees the response from the slave and docodes it.

In the ebus-unreseolved.csv I can see that the binding is not able to decode the messages, but I do not understand why.

Here is a snippet from the ebus-unresolved.csv

2023-11-03 15:18:47;"FF";"08";"B5 11";"01 07 2B 00 06 00 61 00 19 01 38 09 00 AA";
2023-11-03 15:18:50;"FF";"08";"B5 11";"01 07 2B 00 06 00 61 00 19 01 38 09 00 AA";
2023-11-03 15:18:50;"FF";"08";"B5 1A";"04 05 FF 32 00 D3 00 0A FF 08 2F 3F 00 00 00 00 00 00 90 00 AA";
2023-11-03 15:18:52;"FF";"08";"B5 1A";"04 05 FF 32 00 D3 00 0A FF 08 2F 3F 00 00 00 00 00 00 90 00 AA";
2023-11-03 15:19:06;"FF";"08";"B5 1A";"04 05 FF 32 40 93 00 0A FF 08 27 15 BB 00 00 00 00 00 F9 00 AA";
2023-11-03 15:19:06;"FF";"08";"B5 1A";"04 05 FF 32 40 93 00 0A FF 08 27 15 BB 00 00 00 00 00 F9 00 AA";
2023-11-03 15:19:08;"FF";"08";"B5 1A";"04 05 FF 32 40 93 00 0A FF 08 27 15 BB 00 00 00 00 00 F9 00 AA";
2023-11-03 15:20:36;"FF";"08";"B5 1A";"04 05 FF 32 40 93 00 0A FF 08 27 15 BB 00 00 00 00 00 F9 00 AA";
2023-11-03 15:20:38;"FF";"08";"B5 1A";"04 05 FF 32 40 93 00 0A FF 08 27 15 BB 00 00 00 00 00 F9 00 AA";
2023-11-03 15:20:40;"FF";"08";"B5 14";"05 05 01 03 FF FF 02 00 04 01 00 64 00 A2 00 AA";
2023-11-03 15:20:41;"FF";"08";"B5 14";"05 05 01 03 FF FF 02 00 04 01 00 64 00 A2 00 AA";

And this is the newly created configuration

{
    "id": "hmu",
    "vendor": "Vaillant",
    "label": "Vaillant HMU",
    "description": "Vaillant HMU",

    "authors":      ["XXXXXXX, xxx@xxx.xx"],
    "identification": ["48 4D 55 30 30"],

    "templates": [
        {"name":"unknown3", "template": [
            {"type": "byte", "length": 3}
        ]}
    ],

    "commands":
    [
        {
            "label":    "State",
            "id":       "state",
            "command":  "B5 11",

            "get": {
                "master": [
                    {"type": "static", "default": "07"}
                ],
                "slave": [
                    {"name": "energy", "type": "uchar", "label": "Energy", "format":"%d"},
                    {"name": "energy2", "type": "word", "label": "Energy2", "format":"%dkWh"},
                    {"type": "template-block", "label": "OnOff", "id": "vaillant.onoff"},
                    {"name": "state", "type": "uchar", "label": "State",
                        "mapping": {"1":"ready", "11":"error", "9":"heating", "17":"cooling", "129":"heating_water"}}
                ]
            }
        },

        {
            "label": "Energy Heating",
            "id": "statistics.energy_hc",
            "command": "B5 1A",

            "get": {
                    "master": [
                        {"type": "static", "default": "05 FF 32 00"}
                    ],

                    "slave": [
                        {"type": "template-block", "id": "unknown3"},
                        {"type": "template-block", "id": "vaillant.energy4", "label": "Heating Energy"}
                    ]
            }
        },

        {
            "label": "Energy Cooling",
            "id": "statistics.energy_cool",
            "command": "B5 1A",

            "get": {
                    "master": [
                        {"type": "static", "default": "05 FF 32 01"}
                    ],

                    "slave": [
                        {"type": "template-block", "id": "unknown3"},
                        {"type": "template-block", "id": "vaillant.energy4", "label": "Heating Energy"}
                    ]
            }
        },

        {
            "label": "Runtime (h)",
            "id": "statistics.runtime",
            "command": "B5 1A",

            "get": {
                    "master": [
                        {"type": "static", "default": "05 FF 32 40"}
                    ],

                    "slave": [
                        {"type": "template-block", "id": "unknown3"},
                        {"type": "template-block", "id": "vaillant.hoursum2", "label": "Hours", "format":"%d hours"}
                    ]
            }
        },

        {
            "label": "Runtime heating circuit (h)",
            "id": "statistics.runtime_hc",
            "command": "B5 1A",

            "get": {
                    "master": [
                        {"type": "static", "default": "05 FF 32 41"}
                    ],

                    "slave": [
                        {"type": "template-block", "id": "unknown3"},
                        {"type": "template-block", "id": "vaillant.hoursum2", "label": "Hours heating"}
                    ]
            }
        },

        {
            "label": "Runtime cooling (h)",
            "id": "statistics.runtime_cool",
            "command": "B5 1A",

            "get": {
                    "master": [
                        {"type": "static", "default": "05 FF 32 43"}
                    ],

                    "slave": [
                        {"type": "template-block", "id": "unknown3"},
                        {"type": "template-block", "id": "vaillant.hoursum2", "label": "Hours cooling"}
                    ]
            }
        },

        {
            "label": "Building Pump Power (%)",
            "id": "diag.building_pump_power",
            "command": "B5 14",

            "get": {
                    "master": [
                        {"type": "static", "default": "05 01 03 FF FF"}
                    ],

                    "slave": [
                        {"type": "template-block", "id": "vaillant.unknown1"},
                        {"name": "value", "type": "word", "label": "Building Pump Power", "format": "%d %%"}
                    ]
            }
        },
    ]
}

I also see many ebus error entries in the log like

2023-11-03 15:25:06.159 [ERROR] [.csdev.ebus.core.EBusEbusdController] - error!
de.csdev.ebus.core.EBusDataException: Unable to send telegram FF 08 B5 1A 04 05 FF 32 40 93 after 2 attempts ... [ERROR: TOO_MANY_ATTEMPS, DATA: FF 08 B5 1A 04 05 FF 32 40 93]
	at de.csdev.ebus.core.EBusQueue.checkSendStatus(EBusQueue.java:117) ~[?:?]
	at de.csdev.ebus.core.EBusEbusdController$EBusSenderThread.run(EBusEbusdController.java:112) ~[?:?]
	at java.lang.Thread.run(Thread.java:833) ~[?:?]

Any suggestions?

Thanks
Marc