Notify mit zeitlicher Bedingung

Begonnen von bmilos, 27 November 2016, 00:30:22

Vorheriges Thema - Nächstes Thema

bmilos

Hi zusammen,

ich habe letztens Push bei Fhem im zusammenhang mit meinem iPhone eingerichtet.

Nun versende ich eine Push-Nachricht sobald die Eingangstür offen ist (Fensterkontakt) dies funktioniert bestens mit:
define EingangstuerNotify notify Tuerkontakt_Eingangstuer:off set pushmsg message "Eingangstür ist offen"

Mein Problem ist, dass ich diese Push-Nachricht eigentlich nur als eine Warnung angedacht habe, dass man die Eingangstür schliessen soll, wenn sie jedes mal kommt ist too much...
Meine Vorstellung wäre es ob man prüfen könnte ob der State off, seit bspw. 10 Sekunden aktiv ist und erst danach eine pushmsg.

Hat jemand eine Idee?

Danke & LG
Raspberry Pi 3, nanoCUL 433, FHEMduino, HMLAN, Homematic, Intertechno, MiLight, MySensor

DeeSPe

Zitat von: bmilos am 27 November 2016, 00:30:22
Hi zusammen,

ich habe letztens Push bei Fhem im zusammenhang mit meinem iPhone eingerichtet.

Nun versende ich eine Push-Nachricht sobald die Eingangstür offen ist (Fensterkontakt) dies funktioniert bestens mit:
define EingangstuerNotify notify Tuerkontakt_Eingangstuer:off set pushmsg message "Eingangstür ist offen"

Mein Problem ist, dass ich diese Push-Nachricht eigentlich nur als eine Warnung angedacht habe, dass man die Eingangstür schliessen soll, wenn sie jedes mal kommt ist too much...
Meine Vorstellung wäre es ob man prüfen könnte ob der State off, seit bspw. 10 Sekunden aktiv ist und erst danach eine pushmsg.

Hat jemand eine Idee?

Danke & LG

Ich würde ein temporäres at definieren:
define EingangstuerNotify notify Tuerkontakt_Eingangstuer:off defmod -temporary atTmp_Eingangstuer_off at +00:00:10 {fhem "set pushmsg message Eingangstür ist offen" if (Value("Tuerkontakt_Eingangstuer") eq "off")}

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

DeeSPe

Oder mit sleep:
define EingangstuerNotify notify Tuerkontakt_Eingangstuer:off {fhem "sleep 10; {fhem \"set pushmsg message Eingangstür ist offen\" if (Value(\"Tuerkontakt_Eingangstuer\") eq \"off\")}"}


Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

bmilos

Hi Dan

mit Sleep überprüft er ja nix und mit dem temp at?

Gruss
Raspberry Pi 3, nanoCUL 433, FHEMduino, HMLAN, Homematic, Intertechno, MiLight, MySensor

DeeSPe

Schaue es Dir bitte genauer an bzw. probiere es aus.
Bei beiden Versionen wird nach 10 Sekunden noch einmal geprüft ob Tuerkontakt_Eingangstuer immer noch off ist und nur dann die Message versendet.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

RadioJames

Hi,

ich überprüfe bei mir mehrere Fenster und Türen. Meine Lösung ist ebenfalls ein temporäres at, das nach einer Stunde zuschlägt und mir eine Mail auf das Smartphone schickt.
Wird das Fenster / die Tür geschlossen, bevor der Timer zuschlägt, wird er gelöscht.

Grüße
James.
There are 10 kind of people. Those who understand binary and those who don't.

DeeSPe

Zitat von: RadioJames am 27 November 2016, 01:10:35
Hi,

ich überprüfe bei mir mehrere Fenster und Türen. Meine Lösung ist ebenfalls ein temporäres at, das nach einer Stunde zuschlägt und mir eine Mail auf das Smartphone schickt.
Wird das Fenster / die Tür geschlossen, bevor der Timer zuschlägt, wird er gelöscht.

Grüße
James.

Löschen wäre doch gar nicht nötig da die Message doch nur versendet wird wenn noch offen ist! ;)
Aber klar, beim close könnte man das at auch wieder löschen.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

RadioJames

Hab vergessen zu erwähnen, dass ich kein großer fhem.cfg Fan bin und daher das Meiste in Perl Modulen realisiert habe.
Ich lasse mir nur die Ereignisse open/closed per notify weitermelden.
Klar hast du Recht, wenn man beim Auslösen des ats nochmal den Zustand prüfen würde, kann man den Timer Laufen lassen. Aber abgelaufener Timer heißt bei mir -> Mail raus.
Und ein gekiller Timer belastet das System nicht mehr.

Grüße James

There are 10 kind of people. Those who understand binary and those who don't.

bmilos

Hi

Vielen Dank es funktioniert bestens mit:
define EingangstuerNotify notify Tuerkontakt_Eingangstuer:off defmod -temporary atTmp_Eingangstuer_off at +00:00:10 {fhem "set pushmsg message 'Eingangstür ist offen'" if (Value("Tuerkontakt_Eingangstuer") eq "off")}

Musste noch die Anführungszeichen anpassen.
'Eingangstür ist offen'

Kann mir jemand noch weiterhelfen,wie im gleichen Notify an zwei Empfänger schicken kann?
Ich habe ein Structure auf pushmsg erstellt mit zwei Usern, aber es bekommt es immer nur ein Empfänger wahrscheinlich wegen den atTmp
2016.11.27 02:16:28 3: EingangstuerNotify return value: atTmp_Eingangstuer_off already defined, delete it first
Raspberry Pi 3, nanoCUL 433, FHEMduino, HMLAN, Homematic, Intertechno, MiLight, MySensor

Benni

Ansonsten wäre das für diesen Einzelfall eigentlich eine klassische Watchdog-Situation:

Ein Ereignis tritt auf (Tür wird geöffnet). Wenn innerhalb von Zeitspanne x (10 Sekunden) kein 2. Ereignis auftritt (Tür wird geschlossen), dann mach was (Meldung).

Und hier noch der Verweis auf (m)eine ;) mögliche, allgemeine Lösung für die Fenster- und Tür-Meldungen, die aber auch mit temporären at arbeitet: https://forum.fhem.de/index.php/topic,36504.0.html