Projekt 23 Smarthome / Zugriff Heizung: Unterschied zwischen den Versionen
K (→Auswertung der Daten: fe 01: Elster-Index: ENDE_CHAR_BEREICH) |
(→Auswertung der Daten: 16: Elster-Index: RUECKLAUFISTTEMP - Request) |
||
Zeile 133: | Zeile 133: | ||
| 180h || 7 || 22 00 02 <span style="color: red;">00 78</span> 00 00 || Außentemperatur 12,0 || 120 || 78 || 0,1 || °C || | | 180h || 7 || 22 00 02 <span style="color: red;">00 78</span> 00 00 || Außentemperatur 12,0 || 120 || 78 || 0,1 || °C || | ||
|-|| | |-|| | ||
− | | 180h || 7 || 22 00 16 <span style="color: red;">01 04</span> 00 00 || Rücklauf Ist-Temperatur 26,0|| 260 || 104 || 0,1 || °C || | + | | 100h || 7 || 31 00 <span style="color: blue;">16</span> 00 00 00 00 || Rücklauf Ist-Temperatur || || || || || 16: Elster-Index: RUECKLAUFISTTEMP - Request |
+ | |- | ||
+ | | 180h || 7 || 22 00 <span style="color: blue;">16</span> <span style="color: red;">01 04</span> 00 00 || Rücklauf Ist-Temperatur 26,0|| 260 || 104 || 0,1 || °C || 16: Elster-Index: RUECKLAUFISTTEMP - Response | ||
|- | |- | ||
| 180h || 7 || 22 00 <span style="color: green;">fa</span> <span style="color: blue;">09 1a</span> <span style="color: red;">00 ea</span> || Elektrische Leistung Verdichter Warmwasser Tag 0,234|| 234 || ea || 1 || Wh || <span style="color: green;">fa</span>: Erweiterungstelegramm <br> <span style="color: blue;">09 1a</span>: Elster-Index EL_AUFNAHMELEISTUNG_WW_TAG_WH | | 180h || 7 || 22 00 <span style="color: green;">fa</span> <span style="color: blue;">09 1a</span> <span style="color: red;">00 ea</span> || Elektrische Leistung Verdichter Warmwasser Tag 0,234|| 234 || ea || 1 || Wh || <span style="color: green;">fa</span>: Erweiterungstelegramm <br> <span style="color: blue;">09 1a</span>: Elster-Index EL_AUFNAHMELEISTUNG_WW_TAG_WH | ||
Zeile 142: | Zeile 144: | ||
|- | |- | ||
| 601h || 7 || 66 01 <span style="color: blue;">fe 01</span> 00 00 00 || ? || ? || ? || ?|| ? || <span style="color: blue;">fe 01</span>: Elster-Index: ENDE_CHAR_BEREICH ? | | 601h || 7 || 66 01 <span style="color: blue;">fe 01</span> 00 00 00 || ? || ? || ? || ?|| ? || <span style="color: blue;">fe 01</span>: Elster-Index: ENDE_CHAR_BEREICH ? | ||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
|} | |} |
Version vom 19. April 2017, 18:52 Uhr
Diese Seite gehört zum Kontext Projekt 23 Smarthome und beschreibt die Umsetzung beim Zugriff auf die Daten der Heizungsanlage Stiebel Eltron WPF 10.
Es handelt sich um eine Sole/Wasser-Wärmepumpe mit angeschlossenem Warmwasser-Speicher 'SBB 300 basic' des selben Herstellers, welche an einer Tiefenbohrung angeschlossen ist (Geothermie). Diese Komponente als größter Energieverbraucher und Wärmelieferant bietet ein interessantes Ziel für eine Smarthome-Anbindung. In der Standard-Installation bietet dieses System keine Schnittstelle für eine Netzwerk-Anbindung. Leistungswerte können nur am Display abgelesen werden, was aus statistischen Zwecken bis zu einer smarteren Lösung auch jeden Morgen gemacht wird.
Primäres Ziel ist hier die kontinuierliche Erfassung bestimmter Daten, um daraus qualifizierte Rückschlüsse ziehen zu können. Ein aktiver Eingriff in die Steuerung ist derzeit nur ein nachrangiges Ziel.
Grundsätzlich scheint die Möglichkeit für einen Zugriff auf die Anlage gegeben zu sein, denn der Hersteller bietet scheinbar fertige Lösungen an:
- Internet Service Gateway (ISG)
- ISG web
- KNX IP-Schnittstelle
Kriterien wie Zwang zum Wartungsvertrag, Kosten, Sorge um Security und Privatsphäre, Cloudzwang und mangelnder Spaß lassen diese Optionen auf den ersten Blick unattraktiv erscheinen. Zumal zumindest bei einem Teil der Lösungen noch unklar ist, wie der Zugriff auf die eigentlichen Daten (Export) umgesetzt werden könnte.
Inhaltsverzeichnis
Firmware
Am Display werden die folgenden Versionsbezeichungen der Firmware angezeigt:
# | Busteilnehmer | Software |
---|---|---|
01 | WPM3I | 391-03 |
02 | FES | 400-00 |
03 | MFG | 11 |
Bus-System: CAN
Die Heizung verwendet den CAN-Bus, um Daten zu transportieren. Wahrscheinlich wird auch das eingebaute Display auf diesem Wege angebunden.
Im Handbuch werden im Abschnitt '18.3 Elektroschaltplan' diese potentiell relevanten Komponenten erwähnt:
- X2: Anschlussklemmen extern Kleinspannung
- X30/X31: CAN-Bus Anschluss Netzteil
Eine Recherche im Internet zeigt, dass scheinbar schon mehrere andere Hackversuche auf dem Weg über den CAN-Bus erfolgreich waren und auch gut dokumentiert worden sind (s. #Links).
CAN-Bus-Adapter
Für den Zugriff auf den CAN-Bus ist eine zusätzliche Hardware notwendig, welche die Schnittstelle zwischen dem verarbeitenden System (SmartHome-Server) und dem Datenlieferanten (Heizung) bietet. Da im Projektkontext der SmartHome-Server auf einer PC-Engines APU abgebildet ist, welche in unmittelbarer Nähe zu der Heizung steht, erscheint hier ein Controller mit USB-Anschluss sinnvoll. An anderen Stellen wird mit Controllern gearbeitet, die auf einen Raspberry Pi aufgesetzt werden, aber das scheint im vorliegenden Fall unnötig komplex.
Verwendete Hardware:
- USBtin - USB to CAN interface (Thomas Fischl): wird an mehreren Stellen erfolgreich eingesetzt. Kosten: 37€
Beim Anschluss am System meldet journald:
Mär 03 19:07:35 j2 kernel: usb 7-1: new full-speed USB device number 2 using uhci_hcd Mär 03 19:07:35 j2 kernel: usb 7-1: New USB device found, idVendor=04d8, idProduct=000a Mär 03 19:07:35 j2 kernel: usb 7-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 Mär 03 19:07:35 j2 kernel: usb 7-1: Product: USBtin Mär 03 19:07:35 j2 kernel: usb 7-1: Manufacturer: Microchip Technology, Inc. Mär 03 19:07:35 j2 kernel: usb 7-1: SerialNumber: <xxx> Mär 03 19:07:35 j2 mtp-probe[9970]: checking bus 7, device 2: "/sys/devices/pci0000:00/0000:00:1d.1/usb7/7-1" Mär 03 19:07:35 j2 local mtp-probe[9970]: bus: 7, device: 2 was not an MTP device Mär 03 19:07:35 j2 kernel: cdc_acm 7-1:1.0: ttyACM0: USB ACM device Mär 03 19:07:35 j2 kernel: usbcore: registered new interface driver cdc_acm Mär 03 19:07:35 j2 kernel: cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
Ein Probelauf der vom Hersteller zur Verfügung gestellten Java-Application ohne Anschluss an den CAN-Bus der Heizung bringt zumindest schon mal ein einzelnes Event zur Anzeige:
Connected to USBtin (FW0107/HW0100, SN: 8CFE)
Parameter:
- Port: /dev/ttyACM0
- Baud-Rate: 115200
Aufruf:
[root@j3 ~]# java -jar USBtinViewer_v1.3.jar No preset for given baudrate 115200. Set baudrate to 115384
Anschluss
Für den physischen Anschluss des Adapters an die Heizung wurden relativ starre Drähte an den Kontaktstellen des Adapters angelötet. Diese Drähte haben eine Länge von ca. 20cm und wurden in die Klemme der Heizung (Block 'X2') eingesteckt.
Durch die Steifheit der Kabel wird der Adapter schwebend ohne Bodenkontakt im Innenraum der Heizung gehalten. Dort ist die Konstruktion vor mechanischer Beanspruchung geschützt.
Ein Abschlusswiderstand von 120 Ohm zur Terminierung des Busses wird derzeit nicht eingesetzt.
Der USB-Anschluss erfolgt über ein 5m langes Kabel, welches hinten aus der Heizung herausgeführt wird.
Funktionstest
Für einen ersten Funktionstest wurde das vom Hersteller zur Verfügung gestellte Programm USBtinViewer (v1.3) auf einem Notebook unter CentOS verwendet. Es handelt sich um ein Java-Programm, welches ein GUI bietet. Der Start erfolgt in diesem Fall zur Vereinfachung unter dem User root.
Als Verbindungsparameter wurde eingestellt:
- Port: /dev/ttyACM0
- Baud-Rate: 20000
Bei Auswahl von Connect treffen quasi unmittelbar Daten vom CAN-Bus ein. Die LED am Controller leuchtet kontinuierlich rot.
Nun gilt es herauszufinden, was diese Daten bedeuten und wie sie genutzt werden können.
Hinweis: Der beschriebene Funktionstest kann per X11Forwarding auch remote gestartet werden, wenn der Adapter per USB am SmartHome-Server angeschlossen ist. Damit entfällt die Notwendigkeit, für die Evaluierungszeit mit einem Notebook im Heizungskeller zu hocken.
Hierfür ist eine Installation notwendig:
# yum install xauth
Aufruf:
$ ssh -X j8-admin Last login: Mon Mar 27 15:28:58 2017 from 172.16.17.10 /usr/bin/xauth: file /home/<user>/.Xauthority does not exist $ su - # java -jar USBtinViewer_v1.3.jar
Zieldefinition
Die folgenden Daten scheinen im Projektkontext relevant zu sein und sollten erfasst werden:
- Außentemperatur
- Rücklauf Ist-Temperatur
- Elektrische Leistung Verdichter Heizen Tag
- Elektrische Leistung Verdichter Heizen Summe
- Elektrische Leistung Verdichter Warmwasser Tag
- Elektrische Leistung Verdichter Warmwasser Summe
- Warmwasser-Isttemperatur
- Warmwasser-Solltemperatur
- Volumenstrom
- Gewählte Heizkurve
Es ist noch festzulegen, in welchen Zyklen diese Daten protokolliert werden sollen. Dabei ist insbesondere auch das Fassungsvermögen und die Performance bei der Analyse zu berücksichtigen.
Hinweis: In der ersten Phase des Projektes soll es primär um die Erfassung und statistische Auswertung von Betriebsdaten gehen. Es erscheint ebenfalls sinnvoll, andere Werte wie beispielsweise Fehlerwerte für eine Systemüberwachung abzufragen, dies dann aber für andere Zwecke wie beispielsweise einem Monitoring mit entsprechender Notifikation des Betreibers. Solche Aufgaben werden erst in späteren Phasen umgesetzt.
Auswertung der Daten
Die empfangenen Daten können wie folgt ausgewertet werden (Beispiel):
ID | DLC | Data | Bedeutung | Wert (dez.) | Wert (hex.) | Faktor | Einheit | Bemerkung |
---|---|---|---|---|---|---|---|---|
180h | 7 | 22 00 08 01 c4 00 00 | Warmwasser Ist-Temperatur 45,2 | 452 | 1c4 | 0,1 | °C | |
180h | 7 | 22 00 02 00 78 00 00 | Außentemperatur 12,0 | 120 | 78 | 0,1 | °C | |
100h | 7 | 31 00 16 00 00 00 00 | Rücklauf Ist-Temperatur | 16: Elster-Index: RUECKLAUFISTTEMP - Request | ||||
180h | 7 | 22 00 16 01 04 00 00 | Rücklauf Ist-Temperatur 26,0 | 260 | 104 | 0,1 | °C | 16: Elster-Index: RUECKLAUFISTTEMP - Response |
180h | 7 | 22 00 fa 09 1a 00 ea | Elektrische Leistung Verdichter Warmwasser Tag 0,234 | 234 | ea | 1 | Wh | fa: Erweiterungstelegramm 09 1a: Elster-Index EL_AUFNAHMELEISTUNG_WW_TAG_WH |
180h | 7 | 22 00 fa 09 1c 01 f0 | Elektrische Leistung Verdichter Warmwasser Summe 1,496 MWh (zusammengesetzt) | 496 | 1f0 | 1 | kWh | fa: Erweiterungstelegramm 09 1c: Elster-Index EL_AUFNAHMELEISTUNG_WW_SUM_KWH |
180h | 7 | 22 00 fa 09 1d 00 01 | 1 | 1 | 1 | MWh | fa: Erweiterungstelegramm 09 1d: Elster-Index EL_AUFNAHMELEISTUNG_WW_SUM_MWH | |
601h | 7 | 66 01 fe 01 00 00 00 | ? | ? | ? | ? | ? | fe 01: Elster-Index: ENDE_CHAR_BEREICH ? |
Bedeutung:
- ID: Bislang wurden die folgenden IDs beobachtet (Zuordnung teilweise laut 'robots' / haustechnikdialog):
- 100 (336): ? Sendet ausschliesslich Requests (Typ '1')
- 180 (316): Kessel? Sendet ausschliesslich Responses (Typ '2') als Antwort auf Requests von 100h
- 480 (1695): Manager? Sendet ausschliesslich Requests (Typ '1') oder Typ '0')
- 601 (3): ?
- 700 (1666): Fremdgerät? Sendet ausschliesslich Responses (Typ '2') als Antwort auf Requests von 480h
- Die Zahlen in Klammern bedeuten die Anzahl der Telegramme pro Zeitspanne (zum Vergleich)
- DLC (Data Length Code): Längeninformation zum nachfolgenden Datenfeld. Bislang wurde ausschließlich Felder mit einer Länge von 7 Bytes gesichtet.
- Data: Daten des Telegramms
- 2. Digit:
- 0= ?
- 1= Request (Anfrage)
- 2= Response (Antwort)
- 6= ?
- 2. Digit:
<ToDo: noch ganz am Anfang...>
Status
- Einarbeitung in CAN-Bus und Datenformat
- Evaluierung von Protokoll- und Auswertungsmöglichkeiten
<ToDo>
Links
- Internet Service Gateway (ISG) (Hersteller-Informationen)
- KNX User-Forum
- KNX User-Forum
- Lauschangriff auf SE WPL 13 CAN-Bus (Teil 1) (messpunkt.org)
- Hacking My Heat Pump – Part 1: CAN Bus Testing with UVR1611 (elkemental Force)
- Handbuch WPF (Hersteller (PDF))
- Stiebel Eltron WPF per "Konsole" auslesen und Parameter ändern (haustechnikdialog.de)
- Projekt MAC, Linux und Windows mit CAN-Bus (juerg5524.ch) Sourcen und hilfreiche Dokumentation zur Interpretation der Daten (Elster-Index)
- CAN Protokoll Stiebel Eltron LWZ 304/404 (krumboeck (PDF))