Archiv der Kategorie: SmartHome

Stromzähler AS1440 (Stadtwerke Osnabrück) auslesen

Wir haben vor ca. 2 Jahren unseren Neubau bezogen und sind seit dem auch mit einem digitalen Stromzähler gesegnet. Um genau zu sein, sogar mit zwei Exemplaren (Hausstrom & Wärmepumpe). Das Angebot der Stadtwerke Osnabrück, auf die Messwerte zurückzugreifen hat mich aber technisch (sehr altbackene Oberfläche SmartWeb und SmartCockpit) und preislich nicht angesprochen. Daher bin ich auf die Suche nach einer alternativen Lösung gegangen.

Hier der Zähler vom Anbieter Elmess. Die Stadtwerke Osnabrück setzen das gleiche Modell ein.

Da dies unter technikinteressierten Neuimmobilienbesitzern ein häufigeres Problem zu sein scheint, bin ich durch Björn Kaminski und Sören Gödde auf mein jetziges Lösungsszenario aufmerksam geworden. Grob besteht dies aus folgenden Ansätzen:

  • Raspberry PI
  • IR-USB Schnittstelle
  • Volkszaehler OpenSource Projekt
  • (Icinga & Grafana später ElasticSeach & Kibana)

Die Stadtwerke Osnabrück werden ab 2018 alle Haushalte in Osnabrück auf dieses Zählermodell (AS1440 von Elster) umstellen. Ich möchte an dieser Stelle daher meine Erkenntnisse teilen und eine schrittweise Anleitung zum permanenten Auslesen des Zählers bereitstellen.

Benötigte Hardware

Wer bei Null anfängt benötigt folgende Hardware:

Für die Montage der Hardware und des Raspberry PI findet man zahlreiche Anleitungen im Netz. In meinem Fall habe ich den Raspberry PI auch per LAN-Kabel in mein Netzwerk eingebunden. Somit entfiel die Konfiguration des WLAN und der Stromkasten ist sowieso in unmittelbarer Nähe zum Netzwerkschrank.

Die Komponenten werden wie folgt miteinander verbunden:

  • Netzwerkkabel zwischen Raspberry PI und Router
  • Lesekopf mit USB Kabel an einen USB-Port des Raspberry PI und an die passende Stelle am Stromzähler (Siehe Foto)
  • Vorbereitete SD-Karte (beschrieben mit dem Volkszähler Image, (siehe unten)) einstecken.
  • Strom anschließen.

Grundsystem installieren

Der einfachste Weg ist, das vorgefertigte Disk-Image vom Volkszähler-Projekt zu installieren. Eine detaillierte Anleitung dazu ist hier zu finden: https://wiki.volkszaehler.org/howto/raspberry_pi_image. Dort findet ihr auch den Link zum Download der aktuellen Version des Volkszaehler-Images. Diese Anleitung solltet ihr bis zu dem Punkt folgen, an dem ihr euch per SSH auf dem Raspberry PI einloggen könnt.

Das Anlegen der einzelnen Kanäle (Datenquellen) beschreibe ich hier speziell für den von den Stadtwerken eingesetzten AS1440:

Nutzung von Terminal / Putty zum Verbinden mit dem Raspberry PI:

ssh pi@IP_DES_RASPBERRYPI

Passwort lautet: raspberry

Im nächsten Schritt muss herausgefunden werden, unter welchem Port der IR-Lesekopf angesprochen werden kann. Dazu nutzen wir in der aktiven Session den folgenden Befehl:

dmesg |grep USB

In meinem Fall sieht das Ergebnis so aus:

In meinem Fall sind zwei Leseköpfe angeschlossen und werden daher auch beide gefunden. Der Port des ersten Lesekopfes ist /dev/ttyUSB0.

Im nächsten Schritt wollen wir den IR-Kopf entsprechend im System konfigurieren. Dazu legen wir einige Grundeinstellungen für die Schnittstelle fest:

sudo stty -F /dev/ttyUSB0 1:0:9a7:0:3:1c:7f:15:4:5:1:0:11:13:1a:0:12:f:17:16:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0

