Hallo zusammen. Ich glaube wir hatten das Thema schon mal. Aber vielleicht noch mal als Ansatz mit neuen Ideen. Und zwar würde ich ein eval_item gern manuell übersteuern wollen, damit das Ganze quasi bidirektional wird, ohne in mehrere Items aufgeteilt werden zu müssen:
So macht das Beispiel aktuell natürlich wenig Sinn. Aber was ist das Ziel:
- main_switch ist immer dann True, wenn einer der sub_switches True ist
- main_switch ist immer dann False, wenn alle sub_switches False sind
- die sub_switches übernehmen den Status von main_switch bei "manueller" Schaltung
Für den letzten Punkt wären aber mehrere Voraussetzungen fällig:
- on_change löst nur bei einer manuellen Auslösung aus und nicht, wenn es von eval getriggert wurde
- eval lässt sich manuell überschreiben
Beides geht derzeit nicht. Deshalb folgender Vorschlag:
Entweder ein neues Attribut, was eval daran verhindert anhängige on_change auszuführen oder ein separates eval, welches ebenfalls zwar den Wert des Items ändert, aber on_change nicht ausführt. Da ja auch der Werrt des Items unter Umgehung von eval überschrieben sollte, wären möglicherweise auch 2 Lösungen sinnvoll. Also auch ein eval, was nur getriggerte Werte nimmt und "wandelt".
Wäre das sinnvoll und relativ easy umsetzbar?
Code:
main_switch: type: bool eval: or eval_trigger: - ..sub_switch1 - ..sub_switch2 on_change: - ..sub_switch1 - ..sub_switch2 sub_switch1: type: bool sub_switch2: type: bool
- main_switch ist immer dann True, wenn einer der sub_switches True ist
- main_switch ist immer dann False, wenn alle sub_switches False sind
- die sub_switches übernehmen den Status von main_switch bei "manueller" Schaltung
Für den letzten Punkt wären aber mehrere Voraussetzungen fällig:
- on_change löst nur bei einer manuellen Auslösung aus und nicht, wenn es von eval getriggert wurde
- eval lässt sich manuell überschreiben
Beides geht derzeit nicht. Deshalb folgender Vorschlag:
Entweder ein neues Attribut, was eval daran verhindert anhängige on_change auszuführen oder ein separates eval, welches ebenfalls zwar den Wert des Items ändert, aber on_change nicht ausführt. Da ja auch der Werrt des Items unter Umgehung von eval überschrieben sollte, wären möglicherweise auch 2 Lösungen sinnvoll. Also auch ein eval, was nur getriggerte Werte nimmt und "wandelt".
Wäre das sinnvoll und relativ easy umsetzbar?