Strommessung mit Shelly Plus PM Mini und Node-RED

Mit dem kleinen Shelly Plus PM Mini wird eine günstige Möglichkeit geboten, eine Leistungsmessung durchzuführen. Das Gerät ist nur ca. 28 x 32 x 16 mm (HxBxT) groß und passt in viele UP-Dosen z.B. hinter einer Steckdose. Das Gerät unterstützt dabei eine Messung bis zu 16A Leistung (ist leider nicht bei allen Shelly Geräten so), so dass man mit dem Gerät theoretisch die Leistung eines Balkonkraftwerks, von Lichtschaltern oder Steckdosen messen kann.

Im folgenden Beitrag beschreibe ich, wie man das PM Mini auch ohne Shelly-App über WLAN und MQTT einbinden und die Daten in Node-Red weiterverarbeiten kann.

Grundsätzlich erfolgt hier der Hinweise, dass das Arbeiten an Elektroleitungen immer nur von Fachleuten (Elektrikern) durchgeführt werden und immer die fünf Sicherheitsregeln der Elektrotechnik berücksichtigt werden sollten.

Gerät ins Netzwerk einbinden

Ich möchte auf die Shelly Cloud sowie das Einrichten der Shelly App verzichten, sondern nur eine lokale Nutzung mittels WLAN umsetzen. Nach der Stomversorgung spannt das PM Mini ein eigenes Netz auf (Access Point), mit dem man sich verbinden muss. Das WLAN erkennt man an dem Namen, der mit "ShellyPMMini..." beginnt. Um anschließend in den Shelly-WebAdmin-Oberfläche zu kommen, gibt man im Browser die Adresse "192.168.33.1" ein und schon sollte die administrative Weboberfläche  erscheinen. Bitte berücksichtigt, dass auch die Shelly-Geräte nur das 2,4 GHz WLAN unterstützen. Die Optionen und Anzeigen  in der WebAdmin-Oberfläche sind unter diesem Link super erklärt.

Nun geht man auf "Configure Wifi-Setting", wählt "Enable Wifi-network" und gibt die SSID (Name des WLANs) sowie das Passwort für das WLAN an und speichert die Einstellungen. Theoretisch kann man das Gerät nun neu starten und es sollte dann unter einer eigenen IP-Adresse in der Netzwerkliste des Routers erscheinen.

Generelle Einstellungen

Da es bei älteren Shelly-Firmwareversionen zu Problemen mit der korrekten Leistungsmessung kam, sollte unbedingt die aktuelle Firmware für das PM Mini aufgespielt werden.  Dazu geht man auf "Settings" und "Firmware". Shelly prüft nun automatisch, ob eine neue Version verfügbar ist und bietet an, diese online zu installieren.

Nach dem Drücken von "Update" wird die Firmware aufgespielt und das Gerät neu gestartet. Nun sollten folgende Einstellungen vorgenommen werden:

Menü Wert Beschreibung
"Settings" und "Device Name" Sprechender Name des Gerätes Hilft später bei der Identifikation im Netzwerk und ist gleichzeitig der Topic-Name für MQTT
"Settings" und "Bluetooth" "Enable Bluetooth" und "Enable RPC": Haken entfernen Da nur das WLAN benötigt wird
"Settings" "Eco" "Enable Eco Mode": Haken setzen Aktiviert den Eco-Modus
"Setting" "Authentication" Eigenes Passwort setzen Sperrt den freien Zugang auf die Weboberfläche
"Settings" und "Access Point" "Enable AP-Network": Haken entfernen Deaktiviert den Access Point

MQTT-Settings

Für das erfolgreiche Senden von Nachrichten an einen MQTT-Broker müssen folgende Einstellungen vorgenommen werden:

Menü Wert Beschreibung
"Settings" und "MQTT-Settings"
  1. "Enable MQTT-Network": Haken setzen
  2. "Connection Type" :  No-SSL
  3. "Enable MQTT Control": Haken setzen
  4. "Generic status updat over MQTT": Haken setzen
  5. "Enable RPC over MQTT": Haken entfernen
  6. "RPC Status notification over MQTT": Haken entfernen
  7. "Server": "IP-Adresse des MQTT-Servers: 1883"
  1. MQTT aktivieren, damit Daten gesendet werden
  2. Nur wenn man SSL nicht aktiviert hat, ansonsten das richtige Protokoll wählen
  3. Gibt die Möglichkeit, per MQTT auch Befehle zu senden
  4. Muss gesetzt werden, da sonst nichts vom PM Mini gesendet wird.

Nach dem Speichern der Settings ist das Gerät ist vollständig konfiguriert und kann über "Settings" "Reboot-Device" neu gestartet werden. Anschließend kann man z.B. mit dem MQTT-Explorer prüfen, welche Informationen an den MQTT-Broker gesendet werden.

Tipp: Bei mir wurden zuerst keine Nachrichten gesendet. Erst als ich in den MQTT-Settings den Punkt „Generic Status update over MQTT“  enabled und dann wieder disabled habe, hat es funktioniert.

Daten in Node-Red weiterverarbeiten

Die Daten können jetzt in Node-Red weiterverarbeitet werden. In meinem Fall speichere ich diese direkt in einer InfluxDB ab.

Im mqtt-in-Node frage ich erst einmal das Topic vom MQTT-Server ab. Dieses findet man unter dem Namen, den man dem Shelly-Gerät  gegeben hat (siehe oben), gefolgt von einem "/pm1:0", also in meinem Fall heißt das Topic "EM-Licht/pm1:0". Als Ausgabe wird "Ein analysiertes (parsed) JSON-Objekt." gewählt.

Im Function-Node wird nun die Leistung aus dem JSON-Objekt extrahiert:

Der Code dazu lautet:

Copy to Clipboard

Das bedeutet, dass sich unter "aenergy.total" der benötigte Wert im payload-Objekt befindet.

Zuletzt speichere ich diesen Wert noch mit einem influxdb-out-Node in die Datenbank. Mit dieser Vorgehensweise kann man auch andere Shelly-Geräte ohne Shelly-App abfragen und deren Daten weiterverarbeiten.

Wie man Node-Red, MQTT und InfluxDB installiert und Daten austauscht steht unter anderem in meinen Beiträgen Mit Node-Red, InfluxDB und Grafana Daten auf einem Synology NAS sammeln und visualisieren (Teil 1/2) und  Mit Node-Red, InfluxDB und Grafana Daten auf einem Synology NAS sammeln und visualisieren (Teil 2/2)