Bedingungen nach Zeitevent abfragen

Begonnen von noom0815, 06 April 2019, 22:30:01

Vorheriges Thema - Nächstes Thema

noom0815

Hallo zusammen,

ich komme bei folgendem Problem einfach nicht weiter:

Mein Vorhaben:
Ich möchte bei meiner Terrassentür zeitgesteuert den Rollladen schließen - ausser, wenn die Terrassentür geöffnet ist (Aussperrschutz). Wenn im Anschluss die Terrassentür geschlossen wird, soll der Rollladen schließen. Sollte eigentlich nicht weiter kompliziert sein...

ABER:
Ich frage einen Zeitpunkt und den Türstate ab - wenn "Tür zu", fährt der Rollladen runter: ok

(([{sunset("REAL",1000,,)} - 22:30:00]) and ([Terrassentuer:state] eq "closed")) (set Terrasse down)

Mein Problem ist, dass ich für die weitere Aktion Bedingungen definieren muss, aber jedes DOELSE im Anschluss nach meinem Verständnis ja immer abgefragt wird, auch unabhängig vom Zeitevent:

(([{sunset("REAL",1000,,)} - 22:30:00]) and ([Terrassentuer:state] eq "closed")) (set Terrasse down) DOELSE (set Aussperrschutz_aktiv active)

Die Idee war, mit dem notify Aussperrschutz_aktiv den Zustand, das zum Schließzeitpunkt die Tür geöffnet war, zu merken.
Da der DOELSE Zweig nach meinem Kenntnisstand aber immer durchlaufen wird, wenn eine der ersten Bedingung nicht erfüllt ist, wird auch tagsüber (also Zeitbedingungen nicht erfüllt) oder bei offener Terrassentür der DOELSE Zweig ausgeführt und der Aussperrschutz aktiviert.
Das notify soll aber natürlich nur dann gesetzt werden, wenn zum Zeitpunkt des Schließbefehls die Tür geöffnet war.

Den Zustand des notify wiederum wollte ich in einem zweiten DOIF abfragen, um bei aktivem Aussperrschutz und dann geschlossener Tür den Rollladen zu schließen...

Also nochmal mein Vorhaben:
Zeitpunkt erreicht und Tür zu?  JA => Rollladen ZU
                                             NEIN => warte, bis Tür ZU => Rollladen ZU

Meine Fragen:
- ist es möglich, den DOELSE Zweig korrekt zu bedienen, OHNE ([{sunset("REAL",1000,,)} - 22:30:00]) nochmals anzugeben?
- wie kann man nach einem Zeitevent auf unterschiedliche Bedingungen triggern (außer evtl. durch Umschalten auf Perl und if-Abfragen...)
- könnte man das Vorhaben auch ohne notify umsetzen?
- falls nicht: muss für das "finale" Schließen des Rollladens ein neues DOIF definiert werden oder könnte man das Ganze elegant in eines verpacken?


Danke für eure Unterstützung des Unwissenden,
Ian

Carsten1981

Hallo Ian,

spontan habe ich folgende Idee

(([{sunset("REAL",1000,,)} - 22:30:00]) and ([Terrassentuer:state] eq "closed")) (set Terrasse down)
DOELSEIF
(([{sunset("REAL",1000,,)} - 22:30:00]) and ([Terrassentuer:state] eq "opend")) (set Aussperrschutz_aktiv active)
DOLESEIF
(([Terrassentuer:state] eq "closed")) and ([Aussperrschutz_aktive] eq "active") (set Terrasse down) (set Aussperrschutz_aktiv inactive)
(([{sunrise("REAL",1000,,)} - 06:30:00]) (set Aussperrschutz_aktiv inactive)


Das Ergebnisse sollte sein:
1. Es wird dunkel und die Terassentüre ist zu ---> Rollo fährt runter
2. Es wird dunkel und die Terassenrtüre ist auf ---> Rollo bleibt ofen und die Dummy Aussperrschutz wird aktiviert
3. Aussperrschutz ist aktiviert und die Terassentüre wird geschlossen ---> Rollo fährt zu dummy wird deaktiviert
4. Ihr wart die ganze Nacht draußen und es wird wieder hell wird der Dummy wieder deaktiviert

Gruß Carsten
fhem 5.8 CUL 433, 8x DS18B20, 8fach 230V Relais
benachrichtigungen über Telegram, Steuerung Solar- und Kaminpumpe, Steuerung Somfy Rollos, Lichtsteuerung über Intertechno, Steuerung Heizungspumpe und Mischer Fußbodenheizung

Per

Zitat von: noom0815 am 06 April 2019, 22:30:01- ist es möglich, den DOELSE Zweig korrekt zu bedienen, OHNE ([{sunset("REAL",1000,,)} - 22:30:00]) nochmals anzugeben?
Im DOELSE wird NIE eine Bedingung angegeben. Du meinst DOELSEIF, dafür kannst du ein DOIF_Reading verwenden.

Zitat von: noom0815 am 06 April 2019, 22:30:01- wie kann man nach einem Zeitevent auf unterschiedliche Bedingungen triggern (außer evtl. durch Umschalten auf Perl und if-Abfragen...)
Im DOIF-Modus mit IF (nicht if)

Zitat von: noom0815 am 06 April 2019, 22:30:01- könnte man das Vorhaben auch ohne notify umsetzen?
Im DOIF hast du doch kein notify, oder wie soll man deine Frage verstehen?

noom0815

Hallo zusammen,

danke für eure Tips...

@Carsten1981: Dein Konstrukt funktioniert natürlich, aber gibt es nicht eine "elegantere" Lösung OHNE Wiederholung des Zeitevents?

@Per: Kannst Du Deine Tips mit Beispielen füttern? Mir ist nämlich nicht klar, was genau Du mit "DOIF_Reading" und "DOIF-Modus" meinst...
          Als notify bezeichne ich meinen Merker Aussperrschutz_aktiviert...


Danke und Grüße,
Ian

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

FHEM-User22

Hallo,
nur mal Interessehalber, wie/wo wird bei Dir der Terrassentürzustand ausgelesen? Am Türknauf/schließer?

Grüße
FHEM auf Raspberry Pi und Proxmox und... und.... und....

noom0815

Hallo FHEM-User22,

etwas gebastelt, funktioniert aber:
Aqara Fenster/Türkontakt unterhalb des Terrassentürgriffs montiert und "unter den Griff" (da, wo die Steckachse ins Schloß geht) einen stärkeren Magneten positioniert. Somit erkenne ich sehr zuverlässig, ob der Griff "zu" oder "geöffnet" ist...


Grüße,
Ian

Per