Dieses Projekt basiert auf der Vorarbeit von greenMikeEU und einer experimentellen Implementierung für das Bundesland Vorarlberg.
Die Logik orientiert sich an den Konzepten aus Michael Reitbauers Blogartikel, welche die automatisierte Erfassung, Speicherung und Visualisierung von Daten des Kaifa MA309 Drehstromzählers detailliert beschreiben
Das System besteht aus mehreren ineinandergreifenden Komponenten, welche folgende Aufgaben übernehmen:
- Python Script: Liest die Daten direkt am Zähler aus.
- Mosquitto: Fungiert als MQTT-Broker und verteilt die Rohdaten im Netzwerk.
- Node-RED: Nimmt die Daten entgegen und speichert sie strukturiert in der Datenbank ab.
- InfluxDB: Eine Datenbank spezialisiert auf Zeitreihen-Datensätze.
- Grafana: Das Dashboard zur visuellen Aufbereitung und Analyse der gesammelten Daten.
Um die Installation so einfach wie möglich zu halten, sind alle Komponenten in Docker-Containern gebündelt. Dadurch lässt sich das gesamte System mit nur einem einzigen Befehl starten.
flowchart LR
classDef python fill:transparent,stroke:#d977e8,stroke-width:2px,color:#d977e8
classDef mqtt fill:transparent,stroke:#4dabf5,stroke-width:2px,color:#4dabf5
classDef nodered fill:transparent,stroke:#4db6ac,stroke-width:2px,color:#4db6ac
classDef grafana fill:transparent,stroke:#ff9800,stroke-width:2px,color:#ff9800
classDef influx fill:transparent,stroke:#f57c00,stroke-width:2px,color:#f57c00
%% Definition der Boxen
P(["Python Script"]):::python
M(["Mosquitto"]):::mqtt
NR(["Node-RED"]):::nodered
G(["Grafana"]):::grafana
I[("InfluxDB")]:::influx
%% Datenfluss
P --> M
M --> NR
NR --> I
G --> I
Die Container sind vorkonfiguriert und basieren auf den weiterführenden Blogartikeln von Michael Reitbauer (MQTT Nachrichten in Datenbank speichern, Smartmeter Dashboard in Grafana).
- Kaifa Drehstromzähler MA309MH4LAT1 (Standard in Vorarlberg)
- Potentiell weitere Modelle (ungetestet)
- Kaifa MA309H4LAT1
- Schlüssel für die Kundenschnittstelle. Dieser kann im Online-Portal des Stromanbieters angefordert werden.
- Raspberry Pi
- USB zu M-Bus Adapter (Meist günstig auf eBay zu finden)
- Raspberry Pi OS (32-bit getestet)
- Docker & Docker Compose: Können manuell oder über das
install.shSkript installiert werden.
-
Repository kopieren:
Laden Sie das Projekt als ZIP herunter oder klonen Sie es mit:
git clone https://github.com/Simeon-byte/SmartMeter.git -
Software installieren: Führen Sie das Skript
install.shaus, um Docker und notwendige Abhängigkeiten automatisch zu installieren. -
Erstellen Sie im Ordner
config/eine Datei namensconfig.json(nutzen Sieconfig.example.jsonals Vorlage). Hier werden die spezifischen Zähler-Informationen hinterlegt. Diese können von Umgebungsvariablen überschrieben werden. -
Umgebungsvariablen festlegen:
Erstellen Sie eine Datei mit dem Namen
.envim Hauptverzeichnis. Diese Datei setzt die Passwörter und Ports der Container. Folgende Struktur wird benötigt:ReaderKey="KUNDENSCHNITTSTELLEN_SCHLÜSSEL" Comport=/dev/ttyUSB0 mosquittoPort=1883 nodeRedPort=1880 influxPort=8086 grafanaPort=3000 grafanaRootPassword="SICHERES_PASSWORT" influxdbAdminUser="root" influxdbAdminPassword="SICHERES_PASSWORT" influxdbUser="smartmeteruser" influxdbUserPassword="SICHERES_PASSWORT" influxdbDatabase="SmartMeter"⚠️ Alle Werte können individuell angepasst werden. Eine Änderung der Ports in der.enverfordert jedoch manuelle Anpassungen in den Konfigurationsdateien (z.Bgrafana_datasource.yml,flows.json, usw.) -
System starten:
Starten Sie alle Container mit dem Befehl:
docker compose up -dDer Parameter
-dsorgt dafür, dass die Container im Hintergrund weiterlaufen. -
System stoppen: Um alle Dienste zu beenden, nutzen Sie:
docker compose down
Um das Skript eigenständig (außerhalb von Docker) zu nutzen, müssen Sie die erforderlichen Bibliotheken manuell installieren. Dies geschieht über pip install -r requirements.txt oder durch Ausführen des install.sh Skripts. Stellen Sie sicher, dass die config.json wie oben beschrieben korrekt konfiguriert wurde.
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
