FHEM Forum

FHEM - Hausautomations-Systeme => Homematic => Thema gestartet von: SolRad am 15 August 2015, 15:26:07

Titel: [gelöst] AES-Key übertragen; war: Statusanzeige initialisieren (HM-OU-LED16)
Beitrag von: SolRad am 15 August 2015, 15:26:07
Hallo *,

ich möchte meine Statusanzeige HM-OU-LED16 initialisieren können. So kann ich mir auch besser merken, was ich einstellen müsste, wenn ich eine neue bekäme.

Leider reagiert die Anzeige nicht so, wie ich es erwarte. Ich würde mich freuen, wenn einer von euch mir erklären würde, woran das liegt.

define HS_EG_FL_Statusanzeige_Geraet CUL_HM XXXXXX
[...]
define HS_EG_FL_Statusanzeige_Led_01 CUL_HM XXXXXX01
[...]
define Notify_HS_EG_FL_Statusanzeige_Geraet_Initialisierung notify Notify_HS_EG_FL_Statusanzeige_Geraet_Initialisierung {\
  my $Statusanzeige_Geraet       = "HS_EG_FL_Statusanzeige_Geraet";;\
  my $Statusanzeige_Helligkeit   = "HS_EG_FL_Statusanzeige_AbsoluteHelligkeit";;\
  my $Statusanzeige_Kanal_Prefix = "HS_EG_FL_Statusanzeige_Led_";;\
  \
  Log 3, "(TR) Info: Gerät $Statusanzeige_Geraet: Register löschen.";;\
  fhem "set $Statusanzeige_Geraet clear all";;\
  \
  Log 3, "(TR) Info: Gerät $Statusanzeige_Geraet: Status wieder einlesen.";;\
  fhem "set $Statusanzeige_Geraet getConfig";;\
  \
  Log 3, "(TR) Info: Gerät $Statusanzeige_Geraet: AES-Key empfangen.";;\
  fhem "set $Statusanzeige_Geraet assignHmKey";;\
  \
  my $Kanalname           = "";;\
  my $Statusanzeige_Kanal = "";;\
  for (my $Kanalnummer = 1;; $Kanalnummer <= 16;; $Kanalnummer++) {\
    $Kanalname           = sprintf ("%%02d", $Kanalnummer);;\
    $Statusanzeige_Kanal = $Statusanzeige_Kanal_Prefix.$Kanalname;;\
    \
    Log 3, "(TR) Info: Kanal $Statusanzeige_Kanal: Register löschen.";;\
    fhem "set $Statusanzeige_Kanal clear all";;\
    \
    Log 3, "(TR) Info: Kanal $Statusanzeige_Kanal: Status wieder einlesen.";;\
    fhem "set $Statusanzeige_Kanal getConfig";;\
    \
    Log 3, "(TR) Info: Kanal $Statusanzeige_Kanal: AES-Signierung einschalten.";;\
    fhem "set $Statusanzeige_Kanal sign on";;\
  }\
  \
  Log 3, "(TR) Info: Gerät $Statusanzeige_Geraet: alle LEDs ansschalten.";;\
  fhem "set $Statusanzeige_Geraet led FFFFFFFF";;\
  \
  Log 3, "(TR) Info: Gerät $Statusanzeige_Geraet: LEDs ganz hell schalten.";;\
  fhem "set $Statusanzeige_Helligkeit 15";;\
}
attr Notify_HS_EG_FL_Statusanzeige_Geraet_Initialisierung room hidden
2015.08.15 14:03:24.184 3: (TR) Info: Gerät HS_EG_FL_Statusanzeige_Geraet: Register löschen.
2015.08.15 14:03:24.187 3: CUL_HM set HS_EG_FL_Statusanzeige_Geraet clear all
2015.08.15 14:03:24.187 3: (TR) Info: Gerät HS_EG_FL_Statusanzeige_Geraet: Status wieder einlesen.
2015.08.15 14:03:24.193 3: CUL_HM set HS_EG_FL_Statusanzeige_Geraet getConfig
2015.08.15 14:03:24.194 3: (TR) Info: Gerät HS_EG_FL_Statusanzeige_Geraet: AES-Key empfangen.
2015.08.15 14:03:24.194 3: CUL_HM set HS_EG_FL_Statusanzeige_Geraet assignHmKey
2015.08.15 14:03:24.194 3: (TR) Info: Kanal HS_EG_FL_Statusanzeige_Led_01: Register löschen.
2015.08.15 14:03:24.194 3: CUL_HM set HS_EG_FL_Statusanzeige_Led_01 clear all
2015.08.15 14:03:24.194 3: (TR) Info: Kanal HS_EG_FL_Statusanzeige_Led_01: Status wieder einlesen.
2015.08.15 14:03:24.195 3: CUL_HM set HS_EG_FL_Statusanzeige_Led_01 getConfig
2015.08.15 14:03:24.195 3: (TR) Info: Kanal HS_EG_FL_Statusanzeige_Led_01: AES-Signierung einschalten.
2015.08.15 14:03:24.195 3: set HS_EG_FL_Statusanzeige_Led_01 sign on : cannot calculate value. Please issue set HS_EG_FL_Statusanzeige_Led_01 getConfig first - invalid
[...]
2015.08.15 14:03:24.208 3: (TR) Info: Kanal HS_EG_FL_Statusanzeige_Led_16: Register löschen.
2015.08.15 14:03:24.208 3: CUL_HM set HS_EG_FL_Statusanzeige_Led_16 clear all
2015.08.15 14:03:24.209 3: (TR) Info: Kanal HS_EG_FL_Statusanzeige_Led_16: Status wieder einlesen.
2015.08.15 14:03:24.209 3: CUL_HM set HS_EG_FL_Statusanzeige_Led_16 getConfig
2015.08.15 14:03:24.209 3: (TR) Info: Kanal HS_EG_FL_Statusanzeige_Led_16: AES-Signierung einschalten.
2015.08.15 14:03:24.209 3: set HS_EG_FL_Statusanzeige_Led_16 sign on : cannot calculate value. Please issue set HS_EG_FL_Statusanzeige_Led_16 getConfig first - invalid
2015.08.15 14:03:24.209 3: (TR) Info: Gerät HS_EG_FL_Statusanzeige_Geraet: alle LEDs ansschalten.
2015.08.15 14:03:24.210 3: CUL_HM set HS_EG_FL_Statusanzeige_Geraet led FFFFFFFF
2015.08.15 14:03:24.210 3: (TR) Info: Gerät HS_EG_FL_Statusanzeige_Geraet: LEDs ganz hell schalten.
2015.08.15 14:03:24.211 3: CUL_HM set HS_EG_FL_Statusanzeige_Geraet ilum 15 0



