Wireless M-Bus für CUL

Begonnen von tostmann, 12 Juni 2014, 17:34:32

Vorheriges Thema - Nächstes Thema

ext23

Stimmt und jetzt sehe ich noch ein "Environmental meter", das klingt doch nach Rauchmelder oder? Die haben ja immerhin Ultraschallsensoren (Deswegen habe ich die wieder alle abgebaut ;-) )

Ich beobachte das mal. Die Geräte senden Tagsüber enorm viel, ich denke mal morgen werde ich mehr wissen. Mir stellt sich nur eine Frage:
Das AES aus ist, ist in meinem Fall gut. Aber das ich die Zählerstände aller Nachbarn im Haus sehe, mhhhh. Und da kommt die nächste Frage, wer außer die Handwerker haben noch alles die Liste mit dem Seriennummer <-> Wohnung/Namen match? Für einen Einbrecher ist es so ein leichtes zu sehen wer im Urlaub ist oder nicht. Oder bin ich da etwas zu Paranoid?

/Daniel
HM, KNX, FS20, 1-Wire, PanStamp, AVR-NET-IO, EM1000EM, PCA301, EC3000, HM-LAN, CUL868, RFXtrx433, LGW, DMX @Ubuntu-Server (Hauptsystem) & Raspberry Pi (Satellit)

kaihs

Mit der Einschätzung liegst du sicher nicht ganz falsch.
Einbrecher werden sich m. E. nicht die Mühe machen, aber die Daten sind durchaus sensibel und sollten geschützt werden.

Zur Bewertung der Sicherheit siehe auch dieses Whitepaper.
Banana Pi, Add-On Board mit 1.8" TFT LCD und IR-Sender, CULFW V1.61, div. Homematic Komponenten, Pollin Funksteckdosen, Selbstbau CUL433 MHz, Jeelink Clone, EC3000
Selbstbau CUL868MHz für Wireless M-Bus, SIGNALduino mit Logilink Temp.-sensoren und Auriol Wetterstation

ext23

#812
Naja und wenn man erst falsche Werte sendet ;-)

Eine Frage habe ich mal noch. Wieso habe ich beim Value tagsüber oft 0 und dann mal wieder den richtigen Wert (häufig nachts wo weniger los ist aufm Funk)? Das kann doch nicht sein, da ist doch ne Prüfsumme in der Nachricht oder nicht?

UPDATE:

Was ist denn die 1_storage_no ? Steht dieser auf "0" ist der aktuelle Wert im 1_value, steht dieser auf 128 steht immer 0 im 1_value.

/Daniel
HM, KNX, FS20, 1-Wire, PanStamp, AVR-NET-IO, EM1000EM, PCA301, EC3000, HM-LAN, CUL868, RFXtrx433, LGW, DMX @Ubuntu-Server (Hauptsystem) & Raspberry Pi (Satellit)

kaihs

'storage' sind Speicher für Messwerte. Nummer 0 sind meist die aktuellen Messwerte, die anderen z. B. der letzte Monats- oder Tagesstand.
Welche storage was enthält hängt vom Zähler ab, wenn vorhanden steht das meist in der Dokumentation des Herstellers.
Banana Pi, Add-On Board mit 1.8" TFT LCD und IR-Sender, CULFW V1.61, div. Homematic Komponenten, Pollin Funksteckdosen, Selbstbau CUL433 MHz, Jeelink Clone, EC3000
Selbstbau CUL868MHz für Wireless M-Bus, SIGNALduino mit Logilink Temp.-sensoren und Auriol Wetterstation

ext23

#814
Hier mal ein listing wie es aussehen soll (nehme ich mal an...) Man sieht schön den Wert "11" in der Speicher Nummer 0 im Reading 1_storage_no:

