VWMon: Datenlogger und Fernsteuerung für die Vaillant-Wärmepumpe

Einführung

Es gibt seit einiger Zeit eine gute Möglichkeit, alle Daten einer Vaillant-Wärmepumpe auszulesen und sogar zu verändern. Der Datenlogger ist open source und holt komplett ohne vrDialog und andere kostenpflichtige Addins alle 60 Sekunden ca. 40 Werte aus der Vaillant-Wärmepumpe (geoTherm VWS oder geoTherm VWL) raus und speichert sie in einer mySQL-Datenbank auf dem Webserver im Internet ab. Mit der Fernsteuerungs-Webobefläche kann man aus dem Internet die Werte beobachten und beliebige Befehle an die Wärmepumpe abschicken.

Die Lösung basiert hardwareseitig auf einem eBus-Koppler von eService-Online und softwareseitig auf einer genialen Entwicklung namens eBus-Daemon (ebusd), die mittlerweile in der Lage ist, fast alles zu ver-/entschlüsseln, was die Vaillant-Wärmepumpen durch den eBus senden/empfangen.

Die Software für die Kommunikation mit der Wärmepumpe läuft bei mir (wie schon mein Datenlogger für die Wetterstation) auf einer Fritzbox 7390, so dass kein anderer ständig laufender PC nötig ist. Der ebus-Koppler ist per USB daher direkt an der Fritzbox angeschlossen. Man kann die Software natürlich auch auf einem beliebigen Linux-Rechner mit einem USB-Port laufen lassen.

Die passwort-geschützte Fernsteuerungs-Weboberfläche ist sehr einfach gehalten. Man kann die wichtigsten Daten vom letzten Eintrag sowie vom letzten Kompressorlauf von Überall aus dem Internet verfolgen. Man kann auch beliebige Befehle an die Wärmepumpe abschicken. Natürlich kann man die Weboberfläche nach Wunsch erweitern und optimieren.

VWMon-Control: Fernsteuerung der Vaillant Wärmepumpe
Fernsteuerung der Vaillant Wärmepumpe


Die Anwendung folgender Anleitung erfolgt ausschließlich auf eigenes Risiko.

Hardware

Als Hardware kauft man sich am einfachsten einen eBus-Koppler von eService-Online für ca. 80 EUR. Man verbindet ihn einfach mit einem beliebigen zweiadrigen Kabel mit der eBus-Klemme auf der Platine der Wärmepumpe. Der Koppler hat galvanisch getrennte Kreise, so dass der Wärmpepumpensteuerung nichts passieren kann, wenn am USB-Ausgang etwa zu hohe Spannung anliegt. Es ist auch gegen die Verpolung geschützt, daher muss man beim Anschluss an den eBus-Stecker der Wärmepumpe nicht auf die Polarität achten. Und dieser Koppler funktioniert erfahrungsgemäß sehr gut mit dem Vaillant-eBus und mit ebusd.

Es kann auf eigenes Risiko auch ein anderer, auch selbst gemachter eBus-USB-Koppler eingesetzt werden. Dieser soll als serielles USB-Device von Linux erkannt werden. Bei eBus-Wiki gibt’s ein paar Ideen mit Schaltplänen, wie man einen eBus-Konverter bauen kann.

Software

Betriebssystem und Treiber

Als Unterbau braucht man ein laufendes Linux-System mit einem USB-Port. Das kann ein PC oder ein Mini-Device wie Raspberry Pi oder AVM FRITZ!Box sein. Jedenfalls braucht man Linux-Kenntnisse, wenn man die Software selbst kompilieren will. Weiter unten auf dieser Seite findet man vorkompilierte Pakete für Fritzbox. Diese kann man auch ohne Linux-Kenntnisse installieren!

Vermutlich kann die Software auch auf Nicht-Linux-Systemen zum Laufen gebracht werden. Die Quelltexte sind offen, man kann damit arbeiten.

