Familie freundlich zum Lüften bewegen

Begonnen von jannis, 26 Februar 2020, 21:57:39

Vorheriges Thema - Nächstes Thema

jannis


Wir haben uns vorgenommen, wernigstens 2x am Tag zu lüften.

Dafür habe ich einen Schalter angelegt, der nach dem Drücken:
1. alle Thermostate runter auf 14°C fährt
2. nach 10 Minuten per 3xKlingelsignal dazu aufruft, alle Fenster zu öffnen
3. nach 5 Minuten geöffneten Fenstern mit einem langgezogenen Klingelsignal zum Schließen der Fenster aufruft
4. und dann die Thermostate wieder auf die Ausgangstemperatur hochfährt.

Klappt super. Nur denken wir da nicht alle 12 Stunden dran, den Schalter zu drücken.
Daher würde ich das gerne überwachen und wenn länger als 12 Stunden nicht gelüftet wurde ein Signal geben.

In Perl habe ich zwar schon gute Fortschritte gemacht, aber ich denke, für meine AUfgabenstellung gibt es eine einfache "FHEM-Lösung" ... nur welche?

Im Eventmonitor erscheint nach dem Drücken des Schalters "Schalter on", der einzige Hinweis, dass gelüftet wurde, denn Fensterkontakte habe ich keine. Aber ich brauche ja eigentlich das Gegenteil: wenn das Event halt nicht kommt. Mit Watchdog war ich bisher nicht erfolgreich.
Ich brauche keine fertige Lösung von Euch ... nur Anregungen, für einen erfolgsversprechenden Weg.
+ + + Gibt es eigentlich hier Smarthome-Enthusiasten aus + + +
Norddeutschland / Nordfriesland / Bredstedt / Husum oder Niebül?

KölnSolar

ZitatDaher würde ich das gerne überwachen und wenn länger als 12 Stunden nicht gelüftet wurde ein Signal geben.
... oder mit einem periodischen at automatisch schalten ?

Ansonsten kannst Du Dir ein at mit jedem Schalten über ein notify auslösen
define act_on_Schalter notify RegExp modify tempSchalter at +12:00 set Klingelsignal on
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

KernSani

Zitat von: jannis am 26 Februar 2020, 21:57:39
Mit Watchdog war ich bisher nicht erfolgreich.
Watchdog wäre eigentlich schon der richtige Ansatz. Poste doch mal, was du schon probiert hast und vielleicht den exakten Eintrag im Event-Log, wenn der Schalter gedrückt wird.
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

KölnSolar

Da hast Du natürlich recht. Ist nur etwas schwerer verständlich, schon alleine wg. dem ominösen "Punkt". ::)

Müsste so funktionieren define DeinWatchdog watchdog schalter:on 12:00:00 schalter:.on trigger DeinWatchdog .; set schalter on
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

jannis

#4
Zitat von: KernSani am 27 Februar 2020, 00:54:45
Watchdog wäre eigentlich schon der richtige Ansatz. Poste doch mal, was du schon probiert hast und vielleicht den exakten Eintrag im Event-Log, wenn der Schalter gedrückt wird.

Im Folgenden habe ich meinen Anwendungsfall auf das Wesentliche reduziert:

defmod Lueften dummy
defmod Sirene dummy
defmod wd_Lueften watchdog . 00:01 Lueften.on set Sirene on; trigger wd_Lueften .
attr Lueften,Sirene,wd_Lueften room Training->Watchdog


Das soll passieren:
Wenn im Eventlog innerhalb von 1 Minute nicht "Lueften on" erscheint, soll die "Sirene on" gestellt werden.
Falls "Lueften on" doch rechtzeitig erscheint, soll der Watchdog sich zurücksetzen und wieder 1 Minute warten, bevor er die Sirene einschaltet, falls nicht rechtzeitig gelüftet wird, ...

Wird also immer rechtzeitig gelüftet, erschallt die Sirene auch nie.

Wir Lüften natürlich nicht 1x pro Minute :) Ist nur zum Testen.

Aber leider passiert nur das:
Schreib ich nach Start des Watchdogs: "set Lueften on" ... passt der Watchdog seine Next:xx:xx Zeit an. Sehr gut! Solange also die Familie rechtzeitig lüftet, setzt sich der Watchdog selbstständig zurück und die Sirene erschallt nicht.
Schlägt der Wachhund aber einmal an, startet er  nicht wieder von vorne. Also nach einmal Ausführen steht oben statt Next: xx:xx nur noch defined.
Wie bekomme ich den Hund überredet, auch nach dem Auslösen der Sirene sofort wieder von vorne zu beginnen?





+ + + Gibt es eigentlich hier Smarthome-Enthusiasten aus + + +
Norddeutschland / Nordfriesland / Bredstedt / Husum oder Niebül?

KernSani

Guck mal in die commandref:

Zitat
if <regexp2> is SAME, then it will be the same as the first regexp, and it will be reactivated, when it is received.
Das sollte den Hund zum weitermachen überreden ;)
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

jannis

