Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. [gelöst] foreach oder andere Lösung für mein Script

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.8k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    893

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

[gelöst] foreach oder andere Lösung für mein Script

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
4 Beiträge 2 Kommentatoren 283 Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • cashC Offline
    cashC Offline
    cash
    Most Active
    schrieb am zuletzt editiert von
    #1

    Ich kämpfe gerade mit einem Script. Und zwar geht es um Sonos.

    Dort gibt es im Adapter ein Feld wo Gruppenmitglieder enthalten sind. Je nach Anzahl will ich die Gruppenmitglieder entfernen.

    Auf meine einfache Art und Weise habe ich es geschafft. Aber elegant ist anders. Ich vermute das es evtl mit einer foreach-Schleife besser geht?

    Leider übersteigt das mein Script-Wissen. Kann mir jemand helfen?

    Hier mein Script:

    /**************************
    * Verschiedene Abfragen wegen Sonos
    * 
    * 
    **************************/
    //Einstellungen
    var logging = true;
    var debugging = true;
    
    var Sonos_IP = '192_168_178_35'; //Schlafzimmer
    var Ziel_Volume = 16;
    var Ziel_Playlist = "Meine Lieder";
    
    //Scriptbereich
    var id_Sonos_Playlist_Set = "sonos.0.root."+Sonos_IP+".favorites_set";
    var id_Sonos_Volume = "sonos.0.root."+Sonos_IP+".volume";
    var id_Sonos_shuffle = "sonos.0.root."+Sonos_IP+".shuffle"/*Shuffle*/;
    var id_Sonos_Status = "sonos.0.root."+Sonos_IP+".state";
    var id_Sonos_Coordinator = "sonos.0.root."+Sonos_IP+".coordinator";
    var id_Sonos_Member = "sonos.0.root."+Sonos_IP+".membersChannels"/*membersChannels*/;
    var id_Sonos_Coordinator_Status;
    
    function func_Sonos(){ 
        var Sonos_Change =  false;
        var Sonos_Coordinator = getState(id_Sonos_Coordinator).val;
        var Sonos_Status = getState(id_Sonos_Status).val;
        var id_Sonos_Coordinator_Status = 'sonos.0.root.'+Sonos_Coordinator+'.state';
        var Sonos_Coordinator_Status = getState(id_Sonos_Coordinator_Status).val;
        var Sonos_Member = getState(id_Sonos_Member).val;
    
        if(debugging){
            log('eigener Status: ' +Sonos_Status);
            log('eingesteller Coordinator: ' +Sonos_Coordinator);
            log('Status vom Coordinator: ' +Sonos_Coordinator_Status);
            log('Member: ' +Sonos_Member);
        }
    
        var Sonos_Member_array = Sonos_Member.split(',');
        var Sonos_Member_Anzahl = Sonos_Member.split(',').length;
        var t1 = Sonos_Member_array[0];
        var t2 = Sonos_Member_array[1];
        var t3 = Sonos_Member_array[2];
        var t4 = Sonos_Member_array[3];
        log('Array: '+Sonos_Member_array);
        log('Anzahl Member: '+Sonos_Member_Anzahl );
        log(t1);
        log(t2);
        log(t3);
        log(t4);
        if(t1 != undefined && t1 != Sonos_IP){
            log('t1 Coordinator entfernt');
            setState('sonos.0.root.'+t1+'.coordinator',t1);
        }
        else{
            log('t1 nichts gemacht');
        }
        if(t2 != undefined && t2 != Sonos_IP){
            log('t2 Coordinator entfernt');
            setState('sonos.0.root.'+t2+'.coordinator',t2);
        }
        else{
            log('t2 nichts gemacht');
        }
        if(t3 != undefined && t3 != Sonos_IP){
            log('t3 Coordinator entfernt');
            setState('sonos.0.root.'+t3+'.coordinator',t3);
        }
        else{
            log('t3 nichts gemacht');
        }
        if(t4 != undefined && t4 != Sonos_IP){
            log('t4 Coordinator entfernt');
            setState('sonos.0.root.'+t4+'.coordinator',t4);
        }
        else{
            log('t4 nichts gemacht');
        }
    
    }
    
    func_Sonos(); 
    

    Damit es nachvollziehbarer ist mal ein Teil der Ausgabe:

    avascript.0	2019-01-15 21:50:16.290	info	script.js.Entwicklung.Sonosteil: t4 nichts gemacht
    javascript.0	2019-01-15 21:50:16.290	info	script.js.Entwicklung.Sonosteil: t3 nichts gemacht
    javascript.0	2019-01-15 21:50:16.290	info	script.js.Entwicklung.Sonosteil: t2 Coordinator entfernt
    javascript.0	2019-01-15 21:50:16.289	info	script.js.Entwicklung.Sonosteil: t1 Coordinator entfernt
    javascript.0	2019-01-15 21:50:16.289	info	script.js.Entwicklung.Sonosteil: undefined
    javascript.0	2019-01-15 21:50:16.289	info	script.js.Entwicklung.Sonosteil: 192_168_178_35
    javascript.0	2019-01-15 21:50:16.289	info	script.js.Entwicklung.Sonosteil: 192_168_178_48
    javascript.0	2019-01-15 21:50:16.289	info	script.js.Entwicklung.Sonosteil: 192_168_178_47
    javascript.0	2019-01-15 21:50:16.289	info	script.js.Entwicklung.Sonosteil: Anzahl Member: 3
    javascript.0	2019-01-15 21:50:16.289	info	script.js.Entwicklung.Sonosteil: Array: 192_168_178_47,192_168_178_48,192_168_178_35
    javascript.0	2019-01-15 21:50:16.288	info	script.js.Entwicklung.Sonosteil: Member: 192_168_178_47,192_168_178_48,192_168_178_35
    javascript.0	2019-01-15 21:50:16.288	info	script.js.Entwicklung.Sonosteil: Status vom Coordinator: stop
    javascript.0	2019-01-15 21:50:16.288	info	script.js.Entwicklung.Sonosteil: eingesteller Coordinator: 192_168_178_35
    javascript.0	2019-01-15 21:50:16.288	info	script.js.Entwicklung.Sonosteil: eigener Status: stop
    
    1 Antwort Letzte Antwort
    0
    • paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von
      #2

      Den Teil

          log(t1);
          log(t2);
          log(t3);
          log(t4);
          if(t1 != undefined && t1 != Sonos_IP){
              log('t1 Coordinator entfernt');
              setState('sonos.0.root.'+t1+'.coordinator',t1);
          }
          else{
              log('t1 nichts gemacht');
          }
          if(t2 != undefined && t2 != Sonos_IP){
              log('t2 Coordinator entfernt');
              setState('sonos.0.root.'+t2+'.coordinator',t2);
          }
          else{
              log('t2 nichts gemacht');
          }
          if(t3 != undefined && t3 != Sonos_IP){
              log('t3 Coordinator entfernt');
              setState('sonos.0.root.'+t3+'.coordinator',t3);
          }
          else{
              log('t3 nichts gemacht');
          }
          if(t4 != undefined && t4 != Sonos_IP){
              log('t4 Coordinator entfernt');
              setState('sonos.0.root.'+t4+'.coordinator',t4);
          }
          else{
              log('t4 nichts gemacht');
          }
      
      

      kann man durch eine for-Schleife ersetzen.

       `for(let i = 0; i < 4; i++) {
            var t = Sonos_Member_array[i];
            log(t);
            if(t != undefined && t != Sonos_IP){
               log((i + 1) + ' Coordinator entfernt');
               setState('sonos.0.root.' + t + '.coordinator', t);
            } else log((i + 1) + ' nichts gemacht');
         }` [/i]
      

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      1 Antwort Letzte Antwort
      0
      • cashC Offline
        cashC Offline
        cash
        Most Active
        schrieb am zuletzt editiert von
        #3

        Perfekt genau an diesen Teil hatte ich gedacht. :mrgreen:

        Das Script läuft natürlich wie gewünscht.

        Beim nächstenmal schaffe ich es dann vielleicht auch selber. Logisch ist es zumindest. Vielen Dank!

        geändert habe ich

        for(let i = 0; i < 4; i++) {
        

        da ich die Anzahl durch die Abfrage

        var Sonos_Member_Anzahl = Sonos_Member.split(',').length;
        

        bestimmen kann. Somit wird die Schleife nur so oft durchlaufen wie es Member Einträge gibt.

        Meine Zeile lautet also

        for(let i = 0; i < Sonos_Member_Anzahl; i++) {
        

        Ich ergänze es falls mal jemand vor einen ähnlichen Problem steht.

        1 Antwort Letzte Antwort
        0
        • paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von
          #4

          @cash:

          Das Script läuft natürlich wie gewünscht. `
          Dann markiere bitte das Thema im Betreff des ersten Beitrags als [gelöst].

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

          1 Antwort Letzte Antwort
          0
          Antworten
          • In einem neuen Thema antworten
          Anmelden zum Antworten
          • Älteste zuerst
          • Neuste zuerst
          • Meiste Stimmen


          Support us

          ioBroker
          Community Adapters
          Donate

          498

          Online

          32.6k

          Benutzer

          82.1k

          Themen

          1.3m

          Beiträge
          Community
          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
          ioBroker Community 2014-2025
          logo
          • Anmelden

          • Du hast noch kein Konto? Registrieren

          • Anmelden oder registrieren, um zu suchen
          • Erster Beitrag
            Letzter Beitrag
          0
          • Home
          • Aktuell
          • Tags
          • Ungelesen 0
          • Kategorien
          • Unreplied
          • Beliebt
          • GitHub
          • Docu
          • Hilfe