FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: jannis am 26 Februar 2020, 21:57:39

Titel: Familie freundlich zum Lüften bewegen
Beitrag von: jannis am 26 Februar 2020, 21:57:39

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.
Titel: Antw:Familie freundlich zum Lüften bewegen
Beitrag von: KölnSolar am 27 Februar 2020, 00:02:47
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
Titel: Antw:Familie freundlich zum Lüften bewegen
Beitrag von: KernSani am 27 Februar 2020, 00:54:45
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.
Titel: Antw:Familie freundlich zum Lüften bewegen
Beitrag von: KölnSolar am 27 Februar 2020, 08:31:20
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
Titel: Antw:Familie freundlich zum Lüften bewegen
Beitrag von: jannis am 27 Februar 2020, 11:24:08
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?





Titel: Antw:Familie freundlich zum Lüften bewegen
Beitrag von: KernSani am 27 Februar 2020, 11:50:29
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 ;)
Titel: Antw:Familie freundlich zum Lüften bewegen
Beitrag von: jannis am 27 Februar 2020, 11:59:33
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?
Titel: Antw:Familie freundlich zum Lüften bewegen
Beitrag 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



Gesendet von iPhone mit Tapatalk
Titel: Antw:Familie freundlich zum Lüften bewegen
Beitrag von: jannis am 27 Februar 2020, 14:18:31
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?


Titel: Antw:Familie freundlich zum Lüften bewegen
Beitrag von: herrmannj am 27 Februar 2020, 14:22:58
hat der nicht ein attribut dafür ?
Titel: Antw:Familie freundlich zum Lüften bewegen
Beitrag von: CoolTux am 27 Februar 2020, 14:24:27
Zitat von: herrmannj am 27 Februar 2020, 14:22:58
hat der nicht ein attribut dafür ?
activateOnStart
Titel: Antw:Familie freundlich zum Lüften bewegen
Beitrag von: jannis am 27 Februar 2020, 15:36:37
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?
Titel: Antw:Familie freundlich zum Lüften bewegen
Beitrag von: Damian am 27 Februar 2020, 15:56:21
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.