Die stetige Entwicklung im Bereich der Hausautomatisierung eröffnet immer neue Möglichkeiten, um den Energieverbrauch in unseren Häusern effizient zu steuern. Ein entscheidender Schritt in diese Richtung ist das Auslesen von Daten aus intelligenten Stromzählern, die den Smart Message Language verwenden, um detaillierte Einblicke in den Energieverbrauch zu gewinnen. Genau deswegen habe ich “SML-Reader” erstellt, um die Smart Message Language Daten auszulesen und diese dann an Smart Home Systeme, wie z.B Home Assistant mittels MQTT zu senden.

Warum dieses Projekt?

Die Idee für dieses Projekt entstand aus den vorhandenen Materialien. Mit einem bereits verfügbaren W5500-EVB-Pico und der Notwendigkeit einer zuverlässigen Ethernet-Verbindung im Keller, in dem das WLAN schwach ist, wurde die Motivation für die Umsetzung des Smart Message Language-Readers geboren. Der W5500-EVB-Pico, ein kostengünstiges und einfach zu verwendendes Microcontroller-Board mit Ethernet-Port, bietet die perfekte Basis für dieses Vorhaben. Darüber hinaus verfügt es über zwei Hardware-Serials, die sowohl die Verbindung zum Computer als auch zum Infrarot-Lesekopf ermöglichen.

Die Schwierigkeiten bei der Suche nach passender Software mit Ethernet-Unterstützung für den RP2040-Chip (der im EVB-Pico verwendet wird) verstärkten den Wunsch, eine maßgeschneiderte Lösung zu entwickeln. Z.b Tasmota oder Tasmota ist noch nicht für den RP2040-Chip mit dem W5500 verfügbar.

Ein weiteres Hindernis war das Ermitteln der OBIS-Codes, die je nach Smart Meter und Konfiguration variieren. Jedoch mittels des Programmes lässt sich dieses leicht herausfinden.

Dieses Projekt wurde durch die Smart Message Language ermöglicht, welche ein Standard für die Übertragung von Energieverbrauchsdaten ist. Die SML wird in Deutschland für die Kommunikation zwischen intelligenten Stromzählern und dem Smart Meter Gateway verwendet. Die SML wird auch in anderen Ländern, wie z.B Österreich, Schweiz und Niederlande verwendet.

Projektdetails

Unterstützte Smart Meter

Der SML-Reader ist kompatibel mit allen Smart Metern, die das SML-Protokoll unterstützen. Ich testete das System erfolgreich mit dem Apator PICUS. Die angezeigten Daten hängen von den Funktionen ab, die im Smart Meter unterstützt und konfiguriert sind. Unter Umständen müssen bestimmte Einstellungen am Meter vorgenommen werden, wie das Deaktivieren der PIN oder das Aktivieren von erweiterten Betriebsarten (InF). Manche Daten brauchen auch die manuelle Aktivation durch die LMN-Schnittstelle durch den Netzbetreiber.

Weitere OBIS codes können durch die bearbeitung der OBIS-Handler liste hinzugefügt werden.

Hardware und Software

Konfiguration des SML-Readers

Bearbeiten Sie die config.h-Datei im SML-Reader-Projekt, um die Verbindungsinformationen für Ihren MQTT-Server einzugeben. Hier legen Sie die MQTT Login-Daten ein. Weiter einstellungen, wie z.B eine statische IP-Adresse oder weitere OBIS-Codes, kann man in main.cpp vornehmen.

Nach dem Speichern der Konfigurationsdatei können Sie den SML-Reader neu flashen, um die Änderungen zu übernehmen. Die Konfigurationsdatei wird dabei beim Flashen gespeichert. Eine dynamische Konfiguration über die Web-Oberfläche ist in Arbeit.

Auch der Lesekopf muss korrekt angeschlossen werden. Die Anschlüsse sind bei dem W5500-EVB-Pico Board standardmäßig wie folgt:

  • TX: GPIO04
  • RX: GPIO05
  • GND: GND
  • VCC: 3V3

So sollte der Aufbau aussehen:

Diagramm des Aufbaus des SML-Readers, der die verbindung zwischen dem W5500-EVB-Pico und dem IR-Lesekopf zeigt. Die Pins sind hierbei die vorher genannten Pins.
Diagramm des Aufbaus des SML-Readers

Diese Anschlüsse stammen von der zweiten Hardware-Serial des RP2040-Chips. Die erste Hardware-Serial wird für die Verbindung zum Computer verwendet. Die zweite Hardware-Serial wird für die Verbindung zum Lesekopf verwendet (UART0/UART1 und UART2)

Flashen des SML-Readers mit PlatformIO in VSCode

  1. Installieren Sie PlatformIO in VSCode
  2. Klonen Sie das SML-Reader Projekt
  3. Öffnen Sie das Projekt in VSCode. Dort sollte PlatformIO die Möglichkeit das Projekt zu bauen direkt sehen (Upload)
  4. Nach dem Kompilieren und Hochladen kann der Leser jetzt an den Stromzähler vebrunden werden

Falls Probleme beim Flaschen stattfinden, kann man auch manuall die UF2 Dateien auf das Gerät kopieren (Halte dabei Bootsel gedrückt)

Nach dem erfolgreichen Flashen sollte der SML-Reader die Daten vom Stromzähler empfangen und diese dann an den MQTT Server senden.

Einlesen der MQTT Daten in Home Assistant

Das Gerät sollte jetzt automatisch die Daten an den MQTT Server senden. Mittels MQTT Discovery werden die Sensoren automatisch in Home Assistant erstellt. Die Sensoren können dann in Home Assistant verwendet werden. Falls dies nicht passiert, kann mann immer manuell die Messwerte in Home Assistant durch die config.yaml einfügen.

Die Daten werden unter homeassistant/sensor/w5500-evb-pico/<Name-des-Wertes>/state gesendet, falls man es auch in andere Systeme einbinden möchte.

Web-Oberfläche

Das Projekt verfügt über eine Web-Oberfläche, die es ermöglicht, die gelesenen Daten des Stromzählers anzuzeigen. Die Oberfläche ist über die IP-Adresse or durch den mDNS-Namen des SML-Readers erreichbar. Die angezeigten Daten hängen von den Funktionen ab, die im Smart Meter unterstützt und konfiguriert sind.

Fazit

Das Projekt ist eine kostengünstige und einfache Lösung, um die SML-Daten aus einem Smart Meter auszulesen und diese dann an Smart Home Systeme, wie z.B Home Assistant mittels MQTT zu senden. Die Verwendung des W5500-EVB-Pico ermöglicht eine zuverlässige Ethernet-Verbindung, die für die lokale Hausautomatisierung von Vorteil ist. Die Web-Oberfläche bietet eine einfache Möglichkeit, die Daten des Stromzählers anzuzeigen. Die Verwendung von PlatformIO ermöglicht eine einfache Installation und Konfiguration des Projekts.

Weitere Informationen

Vielen Dank an die SML Parser Biblothek welches die Grundlage für dieses Projekt bildet.

Mehr Infos zu SML: SML-Protokoll

Mehr Infos zu den OBIS-Codes: OBIS-Codes