Moin Moin alle zusammen,
ich habe jetzt seit kurzem mein Fhem am Start und die ersten kleinen Probleme Ideen.
Ich benutze ein HMLan und diverse WifiLights.
Funktioniert auch alles soweit ganz gut.
Meine Idee/Problem:
Ich würde gerne den HUE wert hoch bzw. runter zählen.
Und zwar wenn ich einen HM Schalter Long.* drücke.
Einfach mal +10 und co habe ich schon ausprobiert.
Da wird sicher was mit einem Perl Befehl gehen aber da kenne ich mich leider garnicht aus.
Hoffe auf eure Hilfe .
Grüße Gabel
Hmm... das ist ein bißchen tricky, da du dich dann z.B. im entsprechenden Notify selbst darum kümmern musst, dass dich die Events nicht überrennen, während die den Taster gedrückt hälst. Das ganze wird je nach Last auf dem FHEM auch nicht sonderlich sanft gehen, sondern eher immer ruckelig sein, weil jederzeit ein anderes Event dazwischen kommen kann und dann "deine Schleife" unterbrochen wird.
Ich habe so etwas ähnliches mal für einen Dimmer gemacht, aber wie gesagt, das ist halt eher ruckelig als sanft... Der Trick dabei ist, dass du den Status deiner Schleife in einem Dummy speicherst, mittels dessen du ankommende Events solange ignorierst, bis die Aktion innerhalb des Notifies sicher abgeschlossen ist. Da du das aber nicht sicher weißt, muss du da schätzend rangehen. Da du den HM Schalter nicht mit dem Wifilight peeren kannst, bleibt dir da nur entweder ein notify zu benutzen und die Logik quasi mit Bordmitteln nachzubauen oder das halt eine Funktion in die 99_myUtils.pm auszulagern, was aber meiner Meinung nach auch keine großen Vorteile bringt.
Hier mein Code, mit dem ich mal auf diese Weise das sofortige Wiederausschalten einer Lampe unterdrücke. In diesem Fall habe ich eine Totzeit von 5s festgelegt. Sprich solange ein langer Tastendruck nicht länger als 5s dauert, schaltet das Notify nicht wieder:
DachbodenButton1:Long.* {
my $localStateSteckdoseDachbodenStehlampe = Value("Steckdose_Dachboden_Stehlampe_Sw");
my $localDummyDachbodenButton1 = Value("dummyDachbodenButton1");
Log(3,"Taster $NAME hat $EVENT gesendet");
if (
$localStateSteckdoseDachbodenStehlampe eq "off" &&
$localDummyDachbodenButton1 eq "off") {
fhem("set Steckdose_Dachboden_Stehlampe_Sw on");
fhem("set dummyDachbodenButton1 on");
fhem("define atBlochButton1 at +00:00:05 set dummyDachbodenButton1 off");
}
if (
$localStateSteckdoseDachbodenStehlampe eq "on" &&
$localDummyDachbodenButton1 eq "off") {
fhem("set Steckdose_Dachboden_Stehlampe_Sw off");
fhem("set dummyDachbodenButton1 on");
fhem("define atBlochButton1 at +00:00:05 set dummyDachbodenButton1 off");
}
}
Evtl. ließe sich das noch etwas "stömungsgünstiger" machen, wenn man gleich das ganze Notify per Attribut disable für die Zeit abschaltet, aber das habe ich nicht probiert.
Gruß,
Stephan