Ustatnia modyfikacja 1 lipca 2026 przez Olek

Funkcjonalność pod kątem użytkownika

Odczyty i prezentacja

  • urządzenie automatycznie odbiera ramki wM-Bus z wodomierzy i pokazuje wynik bez potrzeby ręcznej obsługi,
  • na wyświetlaczu TFT prezentowane są bieżące odczyty, statystyki ramek oraz szczegóły dla każdego licznika,
  • dla każdego wodomierza dostępne są dane takie jak identyfikator, ostatni odczyt m3, liczba odczytów, średni interwał i ostatni RSSI,
  • system zapisuje i pokazuje informacje diagnostyczne, co ułatwia sprawdzanie jakości odbioru i działania RF,

Interfejs WWW

  • dostępny jest interfejs WWW z widokiem odczytów, logów, statystyk i informacji o projekcie,
  • w WWW dostępny jest także endpoint JSON /stats.json do odczytu danych przez inne narzędzia lub integracje,
  • przez WWW można też wykonać podstawowe akcje administracyjne, takie jak restart urządzenia lub aktualizacja OTA,

Obsługa i łączność

  • interfejs obsługiwany jest enkoderem i przyciskiem KO, dzięki czemu można szybko przełączać widoki i otwierać menu,
  • urządzenie może łączyć się z dowolną siecią Wi-Fi po wybraniu SSID i podaniu hasła, wykonywać OTA i synchronizować czas przez NTP,
  • RTC pozwala zachować poprawny czas także po zaniku zasilania,
  • czas można też ustawić ręcznie, jeśli użytkownik chce skorygować wskazanie bez korzystania z NTP,

Zasilanie i pamięć

  • urządzenie może być zasilane bateryjnie z dwóch ogniw 18650, co pozwala na długą pracę bez zasilania sieciowego,
  • w trybie bateryjnym można wyłączyć wyświetlacz TFT oraz Wi-Fi, aby wydłużyć czas pracy na akumulatorach,
  • większość ustawień i danych roboczych jest pamiętana w nieulotnej pamięci flash, więc po restarcie urządzenie zachowuje swoją konfigurację,
  • ekran może wygaszać się automatycznie po czasie nieaktywności, a wybudzenie następuje po ruchu enkodera lub użyciu przycisku.

Opis techiczny

Firmware dla ESP32 do odbioru i dekodowania ramek wM-Bus z transceivera CC1101 (868.95 MHz), z obsługą:

  • odbioru RF przez CC1101,
  • dekodowania ramek mBus,
  • logowania UART z timestampami,
  • OTA po Wi-Fi,

Projekt działa na PlatformIO i Arduino framework.

Protokół radiowy (liczniki Apator)

Projekt nasłuchuje ramek radiowych zgodnych z Wireless M-Bus (wM-Bus, EN 13757-4), czyli protokołu powszechnie używanego przez wodomierze Apator.

Najważniejsze parametry pracy w tym firmware:

  • pasmo: 868.95 MHz (CC1101),
  • podstawowy tryb dekodowania: wM-Bus T1, blok A (T/A),
  • kodowanie dla trybu T: 3-of-6,
  • dekodowanie ramek mBus z walidacją CRC bloków,
  • filtrowanie i zliczanie ramek producenta Apator (M-field = 0x0601, kod producenta „APA”).

Obsługiwane są również scenariusze ramek szyfrowanych:

  • ELL z deszyfrowaniem AES-CTR,
  • TPL (enc_mode=5) z deszyfrowaniem AES-CBC,
  • klucz konfigurowany przez WMBUS_AES_KEY_HEX.

Uwaga: domyślnie firmware jest zoptymalizowany pod odbiór liczników Apator i ich ramek wM-Bus.

Aktualny status

  • płyta: NodeMCU-32S (ESP-32S)
  • framework: Arduino
  • radio: CC1101
  • aktywny backend RF: SmartRC (flaga USE_RADIOLIB=0)
  • odbiór: 868.95 MHz, wM-Bus Mode T/A
  • dekodowanie: ramki Apator, RSSI per licznik
  • sieć: Wi-Fi + OTA
  • wyświetlacz: ST7789 240×320 — statystyki odświeżane co 60 s, pasek statusu z licznikami ramek R/A/F
  • wejścia: enkoder EC11 (GPIO34/35/21), przycisk KO (GPIO22)
  • menu GEM: sterowane enkoderem, pozycje: Pokaz odczyty / Info / Wygaszanie TFT / WiFi
  • Ekran ODCZYTY: ramki (R/A/F) oraz szczegółowe statystyki per licznik z linią na arkuszu
  • Ekran INFO: projekt, wygaszanie TFT, dane autora + czasy RTC/NTP (jeśli dostępne)
  • Przełączanie ODCZYTY↔INFO: klik enkodera; KO otwiera menu
  • auto-wygaszanie TFT: konfigurowalne 0/10/30/60/120/300 s (0 = wyłączone), wybudzenie pierwszym ruchem
  • RTC: warstwa abstrakcji rtc_manager.h — domyślnie DS1302 (bitbang), opcjonalnie PCF8563 (I2C) przez flagę USE_RTC_PCF8563; synchronizacja z NTP przez dialog TFT; poprawna obsługa stref/DST (mktime)
  • Serwer HTTP (port 80): endpointy / (odczyty), /log/about/stats.json/reboot/update (OTA + Basic Auth)

Dodaj komentarz