FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Sebastian84 am 06 Juni 2021, 14:32:47

Titel: [GELÖST]Notify soll nur von November bis Mai
Beitrag von: Sebastian84 am 06 Juni 2021, 14:32:47
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
Titel: Antw:Notify soll nur von November bis Mai
Beitrag von: kadettilac89 am 06 Juni 2021, 15:12:07
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.
Titel: Antw:Notify soll nur von November bis Mai
Beitrag von: MadMax-FHEM am 06 Juni 2021, 15:30:42
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
Titel: Antw:Notify soll nur von November bis Mai
Beitrag 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.
Titel: Antw:Notify soll nur von November bis Mai
Beitrag von: CoolTux am 06 Juni 2021, 20:21:42
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)
Titel: Antw:Notify soll nur von November bis Mai
Beitrag von: TomLee am 07 Juni 2021, 10:46:52
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
Titel: Antw:Notify soll nur von November bis Mai
Beitrag von: TomLee am 07 Juni 2021, 11:01:52
OK,OK, habs oben korrigiert, wenn du im Spiel bist bleib ich trotzdem verunsichert.
Titel: Antw:Notify soll nur von November bis Mai
Beitrag von: TomLee am 07 Juni 2021, 11:41:48
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.
Titel: Antw:Notify soll nur von November bis Mai
Beitrag von: TomLee am 07 Juni 2021, 13:02:16
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.

Titel: Antw:Notify soll nur von November bis Mai
Beitrag von: Sebastian84 am 12 Juni 2021, 07:20:24
Ich habe im Notify über Attribut disabledForIntervall
 "$month > 4 && $month < 12 ausprobiert.
Aber leider klappt das nicht.
Der Notify gibt trotzdem eine pushnaricht raus.
Titel: Antw:Notify soll nur von November bis Mai
Beitrag von: TomLee am 12 Juni 2021, 08:22:28
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'}}
Titel: Antw:Notify soll nur von November bis Mai
Beitrag von: Sebastian84 am 12 Juni 2021, 12:03:43
Leider nicht. Kommt immer noch eine push Nachricht
Titel: Antw:Notify soll nur von November bis Mai
Beitrag von: Sebastian84 am 12 Juni 2021, 12:16:31
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'}}   
Titel: Antw:Notify soll nur von November bis Mai
Beitrag 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)
Titel: Antw:Notify soll nur von November bis Mai
Beitrag von: MadMax-FHEM am 12 Juni 2021, 13:40:21
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
Titel: Antw:Notify soll nur von November bis Mai
Beitrag von: Christoph Morrison am 12 Juni 2021, 14:45:16
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.
Titel: Antw:Notify soll nur von November bis Mai
Beitrag von: Sebastian84 am 13 Juni 2021, 01:56:29
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 "}}
Titel: Antw:Notify soll nur von November bis Mai
Beitrag von: roedert am 13 Juni 2021, 02:12:33
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 "}}
Titel: Antw:Notify soll nur von November bis Mai
Beitrag von: TomLee am 13 Juni 2021, 10:49:56
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
Titel: Antw:[GELÖST]Notify soll nur von November bis Mai
Beitrag von: Sebastian84 am 14 Juni 2021, 00:45:45
Danke hat super geklappt  :)