FHEM Forum

FHEM - Hausautomations-Systeme => Homematic => Thema gestartet von: Patrick207 am 05 Juni 2014, 17:21:04

Titel: Skripte AES authentifiziert per Fernbedienung ausführen
Beitrag von: Patrick207 am 05 Juni 2014, 17:21:04
Hallo,
seit ein paar Tagen beschäftige ich mich mit der AES-Authentifizierung von HomeMatic Geräten.
Die AES Kommunikation zwischen HMLAN zu verschiedenen Geräten, sowie die direkte Verbindung zwischen Geräten funktioniert auch schon sehr gut.

Eine Sache bereitet mir aber noch etwas Kopfzerbrechen. Ich würde gerne per Fernbedienung ein Skript ausführen, dass ist ja im Grunde kein Problem mit notifys, aber wie kann man da AES einbauen? :(
Die Fernbedienung ist mit dem HMLAN gepaired, die 4-Channels sind mit HMLAN gepeered (für den ACK-Status). In einigen Topics habe ich schon von aesCommReq gelesen, dass funktioniert auch, jedoch wird das Skript auch ausgeführt wenn die AES-Auth failed.
Man müsste irgendwie an den Status ran kommen... Ich habe probiert diesen aus den Registern zu laden, jedoch sind diese Informationen zum Zeitpunkt der Auswertung noch veraltet. Problem ist ja das meine Notifys auf eine Event Signatur reagieren...

Weiß einer von euch einen Weg für mein Problem?
Danke schon mal

Gruß
Patrick
Titel: Antw:Skripte AES authentifiziert per Fernbedienung ausführen
Beitrag von: martinp876 am 05 Juni 2014, 20:30:31
Hallo Patrick

da hast du recht. Da braucht es noch weitere Trigger.

ich habe einmal testhalber den Trigger
trig_aes_<name>: [ok|no]:<msgNo>

eingebaut.
a) das Funktioniert aktuell nur bei ButtonPress bzw. event messages
b) geht natürlich nur bei messages an die "Zentrale".
c) es kommt NACH dem eigentlichen trigger! - in einer 2. message

An c) werde ich noch einmal arbeiten...

b) bedeuted
- richte eine virtulle ccu ein, definieren ein paar Channels
- peere den Button/das Device mit einem der ccu-buttons
- schalte an der remote/device aesComReq ein

dann sollte (morgen nach update) ein neuer trigger kommen.
Am Handling kann sich noch etwas ändern - das Prinzip wird wohl bleiben...

Kommentare /Vorschläge?

Gruss Martin
Titel: Antw:Skripte AES authentifiziert per Fernbedienung ausführen
Beitrag von: Patrick207 am 07 Juni 2014, 00:53:45
Hallo Martin,

erstmal Danke für die schnelle Antwort.

Leider sehe ich keine trig_aes_*-Events.
Ich habe deinen svn commit (R6071) gesehen und ausgecheckt.
Dann hab ich mit:

define ccu CUL_HM 980B45
attr ccu model CCU-FHEM
set ccu virtual 4

eine virtuelle CCU erstellt.
Meine FB mit

set KeyMaticFB_Open peerChan 0 ccu_Btn1 single set

an die virtuelle CCU gebunden. (CMDs_done...)

Das Attribut aesCommReq ist bei der KeyMaticFB auf 1 gesetzt.
Hier das das Event-Log bei einem Tastendruck:

2014-06-07 00:51:56 CUL_HM KeyMaticFB battery: ok
2014-06-07 00:51:56 CUL_HM KeyMaticFB KeyMaticFB_Open Short (to ccu)
2014-06-07 00:51:56 CUL_HM KeyMaticFB_Open Short (to ccu)
2014-06-07 00:51:56 CUL_HM KeyMaticFB_Open trigger: Short_179
2014-06-07 00:51:56 CUL_HM ccu_Btn1 trig_KeyMaticFB_Open: short
2014-06-07 00:51:56 CUL_HM ccu_Btn1 trigLast: KeyMaticFB_Open :short



Gruß
Patrick
Titel: Antw:Skripte AES authentifiziert per Fernbedienung ausführen
Beitrag von: martinp876 am 08 Juni 2014, 15:11:59
Hallo Patrick,

kannst du die rohmessages aufzeichnen, wenn du den Button drückst?
Gruss Martin
Titel: Antw:Skripte AES authentifiziert per Fernbedienung ausführen
Beitrag von: Patrick207 am 08 Juni 2014, 23:09:12
Hallo Martin,
nach dem Tastendruck habe ich folgende Logs:


2014.06.08 23:04:39.845 0: HMLAN_Parse: HMLAN1 R:E268DBF   stat:0000 t:05C2CAD2 d:FF r:FFB7     m:6A A440 268DBF 980B45 04D5
2014.06.08 23:04:40.096 0: HMLAN_Parse: HMLAN1 R:E268DBF   stat:0000 t:05C2CBCD d:FF r:FFB8     m:6A A040 268DBF 980B45 04D5
2014.06.08 23:04:40.346 0: HMLAN_Parse: HMLAN1 R:E268DBF   stat:0000 t:05C2CCC7 d:FF r:FFB6     m:6A A040 268DBF 980B45 04D5



Gruß
Patrick
Titel: Antw:Skripte AES authentifiziert per Fernbedienung ausführen
Beitrag von: martinp876 am 09 Juni 2014, 09:10:46
dann ist es korrekt - da ist kein AES dabei. Noch nicht einmal ein ACK.
980B45 ist deine Zentrale?
kannst du also ein List der vccu und des Buttons schicken, den du gepeert hast?

