Fenster offen -> nach 10 min. Mail

Begonnen von Charles, 27 November 2013, 16:44:54

Vorheriges Thema - Nächstes Thema

ThorstenH

Hier ist das vollständige define:


define watchdog_window_open_threestatesensor_kueche_fenster_links watchdog threestatesensor_kueche_fenster_links:open 00:30:00 threestatesensor_kueche_fenster_links:closed  {\
  system("/volume1/addons/fhem/bin/sendmail.sh", "Kuechenfenster ist offen!", "Das linke Kuechenfenster ist offen.");;\
  fhem("setstate watchdog_window_open_threestatesensor_kueche_fenster_links defined");;\
}
attr watchdog_window_open_threestatesensor_kueche_fenster_links regexp1WontReactivate


Nur meinen Mailversand mache ich mit einem bash skript.

Charles

Hallo ThorstenH,

habe die zusätzliche Zeile für mich angepasst und eingebaut. Werde ich morgen mal testen.
Danke für die Hilfe!

Charles
Raspberry · FB 7590 · CUL · FS20 · MAX · ESP

strauch

Funktioniert das eigtl. auch mit FHTTK Fenster Sensoren, die melden ja regelmäßig offen, aber mit der Variablen: regexp1WontReactivate sollte das doch dann einfach ignoriert werden oder? Macht da eine Schleife Sinn die das abfängt. Ich hab sowohl HM als auch FHT TürFensterkontakte und ich bastel gerade an einer Lösung für beides. Ich glaube sowas wäre auch mal im Wiki gut, die da drin ist, ist schon sehr umständlich.

Ich teste das heute Abend mal mit meinen HM Sensoren.
FHEM 5.6 VMware mit Debian. 1 CUL für FS20 und HMLAN für Homematic, HM-CC-RT-DN, HM-LC_Sw1PBU-FM, HM-LC-Bl1PBU-FM,  HM-SEC-SC, HM-SEC-SC-2, HM-LC-Sw1-Pl2, HM-Sec-RHS, ASH2200, FHT80B, S20KSE, Sonos, XBMC, FB_Callmonitor, SMLUSB, Arduino Firmata, uvm.

strauch

#18
Ich hab gestern Abend mal ein wenig gebastelt. Es funktioniert, aber es gibt 2 Dinge die mich an dem Code wundern, vielleicht kann da noch mal jemand drauf schauen.

Ich hab eine Variante für HM-SEC-SC und eine für FHTTK:

define watchdog_hm_Fenster watchdog hm_Fenster:open 00:30 hm_Fenster:closed {\
eMail('email@adresse.de','FHEM: Fenster zu lange offen','Homematic Fenster zu lange offen');;\\
fhem('setstate watchdog_hm_Fenster defined');;\\
}
attr watchdog_hm_Fenster regexp1WontReactivate 1


define watchdog_fhttk_Fenster watchdog fhttk_Fenster:Window:.Open 00:30 fhttk_Fenster:Window:.Closed {\
eMail('email@adresse.de','FHEM: Fenster zu lange offen','FHTTK Fenster zu lange offen');;\\
fhem('setstate watchdog_fhttk_Fenster defined');;\\
}
attr watchdog_fhttk_Fenster regexp1WontReactivate 1


Warum brauche ich hier kein doppeltes @ in der Mailadresse? Und warum klappt das obwohl ich keinerlei ; gesetzt habe? Müsste das nicht am ende einer Funktion? Ich will aber auch keine Zeichen setzten die unnötig sind. Kann das vielleicht noch jemand für das MAX System anpassen, muss es da vielleicht wie bei HM sein nur opened heißen?

Für Max:

define watchdog_max_Fenster watchdog max_Fenster:opened 00:30 max_Fenster:closed {\
eMail('email@adresse.de','FHEM: Fenster zu lange offen','MAX! Fenster zu lange offen');;\\
fhem('setstate watchdog_max_Fenster defined');;\\
}
attr watchdog_max_Fenster regexp1WontReactivate 1


