Dämmerungszustand/Helligkeit löst kein DOIF aus ohne "do always" zu setzen

Begonnen von Sirel, 08 Juli 2015, 22:06:02

Vorheriges Thema - Nächstes Thema

Sirel

Hi Damian,
das probiere ich morgen aus und teste es über das WoE.
Mal gucken was passiert...

Vielen Dank und Grüße,

Max

Brockmann

Vielleicht nochmal grundsätzlich:
Wenn Du nur eine DOIF-Bedingung definierst, bekommt das DOIF automatisch eine implizite DOELSE-Bedingung, nämlich dass die formulierte Bedingung unwahr ist. Es gibt also zwei Möglichkeiten:
Bedingung ist wahr: cmd1
Bedingung ist unwahr: cmd2

Wenn Du ein DOIF mit zwei Bedingungen formulierst, also DOIF & DOELSEIF, entfällt die implizite DOELSE-Bedingung. Es gibt auch in dem Fall zwei Bedingungen:
Bedingung1 ist wahr: cmd1
Bedingung2 ist wahr: cmd2

Der Fall, das beide Bedingungen unwahr sind, wird hierbei nicht berücksichtigt. Das bedeutet, wenn Bedingung 1 einmal eintritt, bleibt es solange bei cmd1, bis Bedingung 2 eintritt und umgekehrt. Es wird aber nur bei Zustandswechsel eine Aktion ausgeführt. Deshalb funktioniert das DOIF nicht wie erwartet. Es sei denn, Du verwendest do always, dann wird die Aktion jedes Mal ausgeführt, wenn eine der Bedingungen eintritt. Aber das hat die beobachteten Seiteneffekt.

Die Lösung hat Damian ja schon beschrieben. Ergänze Deine Definition um einen DOELSE-Fall. Der kann einfach "leer" sein, also DOELSE ().

Dann gilt:
Bedingung1 ist wahr: cmd1
Bedingung2 ist wahr: cmd2
Weder Bedingung1 noch Bedingung2 wahr: cmd3

Dadurch kann Dein DOELSE den Zustand wechseln, wenn eine Bedingung nicht mehr erfüllt ist und dann wieder zurückwechseln, wenn sie wieder gilt. Und zwar ohne do always.

Nebenbei: Deshalb ist es wichtig, immer ein list des DOIFs zu posten. Aus Deinem ersten Post war nicht ersichtlich, dass es einen DOELSEIF-Fall gibt, aber genau das war der entscheidende Punkt.

Sirel

Hi Brockmann,

das war genau das Puzzelteil, welches mir noch fehlte und Damian ja auch schon angesporchen hat. Ich bin davon ausgegangen, dass es immer ein implizites DOELSE gibt, egal ob es 1 oder mehrere DOELSEIF gibt.

Besten Dank dafür Deine Hilfe und ausführliche Erklärung,

Max


Virsacer

Ah, das ist wirklich ein guter Hinweis - Danke :)

Damit kann ich wohl auch das ein oder andere DOIF nochmal verbessern :D