Internals:
   CUL_0_MSGCNT 3
   CUL_0_RAWMSG b2644653292969388350830EE7A1E0000000B6E1100004B6E0000004215BA6C5F2C326CFFFF046D1108692BC8D780::-48.5
   CUL_0_RSSI -48.5
   CUL_0_TIME 2019-11-09 08:17:01
   DEF        LSE 88939692 53 8
   DeviceMedium Heat Cost Allocator
   DeviceType 8
   FUUID      5dc21268-f33f-70a7-8bdf-ff76027a9d988072
   IODev      CUL_0
   IdentNumber 88939692
   LASTInputDev CUL_0
   MSGCNT     3
   Manufacturer LSE
   MessageEncoding CUL
   NAME       HZ_Arbeitszimmer
   NR         145
   STATE      11
   TYPE       WMBUS
   Version    53
   addr       LSE_88939692_53_8
   model      LSE_8_53
   READINGS:
     2019-11-09 08:17:01   1_storage_no    0
     2019-11-09 08:17:01   1_type          VIF_HCA
     2019-11-09 08:17:01   1_unit         
     2019-11-09 08:17:01   1_value         11
     2019-11-09 08:17:01   1_value_type    Instantaneous value
     2019-11-09 08:17:01   2_storage_no    1
     2019-11-09 08:17:01   2_type          VIF_HCA
     2019-11-09 08:17:01   2_unit         
     2019-11-09 08:17:01   2_value         0
     2019-11-09 08:17:01   2_value_type    Instantaneous value
     2019-11-09 08:17:01   3_storage_no    1
     2019-11-09 08:17:01   3_type          VIF_TIME_POINT_DATE
     2019-11-09 08:17:01   3_unit         
     2019-11-09 08:17:01   3_value         2018-12-31
     2019-11-09 08:17:01   3_value_type    Instantaneous value
     2019-11-09 08:17:01   4_storage_no    0
     2019-11-09 08:17:01   4_type          VIF_TIME_POINT_DATE
     2019-11-09 08:17:01   4_unit         
     2019-11-09 08:17:01   4_value         invalid: ffffffffffffffff
     2019-11-09 08:17:01   4_value_type    Value during error state
     2019-11-09 08:17:01   5_storage_no    0
     2019-11-09 08:17:01   5_type          VIF_TIME_POINT_DATE_TIME
     2019-11-09 08:17:01   5_unit         
     2019-11-09 08:17:01   5_value         2019-11-09 08:17
     2019-11-09 08:17:01   5_value_type    Instantaneous value
     2019-11-09 08:17:01   LQI             128
     2019-11-09 08:17:01   RSSI            -48.5
     2019-11-09 08:17:01   batteryState    ok
     2019-11-09 08:17:01   decryption_ok   1
     2019-11-09 08:17:01   is_encrypted    0
     2019-11-09 08:17:01   state           no errors
   internal:
Attributes:
   IODev      CUL_0
   room       WMBUS
   stateFormat 1_value


So etwas später sieht es so aus:

