Wodomierze radiowe wM-Bus: odczyt z Raspberry Pi i modułu CC1101

Liczniki wody, ciepła i gazu same nadają odczyty na 868 MHz. Za kilkadziesiąt złotych sprzętu da się je odbierać bez inkasenta i bez systemu producenta.

wM-Bus · Raspberry Pi5 min czytania

Co nadaje licznik

Wodomierz z nakładką radiową (np. Apator AT-WMBUS-16-2) co kilkadziesiąt sekund do kilkunastu minut wysyła telegram w trybie T1 na 868,95 MHz. W telegramie są: numer licznika, producent, medium, stan licznika, czasem przepływ, temperatura i alarmy. Treść jest zwykle szyfrowana AES-128.

Sprzęt

CC1101 to tani układ radiowy sub-GHz sterowany przez SPI. Podłączenie do Raspberry Pi:

CC1101Raspberry Pi
VCCpin 1 – 3,3 V (nigdy 5 V)
GNDpin 6
MOSIpin 19 (GPIO10)
MISOpin 21 (GPIO9)
SCKpin 23 (GPIO11)
CSnpin 24 (CE0 / GPIO8)

Linie GDO0/GDO2 nie są potrzebne, jeśli program odpytuje kolejkę FIFO układu przez SPI mniej więcej co milisekundę. Mniej kabli to mniej błędów montażu – nasz pierwszy prototyp przestał działać właśnie przez GDO wpięte w inne piny niż w kodzie.

Od bitów do metrów sześciennych

  1. Kodowanie „3 z 6” (tryb T1) i CRC każdego bloku – odrzuca zakłócenia.
  2. Warstwa łącza: producent (trzy litery), numer, wersja, typ urządzenia.
  3. AES-128-CBC (tryb 5) – klucz od dostawcy licznika; część liczników ma klucz fabryczny.
  4. Rekordy DIF/VIF (standard OMS): stan, stan na dzień rozliczeniowy, przepływ… Niektórzy producenci (np. Apator 16-2) dokładają własny format po bajcie 0x0F.

Wnioski z wdrożenia

  • Odbiornik w osobnym procesie. Odczyt FIFO musi nadążać. W Pythonie, gdzie wszystko dzieli jeden GIL, skan sieci gubił telegramy, więc radio dostało własny proces.
  • Słychać też sąsiadów. W 4 minuty bramka odebrała 32 telegramy od 10 liczników w okolicy. Licznik przypisujemy po numerze, a cudze ignorujemy.
  • Statystyki zamiast samego RSSI. Liczba telegramów OK / błąd CRC / timeout z ostatniej minuty lepiej pokazuje jakość odbioru.
  • Nie zgadujemy. Brak telegramu przez 2 h oznacza licznik nieaktywny, a nie „ostatnią znaną wartość”.
  • Testy na prawdziwych telegramach: wektor AES z FIPS-197 i ramki nagrane z działających liczników.

Odczyt radiowy działa w każdej bramce Polbyte IoT z modułem CC1101. Masz budynek z licznikami radiowymi? Odczyty mogą trafiać do twojego systemu.

Masz podobny problem?

Opisz go w dwóch zdaniach. Odpowiemy, czy i jak możemy pomóc.

Napisz do nas →