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
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
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
Hallo Patrick,
kannst du die rohmessages aufzeichnen, wenn du den Button drückst?
Gruss Martin
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
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
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
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