Internals:
   CUL_0_MSGCNT 4
   CUL_0_RAWMSG b23446532929693883508E5317A1F0000008B046E00000082046C7F2A16A001FD0C10046D250C692BA73D80::-43.5
   CUL_0_RSSI -43.5
   CUL_0_TIME 2019-11-09 12:37:06
   DEF        LSE 88939692 53 8
   DeviceMedium Heat Cost Allocator
   DeviceType 8
   FUUID      5dc21268-f33f-70a7-8bdf-ff76027a9d988072
   IODev      CUL_0
   IdentNumber 88939692
   LASTInputDev CUL_0
   MSGCNT     4
   Manufacturer LSE
   MessageEncoding CUL
   NAME       HZ_Arbeitszimmer
   NR         145
   STATE      0
   TYPE       WMBUS
   Version    53
   addr       LSE_88939692_53_8
   model      LSE_8_53
   READINGS:
     2019-11-09 12:37:06   1_storage_no    128
     2019-11-09 12:37:06   1_type          VIF_HCA
     2019-11-09 12:37:06   1_unit         
     2019-11-09 12:37:06   1_value         0
     2019-11-09 12:37:06   1_value_type    Instantaneous value
     2019-11-09 12:37:06   2_storage_no    128
     2019-11-09 12:37:06   2_type          VIF_TIME_POINT_DATE
     2019-11-09 12:37:06   2_unit         
     2019-11-09 12:37:06   2_value         2019-10-31
     2019-11-09 12:37:06   2_value_type    Instantaneous value
     2019-11-09 12:37:06   3_storage_no    0
     2019-11-09 12:37:06   3_type          VIF_MODEL_VERSION
     2019-11-09 12:37:06   3_unit         
     2019-11-09 12:37:06   3_value         16
     2019-11-09 12:37:06   3_value_type    Instantaneous value
     2019-11-09 12:37:06   4_storage_no    0
     2019-11-09 12:37:06   4_type          VIF_TIME_POINT_DATE_TIME
     2019-11-09 12:37:06   4_unit         
     2019-11-09 12:37:06   4_value         2019-11-09 12:37
     2019-11-09 12:37:06   4_value_type    Instantaneous value
     2019-11-09 08:17:01   5_storage_no    0
     2019-11-09 08:17:01   5_type          VIF_TIME_POINT_DATE_TIME
     2019-11-09 08:17:01   5_unit         
     2019-11-09 08:17:01   5_value         2019-11-09 08:17
     2019-11-09 08:17:01   5_value_type    Instantaneous value
     2019-11-09 12:37:06   LQI             128
     2019-11-09 12:37:06   RSSI            -43.5
     2019-11-09 12:37:06   batteryState    ok
     2019-11-09 12:37:06   decryption_ok   1
     2019-11-09 12:37:06   is_encrypted    0
     2019-11-09 12:37:06   state           no errors
   internal:
Attributes:
   IODev      CUL_0
   room       WMBUS
   stateFormat 1_value


Warum liefert der jetzt die Storage Nummer 128 mit einer 0? Da haut doch etwas nicht hin oder? Egal ob Wasseruhr oder Heizkostenverteiler. Ist da irgend ein Bit verrutscht?

HM, KNX, FS20, 1-Wire, PanStamp, AVR-NET-IO, EM1000EM, PCA301, EC3000, HM-LAN, CUL868, RFXtrx433, LGW, DMX @Ubuntu-Server (Hauptsystem) & Raspberry Pi (Satellit)

kaihs

Das passt schon. Allerdings sendet der Zähler zwei Telegramme mit abweichendem semantischem Inhalt.
Dann werden jedes mal die Readings überschrieben, obwohl eigentlich die Bedeutung unterschiedlich ist.

Um dieses Problem zu umgehen gibt es das Attribut useVIFasReadingName, setze das mal auf 1.
Dann sollte das Ergebnis so aussehen:

READINGS:
     2019-11-09 17:21:27   0_VIF_HCA_unit 
     2019-11-09 17:21:27   0_VIF_HCA_value 11
     2019-11-09 17:21:27   0_VIF_HCA_value_type Instantaneous value
     2019-11-09 17:22:07   0_VIF_MODEL_VERSION_unit
     2019-11-09 17:22:07   0_VIF_MODEL_VERSION_value 16
     2019-11-09 17:22:07   0_VIF_MODEL_VERSION_value_type Instantaneous value
     2019-11-09 17:22:07   0_VIF_TIME_POINT_DATE_TIME_unit
     2019-11-09 17:22:07   0_VIF_TIME_POINT_DATE_TIME_value 2019-11-09 12:37
     2019-11-09 17:22:07   0_VIF_TIME_POINT_DATE_TIME_value_type Instantaneous value
     2019-11-09 17:21:27   0_VIF_TIME_POINT_DATE_unit
     2019-11-09 17:21:27   0_VIF_TIME_POINT_DATE_value invalid: ffffffffffffffff
     2019-11-09 17:21:27   0_VIF_TIME_POINT_DATE_value_type Value during error state
     2019-11-09 17:22:07   128_VIF_HCA_unit
     2019-11-09 17:22:07   128_VIF_HCA_value 0
     2019-11-09 17:22:07   128_VIF_HCA_value_type Instantaneous value
     2019-11-09 17:22:07   128_VIF_TIME_POINT_DATE_unit
     2019-11-09 17:22:07   128_VIF_TIME_POINT_DATE_value 2019-10-31
     2019-11-09 17:22:07   128_VIF_TIME_POINT_DATE_value_type Instantaneous value
     2019-11-09 17:21:27   1_VIF_HCA_unit 
     2019-11-09 17:21:27   1_VIF_HCA_value 0
     2019-11-09 17:21:27   1_VIF_HCA_value_type Instantaneous value
     2019-11-09 17:21:27   1_VIF_TIME_POINT_DATE_unit
     2019-11-09 17:21:27   1_VIF_TIME_POINT_DATE_value 2018-12-31
     2019-11-09 17:21:27   1_VIF_TIME_POINT_DATE_value_type Instantaneous value
     2019-11-09 17:22:07   batteryState    ok
     2019-11-09 17:22:07   decryption_ok   1
     2019-11-09 17:22:07   is_encrypted    0
     2019-11-09 17:22:07   state           no errors


Dann sieht man auch, dass sich 128 auf den Stand zum 31.10.2019 bezieht, 0 dagegen auf den aktuellen Stand.
Banana Pi, Add-On Board mit 1.8" TFT LCD und IR-Sender, CULFW V1.61, div. Homematic Komponenten, Pollin Funksteckdosen, Selbstbau CUL433 MHz, Jeelink Clone, EC3000
Selbstbau CUL868MHz für Wireless M-Bus, SIGNALduino mit Logilink Temp.-sensoren und Auriol Wetterstation

ext23

Ich glaub ich sehe bei dem M-Bus noch nicht so ganz durch. Ich muss mich da wohl noch ein wenig belesen.
Danke, ich ändere das dann mal. Was bedeutet eigentlich dieses LQI?

/Daniel
HM, KNX, FS20, 1-Wire, PanStamp, AVR-NET-IO, EM1000EM, PCA301, EC3000, HM-LAN, CUL868, RFXtrx433, LGW, DMX @Ubuntu-Server (Hauptsystem) & Raspberry Pi (Satellit)

kaihs

Link Quality Indicator

Im Datenblatt zum Cc1101 Funkchip auf dem CUL ist beschrieben wie dieser ermittelt wird.
Banana Pi, Add-On Board mit 1.8" TFT LCD und IR-Sender, CULFW V1.61, div. Homematic Komponenten, Pollin Funksteckdosen, Selbstbau CUL433 MHz, Jeelink Clone, EC3000
Selbstbau CUL868MHz für Wireless M-Bus, SIGNALduino mit Logilink Temp.-sensoren und Auriol Wetterstation

ext23

Ach das kommt vom 1101, ok, ist mir bei HM etc. bis jetzt nicht aufgefallen, OK.

/Daniel
HM, KNX, FS20, 1-Wire, PanStamp, AVR-NET-IO, EM1000EM, PCA301, EC3000, HM-LAN, CUL868, RFXtrx433, LGW, DMX @Ubuntu-Server (Hauptsystem) & Raspberry Pi (Satellit)

chester4444

#819
Hallo, ich habe einen nanoCUL, v1.67 868Mhz, und lese erfolgreich meinen Wasserzähler (Multical 21, KAM) aus.
7 x kurz, 1 x lang, S/N meines Zählers stimmt mit den empfangenen Daten überein.

bY2C442D2C170935741B168D208F03C841226E1BDFA39B938A7DC9021072E76141BB572D4BFF1D9817F7A7936F298212
bY25442D2C170935741B168D209010C841225C618A22F943674B2F911AA899FABA7979864C73ED8017
bY25442D2C170935741B168D209111C8412220DA9D988341EA402FC7DB77EF0AB32BE833D7D8E98003
bY25442D2C170935741B168D209212C841229499248DB285BC586A951D44FDDD2EAD9CAB1166198505
bY25442D2C170935741B168D209313C84122108F1ABC1919ED280F486D0BC7EAB8980C1BD5C9038012
bY25442D2C170935741B168D209420C84122CDF123BD0991D70054F47001C4D08159454CCE3C9A8012
bY25442D2C170935741B168D209521C8412257F767C8A74B2A00BC8BA783647F952000BFC6F7438012
bY25442D2C170935741B168D209622C841224F8B33D377F4560BB4B332CB9469E50AA16CAC529683FA
bY2C442D2C170935741B168D209723C84122A806AA39352EAF7B218DF0B2E9134E1731D365BB5DDC370C72951AB48021

Mein Wasserversorger hat mir auch ein paar Dateien zu meinem Zähler geschickt (.kem, .xml, usw) und
ich habe auch 16 byte gefunden, die ich als AES key interpretiere, wobei ich mir da jetzt überhaupt nicht sicher bin.

FHEM liefert mir:
LQI     195
RSSI  -132
state   Payload CRC check failed on ELL, wrong AES key?

Wie kann ich nun sicher ausschließen bzw. sicherstellen, dass Pakete und AES zusammenpassen?
Bevor ich meinen Versorger nochmals kontaktiere, möchte ich Fehler auf meiner Seite ausschließen (falsche libs, cpan, fhem, ...)

Danke für Hilfe

kaihs

Zitat von: chester4444 am 17 November 2019, 13:57:02

FHEM liefert mir:
LQI     195
RSSI  -132
state   Payload CRC check failed on ELL, wrong AES key?


Sieht wirklich nach falschem AES Key aus. Allerdings ist der Empfang anscheinend auch sehr schwach (RSSI -132), aber es werden ja Daten empfangen.
Fehlende Module sind es nicht, dann gäbe es eine andere Fehlermeldung.

Evtl. kann ich noch mehr sagen wenn du ein list vom CUL und dem Zähler hier rein stellst.
Banana Pi, Add-On Board mit 1.8" TFT LCD und IR-Sender, CULFW V1.61, div. Homematic Komponenten, Pollin Funksteckdosen, Selbstbau CUL433 MHz, Jeelink Clone, EC3000
Selbstbau CUL868MHz für Wireless M-Bus, SIGNALduino mit Logilink Temp.-sensoren und Auriol Wetterstation

chester4444

ZitatSieht wirklich nach falschem AES Key aus.

ok danke für die Rückmeldung.

ZitatAllerdings ist der Empfang anscheinend auch sehr schwach (RSSI -132), aber es werden ja Daten empfangen.

ich war 2 m vom Zähler entfernt, mehr geht nicht.

ZitatEvtl. kann ich noch mehr sagen wenn du ein list vom CUL und dem Zähler hier rein stellst.

Mach ich gerne, aber was ist ein "list vom CUL und dem Zähler"?

kaihs

Zitat von: chester4444 am 17 November 2019, 19:21:27
Mach ich gerne, aber was ist ein "list vom CUL und dem Zähler"?

Gemeint ist der Befehl list der alle Informationen über ein Device liefert.
Diese Ausgabe kann du dann in code-Tags eingefasst hier posten. Die Code-Tags kannst du z. B. mit dem Button mit dem #-Zeichen über der Textbox bei der Erfassung eines neuen Beitrags einfügen.

Mit list TYPE=CUL|WMBUS bekommst du eine Liste aller relevanten Devices.
Banana Pi, Add-On Board mit 1.8" TFT LCD und IR-Sender, CULFW V1.61, div. Homematic Komponenten, Pollin Funksteckdosen, Selbstbau CUL433 MHz, Jeelink Clone, EC3000
Selbstbau CUL868MHz für Wireless M-Bus, SIGNALduino mit Logilink Temp.-sensoren und Auriol Wetterstation