Damit der angeschlossene eBus-Koppler erkannt wird, muss in Linux das Treibermodul ftdi_sio aktiviert sein. Das geht mit:

modprobe -v ftdi_sio

(Wenn man zufällig Linux mit Kernel 2.6.28 hat, ist ein Patch für ftdi_sio.c sehr ratsam. Man sollte bei älteren Kernels auch nach anderen Patches für ftdi_sio.ko und usbserial.ko schauen.)

Der angeschlossene eBus-Koppler ist dann in der Regel als Device /dev/ttyUSB0 verfügbar. Wenn man will, kann man mit einer Regel in /etc/udev/rules.d einen speziellen Namen vergeben. Wenn man mehrere serielle USB-Geräte angeschlossen hat, ist es sogar sehr empfehlenswert, um Verwechslungen zu vermeiden.

eBusd

An der ebusd-Software wurde in den letzten Monaten sehr viel geändert und die Dokumentation ist dürftig. Ich habe mal einen Vorläufer der Version 0.5 kompiliert und festgestellt, dass die Programmdatei im Vergleich zur Urversion von 150 KB auf mehr als 1 MB gewachsen ist. Man braucht jedenfalls auch passende CSV-Dateien mit der Protokollübersetzung zur Vaillant Wärmepumpe. Ansonsten verweise ich für die aktuelle Version auf die Installationsbeschreibung im Repository.

Update: Die Repository von yuhu existiert seit Februar 2015 nicht mehr. Die aktuellen Quellcodes für ebusd sind im Repository von john30 erhältlich. Config-Dateien sind hier.

Eine ältere und leichtere Version (rev. 1993) von eBusd, die ich mit meinem kleinen Patch sehr zuverlässig seit Monaten im Einsatz habe, findet man in diesem Repository. Hier sind auch die passenden älteren CSV-Dateien enthalten, auf die auch VWMon vorkonfiguriert ist. Die alten CSV-Dateien beinhalten auch Set-Befehle, mit denen man die Wärmepumpe steuern kann.

Und so kann man ebusd daraus bauen:

svn checkout svn://svn.code.sf.net/p/openautomation/code/tools/ebusd@1993
cd ebusd
aclocal && autoconf && autoheader && automake
./configure
make

Anschließend kopieren wir die benötigten Dateien um und lassen ebusd laufen:

