FHEM Forum

FHEM - Hausautomations-Systeme => Homematic => Thema gestartet von: weini am 14 März 2020, 20:00:56

Titel: [gelöst] Alternative FW für HM-LC-SW2PBU-FM / schalten & peeren
Beitrag von: weini am 14 März 2020, 20:00:56
Hallo zusammen!

Ich habe in meiner Küche auf der einen Seite für die Schrankbeleuchtung einen Wandausgang der über den bestehenen Lichtschalter schaltbar ist. An der anderen Wand ist auch ein Schrank mit Schrankbeleuchtung, dort habe ich aber nur eine ungeschaltete Steckdose.
Ich möchte mit meinem Lichtschalter beide Schrankbeleuchtungen schalten.

Nun habe ich mir eine Schaltsteckdose HM-LC-SW1-PL-DN-R1 besorgt und den konventionellen Lichtschalter durch einen HM-LC-SW2PBU-FM ersetzt. Der schaltet auch weiterhin die direkt angschlossene Seite, kann aber nicht den HM-LC-SW1-PL-DN-R1 ansteuern (kein peering vorgesehen).

Als Notlösung habe ich mir mit einem Notify beholfen, aber eigentlich wollte ich genau keine solche Krücke, sondern eine robuste direkte Ansteuerung ohne Zeitverzug.

Nach etwas Recherche habe ich verstanden, dass ich eigentlich eine Mischung aus HM-LC-SW2PBU-FM und HM-RC-2-PBU-FM suche: Zum einen direkt schalten aber zusätzlich auch peering fähig. Gibt es so etwas von HM nicht oder übersehe ich gerade etwas?

LG, weini
Titel: Antw:Suche HM Schaltaktor der schalten UND peeren kann
Beitrag von: MadMax-FHEM am 14 März 2020, 20:08:00
Für den HM-LC-Sw1PBU gibt es eine alternative FW, die kann was du willst: https://wiki.fhem.de/wiki/HM-LC-Sw1PBU-FM_Alternative_Firmware

Habe aber keine Ahnung, ob es auch eine für den von dir verwendeten Aktor gibt...

Gruß, Joachim
Titel: Antw:Suche HM Schaltaktor der schalten UND peeren kann
Beitrag von: weini am 15 März 2020, 09:33:43
Das würde das Problem lösen, nur brauche ich leider einen 2-fach Schalter.
Ich gehe mal auf die Suche, ob es für den HM-LC-SW2PBU-FM auch eine Lösung gibt.
Titel: Antw:Suche HM Schaltaktor der schalten UND peeren kann
Beitrag von: frank am 15 März 2020, 09:42:24
bei hmip aktoren sind die zusätzlich vorhandenen taster wohl grundsätzlich mit externen aktoren peerbar.
jedenfalls soweit ich das "zwischen den zeilen" aus diversen infos rauslesen konnte.
Titel: Antw:Suche HM Schaltaktor der schalten UND peeren kann
Beitrag von: weini am 15 März 2020, 10:33:45
@Frank: Danke dir, aber ich habe bei mir alles auf "classic" und möchte HMIP möglichst vermeiden.