Mit diesem Befehl senden führen wir eine Grundkonfiguration des IR-Adapters durch und konfigurieren Dinge wie die Baudrate. Da dieser Schritt immer ausgeführt werden muss, bevor Messwerte ausgelesen werden können, fügen wir diesen Befehl zur Bootsequenz (Autostart) des Raspberry PI hinzu. Dazu legen wir uns eine entsprechende Datei im Verzeichnis /etc/init.d an:

sudo touch /etc/init.d/changeCommunication.sh
sudo echo '#!/bin/bash' >> /etc/init.d/changeCommunication.sh
sudo echo 'sudo stty -F /dev/ttyUSB0 1:0:9a7:0:3:1c:7f:15:4:5:1:0:11:13:1a:0:12:f:17:16:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0' >> /etc/init.d/changeCommunication.sh
sudo chmod +x /etc/init.d/changeCommunication.sh

Test der Einstellungen

Damit wir herausfinden können, ob unsere Einstellungen funktionieren. Öffnen wir eine eine zweite Termin-/Putty Session zum Raspberry PI. Auf der einen Session werden wir einen Befehl an den Stromzähler senden, um diesen aufzufordern uns Messwerte zu geben. Über die andere Session werden wir die Rückgabewerte des Stromzählers überwachen.

Dazu öffnen wir also zu unserer bereits bestehenden Session eine weiter. In der einen Session starten wir die Überwachung der Schnittstelle:

sudo cat /dev/ttyUSB0

In der anderen Session senden wir einen initialen Aufruf an den Stromzähler, um Messwerte zurückzugeben:

sudo echo -n -e '\x2F\x3F\x21\x0D\x0A' > /dev/ttyUSB0

Das Ergebnis sah in meinem Fall dann so aus:

Die Aufzählung der Werte ist identisch mit denen, die auch über das Display des Stromzählers ausgelesen werden können.

So, jetzt sind wir schon einmal ein gutes Stück weiter. Der Raspberry PI kann grundlegend Daten vom Stromzähler auslesen und der Volkszähler ist auch installiert. Im nächsten Schritt werden wir nun diese beiden Lösungen zusammenbringen, damit der Volkszähler durchgehend die Daten aus dem Zählwerk ausliest und speichert.

Konfiguration des Stromzählers im Volkszähler

Um dem Volkszähler zu sagen, welche Daten er wirklich speichern soll ist es sinnvoll sich auf die nötigen Werte zu beschränken. Ich habe in meinem Fall nur den jeweils aktuellen Verbrauch speichern wollen. Dieser läuft im Zählwerk unter der Adresse „1-1:1.8.0“ (Siehe Screenshot).

In einer Terminal-/Putty-Session stoppen wir den Volkszähler, um die Konfiguration anzupassen:

sudo systemctl stop vzlogger

In der Datei /etc/vzlogger.conf findet ihr eine Beispielkonfiguration mit Testdaten. Diese Konfiguration kann entweder erweitert oder überschrieben werden. Ich habe diese Datei überschreiben mit dem folgenden Inhalt und entsprechend die Einstellungen für de Adresse im Zählwerk als auch die USB-Schnittstelle berücksichtigt.

{
"retry": 0,
"daemon": true,
"verbosity": 0,
"log": "/var/log/vzlogger.log",
"local": {
"enabled": false,
"port": 8080,
"index": true,
"timeout": 0,
"buffer": 0
},
"meters": [
{
"enabled": true,
"allowskip": false,
"interval": -1,
"aggtime": -1,
"aggfixedinterval": false,
"channels": [
{
"uuid": "6836dd20-00d5-11e0-bab1-856ed5f959ae",
"identifier": "1-1:1.8.0",
"api": "volkszaehler",
"middleware": "http://localhost/middleware.php",
"aggmode": "none",
"duplicates": 0
}
],
"protocol": "d0",
"device": "/dev/ttyUSB0",
"dump_file": "",
"pullseq": "2F3F210D0A",
"ackseq": "auto",
"baudrate": 300,
"baudrate_read": 9600,
"baudrate_change_delay": 500,
"parity": "7e1",
"read_timeout": 100
}
]
}

