DOELSEIF löst nicht aus, wenn doif nicht zutrifft

Begonnen von Sidey, 24 Oktober 2016, 17:19:08

Vorheriges Thema - Nächstes Thema

Sidey

Ich habe ein doif mit elseif erstellt.

au.licht:state löst Regelmäßig ein event aus.

Meine Erwartung war, dass das DOELSEIF auslöst, wenn das doif nicht zutrifft.
Das passiert aber nicht.

szene.Urlaub ist ein Dummy, der zum triggern nicht genutzt werden kann.



([szene.Urlaub:state] eq "on" and [au.licht:state] > 8 and [Rolladen] ne "nacht") (set Lampe on)
DOELSEIF ([szene.Urlaub:state] eq "on")
(set Lampe off)



Ist das so gewollt, dass das DOELSEIF nur ausgeführt wird, wenn ein Event auslöst, der im DOELSEIF auch abgefragt wird?


Grüße Sidey
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem,zigbee2mqtt

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker

Damian

Zitat von: Sidey am 24 Oktober 2016, 17:19:08
Ist das so gewollt, dass das DOELSEIF nur ausgeführt wird, wenn ein Event auslöst, der im DOELSEIF auch abgefragt wird?

Ja.

Sonst DOELSE nehmen oder die zu triggernden Sensoren in DOELSEIF aufnehmen.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

OliWee

Hatte schon ein ähnliches Problem...

Damian, darf ich nach dem Grund fragen, warum das so implementiert wurde? Rein aus der typischen Programmierlogik heraus sehe ich nicht, warum der DOELSEIF in so einem Fall nicht nicht ausgeführt werden sollte...

Gruß
Oli

Damian

Zitat von: OliWee am 25 Oktober 2016, 09:17:36
Hatte schon ein ähnliches Problem...

Damian, darf ich nach dem Grund fragen, warum das so implementiert wurde? Rein aus der typischen Programmierlogik heraus sehe ich nicht, warum der DOELSEIF in so einem Fall nicht nicht ausgeführt werden sollte...

Gruß
Oli

In der aller ersten Version war es so gewesen. Das hat nach mehrtägigen Tests zu Problemen geführt. Es wurden immer wieder Zweige ausgeführt, mit denen man nicht gerechnet hatte, weil irgendwo anders in einem DOIF/DOELSE-Zweig ein Trigger vorkam, den man nicht auf dem Schirm hatte.

Ich habe mir aber schon den Wunsch vor längerer Zeit notiert - per Attribut diese Option einzuschalten.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

OliWee

Danke für die prompte Erklärung. Im Grunde wurde ja damit dann ein Anwendungsfehler umgangen...
Aber dass man das aus Kompatibilitätsgründen jetzt nicht einfach ändern kann, sehe ich ein. Daher würde ich eine Umschaltung des Verhaltens als Option sehr begrüßen.

Gruß
Oli

Sidey

So eine Option fände ich auch gut.

Ich weiss zwar jetzt, dass das Verhalten so gewollt ist. Logisch erscheint es mir allerdings erst mal nicht so recht.

Ist es nicht sogar so, dass ich das aktuelle Verhalten nachstellen kann, in dem ich mehrere DOIFS definiere und dann noch auf die anderen DOIFS die eine höhere Priorität haben sollen mit einer Abfrage prüfe..

Grüße Sidey
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem,zigbee2mqtt

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker

Damian

Zitat von: Sidey am 25 Oktober 2016, 09:59:05
So eine Option fände ich auch gut.

Ich weiss zwar jetzt, dass das Verhalten so gewollt ist. Logisch erscheint es mir allerdings erst mal nicht so recht.

Ist es nicht sogar so, dass ich das aktuelle Verhalten nachstellen kann, in dem ich mehrere DOIFS definiere und dann noch auf die anderen DOIFS die eine höhere Priorität haben sollen mit einer Abfrage prüfe..

Grüße Sidey

Version 0.2 unterstützt jetzt das Features mit Hilfe des Attributes checkall. Aber bitte nicht beschweren, wenn sich das Feature im Nachhinein als ungünstig erweist ;)

https://forum.fhem.de/index.php/topic,58556.0.html

Zum Einspielen System herunter fahren, kein reload des Moduls durchführen, da sich intern Funktionsaufrufe geändert haben.

Sonst ist das Modul voll abwärtskompatibel.


Gruß

Damian

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Sidey

Hallo Damian,

Danke. Werde es nach meinem Urlaub ausprobieren.
Danke für die schnelle Umsetzung.


Grüße Sidey
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem,zigbee2mqtt

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker