Abweichung des Sollzustandes überprüfen und darauf reagieren

Begonnen von Der_müde_Joe, 29 Juli 2018, 20:33:25

Vorheriges Thema - Nächstes Thema

Der_müde_Joe

Moin,

ich hatte schonmal einen Tread im Bereich Automatisierung eröffnet aber irgendwie haben die Antworten mir nicht wirklich bei dem DOIF Problem gehalfen. Ich hoffe nun hier etwas mehr Personen zu treffen, die mir bei meinem Problem mit einem DOIF helfen können.

Ich nutze folgende Funktion

define K2.Lueften.Automatik_Winter
DOIF ([K2_TF:schimmelGefahr] eq "ja" and [K2_TF:lueftenMoeglich] eq "ja" and [wach:state] eq "on")  (set K2_Fenster_02 level 100 ignore 20, set K2_Entfeuchter_Sw off)
DOELSEIF ([K2_TF:schimmelGefahr] eq "ja" and [K2_TF:lueftenMoeglich] eq "nein" and [wach:state] eq "on") (set K2_Fenster_02 level 0 0 20, set K2_Entfeuchter_Sw on)
DOELSE (set K2_Fenster_02 level 0 0 20, set K2_Entfeuchter_Sw off)


Kurz zur Erklärung:
Wenn im Raum Schimmelgefahr besteht und Lüften möglich ist und man wach ist, wird das Fenster geöffnet und ein Luftentfeuchter abgeschaltet.
Wenn im Raum Schimmelgefahr besteht und Lüften nicht möglich ist und man wach ist, wird das Fenster "geschlossen" und der Luftentfeuchter gestartet.
In allen anderen Fällen, wird das Fenster geschlossen und der Entfeuchter abgeschaltet.

Das alles funktioniert soweit auch super, solange man das Fenster nicht manuell öffnet. Wenn ich das nun manuell öffne, auch wenn Lüften eigentlich nicht möglich ist, würde keine der oberen Bedingungen erfüllt und natürlich passiert dann nichts mehr. Außerdem würde ja dann die Luftfeuchtigkeit ansteigen, weshalb es auch nicht in absehbarer Zeit geschlossen wird.

Meine Ideen bisher waren, ein do always und ein wait hinzuzufügen, um alle 15 Minuten das ganze zu überprüfen. Dann reagiert aber das Fenster auch auf die normalen Readings verzögert. Das ist ja auch nicht Sinn der sache.

Wie kann ich diesem DOIF beibringen, einen abnormalen Zustand zu überprüfen und darauf zu reagieren, indem es den "normalen" Zustand wieder herstellt.

Hier der Link zum anderen Tread.
https://forum.fhem.de/index.php?topic=88180.0

Lieben Gruß
Joe

Damian

Kann du bitte dein Konstrukt eingerückt (DOELSEIF-Fälle untereinander) posten, damit man es richtig lesen kann.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Der_müde_Joe

Hallo,

kein Problem. Mache ich natürlich gerne. Ich hoffe du ist es für euch angenehmer.

Lieben Gruß
Joe

Damian

Kannst du denn in FHEM erkennen, ob Fenster offen oder geschlossen ist?
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Der_müde_Joe

#4
Hallo,

ich betreibe an allen Fenstern einen Winmatic Fensteröffner. Der Befehl

set K2_Fenster_02 level 100 ignore 20

steht in diesem Fall für 100% öffnen (100) für eine unbestimmte Zeit (ignore) mit einer Verfahrgeschwindigkleit von 20% (20).
Natürlich kann ich den aktuellen Öffnungsgrad des Fensters aus dem Reading der Winmatic entnehmen.

Lieben Gruß

Damian

Ich meine, ob du den Zustand des manuell geöffneten Fensters erkennen kannst.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Der_müde_Joe

Natürlich kann ich erkennen, ob das Fenster geöffnet ist. Dazu gibt es das Reading Level (0%-100%) und ob das Fenster verriegelt ist (locked/unlocked) aber es gibt kein separates Reading dafür ob die letzte Betätigung manuell oder über die Zentrale erfolgt ist. Auch wenn dieses auf dem Display der Winmatic angeziegt wird, wird das nicht als Reading übermittelt.

Sonst wäre das ja mit einem weiteren DOIF relativ einfach zu erledigen. Aber ich weiß eben nicht, wie ich ein DOIF auf einen abnormalen Zustand überprüfen kann.

Damian

Ok. Du könntest den Zustand ob Fenster offen ist oder nicht in den jeweiligen Zweigen mit abfragen:


z. B.:

DOIF ([K2_TF:schimmelGefahr] eq "ja" and [K2_TF:lueftenMoeglich] eq "ja" and [wach:state] eq "on") and [?K2_Fenster_02] == 0)...
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF