Der Pythoncode dieses Projekts basiert auf dem Beta-Code von greenMikeEU für das Bundesland Vorarlberg.
In seinem Blogartikel wird beschrieben, wie Daten osterreichischer Stromzähler vom Typ Kaifa Drehstromzähler MA309
automatisiert ausgelesen, gespeichert und visualisiert werden können.
Dabei kommen folgende Softwarekomponenten zum Einsatz:
- Python Script zum Auslesen des Zählers
- Mosquitto als MQTT Broker, über den die rohen Daten versendet werden
- Node-Red zur automatisierten Abspeicherung der Daten in einer Datenbank
- InfluxDB als Datenbank für die Zeitreihen-Datensätze
- Grafana zur Visualisierung der Daten
Die verschiedenen Komponenten wurden in diesem Repository mithilfe von Docker und docker-compose containerisiert und können so mit nur einem einzigen Befehl gestartet werden.
Dabei sind die Container beim Start bereits voll konfiguriert. Die Konfiguration basiert auf den weiterführenden Blogartikeln (MQTT Nachrichten in Datenbank speichern, Smartmeter Dashboard in Grafana) von Michael Reitbauer.
- Kaifa Drehstromzähler MA309MH4LAT1 (Vorarlberg)
- Potentiell weitere (ungetestet)
Das Skript SmartMeterVKW.py
ermöglicht den Zugriff auf den Vorarlberger Smartmeter vom Typ MA309MH4LAT1. Der Code kann auch außerhalb des Dockercontainers ausgeführt werden. Dies ist weiter unten beim Punkt Python außerhalb von Docker ausführen genauer beschrieben.
- Kaifa MA309H4LAT1
- Passwort für die Kundenschnittstelle
- Der Schüssel kann Online im Kundenportal des Stromanbierters angefordert werden.
- Raspberry Pi
- USB zu MBus Adapter
- Raspberry Pi OS 32bit (ungetestet für 64bit)
- Docker und Docker-compose
- Diese können entweder manuell oder mithilfe des
install.sh
Skripts installiert werden.
- Diese können entweder manuell oder mithilfe des
- Installieren Sie die benötigte Software entweder manuell oder mithilfe des
install.sh
Skripts. - Als Nächstes muss im Ordner
config/
eine Dateiconfig.json
nach Vorlage derconfig.example.json
angelegt werden, welche die nötigen Informationen erhält. Zu beachten ist jedoch, dass diese Informationen von den Umgebungsvariablen imdocker-compose.yml
größtenteils überschrieben werden. - Die meisten Einstellungen die das
docker-compose.yml
verwendet werden aus der.env
Datei geholt, diese muss auch noch manuell erstellt werden. Folgende Werte sollten hierbei gesetzt werden:Diese Werte können individuell angepasst werden, jedoch sollte beachtet werden, dass diese an mehreren Stellen (z.BReaderKey= --Kundenschnittstellen Schlüssel-- Comport=/dev/ttyUSB0 mosquittoPort=1883 nodeRedPort=1880 influxPort=8086 grafanaPort=3000 grafanaRootPassword="$ecurePasswordGrafana123" influxdbAdminUser="root" influxdbAdminPassword="q^9F1$iE1iX6LCtxzOJLWHVrRHxB@WSkp8p4fYcf" influxdbUser="smartmeteruser" influxdbUserPassword="$ecurePasswordInflux123" influxdbDatabase="SmartMeter"
grafana_datasource.yml
,flows.json
, usw.) hartkodiert sind. - Nun können die Container mit dem Befehl
gestartet werden. Mit
docker-compose up
-d
läuft das ganze im Hintergrund. Mitwerden die Container alle wieder gestoppt.docker-compose down
Um das Skript alleine außerhalb eines Dockercontainers auszuführen, muss lediglich wie bereits vorher beschrieben eine config.json
Datei erstellt werden. Außerdem müssen die verwendeten Bibliotheken des Pythonskripts auf dem System installiert werden. Dies kann mit dem Befehl pip install -r requirements.txt
oder dem Ausführen des setup.sh
Skripts umgesetzt werden.
Originaler Code und Anleitung von greenMikeEU.
This project is licensed under the GNU General Public License v3.0 License - see the LICENSE.md file for details