BTW: Macht mein Ansatz, eine Initialisierungsroutine für die Statusanzeige vorrätig zu haben, überhaupt Sinn?


MfG
SolRad
Titel: Antw:Statusanzeige initialisieren (HM-OU-LED16)
Beitrag von: SolRad am 15 August 2015, 17:22:18
Ich kann mir selbst antworten:  :D

Einige der Befehle werden nicht von alleine ausgeführt, sondern erfordern das Drücken des Anlernknopfes!

Ich glaube, es sindDanach bleiben nämlich weitere Kommandos hängen ("CMDs_processing...").

Es ist durchaus ok, wenn z. B. mehrere Kanäle auf z. B. sign on gesetzt werden und dann abschließend einmal der Anlernknopf gedrückt wird.

Es muss kein vollständiges Pairing durchgeführt werden. FHEM muss nicht mittels "set ZZZ hmPairForSec AA" in den Pair-Modus versetzt werden. Es reicht, die Anlerntaste an der Statusanzeige (>5 Sekunden) zu drücken.

Tipp: Aufpassen, dass eine Funkverbindung besteht.

Was habe ich gelernt?
Es ist gar kein Initialisierungsproblen, sondern eine AES-Besonderheit. Zum Übernehmen des Keys und einer Änderung des Signierungsstatusses muss der Anlernknopf gedrückt werden.
Dieses Vorgehen ist übrigens auch bei anderen Geräten (z. B. pushButton) notwendig.