Guten Tag
Ich habe Notifys die nach einer Zeit sagen das noch Türen, Fenster auf sind. Jetzt möchte ich das der Alarm nur von November bis Mai auslöst. Damit nicht immer der Alarm in den Sommermonaten angeht.
Fenster_Bad_EG:open defmod at_Check_Fenster at +00:08:01 {if (Value("Fenster_Bad_EG") eq "open" ) {fhem "set pushmsg msg 'Alarm' 'Fenster Bad EG immer noch auf' 'sebastian' 2 'siren' 30 3600 "}}
Danke schon mal
war so ähnlich schon vor ein paar Tagen hier ...
https://forum.fhem.de/index.php/topic,120665.0.html
per at oder anderen Timer dein Notify auf inaktiv setzen bzw. mit acitve reaktivieren wenn du es wieder brauchst.
Oder beim if zusätzlich abfragen welcher Monat und ob der im gewünschten Bereich ist ;)
https://wiki.fhem.de/wiki/Zeitangaben,_rechnen_mit
Gruß, Joachim
Die beiden technischen Lösungen (per at das notify enablen bzw. disabled oder den Monat per if im notify abfragen), wurden je schon genannt.
Aber der Übersicht halber, habe ich mir für solche Sachen einen Dummy zB Sommerbetrieb anaglegt, der dann im if abgefragt wird. Diesen kann man dann auch noch woanders nutzen und muss nicht an mehrere Stellen ändern.
All diese Dummys sind in einem Settings-Raum zusammengefasst, wo ich diese übersichtlich manuell setzen kann ... oder eben auch automatisiert per at oder DOIF im Sommer/Winter setze.
Zitat von: roedert am 06 Juni 2021, 19:10:01
Die beiden technischen Lösungen (per at das notify enablen bzw. disabled oder den Monat per if im notify abfragen), wurden je schon genannt.
Aber der Übersicht halber, habe ich mir für solche Sachen einen Dummy zB Sommerbetrieb anaglegt, der dann im if abgefragt wird. Diesen kann man dann auch noch woanders nutzen und muss nicht an mehrere Stellen ändern.
All diese Dummys sind in einem Settings-Raum zusammengefasst, wo ich diese übersichtlich manuell setzen kann ... oder eben auch automatisiert per at oder DOIF im Sommer/Winter setze.
Ich würde dieser Lösung den Vorrang geben. Wie erwähnt kann man sowas auch an mehreren Stellen nutzen (z.B. Heizung oder Bewässerung)
Hallo,
in dem Attribut disabledForIntervall kann man auch Perl verwenden.
Ich meine so in der Art sollte ein notify nur in den Monaten Mai bis November aktiv sein:
{ $month = ($month ~~ [5..11]) ? '' : '00:00-24:00'; }
ungetestet
Gruß
Thomas
OK,OK, habs oben korrigiert, wenn du im Spiel bist bleib ich trotzdem verunsichert.
OK,OK, habs oben korrigiert, wenn du im Spiel bist bin ich umso mehr verunsichert dass das mit "nichts" beim Rückgabewert im Attribut nicht klappt.
Wenn das mit "nichts" als Rückgabewert im Attribut klappen sollte (hab ich immer noch nicht ausprobiert und keiner was dazu gesagt) dann gibts hier (https://forum.fhem.de/index.php/topic,121514.msg1161303.html#msg1161303) einen Verbesserungsvorschlag meines Beispiels.
Für einen angepassten Vorschlag zu posten ist mir für heute die Lust vergangen.
Ich habe im Notify über Attribut disabledForIntervall
"$month > 4 && $month < 12 ausprobiert.
Aber leider klappt das nicht.
Der Notify gibt trotzdem eine pushnaricht raus.
attr <notifyname> disabledForIntervall { $month > 4 && $month < 12 ? '00:00-24:00' : ''; }
edit:
Habs eben mal getestet, klappt nicht wie ich mir das vorgestellt hatte.
Der Perl-Code gibt in der Kommandozeile korrekt 00:00-24:00 zurück, schreib ich nur 00:00-24:00 in das Attribut ist das notify deaktiviert.
Es klappt auch nicht so: { if ($month > 4 && $month < 12) {return '00:00-24:00'}}
Leider nicht. Kommt immer noch eine push Nachricht
Internals:
DEF Fenster_Bad_EG:open defmod at_Check_Fenster at +00:08:01 {if (Value("Fenster_Bad_EG") eq "open" ) {fhem "set pushmsg msg 'Alarm' 'Fenster Bad EG immer noch auf' 'sebastian' 2 'siren' 30 3600 "}}
FUUID 6032a805-f33f-cdd4-9486-c07da3cdba705711
NAME Fenster_Bad_EG_zu_lange_auf
NOTIFYDEV Fenster_Bad_EG
NR 247
NTFY_ORDER 50-Fenster_Bad_EG_zu_lange_auf
REGEXP Fenster_Bad_EG:open
STATE 2021-06-12 11:54:33
TRIGGERTIME 1623491673.68811
TYPE notify
READINGS:
2021-06-12 04:00:23 state active
Attributes:
disabledForIntervals { if ($month > 4 && $month < 12) {return '00:00-24:00'}}
Wenn doch eh schon ein if existiert, warum dann nicht einfach dort noch die Monatsabfrage mit rein ... ist auch viel übersichtlicher.
if (Value("Fenster_Bad_EG") eq "open" && $month > 4 && $month < 12)
Zitat von: roedert am 12 Juni 2021, 13:37:02
Wenn doch eh schon ein if existiert, warum dann nicht einfach dort noch die Monatsabfrage mit rein ... ist auch viel übersichtlicher.
if (Value("Fenster_Bad_EG") eq "open" && $month > 4 && $month < 12)
Wurde schon "ignoriert": https://forum.fhem.de/index.php/topic,121506.msg1161162.html#msg1161162 ;)
Gruß, Joachim
Zitat von: CoolTux am 06 Juni 2021, 20:21:42
Ich würde dieser Lösung den Vorrang geben. Wie erwähnt kann man sowas auch an mehreren Stellen nutzen (z.B. Heizung oder Bewässerung)
Sehe ich auch so. Ich habe das Jahr in mehrere Seasons (Winter, Frühling, Sommer, etc.) und den Tag in vier Phasen (Morgen, Tag, Abend, Nacht) geteilt und beide zusammen sind die meist referenzierten Werte in meinem HAB. Hat eben den Vorteil, dass man Logik nur an einem Ort hat und nicht über viele verteilt. Das DaySchedule-Modul hatte das glaube ich auch eingebaut.
Hab mal ausprobiert.
Jetzt bekomme ich keine Meldung mehr.
Aber wenn ich zu Probe das eingebe kommt auch keine Nachricht.
Fenster_Bad_EG:open defmod at_Check_Fenster at +00:08:01 if (Value("Fenster_Bad_EG") eq "open" && $month > 1 && $month < 12) {fhem "set pushmsg msg 'Alarm' 'Fenster Bad EG immer noch auf' 'sebastian' 2 'siren' 30 3600 "}}
Es fehlt eine { vor dem if ....
Im Log müsste auch eine entsprechende Fehlermeldung zu finden sein!
Fenster_Bad_EG:open defmod at_Check_Fenster at +00:08:01 {if (Value("Fenster_Bad_EG") eq "open" && $month > 1 && $month < 12) {fhem "set pushmsg msg 'Alarm' 'Fenster Bad EG immer noch auf' 'sebastian' 2 'siren' 30 3600 "}}
Edit: Außerdem ist && $month > 4 && $month < 12 falsch, du möchtest, ja keine Benachrichtigungen in den Sommermonaten ... es muss also && ($month <= 5 || $month >= 11) heißen.
Fenster_Bad_EG:open defmod at_Check_Fenster at +00:08:01 {if (Value("Fenster_Bad_EG") eq "open" && ($month <= 5 || $month >= 11)) {fhem "set pushmsg msg 'Alarm' 'Fenster Bad EG immer noch auf' 'sebastian' 2 'siren' 30 3600 "}}
Unabhängig welcher Lösung man den Vorrang gibt, hab ich mit disabledForIntervals weiter beschäftigt.
Ich weiß nicht ob die Angabe 24-24 korrekt ist, meine es so zu verstehen das damit das notify immer aktiv ist.
Meine ersten Tests klappen auf jedenfall jetzt so:
attr <notifyname> disabledForIntervals {$month > 4 && $month < 12 ? '00' : '24'; }-24
Danke hat super geklappt :)