Dann würde ich die E-Mail verschicken noch in eine Funktion auslagern für die myUtils Datei, dann brauch man die nicht für jeden Watchdog einzeln definieren. Und dann würde ich das ganze mal für das Wiki aufbereiten.
FHEM 5.6 VMware mit Debian. 1 CUL für FS20 und HMLAN für Homematic, HM-CC-RT-DN, HM-LC_Sw1PBU-FM, HM-LC-Bl1PBU-FM,  HM-SEC-SC, HM-SEC-SC-2, HM-LC-Sw1-Pl2, HM-Sec-RHS, ASH2200, FHT80B, S20KSE, Sonos, XBMC, FB_Callmonitor, SMLUSB, Arduino Firmata, uvm.

extraem

Hallo

ich hätte jetzt gerne noch eine Benachrichtigung wenn das Fenster wieder geschlossen wurde (wenn es zuvor länger als x offen war)

Reicht es wenn ich den Befehl von open auf closed und umgekehrt ändere

justme1968

man muss den watchdog wieder reaktivieren.

normalerweise macht man das mit trigger <watchdog> . am ende der routine die ausgeführt werden soll.

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

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

extraem

mein watchdog zur Meldung nach 20 Minuten Fenster offen sieht so aus

define fenster_offen_badog watchdog OG_BAD_WS:offen 00:20 OG_BAD_WS:geschlossen {\
prowl('Bad OG Fenster steht noch offen!','Bad OG Fenster steht noch offen!') \
fhem('setstate fenster_offen_badog defined');;\
}
attr fenster_offen_badog regexp1WontReactivate 1


und was brauche ich damit ich eine Meldung bekomme wenn das Fenster wieder geschlossen wird

Charles

Hallo,

mein Skript sieht genauso aus und es funktioniert hervorragend. Hab heute das Fenster ganz vergessen. Da kamen dann stündlich Erinnerungsmails.
Warum die dann stündlich kamen, weiss ich nicht.
trigger <watchdog> ist bei mir anscheinend nicht nötig. Wahrscheinlich genügt der setstate-Befehl den watchdog zu reaktivieren

Zum Fenster_zu Mail Problem würde ich sagen, Du schreibst dir einen extra watchdog oder ein notify für "Fenster schliessen".

Charles
Raspberry · FB 7590 · CUL · FS20 · MAX · ESP

strauch

Zitat von: extraem am 27 Dezember 2013, 17:54:17
und was brauche ich damit ich eine Meldung bekomme wenn das Fenster wieder geschlossen wird

ein notify nur genau andersherum


[code]define fenster_geschlossen_notify notify OG_BAD_WS:geschlossen  {\
prowl('Bad OG Fenster ist jetzt geschlossen!','Bad OG Fenster ist wieder geschlossen!'); \
}
FHEM 5.6 VMware mit Debian. 1 CUL für FS20 und HMLAN für Homematic, HM-CC-RT-DN, HM-LC_Sw1PBU-FM, HM-LC-Bl1PBU-FM,  HM-SEC-SC, HM-SEC-SC-2, HM-LC-Sw1-Pl2, HM-Sec-RHS, ASH2200, FHT80B, S20KSE, Sonos, XBMC, FB_Callmonitor, SMLUSB, Arduino Firmata, uvm.

extraem

das hatte ich schon versucht aber da bekomme ich alle 30 s eine Nachricht das das Fenster geschlossen ist auch wenn es zuvor gar nicht offen war

Gibt es keine Lösung bei der nur eine Nachricht kommt und auch nur dann wenn sich der Status von offen auf geschlossen ändert

Danke

justme1968

genau dafür ist watchdog da. eventuell auch threshold wenn du etwas für beide richtungen suchst.

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

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

c2j2

Besser spät als garnicht ;)

a) Merker, ob der Text ausgegeben wurde:

defmod FensterTestStatusWarnung dummy


b) erzeuge ein "at", wenn ein Fenster (beginnen alle mit "Fenster_" bei mir) [ausgenommen Kinderzimmer] geöffnet wird. Jedes Fenster hat bei mir ausserdem einen "comment" mit dem Namen zum Vorlesen. Die Warnung wird 5 mal, alle 5 Minuten, ausgegeben.

