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
- Płyta z mikrokontrolerem W5500-EVB-Pico
- Licznik energii elektrycznej zgodny z SML
- Kabel Ethernet i połączenie
- Połączenie zasilania
- Serwer MQTT
- PlatformIO IDE
- Projekt SML-Reader
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:
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
- Zainstaluj PlatformIO w VSCode
- Sklonuj projekt SML-Reader
- Otwórz projekt w VSCode. PlatformIO powinno zobaczyć opcję kompilacji projektu bezpośrednio (wgrywanie)
- 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.