Hilfe bei Zeitgesteuerter Prüfung

Begonnen von errazzor, 12 Oktober 2015, 16:06:58

Vorheriges Thema - Nächstes Thema

errazzor

Hallo,

bin noch neu in Sachen IF- und verschachtelten Abfragen und tue mir noch recht schwer, deswegen bräuchte ich mal etwas Hilfe.

Ich möchte gerne eine Pushover-Nachricht aufs Handy, wenn ein Fenster nach 21.00 Uhr noch geöffnet ist. Die Prüfung soll alle 30 Minuten wiederholt werden und um 08.00 Uhr stoppen.

Mit einer Abwesenheitserkennung habe ich das hinbekommen, aber bei der Uhrzeitprüfung stehe ich völlig auf dem Schlauch.
Mit meinem unten stehenden Beispiel gehe ich über mehrere Dummys - sicherlich ginge das auch einfacher, aber so hab ich es halt hinbekommen.

Abwesenheit:


#
#Alarm Dachfenster.Strasse - wenn abwesend
#
define Alarm.Dachfenster.Strasse dummy
attr Alarm.Dachfenster.Strasse room Hausstatus
define Alarm.Dachfenster.Strasse.An notify Abwesenheit:off { fhem ("set Alarm.Dachfenster.Strasse on") if (Value("Abwesenheit") eq "off" && (Value("Status.Dachfenster.Strasse") eq "on"))}
define Alarm.Dachfenster.Strasse.Aus notify Abwesenheit:on { fhem ("set Alarm.Dachfenster.Strasse off") if (Value("Abwesenheit") eq "on")}


Danach kommt eben noch der Pushover-Teil.

jetzt gilt es, das ganze so umzubauen, dass nicht mehr auf Abwesenheit und Status des Fensters geprüft wird, sondern auf Uhrzeit (21.00 - 08.00) und Status des Fensters.

Kann mich jemand in die richtige Richtung schubsen?

marvin78

Schau dir die Perl-Specials in der commandref an.

Ellert

Schau Dir mal das Modul DOIF an in der deutschen Commandref. Das Modul ist sehr mächtig und macht Perlcode zum großen Teil überflüssig.

define mydoif DOIF ([21:00-08:00] and [+00:30] and [?Fenster] eq "open") (Pushover)
attr mydoif do always


So müsste es etwa aussehen, nicht getestet, bitte die Syntax prüfen.

Hollo

Gegenvorschlag:
- fasse die Fenster in einer structure zusammen
- mache 1 notify für die pushover-Meldung beim Öffnen eines Fensters
- definiere mit "disabledForIntervals" den Zeitraum, in dem die Prüfung/Meldung nicht stattfinden soll
FHEM 6.x auf RPi 3B Buster
Protokolle: Homematic, Z-Wave, MQTT, Modbus
Temp/Feuchte: JeeLink-Clone und LGW mit LaCrosse/IT
sonstiges: Linux-Server, Dreambox, "RSS-Tablet"

SvenJust

Ein weiterer Vorschlag ist das Alarmmodul:
http://www.fhemwiki.de/wiki/Modul_Alarmanlage, konkret: http://www.fhemwiki.de/wiki/Modul_Alarmanlage#Zustandspr.C3.BCfung

Vorteil eine eine komfortable Oberfläche, insbesondere wenn Du weitere Alarmierungen und Benachrichtigungen bauen willst.

VG
Sven
FTUI, Raspberry PI/SSD, CUL CC1101, HMLAN, 10x HM-LC-Bl1PBU-FM, HM-LC-Sw4-WM (KWL Pluggit P300), HM-WDS30-OT2-SM (Sonnensensor), HM-Sec-SCo, LW-12 Wifi LED, CUL Selbstbau nanoCUL 433 (IT), Arduino (S0-Stromverbrauch), OW DS2480 (OWX_ASYNC) 8x DS18B20, MQTT (Fröling P4), MYSENSORS (Roto Rollläden)

errazzor

#5
So, erstmal Danke für die Antworten und die Hilfe.

Mit DOIF habe ich es hinbekommen. Mit den PERL-Specials bin ich bei der fortlaufenden Prüfung innerhalb eines Zeitraums gescheitert. Aber mit DOIF geht es ja wunderbar.
Folgendes habe ich gemacht:


#
#Alarm.Dachfenster.Zeit - nach 21.00 Uhr
#
define Alarm.Dachfenster.Zeit DOIF ([21:30-08:00] and [+00:15] and [HM_3CD481:state] eq "open") (set Alarm.Dachfenster on) DOELSEIF ([21:30-08:00] and [+00:15] and [HM_3CC1A6:state] eq "open") (set Alarm.Dachfenster on)
attr Alarm.Dachfenster.Zeit do always


Zwischen 21.30 und 08.00 wird der dummy "Alarm.Dachfenster" auf "on" gesetzt, wenn eines der Fenster offen ist. Dies wird alle 15 Minuten wiederholt.

Ein weiteres Notify reagiert auf den Alarm-Dummy und sendet dann eine Pushover-Nachricht.

So bequemt man sich dann doch irgendwann von der Couch und macht noch das Dachfenster zu, bevor die Schlafenszeit beginnt ;)

Sind beide Fenster geschlossen, wird auch der Alarm-dummy wieder auf "off" gesetzt.

Structure habe ich mir noch nicht angesehen, werde ich aber noch, vielleicht geht es damit noch einfacher.

Das Alarmmodul sieht auch sehr intressant aus, danke für den Tip. Werde ich mir auch noch anschauen.
Bin momentan dabei alle Fenster mit Sensoren auszustatten. Leider ist der optische Sensor echt teuer, 30€ pro Fenster..das tut schon weh.
Aber mit dem Argument "Sicherheit" steigt auch der WAF ;)