Hauptmenü

DOIF

Begonnen von sven.scherf, 23 November 2019, 16:44:52

Vorheriges Thema - Nächstes Thema

sven.scherf

Hallo zusammen,

irgendwie verstehe ich das DOIF nicht.
Hier mache ich irgendwo einen Denkfehler.

Ich habe zwei Fensterkontakte Bue_Fenster_links und Bue_Fenster_rechts.
Hier möchte ich einfach den Status des Fensters wissen.
Entweder links offen oder rechts offen oder halt beide offen.
Ich schreibe mir das Reading fenster.

Mein Code sieht wie folgt aus
([Bue_Fenster_links:state] eq "open" and [Bue_Fenster_rechts:state] eq "open")
(
set $SELF fenster open
)
DOELSEIF
([Bue_Fenster_links:state] eq "open")
(
set $SELF fenster links
)
DOELSEIF
([Bue_Fenster_rechts:state] eq "open")
(
set $SELF fenster rechts
)
DOELSE
(
set $SELF fenster closed
)


Dieser funktioniert aber nicht richtig.

Folgende Readings werden geschrieben.

Fenster links offen = links
Fenster links geschlossen = closed

Dies funktioniert auch mit dem rechten Fenster.
Wenn ich dann beide Fenster öffne wird fenster = open geschrieben.

Aber wenn ich nun ein Fenster schließe wird fenster = closed geschrieben.
Hier sollte aber dann fenster = rechts oder links stehen je nachdem welches noch offen ist.

Es sollte doch das das DOELSE hier nicht greifen da eine der vorlaufenden Bedingungen erfüllt sind.

Füge ich ein weiteres DOIFELSE ein welches den state closed mit and von beiden Fenstern abfragt funktioniert es, aber es müsste doch auch ohne die zusätzliche Abfrage funktionieren oder ?

Danke schon mal und viele Grüße

Sven

Raspi 3 mit CUL Stick 433/868MHZ, Homematic

amenomade

#1
Zitat von: CommandeRefZu beachten ist, dass nur die Bedingungen überprüft werden, die zum ausgelösten Event das dazughörige Device bzw. die dazugehörige Triggerzeit beinhalten.

Wenn Du z.B Fenster links schliesst, geht er in DOELSE, weil nur Bedingung 1 und Bedingung 2 geprüft werden, und beide falsch sind.

ZitatFüge ich ein weiteres DOIFELSE ein welches den state closed mit and von beiden Fenstern abfragt funktioniert es, aber es müsste doch auch ohne die zusätzliche Abfrage funktionieren oder ?
Oder Attribut checkAll all setzen
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

sven.scherf

Hallo,

vielen Dank dies macht Sinn.

Ich dachte er geht generell durch alle Abfragen durch.
Durch das setzen von dem Attribut checkAll all funktioniert dies so wie ich es mir vorgestellt habe.

Danke und Gruß

Sven
Raspi 3 mit CUL Stick 433/868MHZ, Homematic