defmod di_Fenster_opened DOIF (["^Fenster_(?!kinder):open"] and [Meteo_Temperatur] < 15)     (defmod di_$DEVICE_warnung at +*{5}00:05 setreading FensterTestStatusWarnung $DEVICE 1;;;;set MyTTS tts Das Fenster {(AttrVal("$DEVICE","comment","$DEVICE"))} ist schon seit mindestens 5 Minuten offen)


c) löscht das "at", wenn ein Fenster wieder geschlossen wird, und gibt " Danke" aus, wenn es schon mal gewarnt hat:

defmod di_Fenster_closed DOIF (["^Fenster_:close"] and defined($defs{"di_$DEVICE_warnung"})) (delete di_$DEVICE_warnung, IF ([FensterTestStatusWarnung:$DEVICE] > 0) (setreading FensterTestStatusWarnung $DEVICE 0, set MyTTS tts Danke))


Hat mich ein paar Stunden meines Lebens gekostet ;) Aber über diesen Trick bekommt mal den Check für alle Fenster auf ein Mal.

bioklima

Ich habe diesen Schnipsel auf eine Sonos-Ansage umgebogen. Nach der Warnmeldung über das offene Fenster wird die aktuelle Musik fortgesetzt, nach dem "Danke" jedoch nicht. Ich bekommen nicht heraus, woran das liegt. Vielleicht hat jemand von Euch eine Idee:

define di_Fenster_opened DOIF (["^zwFenster_(?!ELW_Bad):open"] and [netatmo_M02_00_00_02_20_c2:temperature] < 7) (defmod di_$DEVICE_warnung at +*{5}00:05 setreading FensterTestStatusWarnung $DEVICE 1;;;; set Sonos_Wohnzimmer Speak1 45 de-DE Das Fenster {(AttrVal("$DEVICE","comment","$DEVICE"))} ist schon seit mindestens 10 Minuten offen;; set zwSonosWZ_sw on)


define di_zwFenster_closed DOIF (["^zwFenster_(?!ELW_Bad):close"] and defined($defs{"di_$DEVICE_warnung"})) (delete di_$DEVICE_warnung, IF ([FensterTestStatusWarnung:$DEVICE] > 0) (setreading FensterTestStatusWarnung $DEVICE 0, set Sonos_Wohnzimmer Speak1 35 de-DE Danke))

Raspi2B mit FHEM Razberry-ZWave/CUL-FS20 (noch Reste)/Homebridge/Landroid-S, Airupnp(Airplay für Sonos),HueBridge2,...

eddso

#28
Hallo,
habe versucht das nachzubauen leider klappt der at gar nicht:

defmod di_FensterStatusOpened (["^Fenster_:open"] and [_WEATHER:temperature] < 15) (defmod at_$DEVICE_warnung at +*{5}00:05 setreading dm_FensterStatusWarnung $DEVICE 1;;;; set _TELEGRAM send @@eddso36 Das Fenster {(AttrVal("$DEVICE","comment","$DEVICE"))} ist schon seit mindestens 5 Minuten offen)

Value des Readings sieht dann so aus:

1; set _TELEGRAM send @@eddso36 Das Fenster Fenster_HWR ist schon seit mindestens 5 Minuten offen

also es wird nicht als 2 Befehle interpretiert.
Wo liegt das Problem?

Und mal eine generelle Frage: ist es good practices so was mit at zu lösen. Es werden permanent neue at angelegt und gelöscht was die liste 'Last unsaved structural changes:' auf der Seite unter Save Config ? schnell ziemlich lang macht und suggeriert als ob ich was in der Config vergessen habe zu speichern.

Gruß Edu

amenomade

#29
Mach das nicht mit einem at, sondern mit dem "wait" Attribut von DOIF
https://fhem.de/commandref_DE.html#DOIF_wait

Und mit Aggregationsfunktion des DOIFs kannst Du alle auf einmal in einem Nachricht packen.
https://fhem.de/commandref_DE.html#DOIF_aggregation

Alternative im Perl-Modus des DOIFs mit https://fhem.de/commandref_DE.html#DOIF_set_Exec

Alternative über Watchdog.

Das setzen von ATs ist ja doof wegen "save"
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus