Guten Morgen,
ich habe noch jede Menge FS20-Dimmer verbaut, will aber jetzt zumindest mal alle Sender auf Homematic umstellen.
Hat jemand eine bessere Lösung, um einen FS20-Dimmer mit einem einzelnen Kanal eines HM-Senders zu steuern (kurz: toggle ein/aus, lang: togglke dimup/dimdown)? Das Problem bei meinem Doif ist, dass man da ruckzuck im LOVF angelangt...:
([HM_Schalter_Btn_05] =~ "Long " and [dimupdown_dummy:state] eq "dimdown")
(set Dimmer_11 dimdown)
DOELSEIF
([HM_Schalter_Btn_05] =~ "LongRelease" and [dimupdown_dummy:state] eq "dimdown")
(set dimupdown_dummy dimup)
DOELSEIF
([HM_Schalter_Btn_05] =~ "LongRelease" and [dimupdown_dummy:state] eq "dimup")
(set dimupdown_dummy dimdown)
DOELSEIF
([HM_Schalter_Btn_05] =~ "Long " and [dimupdown_dummy:state] eq "dimup")
(set Dimmer_11 dimup)
DOELSEIF
([HM_Schalter_Btn_05] =~ "Short" and [Dimmer_11] ne "off")
(set Dimmer_11 off)
DOELSEIF
([HM_Schalter_Btn_05] =~ "Short" and [Dimmer_11] eq "off")
(set Dimmer_11 on)
Danke & Grüße
Martin
Short ist sicher nicht das Problem.
Bei long muss man nun msgs alle paar 100ms verarbeiten. Allein die varianz in der übertragung und der verarbeitung in der zentrale machen probleme. Fs20 kenne ich nicht. Unklar wie man ein kontinuierliches dimmen hinbekommt.
Ich würde versuchen beim ersten long das dimmen zu starten und bei release zu stoppen. Rampe achön flach wegen der delays.
Zitat von: martinp876 am 13 August 2018, 11:01:56
Allein die varianz in der übertragung und der verarbeitung in der zentrale machen probleme.
Mir ist noch nicht ganz klar, ob LOVF durch das Empfangen des dimup/dimdown durch den FS20-CUL entsteht oder durch das kontinuierliche Senden des Schalters an den HM-CUL? Ich vermute nach Lektüre der Wiki-Einträge Ersteres?
ZitatFs20 kenne ich nicht. Unklar wie man ein kontinuierliches dimmen hinbekommt.
Das geht mit meinem DOIF prima, nur dass man eben nach ein paarmal Dimmen ein LOVF bekommt.
ZitatIch würde versuchen beim ersten long das dimmen zu starten und bei release zu stoppen. Rampe achön flach wegen der delays.
Das würde aber die Funklast auch nicht reduzieren, oder?
ZitatMir ist noch nicht ganz klar, ob LOVF durch das Empfangen des dimup/dimdown durch den FS20-CUL entsteht oder durch das kontinuierliche Senden des Schalters an den HM-CUL? Ich vermute nach Lektüre der Wiki-Einträge Ersteres?
es geht um das senden des cul.
https://wiki.fhem.de/wiki/LOVF (https://wiki.fhem.de/wiki/LOVF)
schau mal im eventmonitor, wie oft das doif getriggert wird. und/oder in fhem.log, wie oft gesendet wird.
Im Log sieht das z.B. so aus:
2018.08.13 00:08:51 3: FS20 set Dimmer_11 on
2018.08.13 00:08:51 3: FS20 set Dimmer_11 off
2018.08.13 00:08:51 3: FS20 set Dimmer_11 on
2018.08.13 00:09:20 3: FS20 set Dimmer_11 dimdown
2018.08.13 00:09:20 3: FS20 set Dimmer_11 dimdown
2018.08.13 00:09:21 3: FS20 set Dimmer_11 dimdown
2018.08.13 00:09:21 3: FS20 set Dimmer_11 dimdown
2018.08.13 00:09:21 3: FS20 set Dimmer_11 dimdown
2018.08.13 00:09:22 3: FS20 set Dimmer_11 dimdown
2018.08.13 00:09:22 3: FS20 set Dimmer_11 dimdown
2018.08.13 00:09:23 3: FS20 set Dimmer_11 dimdown
2018.08.13 00:09:28 3: FS20 set Dimmer_11 dimup
2018.08.13 00:09:28 3: FS20 set Dimmer_11 dimup
2018.08.13 00:09:29 3: FS20 set Dimmer_11 dimup
2018.08.13 00:09:29 3: FS20 set Dimmer_11 dimup
2018.08.13 00:09:29 3: FS20 set Dimmer_11 dimup
2018.08.13 00:09:33 3: FS20 set Dimmer_11 dimdown
2018.08.13 00:09:34 3: FS20 set Dimmer_11 dimdown
2018.08.13 00:09:34 3: FS20 set Dimmer_11 dimdown
2018.08.13 00:09:35 3: FS20 set Dimmer_11 dimdown
2018.08.13 00:09:35 3: FS20 set Dimmer_11 dimdown
2018.08.13 00:09:39 3: FS20 set Dimmer_11 off
2018.08.13 00:09:39 3: FS20 set Dimmer_11 on
2018.08.13 00:09:39 3: FS20 set Dimmer_11 off
2018.08.13 00:09:48 3: FS20 set Dimmer_11 dimup
2018.08.13 00:09:48 3: FS20 set Dimmer_11 dimup
2018.08.13 00:09:48 3: FS20 set Dimmer_11 dimup
2018.08.13 00:09:52 3: FS20 set Dimmer_11 dimdown
2018.08.13 00:09:52 3: FS20 set Dimmer_11 dimdown
2018.08.13 00:09:55 3: FS20 set Dimmer_11 dimup
2018.08.13 00:09:56 3: FS20 set Dimmer_11 dimup
2018.08.13 00:09:57 3: FS20 set Dimmer_11 off
2018.08.13 00:09:58 3: FS20 set Dimmer_11 on
2018.08.13 00:09:58 3: FS20 set Dimmer_11 off
2018.08.13 00:10:01 3: FS20 set Dimmer_11 dimdown
2018.08.13 00:10:02 3: FS20 set Dimmer_11 dimdown
2018.08.13 00:10:02 3: FS20 set Dimmer_11 dimdown
2018.08.13 00:10:05 3: FS20 set Dimmer_11 off
2018.08.13 00:10:05 3: FS20 set Dimmer_11 on
2018.08.13 00:10:06 3: FS20 set Dimmer_11 off
2018.08.13 00:10:08 3: FS20 set Dimmer_11 on
2018.08.13 00:10:10 3: FS20 set Dimmer_11 dimup
2018.08.13 00:10:11 3: FS20 set Dimmer_11 dimup
2018.08.13 00:10:11 3: FS20 set Dimmer_11 dimup
2018.08.13 00:10:12 3: FS20 set Dimmer_11 dimup
2018.08.13 00:10:12 3: FS20 set Dimmer_11 dimup
2018.08.13 00:10:13 3: FS20 set Dimmer_11 dimup
2018.08.13 00:10:13 3: CUL_0: Unknown code LOVF, help me!
2018.08.13 00:10:13 3: FS20 set Dimmer_11 dimup
2018.08.13 00:10:13 3: CUL_0: Unknown code LOVF, help me!
Also bei Long 2-3 Mal pro Sekunde.
Eventmonitor checke ich heute Abend.
Guten Morgen,
hier noch die Events für zwei aufeinanderfolgende Long Press:
2018-08-14 08:39:44 readingsGroup rg_battery HM_652E9A.battery:
2018-08-14 08:39:44 CUL_HM HM_652E9A battery: ok
2018-08-14 08:39:44 CUL_HM HM_652E9A HM_652E9A_Btn_05 Long
2018-08-14 08:39:44 DOIF Dimmer_Lichtkugeln_1Button_Doif cmd_event: HM_652E9A_Btn_05
2018-08-14 08:39:44 CUL_HM HM_652E9A_Btn_05 Long 1_71 (to vccu)
2018-08-14 08:39:44 CUL_HM HM_652E9A_Btn_05 trigger: Long_71
2018-08-14 08:39:44 CUL_HM HM_652E9A_Btn_05 trigger_cnt: 71
2018-08-14 08:39:44 readingsGroup rg_battery HM_652E9A.battery:
2018-08-14 08:39:44 CUL_HM HM_652E9A battery: ok
2018-08-14 08:39:44 CUL_HM HM_652E9A HM_652E9A_Btn_05 Long
2018-08-14 08:39:44 DOIF Dimmer_Lichtkugeln_1Button_Doif cmd_event: HM_652E9A_Btn_05
2018-08-14 08:39:45 CUL_HM HM_652E9A_Btn_05 Long 2_71 (to vccu)
2018-08-14 08:39:45 CUL_HM HM_652E9A_Btn_05 trigger: Long_71
2018-08-14 08:39:45 CUL_HM HM_652E9A_Btn_05 trigger_cnt: 71
2018-08-14 08:39:45 readingsGroup rg_battery HM_652E9A.battery:
2018-08-14 08:39:45 CUL_HM HM_652E9A battery: ok
2018-08-14 08:39:45 CUL_HM HM_652E9A HM_652E9A_Btn_05 Long
2018-08-14 08:39:45 DOIF Dimmer_Lichtkugeln_1Button_Doif cmd_event: HM_652E9A_Btn_05
2018-08-14 08:39:45 CUL_HM HM_652E9A_Btn_05 Long 3_71 (to vccu)
2018-08-14 08:39:45 CUL_HM HM_652E9A_Btn_05 trigger: Long_71
2018-08-14 08:39:45 CUL_HM HM_652E9A_Btn_05 trigger_cnt: 71
2018-08-14 08:39:45 readingsGroup rg_battery HM_652E9A.battery:
2018-08-14 08:39:45 CUL_HM HM_652E9A battery: ok
2018-08-14 08:39:45 CUL_HM HM_652E9A HM_652E9A_Btn_05 Long
2018-08-14 08:39:46 DOIF Dimmer_Lichtkugeln_1Button_Doif cmd_event: HM_652E9A_Btn_05
2018-08-14 08:39:46 CUL_HM HM_652E9A_Btn_05 Long 4_71 (to vccu)
2018-08-14 08:39:46 CUL_HM HM_652E9A_Btn_05 trigger: Long_71
2018-08-14 08:39:46 CUL_HM HM_652E9A_Btn_05 trigger_cnt: 71
2018-08-14 08:39:46 readingsGroup rg_battery HM_652E9A.battery:
2018-08-14 08:39:46 CUL_HM HM_652E9A battery: ok
2018-08-14 08:39:46 CUL_HM HM_652E9A HM_652E9A_Btn_05 Long
2018-08-14 08:39:46 DOIF Dimmer_Lichtkugeln_1Button_Doif cmd_event: HM_652E9A_Btn_05
2018-08-14 08:39:46 CUL_HM HM_652E9A_Btn_05 Long 5_71 (to vccu)
2018-08-14 08:39:46 CUL_HM HM_652E9A_Btn_05 trigger: Long_71
2018-08-14 08:39:46 CUL_HM HM_652E9A_Btn_05 trigger_cnt: 71
2018-08-14 08:39:46 readingsGroup rg_battery HM_652E9A.battery:
2018-08-14 08:39:46 CUL_HM HM_652E9A battery: ok
2018-08-14 08:39:46 CUL_HM HM_652E9A HM_652E9A_Btn_05 Long
2018-08-14 08:39:46 DOIF Dimmer_Lichtkugeln_1Button_Doif cmd_event: HM_652E9A_Btn_05
2018-08-14 08:39:46 CUL_HM HM_652E9A_Btn_05 Long 6_71 (to vccu)
2018-08-14 08:39:46 CUL_HM HM_652E9A_Btn_05 trigger: Long_71
2018-08-14 08:39:46 CUL_HM HM_652E9A_Btn_05 trigger_cnt: 71
2018-08-14 08:39:47 readingsGroup rg_battery HM_652E9A.battery:
2018-08-14 08:39:47 CUL_HM HM_652E9A battery: ok
2018-08-14 08:39:47 CUL_HM HM_652E9A HM_652E9A_Btn_05 Long
2018-08-14 08:39:47 DOIF Dimmer_Lichtkugeln_1Button_Doif cmd_event: HM_652E9A_Btn_05
2018-08-14 08:39:47 CUL_HM HM_652E9A_Btn_05 Long 7_71 (to vccu)
2018-08-14 08:39:47 CUL_HM HM_652E9A_Btn_05 trigger: Long_71
2018-08-14 08:39:47 CUL_HM HM_652E9A_Btn_05 trigger_cnt: 71
2018-08-14 08:39:47 readingsGroup rg_battery HM_652E9A.battery:
2018-08-14 08:39:47 CUL_HM HM_652E9A battery: ok
2018-08-14 08:39:47 CUL_HM HM_652E9A CMDs_done
2018-08-14 08:39:47 CUL_HM HM_652E9A HM_652E9A_Btn_05 LongRelease
2018-08-14 08:39:47 DOIF Dimmer_Lichtkugeln_1Button_Doif cmd_event: HM_652E9A_Btn_05
2018-08-14 08:39:47 CUL_HM HM_652E9A_Btn_05 LongRelease 7_71 (to vccu)
2018-08-14 08:39:47 CUL_HM HM_652E9A_Btn_05 trigger: Long_71
2018-08-14 08:39:47 CUL_HM HM_652E9A_Btn_05 trigger_cnt: 71
2018-08-14 08:40:14 readingsGroup rg_battery HM_652E9A.battery:
2018-08-14 08:40:14 CUL_HM HM_652E9A battery: ok
2018-08-14 08:40:14 CUL_HM HM_652E9A HM_652E9A_Btn_05 Long
2018-08-14 08:40:14 DOIF Dimmer_Lichtkugeln_1Button_Doif cmd_event: HM_652E9A_Btn_05
2018-08-14 08:40:14 CUL_HM HM_652E9A_Btn_05 Long 1_72 (to vccu)
2018-08-14 08:40:14 CUL_HM HM_652E9A_Btn_05 trigger: Long_72
2018-08-14 08:40:14 CUL_HM HM_652E9A_Btn_05 trigger_cnt: 72
2018-08-14 08:40:14 readingsGroup rg_battery HM_652E9A.battery:
2018-08-14 08:40:14 CUL_HM HM_652E9A battery: ok
2018-08-14 08:40:14 CUL_HM HM_652E9A HM_652E9A_Btn_05 Long
2018-08-14 08:40:14 DOIF Dimmer_Lichtkugeln_1Button_Doif cmd_event: HM_652E9A_Btn_05
2018-08-14 08:40:14 CUL_HM HM_652E9A_Btn_05 Long 2_72 (to vccu)
2018-08-14 08:40:14 CUL_HM HM_652E9A_Btn_05 trigger: Long_72
2018-08-14 08:40:14 CUL_HM HM_652E9A_Btn_05 trigger_cnt: 72
2018-08-14 08:40:15 readingsGroup rg_battery HM_652E9A.battery:
2018-08-14 08:40:15 CUL_HM HM_652E9A battery: ok
2018-08-14 08:40:15 CUL_HM HM_652E9A HM_652E9A_Btn_05 Long
2018-08-14 08:40:15 DOIF Dimmer_Lichtkugeln_1Button_Doif cmd_event: HM_652E9A_Btn_05
2018-08-14 08:40:15 CUL_HM HM_652E9A_Btn_05 Long 3_72 (to vccu)
2018-08-14 08:40:15 CUL_HM HM_652E9A_Btn_05 trigger: Long_72
2018-08-14 08:40:15 CUL_HM HM_652E9A_Btn_05 trigger_cnt: 72
2018-08-14 08:40:15 readingsGroup rg_battery HM_652E9A.battery:
2018-08-14 08:40:15 CUL_HM HM_652E9A battery: ok
2018-08-14 08:40:15 CUL_HM HM_652E9A HM_652E9A_Btn_05 Long
2018-08-14 08:40:16 DOIF Dimmer_Lichtkugeln_1Button_Doif cmd_event: HM_652E9A_Btn_05
2018-08-14 08:40:16 CUL_HM HM_652E9A_Btn_05 Long 4_72 (to vccu)
2018-08-14 08:40:16 CUL_HM HM_652E9A_Btn_05 trigger: Long_72
2018-08-14 08:40:16 CUL_HM HM_652E9A_Btn_05 trigger_cnt: 72
2018-08-14 08:40:16 readingsGroup rg_battery HM_652E9A.battery:
2018-08-14 08:40:16 CUL_HM HM_652E9A battery: ok
2018-08-14 08:40:16 CUL_HM HM_652E9A HM_652E9A_Btn_05 Long
2018-08-14 08:40:16 DOIF Dimmer_Lichtkugeln_1Button_Doif cmd_event: HM_652E9A_Btn_05
2018-08-14 08:40:16 CUL_HM HM_652E9A_Btn_05 Long 5_72 (to vccu)
2018-08-14 08:40:16 CUL_HM HM_652E9A_Btn_05 trigger: Long_72
2018-08-14 08:40:16 CUL_HM HM_652E9A_Btn_05 trigger_cnt: 72
2018-08-14 08:40:16 readingsGroup rg_battery HM_652E9A.battery:
2018-08-14 08:40:16 CUL_HM HM_652E9A battery: ok
2018-08-14 08:40:16 CUL_HM HM_652E9A HM_652E9A_Btn_05 Long
2018-08-14 08:40:17 DOIF Dimmer_Lichtkugeln_1Button_Doif cmd_event: HM_652E9A_Btn_05
2018-08-14 08:40:17 CUL_HM HM_652E9A_Btn_05 Long 6_72 (to vccu)
2018-08-14 08:40:17 CUL_HM HM_652E9A_Btn_05 trigger: Long_72
2018-08-14 08:40:17 CUL_HM HM_652E9A_Btn_05 trigger_cnt: 72
2018-08-14 08:40:17 readingsGroup rg_battery HM_652E9A.battery:
2018-08-14 08:40:17 CUL_HM HM_652E9A battery: ok
2018-08-14 08:40:17 CUL_HM HM_652E9A HM_652E9A_Btn_05 Long
2018-08-14 08:40:17 DOIF Dimmer_Lichtkugeln_1Button_Doif cmd_event: HM_652E9A_Btn_05
2018-08-14 08:40:17 CUL_HM HM_652E9A_Btn_05 Long 7_72 (to vccu)
2018-08-14 08:40:17 CUL_HM HM_652E9A_Btn_05 trigger: Long_72
2018-08-14 08:40:17 CUL_HM HM_652E9A_Btn_05 trigger_cnt: 72
2018-08-14 08:40:17 readingsGroup rg_battery HM_652E9A.battery:
2018-08-14 08:40:17 CUL_HM HM_652E9A battery: ok
2018-08-14 08:40:17 CUL_HM HM_652E9A CMDs_done
2018-08-14 08:40:17 CUL_HM HM_652E9A HM_652E9A_Btn_05 LongRelease
2018-08-14 08:40:17 DOIF Dimmer_Lichtkugeln_1Button_Doif cmd_event: HM_652E9A_Btn_05
2018-08-14 08:40:17 CUL_HM HM_652E9A_Btn_05 LongRelease 7_72 (to vccu)
2018-08-14 08:40:17 CUL_HM HM_652E9A_Btn_05 trigger: Long_72
2018-08-14 08:40:17 CUL_HM HM_652E9A_Btn_05 trigger_cnt: 72
Es reduziert schon die funklast. Erster long: starte dimmen ( 1 msg)
Weitere long: ignorieren.
Longrelease: stop dim (1 msg)
Das sind 2 msgs für einmal dimmen.
Die funklast des handsenders ist unerheblich.
Da ist was dran, vielen Dank. Allerdings muss ich jetzt erst einmal die Möglichkeiten der FS20-Dimmer richtig studieren, denn im Gegensatz zu den HM-Dimmern gibt es dort anscheinend keinen stop-Befehl, um die Dimmerrampe zu stoppen (reset würde sogar den Hauscode löschen...). Das ist das Instrumentarium, das zur Verfügung steht:
dim06%
dim12%
dim18%
dim25%
dim31%
dim37%
dim43%
dim50%
dim56%
dim62%
dim68%
dim75%
dim81%
dim87%
dim93%
dim100%
dimdown
dimup
dimupdown
off
off-for-timer
on
on-100-for-timer-prev
on-for-timer
on-old-for-timer
on-old-for-timer-prev
ramp-off-time
ramp-on-time
reset
sendstate
timer
toggle
dim
off-till-overnight
on-till
on-till-overnight
blink
off-till
intervals
Da (https://forum.fhem.de/index.php?topic=34828.0) hat mal jemand was gebastelt, bin mir aber noch nicht ganz sicher, ob ich das auf meinen Fall adaptiert bekomme.
EDIT: Man kann die Rampe mit dimup stoppen, ist zwar nicht sehr präzise, aber immerhin...
Zitat von: martinp876 am 14 August 2018, 09:18:38
Weitere long: ignorieren.
Daran scheitern meine Versuche momentan. Ich habe es mal vom DOIF auf ein notify umgestellt (weil ich da schon etwas weiter drin bin, was z.B. Variablen betrifft, mit denen ich bei DOIF noch überhaupt nicht klarkomme). Es soll ein einziges notify für alle 12 FS20-Dimmer sein, die hier derzeit im Einsatz sind, daher das mit der ünereinstimmenden Numerierung der Schalter-Kanäle und der Dimmer:
HM_Switch_Btn_.*:.* {
my $HM_Switch_Nr = substr($NAME,14,2);
my $Dimmer_nummer = "Dimmer_".$HM_Switch_Nr;
my $Ramp_direction = ReadingsVal("dimupdown_dummy", "state", "");
my $Dimmer_state = ReadingsVal($Dimmer_nummer, "state", "");
my $Press_Event = $EVENT;
if ($Press_Event =~ "Long " && $Ramp_direction eq "dimdown") {
fhem("set $Dimmer_nummer dim 0 10")}
elsif ($Press_Event =~ "LongRelease" and $Ramp_direction eq "dimdown") {
fhem("set $Dimmer_nummer dimup");
fhem("set dimupdown_dummy dimup")}
elsif ($Press_Event =~ "LongRelease" and $Ramp_direction eq "dimup") {
fhem("set $Dimmer_nummer dimup");
fhem("set dimupdown_dummy dimdown")}
elsif ($Press_Event =~ "Long " && $Ramp_direction eq "dimup") {
fhem("set $Dimmer_nummer dim100% 10")}
elsif ($Press_Event =~ " Short" && $Dimmer_state ne "off") {
fhem("set $Dimmer_nummer off")}
elsif ($Press_Event =~ " Short" && $Dimmer_state eq "off") {
fhem("set $Dimmer_nummer on")}
}
Das Problem ist, wie gesagt, das beim Long Press ja nach dem ersten Event weitere generiert werden, die die Ramp jedesmal neu starten - und mir nichts eingefallen ist, wie ich die weiteren Long-Events bis zu einem LongRelease ignorieren könnte (außer - für mich - komplizierten Hilfskonstrukten mit weiteren Dummies, die den count hochzählen o.ä.)
Habt Ihr da noch einen Tipp für mich?
Danke & Grüße
Martin
Habs jetzt mit einem weiteren Dummy in der Erprobungsphase. Bis aufs noch etwas abrupte Hochdimmen scheint es zu klappen. Elegant wirkt das auf mich (als Programmierlaie) allerdings nicht wirklich:
HM_Switch_Btn_.*:.* {
my $HM_Switch_Nr = substr($NAME,14,2);
my $Dimmer_nummer = "Dimmer_".$HM_Switch_Nr;
my $Ramp_direction = ReadingsVal("dimupdown_dummy", "state", "");
my $Ramp_active = ReadingsVal("ramp_active_dummy", "state", "");
my $Dimmer_state = ReadingsVal($Dimmer_nummer, "state", "");
my $Press_Event = $EVENT;
if ($Press_Event =~ "Long " && $Ramp_direction eq "dimdown" && $Ramp_active eq "no") {
fhem("set $Dimmer_nummer dim 0 10");
fhem("set ramp_active_dummy yes")}
elsif ($Press_Event =~ "LongRelease" and $Ramp_direction eq "dimdown") {
fhem("set $Dimmer_nummer dimup");
fhem("set dimupdown_dummy dimup");
fhem("set ramp_active_dummy no")}
elsif ($Press_Event =~ "LongRelease" and $Ramp_direction eq "dimup") {
fhem("set $Dimmer_nummer dimup");
fhem("set dimupdown_dummy dimdown");
fhem("set ramp_active_dummy no")}
elsif ($Press_Event =~ "Long " && $Ramp_direction eq "dimup" && $Ramp_active eq "no") {
fhem("set $Dimmer_nummer dim100% 10")}
elsif ($Press_Event =~ " Short" && $Dimmer_state ne "off") {
fhem("set $Dimmer_nummer off")}
elsif ($Press_Event =~ " Short" && $Dimmer_state eq "off") {
fhem("set $Dimmer_nummer on")}
}
Vielleicht kann's ja mal jemand brauchen - hier meine Lösung, um mehrere FS0-Dimmer mit jeweils einem Kanal (d.h. einer einzelnen Taste) eines Homematic-Senders mit einem einzigen notify zu bedienen.
Ausgangspunkt war die Erkenntnis, dass man FS20-Dimmer zwar mit einem entsprechenden DOIF auf einen langen Tastendruck eines HM-Senders durch Dauerfeuer von "dimup" bzw "dimdown" dimmen kann, dann aber das stündliche Funkkontingent nach ein paar Dimmungen aufgebraucht ist und man bei LOVF endet.
Mit meinem Notify wird pro Dimmvorgang nur zweimal gesendet: Einmal, um die Dimmerrampe zu starten, einmal, um sie zu stoppen (etwas mehr natürlich, wenn man die Dimmrichtung umkehren will).
In der Praxis kontrolliert man die Dimmer so:
- Kurzer Tastendruck: Abwechselnd ein/aus
- Langer Tastendruck: Abwechselnd Dimmerrampe heller/dunkler; die Rampenzeit ist im Notify mit 7 Sekunden festgelegt, was man natürlich beliebig ändern kann.
- Taste nach langem Druck loslassen: Stoppen der Dimmerrampe bei aktuellem Wert. Vielleicht kennt ja jemand eine eleganter Weise als (set dimup), um die Rampe zu stoppen. "set timer 0" stoppt die Rampe zwar ohne flackern, erzeugt aber andere Probleme.
Das Notify geht davon aus, dass die FS20-Dimmer als
Dimmer_xx und die Schalter, die einen Dimmer steuern sollen, als
HM_Switch_Btn_xx benannt sind, wobei
xx für eine zweistellige Zahl steht. Die Zahlen bei Schalter und Dimmer korrespondieren, d.h. HM_Switch_Btn_01 steuert Dimmer_01 usw.
Natürlich kann man das Namensschema entsprechend anpassen.
Weiter sind erforderlich:
- Ein Dummy namens dimupdown_dummy mit den Stati dimup und dimdown
- Setzen von event-on-change-reading .* für jeden Kanal, mit dem man schalten will. Hintergrund ist u.a., dass ansonsten einige HM-Sender, wohl gestört durch das FS20-Funkfeuer, pro Tastendruck mehrfach denselben Event senden. Danke an Frank und Otto, die mir bei diesem Problem hier (https://forum.fhem.de/index.php/topic,79912.msg828308.html#msg828308) sehr geholfen haben.
Man kann hier sicher noch einiges verfeinern, etwa trotz fehlendem Rückkanal versuchen zu ermitteln, in welche Richtung die Rampe starten soll usw. Aber für mich reicht's erst einmal so:
HM_Switch_Btn.* {
my $HM_Switch_Number = substr($NAME,14,2);
my $Dimmer_Number = "Dimmer_".$HM_Switch_Number;
my $Ramp_Direction = ReadingsVal("dimupdown_dummy", "state", "");
my $Press_Event = $EVENT;
if ($Press_Event =~ "Long.1_")
{
if ($Ramp_Direction eq "dimdown")
{
fhem "set $Dimmer_Number off 7"
}
else
{
fhem "set $Dimmer_Number dim100% 7"
}
}
if ($Press_Event =~ "LongRelease")
{
fhem "set $Dimmer_Number dimup";
if ($Ramp_Direction eq "dimdown")
{
fhem "set dimupdown_dummy dimup"
}
else
{
fhem "set dimupdown_dummy dimdown"
}
}
if ($Press_Event =~ "trigger: Short_")
{
fhem "set $Dimmer_Number toggle"
}
}