Du solltest einen Eintrag haben
ccu DEF 980B45
attr ccu aesComReq 1

ccu_Btn1DEF 980B4501
attr ccu_Btn1peerIDs 268D8F04

Nach dem peeren musst du ein save machen - sonst "vergisst" FHEM die einträge der Entities

Titel: Antw:Skripte AES authentifiziert per Fernbedienung ausführen
Beitrag von: Patrick207 am 09 Juni 2014, 12:34:20
Zitat von: martinp876 am 09 Juni 2014, 09:10:46
980B45 ist deine Zentrale?
Das ist die virtuelle CCU. Der HMLAN ist 465FFC.

List VCCU:

Internals:
   DEF        980B45
   IODev      HMLAN1
   NAME       ccu
   NR         104
   STATE      IOs_ok
   TYPE       CUL_HM
   assignedIOs
   channel_01 ccu_Btn1
   channel_02 ccu_Btn2
   channel_03 ccu_Btn3
   channel_04 ccu_Btn4
   channel_05 ccu_Btn5
   Readings:
     2014-06-07 20:34:36   peerList        FB_Small_Btn_01,
     2014-06-07 01:05:59   state           CMDs_done
   Helper:
     mId        FFF0
     rxType     1
     Io:
       newChn
       rxt        0
       p:

         01

         1E
     Mrssi:
       mNo
     Prt:
       bErr       0
       sProc      0
     Q:
       qReqConf
       qReqStat
     Role:
       dev        1
       vrt        1
   Role:
Attributes:
   IODev      HMLAN1
   aesCommReq 1
   autoReadReg 4_reqStatus
   expert     2_full
   model      CCU-FHEM
   subType    virtual
   webCmd     virtual:update


List Virtueller Button der VCCU:
Internals:
   DEF        980B4501
   NAME       ccu_Btn1
   NR         105
   STATE      set_press short
   TYPE       CUL_HM
   chanNo     01
   device     ccu
   peerList   KeyMaticFB_Open,
   Readings:
     2014-06-09 09:47:11   peerList        KeyMaticFB_Open,
     2014-06-07 01:05:59   state           set_press short
     2014-06-09 12:18:27   trigLast        KeyMaticFB_Open :short
     2014-06-07 21:19:19   trig_FB_Small_Btn_01 short
     2014-06-09 12:18:27   trig_KeyMaticFB_Open short
   Helper:
     Role:
       chn        1
       vrt        1
Attributes:
   model      CCU-FHEM
   peerIDs    268DBF04,
   webCmd     press short:press long


List Button der FB:

Internals:
   DEF        268DBF04
   NAME       KeyMaticFB_Open
   NR         103
   STATE      Short (to ccu)
   TYPE       CUL_HM
   chanNo     04
   device     KeyMaticFB
   peerList   ccu_Btn1,
   Readings:
     2014-06-07 00:02:42   CommandAccepted yes
     2014-06-09 12:12:33   R-ccu_Btn1-expectAES off
     2014-06-09 12:12:33   R-ccu_Btn1-peerNeedsBurst off
     2014-06-04 23:04:06   R-dblPress      0 s
     2014-06-04 23:04:06   R-longPress     0.4 s
     2014-06-09 12:18:44   R-sign          off
     2014-06-09 12:21:26   RegL_01:          04:10 08:00 09:00 00:00
     2014-06-09 12:21:27   RegL_04:ccu_Btn1   01:00 00:00
     2014-06-09 12:21:26   peerList        ccu_Btn1,
     2014-06-09 12:18:27   state           Short (to ccu)
     2014-06-09 12:18:27   trigger         Short_231
   Helper:
     peerIDsRaw ,980B4501,00000000
     Role:
       chn        1
     Shadowreg:
Attributes:
   model      HM-RC-Key4-2
   peerIDs    00000000,980B4501,


Hoffe das hilft dir :)

Gruß
Patrick
Titel: Antw:Skripte AES authentifiziert per Fernbedienung ausführen
Beitrag von: martinp876 am 09 Juni 2014, 20:51:57
ah -ja, das hilft. Das ist ein grundsätzliches Verständnissproblem auf deiner Seite. So kann es nicht funktionieren.

eine vccu macht nur sinn, als "Zentrale". Alle IOs die sie benutzt müssen die identische HMId haben. Da deineDevices bereits mit HMLAN (oder besser dessen HMId) gepairt sind solltest du dies als ausgangspunkt nehmen

0) entpeere die obsolete ccu und lösche sie
set KeyMaticFB_Open peerChan 0 ccu_Btn1 single unset
delete ccu


1) richte eine ccu ein, die zu den vorhandenen IOs passt
define ccu CUL_HM 465FFC
attr ccu model  CCU-FHEM
attr ccu IOList  HMLAN1
set ccu virtual 5

jetzt hast du eine ccu, die HMLAN1 als IO nutzt. Aussserdem hat sie 5 Buttons. Die HMId den HMLAN1 "gehört" der CCU solange, bis du diese aus der Liste IOList löschst.

2) setze das IO device der HM-Device-entites auf
attr KeyMaticFB IOgrp ccu:HMLAN1
der Schritt ist optional. Die CCU würde ggf einersatz IO nutzen, wenn HMLAN1 ausgefallen ist und es eine alternative gibt.


Was in deinem Fall  nicht gehen konnte ist, dass du AES vom HMLAN1 bearbeiten lassen willst (der einzige der das kann) aber mit einer ccu peerst. HMLAN kann nicht reagieren, da es die ccu nicht kennt.

Gruss Martin