AES und Virtuelle Entities

Begonnen von destogl, 23 Februar 2017, 19:15:45

Vorheriges Thema - Nächstes Thema

destogl

Hallo zusammen,

Diese Thema habe ich auch beim Treffen in Karlsruhe angefragt und da viele nicht genau verstanden haben, was ich möchte hier noch einmal alles mit zusätzliche Details.

Szenario: Schalten von FHEM-Aktionen wenn einen HomeMatic Taster betätigt wird. Dabei ist das Problem eine sichere (AES-Signierte) und zuverlässige Kommunikation zu haben.

Test Umgebung:

Vorgehen:

1. Peeren einen Reellen Kannal zu einem Kanal vom Virtuelle CCU (funktioniert wie erwartet)
set HM_XXXXXX_Btn_01 peerChan 0 HM_VCCU_Btn20 single set

2. Provozieren AES-Signierung Fehler:

attr VCCU hmKey geheimerSchluessel
set HM_XXXXXX assignHmKey
set HM_XXXXXX_Btn_01 sign on
set HM_XXXXXX_Btn_01 regSet expectAES on HM_VCCU_Btn20


Fernbedienung leuchtet Rot da AES wird nicht bestätigt. Allerdings hier passiert eine unerwartete Verhalten: Trotz Fehler HM_XXXXXX_Btn_01 ändert eigene Zustand, Short-Drucken wird immer als neue State-Dargestellt und für Long kommt Zähler bis 3. Bei HM_VCCU_Btn20 ändert sich trigLast Zustand. Was sich nicht ändert ist trig_aes_*.

Frage: Ist das hier richtige/erwartete Verhalten, nur ich habe es nicht verstanden? Bedeutet das, dass man immer trig_aes_* auswerten soll?

3. AES-Richtig Konfigurieren (Setzen aesCommReq-Attribute):

attr HM_VCCU_Btn20 aesCommReq 1
attr HM_XXXXXX aesCommReq 1
attr HM_XXXXXX_Btn_01 aesCommReq 1


Alles Funktioniert wie erwartet.

4. Definiere Anderen Virtuellen-Gerät mit einem Kanal:

define virtualAktor CUL_HM 11223344
set virtualAktor virtual 1
attr virtualAktor aesCommReq 1
attr virtualAktor_Btn1 aesCommReq 1


5. Peeren mit einem Reellen Kanal und AES (Funktioniert nicht):

set HM_XXXXXX_Btn_07 peerChan 0 virtualAktor_Btn1 single set
set HM_XXXXXX_Btn_07 sign on
set HM_XXXXXX_Btn_07 regSet expectAES on virtualAktor_Btn1
attr HM_XXXXXX_Btn_07 aesCommReq 1


Hier leuchtet Fernbedienung immer Rot. Ich habe inzwischen mehrere Einstellung ausprobiert, aber leider keine Richtige gefunden. Nach kurzen Blick ins Code scheint wie das, dass hier nicht implementiert ist, bzw. dass AES-Antwort wird in diesem Fall nicht berechnet und verschickt.

Bemerkung: Vielleicht ist mein Ansatz komplett Falsch, falls ja bitte korrekte/bessere Ansatz beschreiben.

Danke!