Skip to content

Latest commit

 

History

History
145 lines (97 loc) · 4.36 KB

README.md

File metadata and controls

145 lines (97 loc) · 4.36 KB

Smartmeter

Ziel des Projektes:

Stromzähler/Smartmeter via ModBus und Raspberry Pi auslesen, die Werte in einer Datenbank speichern und mit Grafana visualisieren

Vorbereitungen

Benötigte Hardware

  • Verwendeter Stromzähler: SDM530 von bg-etech

Ebenso möglich ist der Typ DDS353B, SDM230, SDM630 (Danke für die Integration an rpi-joe aus dem deutschen Raspberry Pi Forum)

  • Raspberry Pi mit Zubehör

  • USB ModBus Adapter: z.B. hier

    Gibts auch billiger, aber da war mir die Wartezeit im Verhältnis zum Preis zu hoch

  • geschirmtes Buskabel (lt. Anleitung vom Stromzähler)

  • 2x 120Ohm 1/4Watt Abschlusswiderstand

Einbau des Stromzählers nur durch Elektrofachpersonal! Angaben ohne Gewähr! Besser nochmals nach Anleitung prüfen

Benötigte Software

  • Python 3.7 oder höher
  • Grafana zur Visualisierung

Unterstützte Datenbanken

Direkte Verbindung zu

  • sqlite3
  • mySQL
  • PostgreSQL (optional mit timescale)

Für PostgreSQL gibt es noch eine weitere Möglichkeit der Datenübertragung:

Postgrest ermöglicht die Datenübertragung über eine Web-API (muss vom Server natürlich bereitgestellt werden)

Benötigte Python Module

  • Toml
  • Peewee
  • serial
  • minimalmodbus

Installation dieser:

Apt Installation erfordert ggf. root Rechte! Paketquellen zuvor updaten. (apt update)

apt install build-essential libssl-dev libffi-dev python3-dev libpq5 git
git clone https://github.com/liyanic/smartmeter-multi.git /home/pi/smartmeter-multi
cd /home/pi/smartmeter-multi
pip3 install --user -r requirements.txt
git submodule init && git submodule update

Wird als Datenbank mysql/mariadb verwendet, so muss noch folgendes Paket installiert werden

pip3 install --user PyMySQL

Wird als Datenbank PostgreSQL, so muss noch folgendes Paket installiert werden

pip3 install --user psycopg2

Für sqlite3 ist keine weitere Installation notwendig.

Programm einrichten

Konfiguration anpassen

cd configs
cp example.toml yourlikedname.toml

Anschliessend die yourlikedname.toml anpassen. Die Konfigurationsdatei muss im configs Ordner sein und der Name kann beliebig gewählt werden.

Für mehrere Zähler: Einfach im configs Ordner weiter config.toml Dateien anlegen. (Mit unterschiedlichen Namen)

!!Alle Configdateien im configs Ordner werden ausgeführt!!

Bei der Anpassung sind < > zu entfernen - " " müssen stehen bleiben.

Inbetriebnahme

Erstmaliger Test:

python3 smartmeter.py ausführen

Wenn dieser erfolgreich verläuft, erhält man folgende Meldung:

18.03.2021 10:27:45 INFO: Durchlaufintervall in Config aktualisiert
 Programm wird beendet. Bitte neu starten

Bevor nun das Programm neu gestartet wird, nochmals die Konfigurationsdatei öffnen und die Einträge bei Durchlaufintervall prüfen und den eigenen Wünschen anpassen. Soll ein Parameter nie gemessen werden, so ist der Wert auf false zu stellen. Ansonsten angeben, beim wievielten Durchlauf der entsprechenden Wert jeweils ausgelesen und gespeichert werden soll.

Nun das Programm erneut starten, erscheint anschliessend keine Fehlermeldung, so kann eine Service Unit für den Autostart erstellt werden.

Service Unit erstellen

Ausführung erfordert root Rechte

nano /etc/systemd/system/smartmeter.service

# Pfad zum speichern: /etc/systemd/system/smartmeter.service
[Unit]
Description=ServiceUnit zum Starten des Smartmeters
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/python3 /home/pi/smartmeter/smartmeter.py
User=pi


[Install]
WantedBy=multi-user.target

systemctl start smartmeter.service

Kontrolle ob Skript nun wieder aktiv ist, wenn ja automatische Ausführung anlegen:

systemctl enable smartmeter.service

Grafana

Die Visualisierung findet in Grafana statt, auf nähere Ausführungen wird hier jedoch verzichtet, natürlich können die Messwerte auch mit anderen Tools visualsiert werden.