Zitat von: KernSani am 27 Februar 2020, 11:50:29
Guck mal in die commandref:
Das sollte den Hund zum weitermachen überreden ;)

Für das regEx1, also das auslösende Ereignis habe ich den "." genommen:
Wenn <regexp1> . (Punkt) ist, dann aktiviere den Watchdog zur definierten Zeit. Sonst wird er durch den Empfang des ersten passenden Events aktiviert.
... damit die Wartezeit halt mit dem Augenblick beginnt, wo ich den Watchdog anlege.

Würde ich jetzt als regExp2 "SAME" setzen, kann das wohl nicht klappen, den "SAME" wäre ja dann der "."

Ich befürchte, der Watchdog kann das einfach nicht und ich muss mich mal mit DOIF wait/repeatcmd beschäftigen. Oder gibt es doch noch Hoffnung?
+ + + Gibt es eigentlich hier Smarthome-Enthusiasten aus + + +
Norddeutschland / Nordfriesland / Bredstedt / Husum oder Niebül?

KernSani

Den . brauchst du ja eigentlich nur zum testen. Im Echtbetrieb wäre der Startzeitpunkt ja ,,Schalter gedrückt", oder? Das wäre also regex1 und SAME sollte funktionieren.
Es gibt allerdings noch ein Problem in der Logik... was passiert denn, wenn du nachmittags um 3 lüftest? Soll die Sirene dann nachts um 3 losgehen? :o



Gesendet von iPhone mit Tapatalk
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

jannis

Zitat von: KernSani am 27 Februar 2020, 13:05:11
Den . brauchst du ja eigentlich nur zum testen. Im Echtbetrieb wäre der Startzeitpunkt ja ,,Schalter gedrückt", oder? Das wäre also regex1 und SAME sollte funktionieren.
Es gibt allerdings noch ein Problem in der Logik... was passiert denn, wenn du nachmittags um 3 lüftest? Soll die Sirene dann nachts um 3 losgehen? :o

Ich hab es eh schwer, meine Familie für Smarthome zu begeistern ... Sirene nachts um 3Uhr wäre der Todesstoß für FHEM ;)
Aber das werde ich mit perl-code im Befehlsteil des Watchdogs in den Griff bekommen.

Ich habe jetzt mal das SAME mit eingebaut und zusätzlich ein "set Lueften off" dritten Befehl.


defmod Lueften dummy
defmod Sirene dummy
defmod wd_Lueften watchdog Lueften.off 00:01 Lueften.on set Sirene on; trigger wd_Lueften .; set Lueften off
attr Lueften,Sirene,wd_Lueften room Training->Watchdog


Jetzt startet der Watchdog neu:
1. wenn einer aus der Familie gelüftet hat
2. wenn keiner gelüftet hat und deshalb die Sirene anspringt

Soweit so gut. Ein Problem bleibt:
der Watchdog muss händisch mit "set Lueften off"  angestoßen werden, wenn:
a) er das erste Mal gestartet wird
b) jedes Mal, wenn FHEM neu gestartet wird ... was sich eigentlich mit (a) deckt.

Brauch ich jetzt einen Watchdog2, der prüft ob Watchdog1 gestartet ist?


+ + + Gibt es eigentlich hier Smarthome-Enthusiasten aus + + +
Norddeutschland / Nordfriesland / Bredstedt / Husum oder Niebül?

herrmannj


CoolTux

Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

jannis

Zitat von: CoolTux am 27 Februar 2020, 14:24:27
activateOnStart

Super, so läuft mein Beispiel von oben rund. Hier der fertige Code dafür:

defmod Lueften dummy
defmod Sirene dummy
defmod wd_Lueften watchdog Lueften.off 00:01 Lueften.on set Sirene on; trigger wd_Lueften .; set Lueften off
attr wd_Lueften activateOnStart 1
attr Lueften,Sirene,wd_Lueften room Training->Watchdog


Jetzt muss ich noch hinbekommen:
a) dass die Sirene uns nachts verschont
b) dass direkt morgens um 7Uhr ein erster Alarm erfolgt -> das könnte ein "at" machen
c) ... und dann frühestens wieder nach 12 Stunden -> das kann der "watchdog"

Also werden für die gestellte Aufgabe 1x at + 1x watchdog = 2 Devices benötigt. Ginge das auch mit nur einem Device (iich mag es übersichtlich)? Bin mit dem DOIF noch nicht so fit ... wäre DOIF der geeignetere Ansatz?
+ + + Gibt es eigentlich hier Smarthome-Enthusiasten aus + + +
Norddeutschland / Nordfriesland / Bredstedt / Husum oder Niebül?

Damian

#12
Du kannst um 07:00 Uhr prüfen, wann zuletzt gelüftet wurde und dann ggf. deine Alarmierung abspulen. Ob das alles praktikabel ist, ist eine andere Frage.

Edit: Ich persönlich würde es visuell realisieren, z. B. eine gut positionierte Lampe/Anzeige, die von grün über orange ins Rote geht, je nachdem wie lange die letzte Lüftungsphase her war.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF