Hallo!
Vielleicht eine blöde Frage...
Per Bewegungsmelder wird mir ein Licht eingeschaltet, FALLS Bedingung X und Y erfüllt sind
Gleichzeitig wird mir ein "at"-Device angelegt, welches das Licht nach Zeitspanne Z wieder abschaltet
per modify verlängere ich die Zeitspanne des "at"-Device bei erneuter Bewegungserkennung
Falls eine meiner Bedingungen nicht erfüllt ist, wird das Licht natürlich nicht geschaltet und natürlich auch das "at"-Device NICHT angelegt.
Gibt es eine Möglichkeit, den modify-Befehl mit eine if-Prüfung zu koppeln, um vorher zu prüfen, ob das anzusteuernde "at"-Device überhaupt vorhanden ist?
( if "at"-Device vorhanden -> modify "at"-Device +00:02:00 ) oder so???
Sonst müllt mir das modify den LOG total zu, weil eben das "at"-Device meist nicht vorhanden ist...
Mein jetziger Beispiel-Code (ja, etwas unübersichtlich):
define Garderobe_LED_Stripe_mit_Bewegungsmelder_PIR_4_Vorraum_TAG notify Dummy_PIR_4_Vorraum:motion.* { if ((ReadingsVal("Garderobe_LED_Stripe","state","") eq "off") && ($hms gt "08:30:01" or $hms lt "18:00:00") && (ReadingsVal("Urlaubs_Status_abwesend","state","") eq "NEIN") && (ReadingsVal("Ecomodus_Status","state","") eq "NORMAL") && ((ReadingsVal("Urlaubs_Status_anwesend","state","") eq "JA") || (ReadingsVal("Urlaubs_Status_Mario_alleine_anwesend","state","") eq "JA") || (ReadingsVal("Feiertags_Status","state","") eq "JA") || (ReadingsVal("Freier_Tag_Status","state","") eq "JA") || (ReadingsVal("12_Stunden_Frei_Status","state","") eq "JA") || (ReadingsVal("36_Stunden_Frei_Status","state","") eq "JA") || ($we)) ) { fhem ("set Garderobe_LED_Stripe hsv 319,100,100 ;; define Garderobe_LED_Stripe_mit_Bewegungsmelder_PIR_4_Vorraum_TAG_aus at +00:02:30 set Garderobe_LED_Stripe off") } else {fhem("modify Garderobe_LED_Stripe_mit_Bewegungsmelder_PIR_4_Vorraum_TAG_aus +00:02:30")}}
Handelt sich um eine Kombination von:
http://www.fhemwiki.de/wiki/Trick_der_Woche#Funklast_reduzieren (http://www.fhemwiki.de/wiki/Trick_der_Woche#Funklast_reduzieren)
http://forum.fhem.de/index.php/topic,23325.0.html (http://forum.fhem.de/index.php/topic,23325.0.html)
und einigen if-Abfragen meiner Urlaubs-/Anwesenheits-Erkennungs - Dummy-Schalter
siehe defmod.
gruss
andre
Ahhh, defmod - ein toller Befehl.
Vielen Dank für die schnelle Hilfe. :-)
Konnte das Problem schnell lösen. Eventuell suchen auch andere danach, drum hier mein neuer, funktionierender Code:
define Garderobe_LED_Stripe_mit_Bewegungsmelder_PIR_4_Vorraum_TAG notify Dummy_PIR_4_Vorraum:motion.* { if ((ReadingsVal("Garderobe_LED_Stripe","state","") eq "off") && ($hms gt "08:30:01" or $hms lt "18:00:00") && (ReadingsVal("Urlaubs_Status_abwesend","state","") eq "NEIN") && (ReadingsVal("Ecomodus_Status","state","") eq "NORMAL") && ((ReadingsVal("Urlaubs_Status_anwesend","state","") eq "JA") || (ReadingsVal("Urlaubs_Status_Mario_alleine_anwesend","state","") eq "JA") || (ReadingsVal("Feiertags_Status","state","") eq "JA") || (ReadingsVal("Freier_Tag_Status","state","") eq "JA") || (ReadingsVal("12_Stunden_Frei_Status","state","") eq "JA") || (ReadingsVal("36_Stunden_Frei_Status","state","") eq "JA") || ($we)) ) { fhem ("set Garderobe_LED_Stripe hsv 319,100,100 ;; defmod Garderobe_LED_Stripe_mit_Bewegungsmelder_PIR_4_Vorraum_TAG_aus at +00:02:30 set Garderobe_LED_Stripe off") } else {fhem("defmod Garderobe_LED_Stripe_mit_Bewegungsmelder_PIR_4_Vorraum_TAG_aus at +00:02:30 set Garderobe_LED_Stripe off")}}
Einige Anreize/Beispiele zum Lesen:
http://forum.fhem.de/index.php/topic,36326.0.html (http://forum.fhem.de/index.php/topic,36326.0.html)
http://forum.fhem.de/index.php/topic,37727.0.html (http://forum.fhem.de/index.php/topic,37727.0.html)
http://fhem.de/commandref.html#defmod (http://fhem.de/commandref.html#defmod)
Nochmals Danke
Ist das mit dem Pseudonym "Hardlife" Programm - oder warum steht der Code in einer einzigen Zeile ? 8)
LG
pah