Die gute Nachricht: Eine erste Version des WMBus Moduls ist fertig.
Das kann die Beispieldaten aus des Spezifikation sowie die Daten einer EnergyCam fehlerfrei dekodieren und unterstützt auch die Entschlüsselung.
Beispielausgabe für einen Wärmemengenmesser:
Manufacturer 2324 HYD
IdentNumber 12345678
Version 42
Type 4 Heat
1. StorageNo 0 VIF_ELECTRIC_ENERGY 2850427000 Wh
2. StorageNo 0 VIF_VOLUME 703.476 m³
3. StorageNo 1 VIF_ELECTRIC_ENERGY 1445419000 Wh
4. StorageNo 1 VIF_TIME_POINT_DATE 2007-12-31
5. StorageNo 0 VIF_VOLUME_FLOW 0.127 m³/h
6. StorageNo 0 VIF_ELECTRIC_POWER 329.7 W
7. StorageNo 0 VIF_FLOW_TEMP 44.3 °C
8. StorageNo 0 VIF_RETURN_TEMP 25.1 °C
9. StorageNo 0 VIF_ERROR_FLAGS 0
Die schlechte Nachricht: Die Daten deiner Uhren lassen sich nicht vernünftig auswerten, da kommt dann sowas raus:
Manufacturer b265 lSE
IdentNumber 228211
Version 22
Type 4 Heat
1. StorageNo 0 VIF_TIME_POINT_DATE_TIME 2014-7-29 00:31
2. StorageNo 0 VIF_MODEL_VERSION 6
3. StorageNo 0 VIF_TIME_POINT_DATE invalid
4 MANUFACTURER SPECIFIC
D.h. außer den Daten aus dem Header und dem Zeitstempel ist nichts vernünftiges dabei, die wichtigen Daten sind scheinbar herstellerspezifisch codiert.
Ein Übertragungsfehler liegt nicht vor, die Checksummen passen alle.
Vielleicht habe ich da noch was nicht richtig verstanden, aber ich habe die Daten auch noch mal manuell dekodiert, kommt das selbe bei raus.
Anbei das Modul sowie ein Testprogramm.
Das Modul benötigt die perl Module Digest::CRC, Crypt:CBC und Crypt::OpenSSL::AES, die müssen mglw. vorher erst installiert werden, z. B. per cpan.
Der nächste Schritt ist jetzt das fhem Modul das das WMBus.pm verwendet.
Gruß,
Kai