Solltet ihr mehrere Messwerte Speichern wollen, müsst ihr entsprechend im JSON-File unter channels nach gleichem Schema weitere Messwerte hinzufügen.

Im Anschluss muss die neue ID dieser Messquelle noch in die Datenbank des Volkszählers eingetragen werden. Dazu nutzen wir den folgenden Befehl:

mysql --user=root --password=raspberry -e "INSERT INTO volkszaehler.entities VALUES ('','6836dd20-00d5-11e0-bab1-856ed5f959ae', 'electric meter', 'channel');"

Hierbei wird die entsprechende ID „6836dd20-00d5-11e0-bab1-856ed5f959ae“ aus der vzlogger.conf in die Datenbank eingetragen. Solltet ihr mehrere Messwerte ausgewählt haben, wandelt die ID in der JSON entsprechend ab und fügt diese dann jeweils in die Datenbank ein.

Im Anschluss starten wir den Volkszähler wieder:

sudo systemctl start vzlogger

Ausgabe des Messwertes im Volkszähler

Der Messwert wird ab sofort durch den Volkszähler ausgelesen und in der Datenbank gespeichert. Um diesen Wert nun im Volkszähler Webinterface anzeigen zu lassen, muss dies entsprechend in der Weboberfläche des Volkszählers konfiguriert werden.

Dazu muss ein entsprechender Kanal, hier privater Kanal, hinzugefügt werden.  Das ganze sieht dann so aus:

Bitte beachtet dabei, dass ihr die gleiche UUIDs wie zuvor verwendet.

Ab jetzt solltet ihr die Daten auslesen und über die Weboberfläche anzeigen können.

Das Ergebnis im Stromkasten sieht heute so aus:

Raspberry PI erhält Strom und LAN von außerhalb des Stromkastens. Die beiden Zähler sind entsprechend per USB und dem IR-Kopf am Raspberry PI angeschlossen.

Nutzung der Messwerte für Drittsysteme

Ich habe in unserem Haus noch viele weitere Systeme, die mir Messwerte liefern. Da das Volkszähler-System erst später dazugekommen ist, habe ich mich entschieden die bestehenden Werte nicht in den Volkszähler einzubinden sondern die Daten des Volkszählers zu exportieren. Dazu habe ich mir ein entsprechendes PHP-Script geschrieben, welches ich per Cronjob aufrufe. Dieses stellt dann die jeweils aktuellen Messwerte per JSON zur Verfügung.  Das Script kann hier gefunden werden: https://github.com/np4me2k/np4me2k_homekit/blob/master/jsonexport.php

Die Daten werden zukünftig in eine Elastic Search Datenbank geschrieben und dann per Kibana visualisiert.

Erfahrungen mit Wärmepumpe Tecalor THZ 504

Wir sind im Mai 2015 in unser Haus eingezogen und haben im November 2016 unsere zweite Abrechnung der Stadtwerke erhalten. Nach den ersten erschreckenden Erfahrungen des Estrich-Programms des Heizsystems können wir nun auf ein realistisches Verbrauchsjahr schauen.

Neben den Kosten der Wärmepumpe ist hier auch der Hausstrom abgebildet. (Im September waren wir im Urlaub)

Messzeitraum: November 2015 bis November 2016
Verbraucher: 3-Köpfiger Haushalt (2 Erwachsene, 1 Kleinkind) mit 168qm Wohnfläche

Verbrauch Hausstrom: 4.698 kWh bei 0,25€/kWh sind das 97,88€ / Monat
Verbrauch Wärmepumpe: 4.076 kWh bei 0,21€/kWh sind das 71,33€ / Monat

Ich gehe davon aus, dass der Verbrauch in der nächsten Messperiode noch weiter sinken könnte, da diese erste Periode noch den ersten Winter beinhaltet hat, in der das Haus immer noch austrocknet. Bei der Berücksichtigung der Nutzfläche haben wir also laufenden Kosten von ca. 24 kWh/qm p.a. bzw. 0,42€/qm je Monat für Heizkosten ausgegeben.