Skip to content

john30/ebusd

Repository files navigation

ebusd - eBUS daemon

ebusd is a daemon for handling communication with eBUS devices connected to a 2-wire bus system ("energy bus" used by numerous heating systems).

Build CodeQL codecov Release Downloads Docker Downloads Release GitHub Discussions Sponsors Donate

Features

The main features of the daemon are:

  • use one of these device connections:
  • auto-discover device connection via mDNS
  • actively send messages to and receive answers from the eBUS
  • passively listen to messages sent on the eBUS
  • answer to messages received from the eBUS
  • regularly poll for messages
  • cache all messages
  • scan for bus participants and automatically pick matching message definition files from config web service at ebusd.eu (or alternatively local files)
  • parse messages to human readable values and vice versa via message definition files
  • automatically check for updates of daemon and message definition files
  • pick preferred language for translatable message definition parts
  • grab all messages on the eBUS and provide decoding hints
  • send arbitrary messages from hex input or inject those
  • log messages and problems to a log file
  • capture messages or sent/received bytes to a log file as text
  • dump received bytes to binary files for later playback/analysis
  • listen for command line client connections on a dedicated TCP port
  • provide a rudimentary HTML interface
  • format messages and data in JSON on dedicated HTTP port
  • publish received data to MQTT topics and vice versa (if authorized)
  • announce message definitions and status by MQTT to e.g. integrate with Home Assistant using MQTT Discovery
  • support MQTT publish to Azure IoT hub (see MQTT integration)
  • act as a KNX device by publishing received data to KNX groups and answer to read/write requests from KNX, i.e. build an eBUS-KNX bridge
  • user authentication via ACL file for access control to certain messages

Installation

Either pick the latest release package suitable for your system, use the Debian repository as described here, use makepkg for Archlinux or pick the package from the Alpine Linux repository, build it yourself, or use a docker image (see below).

Building ebusd from the source requires the following packages and/or features:

  • autoconf (>=2.63) + automake (>=1.11) or cmake (>=3.7.1)
  • g++ with C++11 support (>=4.8.1)
  • make
  • kernel with pselect or ppoll support
  • glibc with getopt_long support
  • optional: knxd-dev for knxd support (KNXnet/IP support is always included)
  • libmosquitto-dev for MQTT support
  • libssl-dev for SSL support

To start the build process, run these commands:

./autogen.sh
make install-strip

Or alternatively with cmake:

cmake .
make install/strip

Documentation

Usage instructions and further information can be found here:

https://github.com/john30/ebusd/wiki

Configuration

The most important part of each ebusd installation is the message configuration. Starting with version 3.2, ebusd by default uses the config web service at ebusd.eu to retrieve the latest configuration files that are reflected by the configuration repository (follow the "latest" symlink there):

https://github.com/john30/ebusd-configuration

Docker image

A multi-architecture Docker image using the config web service for retrieving the latest message configuration files is available on the hub. You can use it like this:

docker pull john30/ebusd
docker run -it --rm --device=/dev/ttyUSB0 -p 8888 john30/ebusd -d ens:/dev/ttyUSB0

For more details, see Docker Readme.

Contact

For bugs and missing features use github issue system.

The author can be contacted at ebusd@ebusd.eu .