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
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
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.
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.
@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?
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?
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:
- Custom FW auf Basis der AskSinPP ist hier verfügbar: 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)
- Hinweis: Diese Custom-FW bietet die Möglichkeit, die Buttons als separate Kanäle mit anderen Aktoren zu peeren. Sie hat aber nicht die Funktion zur Strommessung wie man sie für den Aufbau einer Wechselschaltung braucht. Mir ging es um ersteres, da passte das perfekt! Wenn jemand die Wechselschaltung benötigt, dann gibt es nur für den HM-LC-SW1PBU-FM eine Lösung in dem oben im HM Forum angepinnten Thread. Das ist aber ein anderer Software-Stack.
- Aktuelle Arduino IDE installieren.
- Bibliotheken ergänzen:
AskSinPP hier downloaden: https://github.com/pa-pa/AskSinPP (https://github.com/pa-pa/AskSinPP) und das ZIP als Bibliothek hinzufügen.
"EnableInterrupt" in der Bibliotheksverwaltung aktivieren.
"Low-Power" NICHT einfach aktivieren, sondern über den Link in der Bibliotheksverwaltung von der Github Seite die neueste Version downloaden und als ZIP hinzufügen (mindestens 1.7 ist notwendig). Wenn zuvor die Bibliothek in einer niedrigeren Version aus der Bibliotheksverwaltung installiert wurde, dann diese manuell entfernen (unter Dokumente\Arduino\Libraries das Unterverzeichnis löschen). - Im Sketch ggf. Serial und HMID aktualiseren sowie die Einstellungen unter "Werkzeuge" so vornehmen, wie im Kommentarblock am Anfang des Sketches angegeben.
Bootloader kann unter "Werkzeuge" auf "no" gesetzt werden. - Sketch sollte jetzt fehlerfrei kompilieren
- USPASP Programmer für das Flashen nutzen (vermutliche gehen auch andere, ein einfacher UART geht aber nicht).
Den Programme wie her beschrieben verdrahten: https://github.com/jabdoa2/Asksin_HM_LC_Sw1PBU_FM.
Unter Windows braucht man die usblibK, um den USBASP direkt aus der Arduino IDE nutzen zu können: https://zadig.akeo.ie/
(https://zadig.akeo.ie/). Bei der Installation die richtige Library auswählen. - Achtung: Wenn ihr flasht, dann gibt es keinen Weg zurück zu originalen q3 Firmware.
- Der Sketch kann damit direkt über die Arduino IDE hochgeladen werden. Ihr müsst euch keine Gedanken über Fuses und Bootloader machen. Man kann wohl einen OTA Bootloader installieren, das habe ich aber nicht gemacht, da der Sketch "fertig" entwickelt ist und ich keine Updates erwarten würde.
- Für die Einbindung in FHEM habe ich mich hier bedient: https://github.com/pa-pa/AskSinPP/tree/master/examples/custom/contrib/FHEM (https://github.com/pa-pa/AskSinPP/tree/master/examples/custom/contrib/FHEM)
In HMConfig_AskSinPPCustom.pm fehlt noch die Definition für den HM-LC-SW2PBU-FM. Diese habe ich mit Hilfe von papa wie folgt ergänzt:
$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 habe dabei von dem vorhandenen Code für den HM-LC-Sw2-FM-CustomFW abgekupfert und die Kanäle für den HM-LC-SW2PBU-FM umsortiert.[/li]
- Damit kann der Schalter in FHEM gepairt werden, es können die Peerings mit den Buttons eingerichtet werden und die Switches können geschaltet werden.
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.
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.
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
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?
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.
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!
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