Datenerfassung an einer Heizungsanlage

Veröffentlicht am 25. September 2019connect, Gateway, Story

Als privates Projekt haben wir uns daran gemacht, die heimische Vaillant Heizungsanlage eines Kollegen mit dem connect-Gateway zu vernetzen. Der Kollege wollte genau wissen, was die Anlage wann tut. Die Lösung, die der Hersteller hier für die Konnektivität anbietet, ist leider sehr dürftig und überhaupt nicht an eigene Zwecke anpassbar.

Disclaimer

Der hier beschriebene Aufbau ist ein Proof-of-Concept im privaten Umfeld und keine von der verlinked GmbH angebotene kommerziell verfügbare Lösung. Das verlinked connect-Gateway ist als kommerzielle Lösung in der Lage die Daten aufzunehmen, aber Heizungsanlagen wie in diesem Beispiel werden nicht Out-of-the-Box unterstützt, sondern erfordern zusätzliche Software-Komponenten. Wenn Sie jedoch Interesse an einer professionellen Umsetzung haben, sprechen Sie uns gerne an!

Aufbau mit eBUS

Die Vaillant Heizungsanlage kommuniziert über das so genannte eBUS-Protokoll, das bei Heizungsbauern relativ verbreitet ist. Es ist ein serielles Protokoll, das an RS232 angelehnt ist, aber mit anderen Spannungen arbeitet. Daher kann man den eBUS nicht direkt etwa an einer RS232 Schnittstelle betreiben, sondern benötigt einen Spannungswandler.

Das Protokoll wurde von Tatkräftigen Open-Source Entwicklern aufgeschlüsselt und auch die spezielle Kommunikation vieler Vaillant Geräte entschlüsselt. Das Projekt ebusd stellt einen Software-Service bereit, der die Kommunikation über eBUS behandelt. Außerdem gibt es bereits Funktionen, um die Geräte am eBUS zu erkennen und deren Daten zu entschlüsseln. Damit ist ein Großteil der Aufgabe eigentlich schon gelöst. Das connect-Gateway nutzen wir, um die Rohdaten per Kommando vom ebusd abzurufen. Der ebusd bietet hierfür ein einfaches TCP-Protokoll, das wir vom connect-Gateway direkt ansprechen und nutzen können.

Installation

Das connect-Gateway ist auf einem Industrie-PC (IPC) der Firma JanzTec installiert. Das System bietet diverse Schnittstellen, auch wenn wir für dieses Projekt nur einen USB-Port benötigen. Wir bieten dieses Bundle aus IPC und connect-Gateway im übrigen als MDE:connect Lösung an.

Um von eBUS auf USB zu kommen, setzen wir den eBUS-Koppler von esera ein. Es gibt auch die Möglichkeit sich einen eBUS-Koppler selbst herzustellen, aber wir setzen hier auf eine professionelle Lösung für die Hutschiene.

Daten-Produzent

Die Daten werden vom ebusd-Daemon über eine Socket-Verbindung abgefragt. Für unterschiedliche Informationen müssen wir hierzu jeweils andere Kommandos über den Socket schicken und erhalten die passende Antwort, die wir in einen Datenpunkt speichern.

Als Datenpunkt ermitteln wir zum Beispiel die aktuelle Außentemperatur, die die Heizung dazu verwendet, um die Heizkurven entsprechend dynamisch steuern zu können.

<datapoints>
    <datapoint>
        <path>/vaillant/aussentemperatur</path>
        <type>decimal</type>
    </datapoint>
...

Den aktuellen Wert für den Datenpunkt “aussentemperatur” erhalten wir über folgenden, etwas kryptischen Befehl vom ebusd.

read -c hmu -n Status01 temp2

Wie genau diese Befehle aussehen müssen, um die richtige Information zu erhalten, ist ein wenig Versuch und Irrtum. Das Ergebnis aus dem Befehl parsen wir in eine Zahl und haben so immer die aktuelle Temperatur gespeichert.

