Funk-Wasserzähler mit wM-Bus: Auslesen mit Raspberry Pi und CC1101

Wasser-, Wärme- und Gaszähler senden ihre Stände selbst auf 868 MHz. Mit Hardware für ein paar Euro lassen sie sich ohne Ableser und ohne Herstellersystem empfangen.

wM-Bus · Raspberry Pi5 Min. Lesezeit

Was der Zähler sendet

Ein Wasserzähler mit Funkmodul (z. B. Apator AT-WMBUS-16-2) sendet im T1-Modus auf 868,95 MHz alle paar Dutzend Sekunden bis Viertelstunden ein Telegramm. Darin stehen Zählernummer, Hersteller, Medium, Zählerstand, manchmal Durchfluss, Temperatur und Alarme. Der Inhalt ist meist AES-128-verschlüsselt.

Hardware

Der CC1101 ist ein günstiger Sub-GHz-Funkchip, gesteuert über SPI. Verdrahtung mit dem Raspberry Pi:

CC1101Raspberry Pi
VCCPin 1 – 3,3 V (nie 5 V)
GNDPin 6
MOSIPin 19 (GPIO10)
MISOPin 21 (GPIO9)
SCKPin 23 (GPIO11)
CSnPin 24 (CE0 / GPIO8)

GDO0/GDO2 werden nicht gebraucht, wenn das Programm den FIFO des Chips etwa jede Millisekunde über SPI abfragt. Weniger Kabel, weniger Montagefehler – unser erster Prototyp fiel genau deshalb aus, weil die GDO-Leitungen an anderen Pins hingen als im Code.

Von Bits zu Kubikmetern

  1. „3 aus 6“-Kodierung (T1-Modus) und CRC jedes Blocks – Störungen werden verworfen.
  2. Sicherungsschicht: Hersteller (drei Buchstaben), Nummer, Version, Gerätetyp.
  3. AES-128-CBC (Modus 5) – den Schlüssel liefert der Zählerlieferant; manche Zähler nutzen einen Werksschlüssel.
  4. DIF/VIF-Datensätze (OMS-Standard): Stand, Stichtagswert, Durchfluss… Manche Hersteller (z. B. Apator 16-2) hängen nach dem Byte 0x0F ein eigenes Format an.

Erkenntnisse aus dem Einsatz

  • Empfänger als eigener Prozess. Das FIFO-Lesen muss mithalten. In Python teilt sich alles einen GIL; ein Netzwerkscan verlor Telegramme, darum bekam der Funk einen eigenen Prozess.
  • Man hört auch die Nachbarn. In 4 Minuten empfing das Gateway 32 Telegramme von 10 Zählern in der Umgebung. Ein Zähler wird über seine Nummer zugeordnet, der Rest ignoriert.
  • Statistik statt nur RSSI. Anzahl OK / CRC-Fehler / Timeout der letzten Minute zeigt die Empfangsqualität besser.
  • Kein Raten. Kein Telegramm seit 2 Stunden heißt: Zähler inaktiv – nicht „letzter bekannter Wert“.
  • Tests mit echten Telegrammen: AES-Testvektor aus FIPS-197 und mitgeschnittene Frames realer Zähler.

Funkauslesung läuft auf jedem Polbyte-IoT-Gateway mit CC1101-Modul. Sie haben ein Gebäude mit Funkzählern? Die Messwerte können in Ihr System fließen.

Ein ähnliches Problem?

Beschreiben Sie es in zwei Sätzen. Wir sagen Ihnen, ob und wie wir helfen können.

Kontakt aufnehmen →