Rozwój w dziedzinie automatyki domowej otwiera coraz to nowe możliwości efektywnego sterowania zużyciem energii w naszych domach. Istotnym krokiem w tym kierunku jest odczyt danych z inteligentnych liczników energii elektrycznej, aby uzyskać szczegółowe informacje o zużyciu energii. Dokładnie dlatego stworzyłem “SML-Reader”, aby odczytywać dane w języku Smart Message Language, a następnie wysyłać je do systemów automatyki domowej, takich jak Home Assistant, za pomocą MQTT.


Dlaczego ten projekt?

Pomysł na ten projekt powstał z istniejących materiałów. Z już dostępnym W5500-EVB-Pico i potrzebą niezawodnego połączenia Ethernet w piwnicy, gdzie WLAN jest słaby, narodziła się motywacja do zaimplementowania Smart Message Language-Reader. W5500-EVB-Pico, niedroga i łatwa w użyciu płyta z mikrokontrolerem z portem Ethernet, zapewnia idealną podstawę do tego projektu. Ponadto ma dwa sprzętowe porty szeregowe, które pozwalają zarówno na połączenie z komputerem, jak i z głowicą odczytu podczerwieni.

Trudności w znalezieniu odpowiedniego oprogramowania z obsługą Ethernetu dla układu RP2040 (używanego w EVB-Pico) wzmocniły pragnienie opracowania rozwiązania na miarę. Na przykład Tasmota lub Tasmota nie są jeszcze dostępne dla układu RP2040 z W5500.

Kolejną przeszkodą było określenie kodów OBIS, które różnią się w zależności od licznika inteligentnego i konfiguracji. Jednak można to łatwo ustalić, korzystając z programu.

Ten projekt został umożliwiony dzięki Smart Message Language, która jest standardem transmisji danych o zużyciu energii. Smart Message Language jest używany w Niemczech do komunikacji między inteligentnymi licznikami a bramką inteligentnego licznika. SML jest również używany w innych krajach, takich jak Austria, Szwajcaria i Holandia.

Szczegóły projektu

Obsługiwane liczniki inteligentne

SML-Reader jest kompatybilny ze wszystkimi licznikami inteligentnymi obsługującymi protokół SML. Pomyślnie przetestowałem system z Apator PICUS. Wyświetlane dane zależą od obsługiwanych i skonfigurowanych funkcji w liczniku inteligentnym. W niektórych przypadkach konieczne może być wykonanie pewnych ustawień w liczniku, takich jak wyłączenie PIN-u lub włączenie rozszerzonych trybów pracy (InF). Niektóre dane wymagają również ręcznego aktywowania przez interfejs LMN przez operatora sieci.

Dodatkowe kody OBIS można dodać, edytując listę obsługujących OBIS.

Sprzęt i oprogramowanie

Konfiguracja SML-Reader

Edytuj plik config.h w projekcie SML-Reader, aby wprowadzić informacje o połączeniu do serwera MQTT. Tutaj wprowadzasz dane logowania MQTT. Dalsze ustawienia, takie jak statyczny adres IP lub inne kody OBIS, można dokonać w main.cpp.

Po zapisaniu pliku konfiguracyjnego możesz ponownie wgrać SML-Reader, aby zastosować zmiany. Plik konfiguracyjny jest zapisywany podczas wgrywania. Dynamiczna konfiguracja za pośrednictwem interfejsu sieciowego jest w toku.

Głowica odczytu musi również być podłączona poprawnie. Standardowe połączenia na płycie W5500-EVB-Pico wyglądają następująco:

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

Konfiguracja powinna wyglądać tak:

Diagram konfiguracji SML-Reader, pokazujący połączenie między W5500-EVB-Pico a głowicą odczytu podczerwieni. Piny są wymienione powyżej.
Diagram konfiguracji SML-Reader

Te połączenia pochodzą z drugiego sprzętowego szeregowego układu RP2040. Pierwszy sprzętowy szeregowy jest używany do połączenia z komputerem. Drugi sprzętowy szeregowy jest używany do połączenia z głowicą odczytu (UART0/UART1 i UART2)

Wgrywanie SML-Reader z PlatformIO w VSCode

  1. Zainstaluj PlatformIO w VSCode
  2. Sklonuj projekt SML-Reader
  3. Otwórz projekt w VSCode. PlatformIO powinno zobaczyć opcję kompilacji projektu bezpośrednio (wgrywanie)
  4. Po skompilowaniu i wgraniu projektu SML-Reader powinien być gotowy do użycia.

Jeśli wystąpią problemy z wgrywaniem, można również ręcznie skopiować pliki UF2 do urządzenia (trzymając Bootsel wciśnięty podczas tego procesu).

Po pomyślnym wgraniu SML-Reader powinien odbierać dane z licznika energii elektrycznej, a następnie wysyłać je do serwera MQTT.

Odczytywanie danych MQTT w Home Assistant

Urzadzenie powinno teraz automatycznie wysyłać dane do serwera MQTT. Korzystając z MQTT Discovery, czujniki są automatycznie tworzone w Home Assistant. Czujniki można następnie wykorzystać w Home Assistant. Jeśli tak się nie stanie, zawsze można ręcznie wstawić zmierzone wartości w Home Assistant za pośrednictwem config.yaml.

Dane są wysyłane do homeassistant/sensor/w5500-evb-pico/<nazwa-wartości>/state, jeśli chcesz je zintegrować z innymi systemami.

Interfejs sieciowy

Projekt ma interfejs sieciowy, który umożliwia wyświetlanie danych odczytanych z licznika energii elektrycznej. Interfejs jest dostępny za pośrednictwem adresu IP lub nazwy mDNS SML-Reader. Wyświetlane dane zależą od obsługiwanych i skonfigurowanych funkcji w liczniku inteligentnym.

Podsumowanie

Projekt jest niedrogim i prostym rozwiązaniem do odczytywania danych SML z licznika inteligentnego, a następnie wysyłania ich do systemów automatyki domowej, takich jak Home Assistant, za pośrednictwem MQTT. Użycie W5500-EVB-Pico pozwala na niezawodne połączenie Ethernetowe, co jest korzystne dla lokalnej automatyki domowej. Interfejs sieciowy oferuje łatwy sposób na wyświetlanie danych z licznika energii elektrycznej. Użycie PlatformIO pozwala na łatwą instalację i konfigurację projektu.

Dalsze informacje

Wielkie podziękowania dla biblioteki SML Parser, która stanowi podstawę tego projektu.

Więcej informacji można znaleźć na stronie wersji niemieckiej.