Homematic rfKey Problem

Hallo zusammen,

in meiner Konfig-Datei habe ich den AES-Schlüssel geändert in rfKey = 245C7CE22‬‭E615E09‬‭1B2D6E28F‬‭256091F und bekomme immer den Fehler:

Error: The RF AES key specified in homematicbidcos.conf for communication with your BidCoS devices is not a valid hexadecimal string.

Wenn ich den Schlüssel auf den Vorgabewert rfKey = 00112233445566778899AABBCCDDEEFF setze, gibt es die Fehlermeldung nicht. Auch der Wert rfKey = 00112233445566778899AABBCCDDEE11 wird akzeptiert.

Der oben angegebene Schlüssel ist eindeutig ein richtiger 16 Byte hexadezimal Wert, also müsste da ein Fehler im Code sein, oder?

Installiert habe ich das Ganze auf Raspi 2 mit openhabian und HM-MOD-RPI-PCB.

Auch hier weise ich wieder auf die Forumsformatierfunktionen hin:


Das ist in der Tat komisch… da muss @sathya ran.
Sorry, dass ich dir nicht direkt weiterhelfen kann.

in meiner Konfig-Datei habe ich den AES-Schlüssel geändert in rfKey = 245C7CE22‬‭E615E09‬‭1B2D6E28F‬‭256091F und bekomme immer den Fehler:

Resolved. In der conf-Datei hatte ich den Wert mit falschem Zeichensatz eingefügt (nicht UTF-8), deshalb der Fehler.

2 Likes

Was mich trotzdem wundert, da es sich ja hier nur um ASCII-7 handelt. Eventuell hat sich durch die fehlende BOM irgendwas verhaspelt…

Das Zeichensatzproblem wundert mich ebenfalls etwas, da UTF-8 und ASCII für die HEX-Zeichen identisch sind (bzw. vermutlich sogar für alle Zeichen der Datei). BOM sollte nichts ändern. Aber Hauptsache es klappt jetzt.

Viele Grüße

Sathya

Das kam wohl daher, dass ich auf einem Windows-System mit WinSCP auf meiner Homegear-Installation auf dem Raspi die Konfig-Datei editiert habe und die Zufallszahl vom Windows-Taschenrechner kopiert und in den Editor eingefügt habe. Da kann ich mir vorstellen, dass da “unsichtbare” Sonderzeichen reingekommen sind. Danke für eure Hilfe!

Viel Grüße
Skysurfer-14

Ok, da wäre interessant ob es dann der Zeilenumbruch ^M gewesen ist… Also \r\n im Gegensatz zu \n.

Könnte mit dos2unix behoben werden, wenn es das gewesen sein sollte.

Hey,

Nee, das “\r” kann nicht der Grund sein. Ich mache vor Verarbeitung ein “trim” auf den String. Aber andere Zeichen können das Problem durchaus verursachen. “trim” entfernt “std::isspace” (von http://en.cppreference.com/w/cpp/string/byte/isspace):

  • space (0x20, ’ ')
  • form feed (0x0c, ‘\f’)
  • line feed (0x0a, ‘\n’)
  • carriage return (0x0d, ‘\r’)
  • horizontal tab (0x09, ‘\t’)
  • vertical tab (0x0b, ‘\v’)

Das heißt, alles andere kann das Problem verursachen. Tatsächlich auch ein ausschließliches “\r” (also Mac-typisch), da als Zeilenumbruch ein “\n” erwartet wird.

Viele Grüße

Sathya

1 Like