NEWS
[Frage] Priorität bei Steurbefehlen
-
Hallo zusammen,
in letzter Zeit hab ich öfter Probleme mit Überschneidungen bei Steuerbefehlen.
Hier mal ein Beispiel:
Ich habe 2 Leistungsmess-Zwischenstecker in Reihe. Am 1ten Betreibe ich eine Sonos Box, am 2ten einen Luftentfeuchter.
In der Nacht brauch ich die Sonos Box nicht also Schalte ich den Zwischenstecker aus. Der Luftentfeuchter dürfte, aber Laufen.
Genau an diesem Punkt wird es Knifflig: Wenn ich den 1ten Zwischenstecker bei bedarf für den Luftentfeuchter wieder ein schalte, Wieder spricht das meiner Nachtabschaltung. Und dadurch würde der Luftentfeuchter sich wieder ausschalten.
Mir ist klar das ich dafür eine Ausnahme in das Nachtabschaltungs Skript schreiben könnte, nur hab ich auch deutlich komplexere Zusammenhänge mit mehr Variablen und möglichkeiten. Und langsam wird das sehr unübersichtlich wann was geschalten wird.
Und der WAF geht mir gerade in den Keller weil die Nachtabschaltung wegen der Überschneidungen nicht Zuverlässig funktioniert.
Daher ist meine Idee Prioritäten für die einzelnen Schaltaufgaben zu vergeben. Mir fehlt nur der Ansatz wo und wie ich diese Prioritäten verwalte.
Gibt es hier Vorschläge oder bereits ein etabliertes System?
Ich kann mir auch nur Schwer vorstellen das ich der erste oder einzige mit einem solchen Problem bin.
Gruß
Jey Cee
-
Rein aus dem Blauen heraus eine Idee:
Lass die tatsächliche Schaltaufgabe von einem extra Skript "Proxy" erledigen.
Die einzelnen Funktionsskripts (Nachtabschaltung, etc.) setzen statt dem tatsächlichen Schalten eine Variable, was sie gerne geschaltet hätten. Ich denke hier brauchst du 2 Kommandos:
Schalten (mit Zielwert) und Freigeben (dem Funktionsskript ist der Zustand egal).
In dem Proxy-Skript (oder global) legst du eine Übersicht an, welches Funktionsskript welche Priorität für das Schalten bestimmter Geräte hat.
Bei Schaltanfragen merkt sich das Proxy-Skript in einer Liste, mit welcher Priorität welcher Status eingestellt werden soll. Das Skript mit höchster Priorität gewinnt.
Wird der aktuell höchstpriorisierte Zustand freigegeben (sprich, dem Funktionsskript ist der Ziel-Zustand egal), kommt das nächste dran.
-
@AlCalzone: Deine Idee ist gut. Ich kann mir vorstellen das ein zu setzen, bin jedoch skeptisch was den Aufwand/Umfang eines Solchen Skripts angeht.
Auf jeden Fall war es ein guter Denkanstoß.
Ich hatte den Gedanken direkt in die natives eines Objekts die Priorität zu schreiben.
Bis jetzt war mir aber nicht klar wie das dann Funktionieren soll. Aber mir ist gerade die Idee gekommen wie das Funktioniert.
Die Lösung ist so simpel wie genial.
Das Skript welches Schalten will überprüft mit welcher Priorität zu letzt geschalten wurde, ist die Priorität niedriger macht es gar nichts.
Momentan bilde ich mir ein die Idee ist so genial das man Überlegen könnte das in ioBroker fest ein zu Bauen.
Befehl in JS könnte so aussehen:
setState(id, Priorität, Wert)
-
mach den Parameter aber als optional.. 8-)
-
@Jey Cee:Auf jeden Fall war es ein guter Denkanstoß. `
Ziel erreicht