Git Product home page Git Product logo

simeon-byte / smartmeter Goto Github PK

View Code? Open in Web Editor NEW
1.0 0.0 1.0 415 KB

Docker Container zum automatisierten Auslesen, Speichern und Visualisieren von Kaifa MA309MH4LAT1 Stromzählern mithilfe ihrer Kundenschnittstelle

License: GNU General Public License v3.0

Python 93.20% Dockerfile 2.00% Shell 4.80%
docker docker-compose energy-consumption energy-monitor kaifa python python3 strom stromzaehler kundenschnittstelle

smartmeter's Introduction

Funktion

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.

Grafana Oberfläche 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.

Visualisierung der Container

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.

Unterstützte Zähler

SmartMeterVKW

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.

Voraussetzungen

Hardware

  • Kaifa MA309H4LAT1
  • Passwort für die Kundenschnittstelle
    • Der Schüssel kann Online im Kundenportal des Stromanbierters angefordert werden.
  • Raspberry Pi
  • USB zu MBus Adapter

Software

  • 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.

Getting Started

  • Installieren Sie die benötigte Software entweder manuell oder mithilfe des install.sh Skripts.
  • Als Nächstes muss im Ordner config/ eine Datei config.json nach Vorlage der config.example.json angelegt werden, welche die nötigen Informationen erhält. Zu beachten ist jedoch, dass diese Informationen von den Umgebungsvariablen im docker-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:
    ReaderKey= --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"
    
    Diese Werte können individuell angepasst werden, jedoch sollte beachtet werden, dass diese an mehreren Stellen (z.B grafana_datasource.yml, flows.json, usw.) hartkodiert sind.
  • Nun können die Container mit dem Befehl
    docker-compose up
    
    gestartet werden. Mit -d läuft das ganze im Hintergrund. Mit
    docker-compose down
    
    werden die Container alle wieder gestoppt.

Pythonskript außerhalb von Docker ausführen

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.

Credits

Originaler Code und Anleitung von greenMikeEU.

License

This project is licensed under the GNU General Public License v3.0 License - see the LICENSE.md file for details

smartmeter's People

Contributors

coregreenberet avatar daaadave avatar greenmikeeu avatar simeon-byte avatar

Stargazers

 avatar

Forkers

martindomig

smartmeter's Issues

how to install

Könntest du bitte ein paar infos dazu in die Dokumentation packen wie man das tatsächlich installieren kann.
vielen dank

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.