<endpoint>
    <name>ebusd</name>
    <protocol plugin="TCP_TEXT">
        <name>TCP</name>
        <parameters>
            <param key="ip">127.0.0.1</param>
            <param key="port">8888</param>
            <param key="charset">ISO_8859_1</param>
            <param key="response_delimiter">\n\n</param>
        </parameters>
        <producer>
            <name>aussentemp</name>
            <parameters>
                <param key="request">read -c hmu -n Status01 temp2\n</param>
            </parameters>
            <decoder plugin="STRING_DECODER">
                <mapping>
                    <datapoint>/vaillant/aussentemperatur</datapoint>
                    <parameters>
                        <param key="parse_number">decimal</param>
                    </parameters>
                </mapping>
            </decoder>
        </producer>
...

Analog verfahren wir mit allen anderen Daten, die wir aus der Anlage so herausbekommen und für uns von Interesse sind. Dazu gehören zum Beispiel der Betriebszustand oder die Temperaturen im Pufferspeicher. Damit wir die Werte zyklisch erfassen, legen wir noch einen Trigger fest, der uns alle Werte vier mal pro Minute (also alle 15 Sekunden) ausliest.

Daten-Konsument

Als Konsument senden wir die Daten an eine Demo-Instanz der verlinked connect-Solution im verlinked Global Network. Wir senden die Daten per HTTPs POST im JSON Format. Hierzu mappen wir im “JSON_ENCODER” alle Datenpunkte, unter anderem auch die Außentemperatur, jeweils auf ein Attribut im JSON-Dokument. Der Konsument wird automatisch angestoßen, sobald ein verwendeter Datenpunkt aktualisiert wurde. In unserem Beispiel werden die Daten entsprechend vier mal pro Minute in die Cloud gesendet.

<endpoint>
    <name>connectGlobal</name>
    <protocol plugin="HTTP_CLIENT">
        <name>HttpClient</name>
        <consumer>
            <name>vaillant</name>
            <parameters>
                <param key="endpoint_url">https://demo.verlinked.net</param>
	    	<param key="basic_auth">*****:*****</param>
            </parameters>
            <encoder plugin="JSON_ENCODER">
                <parameters />
                <mapping>
                    <datapoint>/vaillant/aussentemperatur</datapoint>
                    <parameters>
                        <param key="path">/aussentemperatur</param>
                    </parameters>
                </mapping>

Foto-Strecke

 

Ergebnis

Durch den Einsatz der ebusd Software waren wir in der Lage an die entsprechenden Informationen zu gelangen, die eine solche Heizungsanlage ansonsten für sich behält. Es zeigt sich auch hier immer wieder, dass dies Anlagen selbst und deren Software historisch und elektrotechnisch gewachsen sind. Eine saubere Modellierung der Daten sowie ein logisch konsistenter Zugriffsmechanismus fehlen leider.

Hier zeigt sich die extreme Stärke des verlinked connect-Gateways. Wir sind in der Lage mit einer leicht zu beherrschenden Konfigurationsdatei die relevanten Informationen abzufragen und auf eine sauber modellierte Datenstruktur abzubilden. Die Fleißarbeit besteht darin zu ermitteln, wie man an welche Information gelangen kann.

Sind die Daten einmal auf Datenpunkten im connect-Gateway vorhanden, können wir diese in jedes beliebige Format umwandeln und verschicken. Nebenbei könnten wir auch noch Umformungen und Normalisierungen auf den Daten ausführen, aber dazu mehr in einem anderen Post.

Im Ergebnis können wir alle Daten sinnvoll in einem Dashboard darstellen und haben die gewünschte Übersicht, über den tatsächlichen internen Zustand der Anlage. Jetzt können die Daten über die Zeit analysiert werden. Mit den Erkenntnissen kann man die möglichen Einstellungen an der Heizung optimieren und am Ende des Tages zufrieden einige Euros Heizkosten pro Jahr einsparen.