FHEM Forum

FHEM => Automatisierung => Thema gestartet von: Hardlife am 22 Dezember 2015, 21:10:21

Titel: -gelöst- if DEVICE exist -> modify DEVICE
Beitrag von: Hardlife am 22 Dezember 2015, 21:10:21
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
Titel: Antw:if DEVICE exist -> modify DEVICE
Beitrag von: justme1968 am 22 Dezember 2015, 21:16:55
siehe defmod.

gruss
  andre
Titel: Antw:if DEVICE exist -> modify DEVICE
Beitrag von: Hardlife am 22 Dezember 2015, 22:40:07
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
Titel: Antw:-gelöst- if DEVICE exist -> modify DEVICE
Beitrag von: Prof. Dr. Peter Henning am 23 Dezember 2015, 12:07:02
Ist das mit dem Pseudonym "Hardlife" Programm - oder warum steht der Code in einer einzigen Zeile ? 8)

LG

pah