/!\ Vorläufig / Preliminary, work in progress /!\

Translate (Übersetzte) with Google

/!\ If you mouse click on a picture it will be expanded. You can go back to the web page with the back arrow of your web browser.

Heating system Vaillant

I wanted to visualize the several values of a gas heating system from company Vaillant. I have the VCW266 heater and the VCR700 controller.

The cost and effort should be low.

Fortunately this heating system already has an Ebus.

So, what components do I need for that, which play together?

  1. Hardware

    1. A computer (Linux server).

    2. An Ebus to USB interface.

  2. Software which play together, with low effort.

    1. Operating system Linux, Ubuntu desktop, 64 Bit.

    2. The Ebus daemon

    3. A data broker, ioBroker.

    4. A time oriented database influxDB.

    5. A visualization software, Grafana

So, lets start with the hardware.

Hardware

Computer

My favorite is a Intel/AMD CPU laptop at home, which runs 24 hour.

  1. It must be possible to run Ubuntu 18.04/20.04 (64 bit).
    1. I am using a used Lenovo T430s laptop (with SSD) for about 160 EUR.

EBUS

EBUS (energy bus) is a 2-wire digital serial data-bus communication interface used in heating and solar energy appliances, by mainly German manufacturers (e.g. Vaillant, Wolf, etc).

The EBUS 2-wire interface is an asynchronous serial port with active-low voltage that exchanges 8-bit bytes with start and stop bit (no parity bit), at a symbol rate of 2400 baud, and can be implemented with a standard UART plus a voltage converter. Very similar to RS232, but with different voltage levels.

The voltage levels were chosen to allow the bus also to supply power to bus participants (max. 25, max. 18 mA per interface), who can use a voltage stabilizer to derive an internal 5 V supply.

EEBUS is a higher level protocol on TCP/IP basis and is encrypted.

attachment:EBus_converter_Top.png

Ebus Interface

In order to keep the cost low, just a bare printed circuit board was bought for about 7 EUR. Search at Ebay for the title eBus-Platine-PCB-fuer-Vaillant-Wolf. See the picture of the PCB on the right.

The documentation can be found in the https://github.com/john30/ebusd/wiki]fhem wiki.

The parts are available at company reichelt.de for about 5 EUR plus shipping.

You need additionally an USB-TTL converter with +5 V supply. Also at reichelt.de you can order for about 5 EUR item RPI USB TTL, with PL2303 chip and +5 V supply. The pin sockets fit on the Ebus adapter board.

Unfortunately no test LED's are provided on the PCB, like on the Ebus adapter version 2, so I added 2 of them.

  1. The yellow SMD LED is connected in series of the Ebus input voltage (cathode to U4 input). Should be always ON.

  2. The red SMD LED (TX Data) is connected between pin 1 of U3 (cathode) and R5 (470R) . Should be OFF, if the Ebus input is open.

attachment:EBUS_Adapter_1.6_Top_IMG_2459.jpg

.

On the lower side of the PCB I made 2 useful modifications:

  1. Added a 100 nF SMD 0805 capacitor for VDD blocking of U2 4011B.

  2. Added a 10 K SMD 0805 resistor for pullup up U2, pin 8, in order to avoid pulling down the Ebus, if the input TXD is open.

attachment:EBUS_Adapter_1.6_Bottom_IMG_2458.jpg

.

Data flow

In order to better understand how the data are processed until you get a chart over time, I will make a simple diagram.

Host 192.168.17.74  Ubuntu 18.04-64

TCP-Port
      default 8888  8890->
 EBUS               <-8889            8086        3000
/dev/ttyUSB0 -> ebusd -> ioBroker -> influxDB -> Grafana -> time chart

Unfortunately on my Ubuntu server the default TCP_Port 8888 was already occupied. So, I changed it to 8890. The utility program ebusctl needs also the parameter -p 8890.

Software under Ubuntu

EBUS software

The EBUS commands are explained here.

The EBUS command from company Vaillant are explained here.

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

It is known to run fine on regular PC hardware as well as on smaller devices like Fritzbox and Raspberry Pi. In order to use it, a hardware interface is necessary. Read more details in the wiki.

Install ebusd

Follow the instructions on github

Install node.js

2020-10-20 for updates read this information (select your language).

First install node.js

# Check for already installed
$ apt list --installed | grep nodejs
nodejs/now 14.9.0-deb-1nodesource1 amd64  [Installiert,aktualisierbar auf: 14.10.1-deb-1nodesource1]
# or
$ node -v
14.9.0  # actual for Ubuntu 18.04, 14.10.0 for Ubuntu 20.04)

# check node.js installer npm
$ npm -v
6.14.8   # actual for Ubuntu 18.04 and 20.04

# if not installed do:
$ curl -sLf https://deb.nodesource.com/current.x | sudo -E bash -
$ sudo apt-get install -y nodejs
$ node -v
10.19.0  # on Ubuntu 20.04.1

2020-10-20 update to long term edition 'erbium'
# check for lts version
$ nvm list
...
lts/erbium -> v12.19.0 (-> N/A)

$ nvm install lts/erbium
$ node -v
v12.19.0

$ npm -v
6.14.8

Install ioBroker

$ curl -sLf https://iobroker.net/install.sh | bash -

Library version=2020-06-12
...
    ioBroker was installed successfully
    Open http://192.168.17.74 192.168.17.153:8081 in a browser and start configuring!

You need to re-login before doing anything else on the console!

Install influxDB

Next install influxDB, an open-source time series database, see here.

# for Ubuntu, in the terminal

$ wget -qO- https://repos.influxdata.com/influxdb.key | sudo apt-key add -

$ source /etc/lsb-release

$ echo "deb https://repos.influxdata.com/${DISTRIB_ID,,} ${DISTRIB_CODENAME} stable" | sudo tee /etc/apt/sources.list.d/influxdb.list

$ sudo apt-get update

$ sudo apt install influxdb-client

# Test for daemon running, if ioBroker is already installed.
$ ps aux | grep influxdb
iobroker  3156  0.1  1.5 937544 59724 ?  Sl   17:09   0:03 io.influxdb.0
influxdb  4429  0.1  1.0 1193480 41440 ? Ssl  17:23   0:03 /usr/bin/influxd -config /etc/influxdb/influxdb.conf

# Edit config file
$ nano /etc/influxdb/influxdb.conf
# after making a chang
$ sudo service influxdb restart

# influxdb shell
$ influx
Connected to http://localhost:8086 version 1.8.2
InfluxDB shell version: 1.8.2
> help
usage:
    connect <host:port>   connects to another node specified by host:port
    auth                  prompts for username and password
    pretty                toggles pretty print for the json format
    chunked               turns on chunked responses from server
    chunk size <size>     sets the size of the chunked responses.  
                          Set to 0 to reset to the default chunked size
    use <db_name>         sets current database
    format <format>       specifies the format of the server responses: json, csv, or column
    precision <format>    specifies the format of the timestamp: rfc3339, h, m, s, ms, u or ns
    consistency <level>   sets write consistency level: any, one, quorum, or all
    history               displays command history
    settings              outputs the current settings for the shell
    clear                 clears settings such as database or retention policy.  
                          run 'clear' for help
    exit/quit/ctrl+d      quits the influx shell

    show databases        show database names
    show series           show series information
    show measurements     show measurement information
    show tag keys         show tag key information
    show field keys       show field key information

    A full list of influxDB commands can be found at:
    https://docs.influxdata.com/influxdb/latest/query_language/spec/

Install Grafana

Last install Grafana, a multi-platform open source analytics and interactive visualization web application.

Read the Grafana Installation manual for Debian.

Grafana gets the input data from influxDB.

# Installation under Ubuntu

$ sudo apt-get install -y adduser libfontconfig1

$ cd Install
$ wget https://dl.grafana.com/oss/release/grafana_7.1.5_amd64.deb
$ sudo dpkg -i grafana_7.1.5_amd64.deb

### You can start grafana-server by executing
$ sudo /bin/systemctl start grafana-server
oder
$ sudo service grafana-server start
or after a parameter change.
$ sudo service grafana-server restart

# Configure the Grafana server to start at boot:
$ sudo systemctl enable grafana-server.service

# check for status:
$ sudo service grafana-server status
● grafana-server.service - Grafana instance
     Loaded: loaded (/usr/lib/systemd/system/grafana-server.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2020-11-05 05:26:03 CET; 37min ago
       Docs: http://docs.grafana.org
   Main PID: 276826 (grafana-server)
      Tasks: 12 (limit: 4434)
     Memory: 67.6M
     CGroup: /system.slice/grafana-server.service
             └─276826 /usr/sbin/grafana-server --config=/etc/grafana/grafana.ini --pidfile=/var/run/grafana/grafana-server.pid --packaging=deb cfg:default.paths.logs=/var/log/grafana cfg:defa>
...


# Setup parameters
Edit 
$ sudo nano /etc/grafana/grafana.ini
protocol = http
http_port = 3000
# enable anonymous access
;enabled = false
enabled = true

# Call in a web browser (local network): http://192.168.17.161:3000 # OK 

Login: name: admin, password: admin, ENTER

Enter a new password.

Click on the + (button) on the left to create a new dashboard.

Configure influxDB

1. Configure instance influxDB, see the screen shot below.

attachment:ioBroker_influxDB_Adapterkonfiguration.jpg

.

Configure application

1. First you have to select the Adapter ebus, see below. Then click on the Info button

attachment:ioBroker_74_ebus_Adapter.jpg

.

2. Next click on the + (plus) button, in order to add to the Instances.

attachment:ioBroker_74_ebus_Adapter_info.jpg

.

3. In the Adapterconfiguration you select the ioBroker server IP-Address, the port number 8889 for data read, 8890 for data write, and a time limit of in this case 300 seconds. Last enter a comma separated list of data points to query. The names you get from the ebusd documentation.

attachment:ioBroker_74_ebus_Adapterconfiguration.jpg

.

4. In area Instances you see ebus.0 listed. The .0 is a counter, if you have several adapters of the same type. If the Log does not turn red, the configuration and the data traffic are OK.

attachment:ioBroker_74_ebus_Instanzen.jpg

.

5. The objects are data points with some values. In the screen shot below I have shown all selected data points of the ebus values. The abbreviation 700 stands for the controller VRC700, and bai stands for the gas heater VCW266. If you want, that a value is stored in the data base influxDB you have to click the wrench in most right column of the value line. See the screen shot below.

attachment:ioBroker_74_ebus_objekte.jpg

.

6. To the screen shot below: You have to click (activated) the point activated (Aktiviert). In order to keep the data volume small, you can mark store changes only (Nur Änderungen aufzeichnen). In order to debounce a signal you can define a debounce time, in my case 100 ms.

In case you have very slowly changing values, you can define a minimum storage interval. In one case I set it to 300 s.

attachment:ioBroker_74_ebus_value_influxDB.jpg

.

Configure Grafana

1. Configure grafana visualization program.

influxDB is the default database, see the screen shot below.

attachment:Grafana_Configuration_influxDB.jpg

.

The default user is admin, and I did not change it.

In order to check the details of the influxDB parameters, below is the configuration mask:

attachment:Grafana_Data-Sources_influxDB.jpg

.

How to find the Dashboards, see below.

attachment:Grafana_dashboards.jpg

.

To setup a new Dashboard (diagram) see the screen shot below.

Then edit all needed parameters.

attachment:Grafana_new_dashboard.jpg

.

attachment:Grafana_select_from_list.jpg

In order to make it more clear how to select the parameters to visualize, see the screen shot on the right.

When you click in the FROM field, a list drops down, showing all known measurement parameters (Data Points).

Then click on the wanted parameter, and if there are data values present, a curve in the diagram will be shown.

There is a little trap, if you have a measurement value, which does not change often (e.g. 30 min). When you start the diagram, there is only one value, and Grafana interprets that as No data.

In order to see a line you can set in field GROUP BY paramter fill from null to previous. Then you should see a line in the diagram.

.

.

How to edit the parameter, see below.

attachment:Grafana_diagram_edit.jpg

.

How to add the right axis, see below.

attachment:Grafana_diagram_right-Y-axis.jpg

.

Grafana Heizung Temperaturen

attachment:Grafana_Heizung-Temperaturen.jpg

.

In order to see the circulation pump activity I just found the water pressure value to visualize it. See the diagram below.

attachment:Grafana_Heizung_Temperatur_Cursor_12h.jpg


  1. ebusd wiki, adapter version 1.6

  2. Ebus adapter version 2

  3. Ebus binding

  4. Grafana

  5. Grafana is a multi-platform open source analytics and interactive visualization web application.

  6. influxDB.

  7. InfluxDB is an open-source time series database

  8. ioBroker

  9. Connect components for home automation

  10. MQTT, Message Queuing Telemetry Transport, wikipedia

  11. MQTT

  12. node.js, JavaScript runtime environment,wikipedia

  13. npm, node package manager, wikipedia

  14. parts list for Ebus interface PCB version 1.6

  15. Ubuntu desktop, 64 Bit

up to top

Contact Email, please enter your Email address

/!\ The entered Email address will not be published, or given away.

Comment this page
Name:
Comment:
Are you human?

List of pages in this category:

-- RudolfReuter 2020-09-20 13:08:17


Go back to CategoryHeizung or FrontPage

HeizungVaillantEbus (last edited 2020-11-05 05:21:50 by RudolfReuter)