mkdir /usr/bin/ebusd
cp src/ebusd /usr/bin/ebusd
mkdir /etc/ebusd
cp contrib/csv/vaillant/*.csv /etc/ebusd	 	
cp contrib/etc/ebusd/ebusd.conf /etc/ebusd
/usr/bin/ebusd/ebusd -f -l ALL -d /dev/ttyUSB0 -p 7777 -s

(Es gibt im contrib-Verzeichnis auch noch init.d-Scripte, mit denen man das Starten und Stoppen des Daemons auch etwas eleganter erledigen kann.)

Wenn die Hardware läuft, sieht man jetzt eine Menge Daten über den Bildschirm flutschen. Da druckt ebusd alles aus, was am eBus aktuell passiert. Wichtig: Wenn keine Daten zu sehen sind, muss man evtl. den Poti (Regler) am eBus-Koppler etwas drehen, so dass zwischen den eigentlichen eBus-Telegrammen viele AA-Zeilen (Syncs) zu sehen sind, aber keine zahlreichen CRC-Fehler.

Mit dem laufenden ebusd kann man jetzt schon per Telnet kommunizieren und die Daten der Wärmepumpe abrufen und ihre Einstellungen ändern:

telnet localhost 7777
get mv yield_sum
31694.000
set cir2 at_off 12.0
ACK
quit

Mit den fettgedruckten Kommandos haben wir im obigen Beispiel den Energieertrag abgerufen und die AT-Abschalttemperatur auf 12°C gesetzt. Die Liste der möglichen Kommandos findet man in den genutzten CSV-Dateien.

Man muss ebusd nicht selbst starten. Er wird später automatisch von vwmon-client gestartet, siehe Einstellung ebusd_Command in der Datei vwmon-client.cfg.

VWMon

Jetzt kommt mein kleines Tool VWMon (Vaillant Wärmepumpe MOnitor) ins Spiel. Der vwmon-client kann auf der gleichen Kiste laufen wie ebusd. Er liest einen konfigurierbaren Datenset im einstellbaren Zeitinterval über ebusd aus und funkt die Daten an vwmon-server per HTTP. Vwmon-server ist eine kleine PHP-Anwendung, die die Daten annimmt und in einer mySQL-Tabelle speichert.

Zuerst kompilieren und installieren wir vwmon-client auf dem gleichen Rechner, wo ebusd läuft:

git clone https://github.com/aloz77/vwmon
cd vwmon
gcc vwmon-client.c http_fetcher.c http_error_codes.c -o vwmon-client
mkdir /usr/bin/vwmon
cp vwmon-client /usr/bin/vwmon
mkdir /etc/vwmon
cp vwmon-client.cfg /etc/vwmon

Bevor wir vwmon-client laufen lassen, muss vwmon-server installiert werden. Die Datei vwmon-server.php soll auf einem Webserver mit Anbindung an eine mySQL-Datenbank abgelegt werden. (Wenn man noch keinen Webserver hat, nimmt man einfach ein kleines Webhosting-Paket mit PHP und mySQL beim Webhoster seines Vertrauens.) Um die benötigten mySQL-Tabellen anzulegen, kann man einfach die mitgelieferte Datei vwmon-server.sql in die Datenbank einspielen. Die Zugangsdaten zur Datenbank, ein beliebiger Serverkey und die eigene E-Mail-Adresse gehören dann in die Datei vwmon-server.php rein.

Jetzt konfigurieren wir noch die Datei vwmon-client.cfg auf dem Rechner, wo vwmon-client installiert ist:

nano /etc/vwmon/vwmon-client.cfg

Hier muss man unbedingt die richtigen ebusd_Command, Error_Email, VWMonServer_URL und VWMonServer_Key (der gleiche Serverkey wie in vwmon-server.php!) eintragen. In der cfg-Datei findet man auch die Liste der Datenfelder, die man auslesen und abspeichern will, samt entsprechenden Kommandos. Diese Liste kann man frei ergänzen, man muss nur daran denken, ein gleich benanntes Feld vom passenden Datentyp in der mySQL-Tabelle vwmon_history anzulegen.

Jetzt können wir den vwmon-client einmal mit ausführlichem Output laufen lassen:

/usr/bin/vwmon/vwmon-client -v -c /etc/vwmon/vwmon-client.cfg -r 0

Nun soll man schauen, ob ebusd automatisch von vwmon-client gestartet wird, alles sauber durchläuft und die Daten in der mySQL-Tabelle ankommen. Wenn soweit alles funktioniert, kann man vwmon-client still im Hintergrund laufen lassen.

/usr/bin/vwmon/vwmon-client -c /etc/vwmon/vwmon-client.cfg &

Abschließend soll man vwmon-client so einrichten, dass er beim Hochfahren des Rechners automatisch startet und still läuft. Diese Sache ist abhängig vom jeweiligen Betriebssystem und wird hier nicht detailliert beschrieben.

Weboberfläche

Die Fernsteuerungs-Weboberfläche vwmon-control.php ist sehr einfach gehalten. Man kann die wichtigsten Daten vom letzten Eintrag sowie vom letzten Kompressorlauf sehen. Man kann auch beliebige Befehle an die Wärmepumpe abschicken. Natürlich kann man die Weboberfläche nach Wunsch erweitern und optimieren.

Für die Installation kopiert man einfach die Datei vwmon-control.php in ein beliebiges Verzeichnis auf dem gleichen Webserver, wo vwmon-server.php liegt. In der Datei muss man die Zugangsdaten für die Datenbank sowie die Anmeldedaten der Nutzer sollen in der Datei vwmon-control.php einkonfiguriert werden. Ohne Passwortschutz darf die Fernsteuerung auf keinen Fall betrieben werden, deswegen ist eine HTTP-Authentifizierung in vwmon-control.php intergiert. Man braucht keine .htacess Regeln.

Und nun?

Wenn die Daten der Wärmepumpe erstmal in der mySQL-Tabelle sind, kann jeder überlegen, was man damit macht: wie man sie visualisiert, mit anderen Daten verknüpft, Alarmierungen einrichtet oder sogar wie man die Wärmepumpe mit Hilfe dieser Daten nachsteuert.

Das ist in den vorgestellten Tools nicht drin, kann aber jederzeit als eine weitere willkommene Komponente dazukommen.

VWMon für die FRITZ!Box

Für die FRITZ!Box stelle ich angepasste und vorkompilierte Software-Pakete zur Verfügung, die man ohne Linux-Kenntnisse installieren kann. Die Software läuft auf einer Fritzbox 7390 oder 7490 mit der Original-Firmware. (Theoretisch kann sie auf jeder Fritzbox mit einem USB-Port laufen. Praktisch, so zeigt leider die Erfahrung mit Frewe, muss man das immer mit der jeweiligen Box direkt nachprüfen, da jedes Fritzbox-Modell etwas anders ist.)

[Update] AVM scheint ab Firmware-Version 06.05 gegen  Zusatzsoftware eingestellt zu sein und verweigert die notwendige Unterstützung für den automatischen Start der Zusatzsoftware beim Booten der Fritzbox. Details findet ihr in diesem Diskussionsthread. Es gibt mittlerweile einen Workaround, der auf einigen Fritzboxen, z.B. 7490 und 3370 funktioniert. Auf anderen Boxen, kann man VWMon nur auf einer modifizierten Firmware wie Freetz zuverlässig zum Laufen bringen.  Beschwert euch bei AVM. Eine ganz ganz kurze Anleitung, wie man Freetz-Firmware baut und installiert, habe ich hier geschrieben. Es geht jedoch nicht ohne fundierte PC-Kenntnisse.[/Update]

Schritt 1. VWMon-Paket herunterladen

Aktuell ist die Version 0.10.

Fritzbox-Version:

Pakete für andere Fritzbox-Versionen erstelle ich nur auf Anfrage für eine kleine Aufwandsentschädigung.

Das ZIP-Archiv soll man auf dem PC in ein neues Verzeichnis auspacken. In den folgenden Schritten sollen Sie die Änderungen an Konfigurationsdateien nur mit einem guten Texteditor (z.B. mit Notepad++) vornehmen.

Schritt 2. VWMon-Server und VWMon-Control einrichten

Der vwmon-server ist eine sehr einfache PHP-Anwendung, die die Daten von vwmon-client per HTTP aufnimmt und in eine mySQL-Datenbank speichert. Der vwmon-control ist eine einfache PHP-Anwendung, die die wichtigsten aktuellen Daten der Wärmepumpe in einer Weboberfläche anzeigt und die Wärmepumpe mit Kommandos fernsteuern lässt. Für die Einrichtung des VWMon-Servers und -Controls sind Grundkenntnisse von PHP und mySQL erforderlich.

Man braucht einen kleinen Webhoster mit PHP und mySQL, was man heutzutage überall bekommt. Erst einfach die Tabellen für die Daten anlegen (dazu kann man einfach die Datei vwmon-server.sql in phpMyAdmin importieren). Dann in der PHP-Datei vwmon-server.php die Einstellungen für die Datenbank anpassen, den zufälligen Serverkey und Ihre E-Mail-Adresse festlegen. Von dieser E-Mail-Adresse werden Fehlermeldungen (falls vom vwmon-client etwas unerwartetes gemeldet wird, z.B. USB-Gerät nicht erreichbar) geschickt. In der Datei vwmon-control.php muss man ebenfalls die Einstellungen für die Datenbank anpassen und die Zugangsdaten für die Nutzer festlegen. Der Passwortschutz ist in vwmon-control.php integriert und muss nicht extra (etwa mit .htaccess) eingerichtet werden.

Jetzt können die Datein vwmon-server.php und vwmon-control.php auf den Webserver hochgeladen werden. Der richtige vollständige URL zur vwmon-server.php sowie der Serverkey gehören (im nächsten Schritt) in die Datei vwmon-client.cfg auf der Fritzbox. So kommen die Daten auch bei vwmon-server an.

Schritt 3. VWMon-Client auf der Fritzbox einrichten.

Als erstes passen wir mit einem Texteditor die Konfiguration in der Datei vwmon-client.cfg an. Folgende Einstellungen sind wichtig: Error_Email, VWMonServer_URL und VWMonServer_Key. Die letzten beiden sollen natürlich stimmen, damit die Daten auf dem Server ankommen. (Die Profis können in dieser Datei auch einkonfigurieren, welche Wärmepumpen-Daten genau ausgelesen werden sollen. Die Einsteiger können die Datenzusammenstellung erstmal so lassen.)

In Fritzbox 7390/7490 und Fritzbox 3370 kann man jetzt einfach im Windows Explorer (nicht im Webbrowser!) auf ftp://fritz.box gehen, dort das Verzeichnis vwmon erstellen und alle Dateien außer vwmon-control.phpvwmon-server.php und vwmon-server.sql dareinkopieren. Dieser Speicher ist bei diesen Modellen so ausgelegt, dass er Stromausfälle überlebt (NAND-Speicher).

In anderen Fritzboxen braucht man als Speichermedium einen kleinen USB-Stick (1 GB reicht vollkommen), der später an die Fritzbox angeschlossen wird. Wir schließen den Stick erstmal am PC an, legen im Stammverzeichnis das Verzeichnis vwmon an und kopieren alle Dateien außer vwmon-control.php, vwmon-server.php und vwmon-server.sql darein. Wenn die Fritzbox nur einen USB-Anschluss hat, braucht man zusätzlich einen USB-Hub, damit der USB-Stick und der eBus-Converter gleichzeitig angeschlossen werden können.

Falls Sie die Software auf dem USB-Stick haben, müssen Sie ihn jetzt in die Fritzbox einstecken und rausfinden, unter welchem Namen die Fritzbox die USB-Daten gemounted hat. Einfach auf ftp://fritz.box schauen. Manchmal heißt das Verzeichnis uStor01, kann aber auch etwas wie Sony-StorageMedia-01 oder Samsung-S1Mini-01 heißen. Sie müssen nun daran denken, bei allen folgenden Telnet-Eingaben den Namen des Verzeichnisses nach /ftp/ einzufügen, also z.B. /var/media/ftp/Sony-StorageMedia-01/vwmon/rc.vwmon-client.

Spätestens jetzt soll der eBus-Converter an einen der USB-Ports der Fritzbox eingesteckt werden. In der Fritzbox-Konfiguration soll man ein Unbekanntes USB-Gerät sehen.  Der USB-Fernanschluss soll in der Fritzbox-Konfiguration zumindest für „Andere Geräte (z.B. Scanner)“ ausgeschaltet sein.

Jetzt schalten wir Telnet auf der Fritzbox ein. Dazu auf einem angeschlossenen Telefon #96*7* wählen. (Mit #96*8* kann man Telnet nach dem Abschluss der Installation ausschalten.)

Wir gehen jetzt per Telnet auf die Fritzbox. Dazu gibt man in der Suchzeile von Windows 7 einfach telnet fritz.box ein. Man kann auch eine komfortablere Telnet-Software wie Putty nehmen.

Nach dem Login mit dem Fritzbox-Password soll man die folgenden Kommandos im Telnet-Fenster zeilenweise eingeben oder besser dareinkopieren. Kleiner Trick für Anfänger: mit der Pfeiltaste „Nach oben“ kann man die letzten Kommandos aufrufen, mit der Tab-Taste ergänzt man bei der Eingabe die Pfade.

Hiermit installieren wir die Treiber:

chmod 755 /var/media/ftp/vwmon/rc.vwmon-client
/var/media/ftp/vwmon/rc.vwmon-client drvinst
/var/media/ftp/vwmon/rc.vwmon-client symlink

Mit dem letzten Kommando werden die USB-Geräte gescannt und ihre VID, PID und SN ausgegeben. Wichtig: Mit diesen Angaben muss man die Zeile 39 in der Datei symlinkusb.sh anpassen, so dass das  richtige USB-Gerät verlinkt wird. Vom letzten Kommando muss letztendlich so ähnlich ausgegeben werden:

Creating symlink /dev/eBusVaillantVWS -> /dev/ttyUSB0.

Jetzt testen wir einmal, dass eBus läuft:

/var/media/ftp/vwmon/rc.vwmon-client testebus

Wenn die Hardware läuft, sieht man jetzt eine Menge Daten über den Bildschirm flutschen. Da druckt die Software alles aus, was am eBus aktuell passiert. Wichtig: Wenn keine Daten zu sehen sind, muss man evtl. den Poti (Regler) am eBus-Koppler etwas drehen, so dass zwischen den eigentlichen eBus-Telegrammen viele AA-Zeilen (Syncs) zu sehen sind, aber keine zahlreichen CRC-Fehler. Mit Strg+C kann man den Testlauf beenden.

Jetzt starten wir testweise den vwmon-client im ausführlichen Modus.

/var/media/ftp/vwmon/rc.vwmon-client testrun

Wenn Sie jetzt sehen konnten, wie die aktuellen Wärmepumpendaten abgerufen wurden, ist es sehr gut. Am Ende versucht vwmon-client diese Daten an vwmon-server zu schicken. Wenn der Datensatz in der mySQL-Datenbank angekommen ist, funktioniert alles. Wenn nicht, soll man jetzt anhand der Fehlermeldungen schauen, wo es klemmt, bevor man mit der Installation weitergeht.

Jetzt richten wir alles ein, damit vwmon-client (wie in der cfg-Datei definiert) dauerhaft läuft und beim Reboot der Fritzbox automatisch startet.

/var/media/ftp/vwmon/rc.vwmon-client install
/var/media/ftp/vwmon/rc.vwmon-client start

Abschließend soll man alles prüfen und ggf. die Einstellungen in der cfg-Datei fein justieren. Nach jeder Änderung der cfg-Datei muss vwmon-client neu gestartet werden.

/var/media/ftp/vwmon/rc.vwmon-client restart

Jetzt kann man einen Blick auf die Weboberfläche für die Fernsteuerung werfen. Wegen der möglichen Befehle für die Fernsteuerung, muss man sich die CSV-  oder die ODS-Dateien anschauen. Man kann damit so ziemlich alles auslesen und einstellen. Auch vieles, was über die Bedienknöpfe nicht geht. Daher bitte mit Vorsicht genießen.

Deinstallation

Sollte man irgendwann den vwmon-client nicht mehr benutzen wollen, kann man ihn einfach und schmerzlos mit folgenden Telnet-Eingaben deinstallieren und löschen.

/var/media/ftp/vwmon/rc.vwmon-client stop
/var/media/ftp/vwmon/rc.vwmon-client uninstall
/var/media/ftp/vwmon/rc.vwmon-client drvuninst
rm -Rf /var/media/ftp/vwmon

Fragen und Anregungen

Fragen und Anregungen zu VWMon können in jedem Forum gestellt bzw. diskutiert werden oder per E-Mail an mich gerichtet werden.

Ein Gedanke zu „VWMon: Datenlogger und Fernsteuerung für die Vaillant-Wärmepumpe“

Kommentare sind geschlossen.

Zum Traumhaus und -garten mit Plan, Durchblick und diesem Baublog

QR Code Business Card