Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. [gelöst] Aufzählungen Toggeln

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [gelöst] Aufzählungen Toggeln

    This topic has been deleted. Only users with topic management privileges can see it.
    • Ben1983
      Ben1983 last edited by Ben1983

      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?

      paul53 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @Ben1983 last edited by

        @ben1983 sagte: Möglichkeit Aufzählungen zu toggeln?

        Aufzählungen haben gewöhnlich mehr als nur zwei Zustände. Wie soll man die toggeln?

        Ben1983 1 Reply Last reply Reply Quote 0
        • Ben1983
          Ben1983 @paul53 last edited by

          @paul53 das war genau die Frage 😉

          R 1 Reply Last reply Reply Quote 0
          • R
            randomuser123 @Ben1983 last edited by

            @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);
            
            1 Reply Last reply Reply Quote 0
            • Ben1983
              Ben1983 last edited by

              @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.

              1 Reply Last reply Reply Quote 0
              • R
                randomuser123 last edited by

                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?

                Ben1983 1 Reply Last reply Reply Quote 0
                • Ben1983
                  Ben1983 @randomuser123 last edited by

                  @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

                  1 Reply Last reply Reply Quote 0
                  • R
                    randomuser123 last edited by

                    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.

                    1 Reply Last reply Reply Quote 0
                    • Ben1983
                      Ben1983 last edited by

                      @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.

                      Homoran 1 Reply Last reply Reply Quote 0
                      • Homoran
                        Homoran Global Moderator Administrators @Ben1983 last edited by

                        @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.

                        1 Reply Last reply Reply Quote 0
                        • Ben1983
                          Ben1983 last edited by

                          @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.

                          Homoran 1 Reply Last reply Reply Quote 0
                          • Homoran
                            Homoran Global Moderator Administrators @Ben1983 last edited by

                            @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

                            Ben1983 1 Reply Last reply Reply Quote 0
                            • Ben1983
                              Ben1983 @Homoran last edited by

                              @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...

                              Homoran 1 Reply Last reply Reply Quote 0
                              • Homoran
                                Homoran Global Moderator Administrators @Ben1983 last edited by

                                @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.

                                1 Reply Last reply Reply Quote 0
                                • First post
                                  Last post

                                Support us

                                ioBroker
                                Community Adapters
                                Donate

                                409
                                Online

                                31.8k
                                Users

                                80.0k
                                Topics

                                1.3m
                                Posts

                                4
                                14
                                499
                                Loading More Posts
                                • Oldest to Newest
                                • Newest to Oldest
                                • Most Votes
                                Reply
                                • Reply as topic
                                Log in to reply
                                Community
                                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                The ioBroker Community 2014-2023
                                logo