chester4444

Danke für deine Geduld  :)

hier die Infos zum nanoCUL:
Internals:
   CMDS       ABbCeFfGiKlMRTtVWXx
   Clients    :WMBUS:HMS:CUL_IR:STACKABLE_CC:TSSTACKED:STACKABLE:
   DEF        /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A50285BI-if00-port0@38400 0000
   DeviceName /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A50285BI-if00-port0@38400
   FD         8
   FHTID      0000
   FUUID      5dd022de-f33f-fd92-1f7a-71b55c82e1a90fb7
   MessageEncoding CUL
   NAME       nanoCUL
   NR         15
   PARTIAL   
   RAWMSG     bY25442D2C170935741B168D200E329B422266F11F5997062506C8347BF496B76CB99D052262D087DA
   STATE      Initialized
   TYPE       CUL
   VERSION    V 1.67 nanoCUL868
   initString X21
brc
   nanoCUL_MSGCNT 1196
   nanoCUL_TIME 2019-11-18 20:31:46
   MatchList:
     8:HMS      ^810e04....(1|5|9).a001
     D:CUL_IR   ^I............
     H:STACKABLE_CC ^\*
     J:WMBUS    ^b.*
     M:TSSTACKED ^\*
     N:STACKABLE ^\*
   READINGS:
     2019-11-17 14:33:24   cmds             A B b C e F f G i K l M R T t V W X x
     2019-11-18 20:31:46   state           Initialized
     2019-11-16 17:25:08   version         V 1.67 nanoCUL868
   internal:
     rawMsg     bY25442D2C170935741B168D200E329B422266F11F5997062506C8347BF496B76CB99D052262D087DA
Attributes:
   rfmode     WMBus_C


und hier mein Zähler:
Internals:
   DEF        KAM 74350917 27 22
   DeviceMedium Cold water
   DeviceType 22
   FUUID      5dd0467b-f33f-fd92-821d-a68954489306aaa4
   IODev      nanoCUL
   IdentNumber 74350917
   LASTInputDev nanoCUL
   MSGCNT     1199
   Manufacturer KAM
   MessageEncoding CUL
   NAME       WMBUS_KAM_74350917_27_22
   NR         16
   STATE      Payload CRC check failed on ELL, wrong AES key?
   TYPE       WMBUS
   Version    27
   addr       KAM_74350917_27_22
   model      KAM_22_27
   nanoCUL_MSGCNT 1199
   nanoCUL_RAWMSG bY25442D2C170935741B168D2014519B422214B321F914EF63E8987E25E7C1D9FD511CCACDD18482D9
   nanoCUL_TIME 2019-11-18 20:33:25
   READINGS:
     2019-11-18 20:33:25   LQI             132
     2019-11-18 20:33:25   RSSI            -137
     2019-11-18 20:33:25   state           Payload CRC check failed on ELL, wrong AES key?
   wmbus:
     aeskey     xxxxxxxxxxxxxxxxxxxx
Attributes:
   AESkey     xxxxxxxxxxxxxxxxxxx
   IODev      nanoCUL
   room       WMBUS


PS: ich schicke dir den AES key persönlich, Danke vielmals

chester4444

Soweit ich das nun analysiert habe, verwende ich ziemlich sicher den falschen AES Key.
Ich habe von meinem Wasserversorger ein .kem file bekommen, das
den AES key verschlüsselt enthält. Leider kann ich die Datei nicht entschlüsseln.

ich hab zwar ein java-tool auf https://github.com/weetmuts/wmbusmeters
gefunden, das genau das machen sollte, jedoch fehlt mir das "passwort" zum
Entschlüsseln des .kem files.

Ich werde mal meinen Wasserversorger kontakieren, ob sie mir helfen können.