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:
| CC1101 | Raspberry Pi |
|---|---|
| VCC | pin 1 – 3,3 V (nigdy 5 V) |
| GND | pin 6 |
| MOSI | pin 19 (GPIO10) |
| MISO | pin 21 (GPIO9) |
| SCK | pin 23 (GPIO11) |
| CSn | pin 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
- Kodowanie „3 z 6” (tryb T1) i CRC każdego bloku – odrzuca zakłócenia.
- Warstwa łącza: producent (trzy litery), numer, wersja, typ urządzenia.
- AES-128-CBC (tryb 5) – klucz od dostawcy licznika; część liczników ma klucz fabryczny.
- 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.