Habe tatsächlich eine custom Firmware für den HM-LC-Sw2PBU-FM gefunden: https://github.com/jp112sdl/Beispiel_AskSinPP/tree/master/examples/HB-LC-Sw2PBU-FM
(https://github.com/jp112sdl/Beispiel_AskSinPP/tree/master/examples/HB-LC-Sw2PBU-FM)Wenn ich es richtig verstehe, dann brauche ich die hier https://github.com/jp112sdl/JP-HB-Devices-addon (https://github.com/jp112sdl/JP-HB-Devices-addon) verlinkte Komponente nicht (ich nutze keine CCU, nur FHEM). Die Frage ist aber, ob die Custom FW durch FHEM unterstützt wird?
Titel: Antw:HM Schaltaktor soll schalten UND peeren / alternative FW für HM-LC-SW2PBU-FM
Beitrag von: weini am 18 März 2020, 14:25:12
Mittlerweile habe ich mir etliches "zusammenrecherchiert".
Die FW konnte ich übersetzen. Ehe ich mich aber an einen Flash wage, hätte ich gerne die Original-FW um diese im Notfall zurückflashen zu können.

Leider finde ich aktuell keinen Weg, die FW für den HM-LC-SW2PBU-FM von der q3 Website herunterzuladen.
Auch https://ccu3-update.homematic.com/firmware/download?cmd=download&serial=0&product=HM-LC-Sw2PBU-FM (https://ccu3-update.homematic.com/firmware/download?cmd=download&serial=0&product=HM-LC-Sw2PBU-FM) läuft ins leere.

Wie bekomme ich denn die Original-FW her?
Und kann ich diese überhaupt zurückflashen, wenn die Custom-FW nicht funktionieren sollte?
Titel: Antw:HM Schaltaktor soll schalten UND peeren / alternative FW für HM-LC-SW2PBU-FM
Beitrag von: weini am 22 März 2020, 11:02:48
Mittlerweile haben ich meinen HM-LC-SW2PBU-FM mit der Custom Firmware am Laufen. Einzig die Statusaktualisierung in FHEM funktioniert noch nicht.

Falls jemand vor dem selben Problem steht, hier ist mein bisheriger Lösungsweg:
$HMConfig::culHmModel{"F336"} = {name=>"HM-LC-Sw2PBU-FM-CustomFW",st=>'custom',cyc=>'',rxt=>'',lst=>'1,3:1p.2p,4:3p.4p',chn=>"Sw:1:2,Btn:3:4"};
$HMConfig::culHmChanSets{"HM-LC-Sw2PBU-FM-CustomFW00"}{fwUpdate} ="<filename>";
$HMConfig::culHmChanSets{"HM-LC-Sw2PBU-FM-CustomFW01"} = $HMConfig::culHmSubTypeSets{"switch"};
$HMConfig::culHmChanSets{"HM-LC-Sw2PBU-FM-CustomFW02"} = $HMConfig::culHmSubTypeSets{"switch"};
$HMConfig::culHmChanSets{"HM-LC-Sw2PBU-FM-CustomFW03"} = $HMConfig::culHmSubTypeSets{"THSensor"};
$HMConfig::culHmChanSets{"HM-LC-Sw2PBU-FM-CustomFW04"} = $HMConfig::culHmSubTypeSets{"THSensor"};
$HMConfig::culHmRegChan{"HM-LC-Sw2PBU-FM-CustomFW01"}  = $HMConfig::culHmRegType{switch};
$HMConfig::culHmRegChan{"HM-LC-Sw2PBU-FM-CustomFW02"}  = $HMConfig::culHmRegType{switch};
$HMConfig::culHmRegChan{"HM-LC-Sw2PBU-FM-CustomFW03"}  = $HMConfig::culHmRegType{remote};
$HMConfig::culHmRegChan{"HM-LC-Sw2PBU-FM-CustomFW04"}  = $HMConfig::culHmRegType{remote};
$customMsg{"HM-LC-Sw2PBU-FM-CustomFW"} = sub {
  my ($msg,$target) = @_;
  return $msg->processRemote if $msg->isRemote;
  return $msg->processSwitchStatus($target) if $msg->isStatus;
  return ();
};

Vielen lieben Dank an alle, die hier so eine tolle Vorarbeit geleistet haben.

Ein Schönheitsfehler ist noch, dass der Status in den Sw-Kanälen nicht korrekt dargestellt wird. Wenn über den Schalter geschaltet wird, dann finden überhaupt keine Aktualisierung statt. Wenn von FHEM aus geschaltet wird, dann bleibt der Status in "set_on" bzw. "set_off" hängen. Ich vermute, dass hier in der HMConfig_AskSinPPCustom.pm ein Fehler ist oder Code fehlt. Es könnte sein, dass ich das "lst=>'1,3:1p.2p,4:3p.4p'" nicht richtig von der Vorlage "umgebaut" habe oder dass in "sub CUL_HM_Parsecustom" noch Code für den HM-LC-SW2PBU-FM ergänzt werden muss.
Vielleicht kann da jemenad mit mehr CUL_HM Background als ich nochmal einen Blick drauf werfen.
Titel: Antw:[gelöst] Alternative FW für HM-LC-SW2PBU-FM / schalten & peeren
Beitrag von: papa am 22 März 2020, 11:14:14
Du musst in der Definition unbedingt "custom" verwenden.

$HMConfig::culHmModel{"F336"} = {name=>"HM-LC-Sw2PBU-FM-CustomFW",st=>'custom',cyc=>'',rxt=>'',lst=>'1,3:1p.2p,4:3p.4p',chn=>"Sw:1:2,Btn:3:4"};


Außerdem musst die die Eventbehandlung noch einfügen - das hier müsste gehen:

$customMsg{"HM-LC-Sw2PBU-FM-CustomFW"} = sub {
  my ($msg,$target) = @_;
  return $msg->processRemote if $msg->isRemote;
  return $msg->processSwitchStatus($target) if $msg->isStatus;
  return ();
};


Wenn das alles funktioniert, dann bitte eine Pull-Request stellen.
Titel: Antw:[gelöst] Alternative FW für HM-LC-SW2PBU-FM / schalten & peeren
Beitrag von: weini am 22 März 2020, 11:29:52
Damit bekomme ich jetzt nur noch einen Kanal angezeigt:

Hier der Code aus HMConfig_AskSinPPCustom.pm:
$HMConfig::culHmModel{"F336"} = {name=>"HM-LC-Sw2PBU-FM-CustomFW",st=>'custom',cyc=>'',rxt=>'',lst=>'1,3:1p.2p,4:3p.4p',chn=>"Sw:1:2,Btn:3:4"};
$HMConfig::culHmChanSets{"HM-LC-Sw2PBU-FM-CustomFW00"}{fwUpdate} ="<filename>";
$HMConfig::culHmChanSets{"HM-LC-Sw2PBU-FM-CustomFW01"} = $HMConfig::culHmSubTypeSets{"switch"};
$HMConfig::culHmChanSets{"HM-LC-Sw2PBU-FM-CustomFW02"} = $HMConfig::culHmSubTypeSets{"switch"};
$HMConfig::culHmChanSets{"HM-LC-Sw2PBU-FM-CustomFW03"} = $HMConfig::culHmSubTypeSets{"THSensor"};
$HMConfig::culHmChanSets{"HM-LC-Sw2PBU-FM-CustomFW04"} = $HMConfig::culHmSubTypeSets{"THSensor"};
$HMConfig::culHmRegChan{"HM-LC-Sw2PBU-FM-CustomFW01"}  = $HMConfig::culHmRegType{switch};
$HMConfig::culHmRegChan{"HM-LC-Sw2PBU-FM-CustomFW02"}  = $HMConfig::culHmRegType{switch};
$HMConfig::culHmRegChan{"HM-LC-Sw2PBU-FM-CustomFW03"}  = $HMConfig::culHmRegType{remote};
$HMConfig::culHmRegChan{"HM-LC-Sw2PBU-FM-CustomFW04"}  = $HMConfig::culHmRegType{remote};
$customMsg{"HM-LC-Sw2PBU-FM-CustomFW"} = sub {
  my ($msg,$target) = @_;
  return $msg->processRemote if $msg->isRemote;
  return $msg->processSwitchStatus($target) if $msg->isStatus;
  return ();
};


Und hier das List vom Device:
Internals:
   DEF        F33617
   FUUID      5e763686-f33f-73da-85ed-4b12723240d4dded
   IODev      hmUART
   LASTInputDev hmUART
   MSGCNT     2
   NAME       Kuch_Lichtschalter
   NOTIFYDEV  global
   NR         515
   NTFY_ORDER 50-Kuch_Lichtschalter
   STATE      CMDs_done
   TYPE       CUL_HM
   channel_01 Kuch_Lichtschalter_Sw_Decke
   hmUART_MSGCNT 2
   hmUART_RAWMSG 0501003816A210F33617D3AA780601000041
   hmUART_RSSI -56
   hmUART_TIME 2020-03-22 11:27:19
   lastMsg    No:16 - t:10 s:F33617 d:D3AA78 0601000041
   protLastRcv 2020-03-22 11:27:19
   protRcv    2 last_at:2020-03-22 11:27:19
   protSnd    2 last_at:2020-03-22 11:27:19
   protState  CMDs_done
   rssi_at_hmUART cnt:2 min:-56 max:-55 avg:-55.5 lst:-56
   rssi_hmUART cnt:1 min:-65 max:-65 avg:-65 lst:-65
   READINGS:
     2020-03-21 18:39:36   CommandAccepted no
     2020-03-21 17:08:38   D-firmware      1.0
     2020-03-21 17:08:38   D-serialNr      PEQ0638046
     2020-03-21 19:49:34   PairedTo        0xD3AA78
     2020-03-21 17:08:45   R-pairCentral   0xD3AA78
     2020-03-21 17:04:31   powerOn         2020-03-21 17:04:31
     2020-03-22 11:27:19   state           CMDs_done
     2020-03-22 11:27:19   trigger         Short_20
     2020-03-22 11:27:19   trigger_cnt     20
   helper:
     BNO        20
     BNOCNT     1
     HM_CMDNR   22
     mId        no
     supp_Pair_Rep 0
     tmplChg    0
     expert:
       def        1
       det        1
       raw        0
       tpl        0
     io:
       newChn     +F33617,00,01,00
       nextSend   1584872839.92489
       rxt        0
       vccu       hm_VCCU
       p:
         F33617
         00
         01
         00
       prefIO:
         hmUART
     mRssi:
       mNo        16
       io:
         hmUART:
           -50
           -50
     prt:
       bErr       0
       sProc      0
       rspWait:
     q:
       qReqConf   
       qReqStat   
     role:
       dev        1
     rpt:
       IO         hmUART
       flg        A
       ts         1584872839.63123
       ack:
         HASH(0x6d88860)
         168002D3AA78F3361700
     rssi:
       at_hmUART:
         avg        -55.5
         cnt        2
         lst        -56
         max        -55
         min        -56
       hmUART:
         avg        -65
         cnt        1
         lst        -65
         max        -65
         min        -65
     tmpl:
Attributes:
   IODev      hmUART
   IOgrp      hm_VCCU:hmUART
   autoReadReg 4_reqStatus
   expert     1_allReg
   firmware   1.0
   group      Licht
   model      HM-LC-Sw2PBU-FM-CustomFW
   room       Küche
   serialNr   PEQ0638046
   subType    no
   webCmd     getConfig:clear msgEvents
Titel: Antw:[gelöst] Alternative FW für HM-LC-SW2PBU-FM / schalten & peeren
Beitrag von: weini am 22 März 2020, 11:57:46
Ok, andere Problemursache:
Global symbol "%customMsg" requires explicit package name (did you forget to declare "my %customMsg"?) at ./FHEM/HMConfig_AskSinPPCustom.pm line 37.

Habe in meiner Installation mal nach "customMsg" ge-grep´d und nichts gefunden. Wo sollte die Struktur denn deklariert sein?
Titel: Antw:[gelöst] Alternative FW für HM-LC-SW2PBU-FM / schalten & peeren
Beitrag von: papa am 22 März 2020, 12:41:32
https://github.com/pa-pa/AskSinPP/blob/46f97d73cbae903f7248943032aaf96cbafd3136/examples/custom/contrib/FHEM/HMConfig_AskSinPPCustom.pm#L8

Deine HMConfig_AskSinPPCustom.pm nicht aktuell ? Sonst immer mal mit nem Neustart probieren, wenn Änderungen in der HMConfig_AskSinPPCustom.pm nicht fuktionieren.
Titel: Antw:[gelöst] Alternative FW für HM-LC-SW2PBU-FM / schalten & peeren
Beitrag von: weini am 22 März 2020, 14:57:19
Irgendwie habe ich tatsächlich einen alten Stand der HMConfig_AskSinPPCustom.pm erwischt. Keine Ahnung wie, unter dem oben angegebenen Link ist die neueste Version.

Mit folgender Ergänzung in der HMConfig_AskSinPPCustom.pm läuft der Schalter jetzt auch in FHEM perfekt:
$HMConfig::culHmModel{"F336"} = {name=>"HM-LC-Sw2PBU-FM-CustomFW",st=>'custom',cyc=>'',rxt=>'',lst=>'1,3:1p.2p,4:3p.4p',chn=>"Sw:1:2,Btn:3:4"};
$HMConfig::culHmChanSets{"HM-LC-Sw2PBU-FM-CustomFW00"}{fwUpdate} ="<filename>";
$HMConfig::culHmChanSets{"HM-LC-Sw2PBU-FM-CustomFW01"} = $HMConfig::culHmSubTypeSets{"switch"};
$HMConfig::culHmChanSets{"HM-LC-Sw2PBU-FM-CustomFW02"} = $HMConfig::culHmSubTypeSets{"switch"};
$HMConfig::culHmChanSets{"HM-LC-Sw2PBU-FM-CustomFW03"} = $HMConfig::culHmSubTypeSets{"THSensor"};
$HMConfig::culHmChanSets{"HM-LC-Sw2PBU-FM-CustomFW04"} = $HMConfig::culHmSubTypeSets{"THSensor"};
$HMConfig::culHmRegChan{"HM-LC-Sw2PBU-FM-CustomFW01"}  = $HMConfig::culHmRegType{switch};
$HMConfig::culHmRegChan{"HM-LC-Sw2PBU-FM-CustomFW02"}  = $HMConfig::culHmRegType{switch};
$HMConfig::culHmRegChan{"HM-LC-Sw2PBU-FM-CustomFW03"}  = $HMConfig::culHmRegType{remote};
$HMConfig::culHmRegChan{"HM-LC-Sw2PBU-FM-CustomFW04"}  = $HMConfig::culHmRegType{remote};
$customMsg{"HM-LC-Sw2PBU-FM-CustomFW"} = sub {
  my ($msg,$target) = @_;
  return $msg->processRemote if $msg->isRemote;
  return $msg->processSwitchStatus($target) if $msg->isStatus;
  return ();
};


Ich aktualisiere jetzt gleich noch meinen obigen Post und dann versuche ich noch, einen Pull-Request hinzubekommen.
@Papa: Nochmals vielen Dank dir!
Titel: Antw:[gelöst] Alternative FW für HM-LC-SW2PBU-FM / schalten & peeren
Beitrag von: papa am 22 März 2020, 20:31:41
Zitat von: weini am 22 März 2020, 14:57:19
Ich aktualisiere jetzt gleich noch meinen obigen Post und dann versuche ich noch, einen Pull-Request hinzubekommen.
@Papa: Nochmals vielen Dank dir!
Danke - Pull-Request ist gemerged