NEWS
[gelöst] Aufzählungen Toggeln
-
Hallo, gibt es irgendwie die Möglichkeit Aufzählungen zu toggeln?
Ich habe einen Taster, mit dem würde ich gerne die Funktion x in Raum y toggeln.
Bei einem State ist es ja ganz einfach:Setstate(stateid,!getState(stateid).val);
Aber bei einer Aufzählung?
-
@ben1983 sagte: Möglichkeit Aufzählungen zu toggeln?
Aufzählungen haben gewöhnlich mehr als nur zwei Zustände. Wie soll man die toggeln?
-
@paul53 das war genau die Frage
-
@ben1983
Ich würde folgendes probieren (pseudo-code):let possibleValuesForStateId = ["on", "off", "somethingelse"]; let currentState = getState(stateid).val; let idxOfCurrentState = possibleValuesForStateId.indexOf(currentState); let nextIdx = (idxOfCurrentState + 1) % possibleValuesForStateId.size; let nextState = possibleValuesForStateId[nextIdx]; Setstate(stateid, nextState);
-
@randomuser123 danke für den Vorschlag.
Ich meinte es eher so….Die Aufzählung Licht im Raum Garage torkeln…
Also bspw an oder aus.
Alle States sollen den gewünschten Zustand annehmen, ohne dass man explizit vorgibt True oder false. -
Ich verstehe es leider noch nicht.
Hast du mehrere Lichter in der Garage, die separat ein/aus geschaltet werden können, aber du möchtest mit einem Knopfdruck alle zusammen in den Zustand "an" schalten, auch wenn vor dem schalten manche Lichter "an" und andere "aus" waren?Und was ist der "gewünschte Zustand", wenn du weder true (=an) noch false (=aus) vorgibst?
-
@randomuser123 hi. Ja das habe ich.
Alle true oder false setzt ist ja mit dem selektieren ganz simple.
Ich möchte die wie gesagt toggeln. Aber ich werde wohl nicht drum herum kommen mit den Wert zu merken, wenn geriffelt wird.
Ist vielleicht auch ein nicht so oft vor kommender Fall -
Ok, ja dann würde ich auch einen extra Datenpunkt "alleGaragenlichter" erstellen, der den gewünschten Zustand für alle Lichter angibt.
Sobald dieser geändert wird, werden alle Lichter auf denjenigen Zustand gesetzt, der in "alleGaragenlichter" steht.Den "alleGaragenlichter" kannst du dann mit der Zeile die du im ersten Post geschrieben hast toggeln:
Setstate(stateid,!getState(stateid).val);Ich glaube für scripte gibt es eine Funktion, die bei der Änderung eines Datenpunktes aufgerufen wird. Weiß grad leider nicht wie die Syntax davon ist.
Jedenfalls kannst du dann innerhalb dieser Funktion den Wert von "alleGaragenlichter" auslesen und alle individuellen Licht-Datenpunkte damit aktualisieren. -
@randomuser123
Ja ich weis ja, wie man alle datenpunkte eine Aufzählung liegt oder auch mit dem selector schreibt. Wollte auf was andere hinaus, aber glaube das geht so nicht. -
@ben1983 sagte in Aufzählungen Toggeln:
Wollte auf was andere hinaus,
was denn?
@ben1983 sagte in Aufzählungen Toggeln:
Die Aufzählung Licht im Raum Garage torkeln…
ist auch mit der nachfolgenden Erklärung
@ben1983 sagte in Aufzählungen Toggeln:
Also bspw an oder aus.
Alle States sollen den gewünschten Zustand annehmen,nicht klar, wenn man nicht weiß was du wünschst.
@ben1983 sagte in Aufzählungen Toggeln:
Aber ich werde wohl nicht drum herum kommen mit den Wert zu merken, wenn geriffelt wird.
was auch immer das bedeuten soll!?
toggeln ist umschalten!
hast du z.b. drei Lampen, von denen 2 AN sind, würde toggeln dazu führen, dass anschließend 2 Lampen AUS und eine AN sind. -
@homoran ja das ist ja das Problem.
Wenn ich drei Lampen habe und zwei an sind geht eben toggeln nicht mehr das alle einen Zustand haben. Das geht nur mit explizieren Schreiben auf einen Wert… ohne dass ich alle einzeln ansprechen muss. -
@ben1983 sagte in Aufzählungen Toggeln:
geht eben toggeln nicht mehr das alle einen Zustand haben.
das ist kein toggeln.
Das könntest du über eine Szene lösen mit wahr alle an und falsch alle aus. Wenn du unbedingt toggeln musst, dann toggelst du die Szene.oder mit einem kleinen Skript, das auf einen (virtuellen) Tastendruck triggert
-
@homoho Einfach an oder aus, geht ganz simple auch im script mit:
$(`state(functions=${enumBeleuchtung})(rooms=${enumGarageBenny})`).setState(true);
Damit mache ich es ja schon lange Zeit erolgreich.
Die Frage war vielleicht falsch gestellt...
Eigentlich suche ich ne simple funktion, die stat dem setstae ein toggleState macht.im Hintergrund wird wohl auch einfach ein each laufen...
-
@ben1983 sagte in [gelöst] Aufzählungen Toggeln:
die stat dem setstae ein toggleState macht.
wir drehen uns im Kreis!
du willst anscheinend nicht toggeln, weil
@homoran sagte in [gelöst] Aufzählungen Toggeln:
hast du z.b. drei Lampen, von denen 2 AN sind, würde toggeln dazu führen, dass anschließend 2 Lampen AUS und eine AN sind.