WMBUS

Aus FHEMWiki
Zur Navigation springen Zur Suche springen
WMBUS
Zweck / Funktion
Dekodierung von Wireless M-Bus Nachrichten
Allgemein
Typ Gerätemodul
Details
Dokumentation EN / DE
Support (Forum) Sonstige Systeme
Modulname 36_WMBUS.pm
Ersteller kaihs
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref!

WMBUS ist ein Modul zur Dekodierung von Wireless M-Bus Nachrichten. Solche Nachrichten werden z. B. von Zählern für Wasser, Wärme, Gas und Elektrizität ausgestrahlt. Wireless M-Bus ist ein Standardprotokoll das von unterschiedlichen Herstellern unterstützt wird. Das Protokoll unterstützt unterschiedliche Kodierungen des Funksignals, im wesentlichen den S-Mode, T-Mode und C-Mode. Der Empfänger (z. B. ein CUL) muss den selben Modus nutzen wie der Sender (der Zähler). Wireless M-Bus unterstützt optional die Verschlüsselung der Daten. Die von einem Zähler gesendeten Daten können sehr unterschiedlich sein und hängen u. a. vom Zählertyp und dessen Hersteller ab.

Voraussetzungen

Das Modul interpretiert nur die Nachrichten die von einen geeigneten Empfänger empfangen werden. Aktuell kann ein CUL und verwandte Geräte die die culfw[1] verwenden sowie ein Amber Wireless AMB8465M dafür verwendet werden. In der culfw muss die Unterstützung des WMBUS-Protokolls aktiviert sein (#define HAS_MBUS in der Datei board.h des Deviceverzeichnisses). Bei einem CUL mit der Hardwareversion V4 ist das nicht der Fall.

Der CUL muss in FHEM mittels Attribut rfmode=WMBus_S, WMBus_T oder WMBus_C in den zum Zähler passenden Empfangsmodus versetzt werden.

Anwendung

Die Erzeugung des passenden Devices in FHEM geschieht automatisch beim Empfang des ersten Datenpakets eines Zählers. Voraussetzung dafür ist, dass autocreate aktiv ist. Alternativ kann ein Device manuell angelegt werden. Dazu wird der Hersteller, die Seriennummer, die Version und der Typ (Wasser, Gas, ...) des Zählers benötigt. Sind die Daten verschlüsselt wird auch noch der passende Schlüssel benötigt um die Daten entschlüsseln zu können.

Verschlüsselung

Die Daten können auf drei verschiedene Arten verschlüsselt sein:

  1. Security profile A/Symmetric encryption with Mode 5
  2. Security profile B/Advanced symmetric encryption with Mode 7
  3. Security profile C/Asymmetric encryption with Mode 13

Das Modul unterstützt aktuell Daten die per 1 oder 2 verschlüsselt wurden.

Anwendungsbeispiele

Ein per EnergyCam abgelesener Elektrizitätszähler sieht in FHEM z. B. so aus:

 Internals: 
   CUL_MBUS_MSGCNT 29 
   CUL_MBUS_RAWMSG b1944C4189985051701028A7D7A540000A00405FAD4080002FD08222C1295B8::-67.5 
   CUL_MBUS_RSSI -67.5 
   CUL_MBUS_TIME 2014-10-24 22:57:53 
   DEF        FFD 17058599 1 2 
   DeviceMedium Electricity 
   DeviceType 2 
   IODev      CUL_MBUS 
   IdentNumber 17058599 
   LASTInputDev CUL_MBUS 
   MSGCNT     29 
   Manufacturer FFD 
   NAME       WMBUS_FFD_17058599_1_2 
   NR         49 
   STATE      no errors 
   TYPE       WMBUS 
   Version    1 
   addr       FFD_17058599_1_2 
   Readings: 
     2014-10-24 22:57:53   1_storage_no    0 
     2014-10-24 22:57:53   1_type          VIF_ENERGY_WATT 
     2014-10-24 22:57:53   1_unit          Wh 
     2014-10-24 22:57:53   1_value         57881000 
     2014-10-24 22:57:53   2_storage_no    0 
     2014-10-24 22:57:53   2_type          VIF_ACCESS_NO 
     2014-10-24 22:57:53   2_unit 
     2014-10-24 22:57:53   2_value         11298 
     2014-10-24 22:57:53   LQI             184 
     2014-10-24 22:57:53   RSSI            -67.5 
     2014-10-24 22:57:53   battery         ok 
     2014-10-24 22:57:53   decryption_ok   1 
     2014-10-24 22:57:53   energy          57881 
     2014-10-24 22:57:53   is_encrypted    0 
     2014-10-24 22:57:53   state           no errors 
     2014-10-24 22:57:53   unit            kWh 
 Attributes: 
   IODev      CUL_MBUS 
   room       WMBUS

Bekannte Probleme

Inkompatible Zähler

Obwohl Wireless M-Bus ein standardisiertes Protokoll ist, scheint sich kaum ein Hersteller vollständig daran zu halten bzw. verwendet sog. herstellerspezifische Felder um wichtige Daten zu verpacken. Aus den bisher beobachteten Datenpaketen ergibt sich

  • Qundis (Herstellerkürzel LSE) verwendet herstellerspezifische Datenblöcke für den eigentlichen Zählerstand
  • Techem und Hydrometer verwenden ein undokumentiertes Datenformat (CI-Field A2)
(Techem Heizkostenverteiler (CI-Field A0) können über das Modul TechemHKV ausgewertet werden)
  • RWE SmartHome Powercontrol[2] sendet verschlüsselt und der Hersteller gibt nicht den vollständigen Schlüssel an (Beitrag)

Daher werden bisher erst die EnergyCam der Firma Q-loud, Zähler von Easymeter und der Kamstrup Multical 21 vollständig unterstützt. Für den Multical 21 muss eine culfw mit Unterstützung für WMBUS C verwendet werden. Diese ist in der culfw ab dem 24.6.2018 enthalten.

Andere Zähler können auch ohne Probleme funktionieren wenn diese sich an den OMS Standard halten.

Empfangsprobleme

Der Empfänger (meist ein CUL) muss das WMBUS Protokoll unterstützen. Die Unterstützung ist vorhanden, wenn in der Ausgabe von get cmds ein kleines b enthalten ist. Der CUL speichert die empfangenen Daten intern zwischen bevor sie an fhem geschickt werden. Der Puffer für die Speicherung muss groß genug sein, um ein komplettes Datenpaket aufzunehmen. Die Größe des Puffers kann in der culfw eingestellt werden in dem das define TTY_BUFSIZE in der Datei board.h des passenden Devices angepasst wird. Dabei ist darauf zu achten, dass die verwendeten Mikrocontroller nur sehr wenig RAM haben (0,5-4KB). Um mehr freies RAM zu erhalten sollten Protokolle die nicht benötigt in der board.h abgeschaltet werden. Die Unterstützung für WMBUS (#define HAS_MBUS 1) muss aber natürlich eingeschaltet werden. Anschließend ist die culfw neu zu übersetzen und zu flashen.

Links

  • Forumsthread Thema
  • Protokoll Beschreibung [3]
  • Beschreibung des M-BUS Protokolls [4]