-gelöst- if DEVICE exist -> modify DEVICE

Begonnen von Hardlife, 22 Dezember 2015, 21:10:21

Vorheriges Thema - Nächstes Thema

Hardlife

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://forum.fhem.de/index.php/topic,23325.0.html
und einigen if-Abfragen meiner Urlaubs-/Anwesenheits-Erkennungs - Dummy-Schalter
Raspi 4B
nanoCUL-868 & 433,JeeLink,milight,Signalduino,GPIO-433er-Sender/Empfänger, GPIO-Infrarot,GSM-Stick für SMS
MAX!-Heizungssteuerung,Intertechno-V1-Steckdosen + V3-Dimmer,"Flamingo FA21RF"-Funk-Rauchmelder
433er-China-Bewegungsmelder,"Voltcraft CO20"-Stick,LaCrosse-Temperatur,Revolt-NC5462

justme1968

hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Hardlife

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,37727.0.html
http://fhem.de/commandref.html#defmod

Nochmals Danke
Raspi 4B
nanoCUL-868 & 433,JeeLink,milight,Signalduino,GPIO-433er-Sender/Empfänger, GPIO-Infrarot,GSM-Stick für SMS
MAX!-Heizungssteuerung,Intertechno-V1-Steckdosen + V3-Dimmer,"Flamingo FA21RF"-Funk-Rauchmelder
433er-China-Bewegungsmelder,"Voltcraft CO20"-Stick,LaCrosse-Temperatur,Revolt-NC5462

Prof. Dr. Peter Henning

Ist das mit dem Pseudonym "Hardlife" Programm - oder warum steht der Code in einer einzigen Zeile ? 8)

LG

pah