Die kleinen Steckdosen und Unterputzgeräte von Shelly oder Tasmota sind super beliebt. Auch ich habe einige versteckt und messe ebenfalls die Werte meines Balkonkraftwerks (Mini-PV). Die Auswertungen werden dann letztendlich über ein Grafana Dashboard erstellt. Das ganze läuft natürlich letztendlich vollkommen automatisch, wir müssen nichts weiter tun.

Technisch werden die Daten direkt von den Shelly oder Tasmota Geräten via MQTT zu einem MQTT Server (Mosquitto) gesendet und von da weiter verarbeitet. Ein Node-Red Server greift die Daten ab, verarbeitet diese bei Bedarf weiter und speichert die Daten letztendlich in einer Timeseries Datenbank. In meine Falle entscheide ich mir gerne immer wieder für InfluxDB (1.x). Von da an kann Grafana ganz einfach auf die Daten zugreifen und Ihr könnt schnell und einfach die unterschiedlichsten Dashboards bauen.

Aber jetzt zu euch, lasst uns anfangen.

Technische Grundlagen und Voraussetzungen

Ich selber habe überall Zuhause kleine Server stehen und werde dort eine virtuelle Maschine aufsetzen mit Debian 11. Von dort werden alle benötigten Applikationen mit Docker betrieben. Also kann diese Anleitung auch ohne weitere Probleme auf einem Raspberry Pi ausgeführt werden.
Wer noch auf der Suche nach einem kleinen sehr stromsparenden Homeserver ist, der sollte sich unbedingt meinen Liebling ansehen, den kleinen und Ultra performanten HM90. (Minisforum HM90 - 32GB Ryzen 4900H)

Ein wenig Linux-Wissen setze ich natürlich voraus. Also los geht es. Installiert erstmal Docker.

apt update && apt upgrade
apt install docker.io

MQTT – Mosquitto Server

Damit unsere gesendeten MQTT Daten vom Shelly auch irgendwo angenommen und weitergeleitet werden, brauchen wir einen MQTT Server. Ich denke das bekannteste ist der Mosquitto MQTT Server. Grundsätzlich müssen wir keine besondere Einstellungen vornehmen.

docker volume create mosquitto_data
docker volume create mosquitto_log
docker volume create mosquitto_conf

docker run -it -d \
	-p 1883:1883 \
	-p 9001:9001 \
	-v mosquitto_conf:/mosquitto/config \
	-v mosquitto_data:/mosquitto/data \
	-v mosquitto_log:/mosquitto/log \
	--restart=always \
	--name=mosquitto-server \
	eclipse-mosquitto:latest
Shelly 1PM Wireless Relais Intelligente domotische Schalter Amazon Alexa und Google Home 2 Stück Energiemonitor
Shelly 1PM Wireless Relais Intelligente domotische Schalter Amazon Alexa und Google Home 2 Stück Energiemonitor
110-240V ±10% 50/60Hz AC 16A 240 Volt
24-60V DC
WiFi 802.11 b/g/n

; Verbraucherüberwachung: Monat, Tag und Jahr.
43,48 EUR

Node-Red – IoT Verarbeitungstool

Node-Red ist ein sogenanntes Entwicklungswerkzeug für Anwendungsfälle im Internet der Dinge. (IoT) ür uns wird dieses Tools die Daten vom Mosquitto abfragen und dann letztendlich in die Datenbank schieben.

docker volume create node_red_data

docker run -it -d \
	-p 1880:1880 \
	-v node_red_data:/data \
	--name=mynodered \
	--restart=always \
	nodered/node-red:latest

InfluxDB 1.x – Timeseries Datenbank

Irgendwo müssen ja die Daten langfristig gespeichert werden und die InfluxDB eignet sich dafür am besten. Dabei kann die Datenbank super viele Daten aufnehmen und das sogar langfristig.

docker volume create influxdb

docker run -it -d \
	-p 8086:8086 \
	-v influxdb:/var/lib/influxdb \
	--name=influxdb \
	--restart=always \
	influxdb:1.8

docker exec -it <ID> /bin/bash

influx
create database <DATENBANKNAME>

Das Grafana Dashboard

Grafana ist natürlich hier unser Arbeitswerkzeug um später die Daten visuell darstellen zu können. Das menschliche Auge kann natürlich optisch aufgearbeitete Daten viel besser verarbeiten als eine tabellarische Ausgabe.

docker volume create grafana

docker run -it -d \
	-p 3000:3000 \
	--name=grafana \
	-v grafana:/var/lib/grafana \
	--name=grafana \
	--restart=always \
	grafana/grafana:latest

Die Applikationen miteinander verbinden

Benötigte Zeit: 10 Minuten.

Jetzt werden wird alle Programme welche wir mit Docker betreiben miteinander verbinden und die Daten in die Datenbank bringen.

  1. MQTT auf den Shellys und Tasmotas einrichten

    Geht auf eure Smarten Steckdosen und aktiviert die MQTT Funktion. In der Regel sollte es ausreichen wenn Ihr den MQTT Server angebt. Benutzername, Passwort und Topic braucht Ihr so jetzt erstmal nicht angeben. Verwendet die IP-Adresse für den MQTT Server wo der Mosquitto Server läuft.

  2. Daten mit Node-Red abgreifen und in die Datenbank verschieben

    Mit Node-Red greifen wir nun die Daten ab, welche auf dem MQTT-Server aufschlagen. Wir Abonnieren also die entsprechende MQTT Topics und verschieben die Daten in die InfluxDB. Wie das genau geht, siehst du im Video und in den Screenshots.

  3. Datenpunkt in Grafana einrichten und Dashboards erstellen

    Da die Daten nun in der Datenbank liegen, können wir diese über den Menüpunkt “Daten Sources” ins Grafana integrieren. Ab diesem Punkt könnt Ihr nun frei eure Dashboard einrichten.