Du änderst über die Rule selbst die Werte. Damit wird die andere Rule jedesmal getriggert, wenn die Sonnenaufgang/Sonnenuntergang Rule angestoßen wurde (bzw. jedesmal, wenn der Timer die Werte ändert). Es wäre also wichtig, eine globale Variable zu definieren, die anzeigt, ob gerade eine Änderung durch die Rule vorgenommen wurde. Die kannst Du dann in der zweiten Rule abfragen. Alternativ kannst Du auch versuchen, ob es reicht, den Zustand des Timers abzufragen:
Code: Alles auswählen
if(tAquaLicht === null){}
Code: Alles auswählen
if(nAquaCount < 201){
...
} else
tAquaLicht = null
Übrigens sind die drei = an dieser Stelle korrekt.
Was das Problem des Stromausfalls während des Dimmvorgangs betrifft: Um mit diesem Problem umzugehen, müsste man die Rule etwas ausbauen:
- ein Item Number definieren, in welchem Du speicherst, ob gerade gedimmt wird. Dazu gehört dann natürlich die Information, in welche Richtung gedimmt wird (deshalb Number Item), z.B. 0 -> manuell bzw. keine aktive Steuerung durch eine Rule, 1 -> Sonnenaufgang, 2 -> Sonnenuntergang.
- Das Item wird mit mapDB und den Startegien everyChange, restoreOnStartup persistiert.
- Dieses Item setzt Du auf den entsprechenden Wert, bevor der Dimmvorgang startet.
- Wenn der Dimmvorgang beendet ist, setzt Du das Item wieder auf 0.
- eine weitere Rule (mit System started als Trigger) prüft zuerst, ob das Item eine gültige Zahl beinhaltet. Sollte das nicht der Fall sein, wurde der Status noch nicht wiederhergestellt und die Rule muss eine kleine Pause einlegen und nochmals prüfen. Anschließend prüft die Rule, ob der Wert 0 ist. Ist das nicht der Fall, muss sie den entsprechenden Dimmvorgang beenden, wobei sie die aktuellen Dimmpositionen als Ausgangswert nutzen muss. Die Richtung ist durch das Item vorgegeben.
- Allerdings müsste diese Rule im Zweifel noch prüfen, ob die Zeit passt und ansonsten in die andere Richtung dimmen.