Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JS setstate mehrere Objekte

    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

    JS setstate mehrere Objekte

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

      Hallo,

      ich möchte gerne über setstate mehre Geräte auf einmal ein/aus schalten. Hierzu habe ich bereits die Variablen angelegt.

      var dev1 = Objekt1
      var dev2 = Objekt2
      var dev3 = Objekt3
      var dev4 = Objekt4
      
      

      jetzt möchte ich gerne über setstate alle 4 gleichzeitig auf true/false setzten, also quasi

      setState(dev1,true);
      setState(dev2,true);
      setState(dev3,true);
      setState(dev4,true);
      
      

      Gibt es eine Möglichkeit das ganze nur mit einem setState hin zu bekommen? Eventuell so in der Art?

      var dev1 = Objekt1
      var dev2 = Objekt2
      var dev3 = Objekt3
      var dev4 = Objekt4
      var all = [dev1,dev2,dev3,dev4]
      
      setState(all,true);
      
      

      Leider scheiterts da bei mir …..

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

        Nein, diese Option gibt es nicht. Faktisch würde, falls es das gäbe, der Code die auch nur nacheinander abarbeiten. Hätte also keinen Vorteil

        1 Reply Last reply Reply Quote 0
        • N
          NightWatcher last edited by

          Du kannst dir doch eine Helperfunktion bauen, die dein Array durchläuft. Was anderes wäre es auch nicht, wenn Bluefox das nativ integrieren würde.

          So in der Art

          call:

          setObjectArr(arr);
          
          `function setObjectArr(arr)
          {
          	if(arr.length > 0)
          	{
          		for(var i=0;i<arr.length;i++) {/setstate(arr[i],true);/}/<e=""></arr.length;i++)>`
          
          Ungetestet und in dem Stadium würde er alles auf true setzen. Du kannst also keinen Parameter mit übergeben.[/i]
          
          1 Reply Last reply Reply Quote 0
          • 0
            0018 last edited by

            Alles klar danke,

            ich habe das ganze jetzt in eine function gepackt, welche ich dann mehrfach verwende und bei Bedarf muss ich dann nur einmal die function anpassen.

            So passt es auch 🙂

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

              Hallo, bin noch unerfahren mit scripte schreiben. Anpassen bekomme ich noch hin….

              Hat hier einer ein komplettes script um mit einer Taste 4 Aktoren zu schalten?

              Habe quasi 4 einzel bedienbare Ausgänge . jetzt möchte ich noch alle 4 gleichzeitig mit einem button einschalten und ausschalten können.

              Habe das als Scene versucht, aber das dumme war, das die Rückmeldung für den Alles ein button schon true zeigte obwohl nur einzelen Ausgänge gesetzt waren. Ich möchte damit einen 4CH Sonoff / Tasmota swich bedienen.

              Für etwas Hilfe wäre ich dankbar...

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

                @smartboart:

                jetzt möchte ich noch alle 4 gleichzeitig mit einem button einschalten und ausschalten können. `
                Toggle mit einer Taste oder getrennte Tasten für Aus und Ein ?

                Zustandsanzeige Aus/Ein in einem extra Datenpunkt für VIS ?

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

                  Ja eine Taste für aus und ein aller 4 channnel inkl. einer Rückmeldung für aus und ein aber nur wenn alle 4 Channel true oder false sind..

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

                    Vorschlag:

                    const id1 = '...'; // ID Ausgang 1
                    const id2 = '...'; // ID Ausgang 2
                    const id3 = '...'; // ID Ausgang 3
                    const id4 = '...'; // ID Ausgang 4
                    const idButton = '...';
                    const idVis = '...'; // ID Zustandsanzeige
                    
                    var out1 = getState(id1).val;
                    var out2 = getState(id2).val;
                    var out3 = getState(id3).val;
                    var out4 = getState(id4).val;
                    var toggle = getState(idVis).val;
                    
                    function zustand() {
                       if(out1 && out2 && out3 && out4) toggle = true;
                       else if (!out1 && !out2 && !out3 && !out4)  toggle = false;
                       setState(idVis, toggle, true);
                    }
                    
                    on({id: idbutton}, function() {
                       var out = !toggle;
                       setState(id1, out);
                       setState(id2, out);
                       setState(id3, out);
                       setState(id4, out);
                    });
                    
                    on(id1, function(dp) {
                       out1 = dp.state.val;
                       zustand();
                    });
                    on(id2, function(dp) {
                       out2 = dp.state.val;
                       zustand();
                    });
                    on(id3, function(dp) {
                       out3 = dp.state.val;
                       zustand();
                    });
                    on(id4, function(dp) {
                       out4 = dp.state.val;
                       zustand();
                    });
                    
                    
                    1 Reply Last reply Reply Quote 0
                    • First post
                      Last post

                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    867
                    Online

                    31.7k
                    Users

                    79.8k
                    Topics

                    1.3m
                    Posts

                    5
                    8
                    1128
                    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