Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Blockly
  5. [gelöst] Name von ObjektID oder getNameByID?

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    11
    1
    117

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

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

[gelöst] Name von ObjektID oder getNameByID?

Scheduled Pinned Locked Moved Blockly
21 Posts 3 Posters 2.1k Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • Z zuldero
    var ids = getIdByName('Wohnzimmer');
    for(let i = 0; i < ids.length; i++) {
       var id = ids[i] + '.useForPlayback';
       if(getObject(id) {
          // Hier kann der Datenpunkt ausgewertet werden
        }
     }
    

    heii sorry das geht mir grad etwas schnell, das sind so ziemlich meine ersten zeilen code. xD ist das jetzt "plug and play" code für mich?
    Was macht for und let

    sorry ich dachte nicht das das glich so weit geht mein kleines problem

    thewhoboxT Offline
    thewhoboxT Offline
    thewhobox
    wrote on last edited by
    #12

    @zuldero Kein Problem :)
    Dieser Code:

    $("channel[state.id=spotify-premium.0.*.useForPlayback]").each(function (id, i) {
        setState(id, true);
    });
    

    Sucht allee Objekte (warum auch immer nicht was nur channel ist) in "spotify-premium.0." die auf "useForPlayback" aufhören.
    Die id die du dann zurück bekommst ist genau der Button von useForPalyback.
    Um den Button auszulösen brauchst du dann noch das "setState".

    Meine Adapter: emby | discovery
    Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

    1 Reply Last reply
    0
    • Z Offline
      Z Offline
      zuldero
      wrote on last edited by
      #13

      @thewhobox kannst du mir noch erklären wie es den Namen von Objekt ID Device erkennt? das kapier ich gerade nicht. ich möchte ja auch verstehen was ich mache :)

      Also das Ganze Blockly sieht so aus und die beiden setStateDelayed Zeilen sollen durch die "intelligente Version" ausgetauscht werden natürlich auch mit delay.

      (Ändern in Zeile 11 und 24)

      var Text2, my, Ansage;
      
      
      // Fortsetzen
      on({id: 'javascript.0.Benutzerdefiniert.Google_Home_Musik.Fortsetzen', val: true}, function (obj) {
        var value = obj.state.val;
        var oldValue = obj.oldState.val;
        console.log('is aktiv');
        setState("javascript.0.Benutzerdefiniert.Google_Home_Musik.Fortsetzen"/*Google Home Musik.Fortsetzen*/, false);
        setState("alexa2.0.Echo-Devices.G090LF1180440A3H.Commands.speak"/*speak*/, 'Hey Google, spiele Musik');
        setStateDelayed("spotify-premium.0.devices.435883aaaa684c939b3aed555afa2e24.useForPlayback"/*press to use device for playback (only for non restricted devices)*/, true, 8000, false);]****
      });
      
      // Play Playlist
      on({id: 'javascript.0.Benutzerdefiniert.Google_Home_Musik.Play_Playlist', change: "any"}, function (obj) {
        var value = obj.state.val;
        var oldValue = obj.oldState.val;
        console.log(' is aktiv');
        Text2 = getState("javascript.0.Benutzerdefiniert.Google_Home_Musik.Play_Playlist").val;
        my = Text2.indexOf('my') + 1;
        if (my == 1) {
          Ansage = ['Hey Google, shuffle ',Text2.slice(0, 2),' Playlist ',Text2.slice(3, Text2.length)].join('');
          setState("alexa2.0.Echo-Devices.G090LF1180440A3H.Commands.speak"/*speak*/, Ansage);
          setStateDelayed("spotify-premium.0.devices.435883aaaa684c939b3aed555afa2e24.useForPlayback"/*press to use device for playback (only for non restricted devices)*/, true, 10000, false);
          console.log(Ansage);
        }
        if (my != 1) {
          Ansage = String('Hey Google, shuffle the Playlist ') + String(getState("javascript.0.Benutzerdefiniert.Google_Home_Musik.Play_Playlist").val);
          setState("alexa2.0.Echo-Devices.G090LF1180440A3H.Commands.speak"/*speak*/, Ansage);
          console.log(Ansage);
        }
      });
      
      // Intelligentes Play
      on({id: 'javascript.0.Benutzerdefiniert.Google_Home_Musik.Intelligentes_Play', change: "any"}, function (obj) {
        var value = obj.state.val;
        var oldValue = obj.oldState.val;
        console.log('is aktiv');
        if (getState("spotify-premium.0.devices.34741af6e3ea8373f2f21e41dcf514ec0c93fe7b.isAvailable").val == true || getState("spotify-premium.0.devices.435883aaaa684c939b3aed555afa2e24.isAvailable").val == true) {
          setState("javascript.0.Benutzerdefiniert.Google_Home_Musik.Fortsetzen"/*Google Home Musik.Fortsetzen*/, true);
        } else {
          setState("javascript.0.Benutzerdefiniert.Google_Home_Musik.Play_Playlist"/*Play Playlist*/, 'my Reggae');
        }
      });
      
      // Lautstärkeanpassung
      on({id: 'javascript.0.Benutzerdefiniert.Google_Home_Musik.Volume', change: "any"}, function (obj) {
        var value = obj.state.val;
        var oldValue = obj.oldState.val;
        if (parseFloat(getState("javascript.0.Benutzerdefiniert.Google_Home_Musik.Volume").val) == 1 || parseFloat(getState("javascript.0.Benutzerdefiniert.Google_Home_Musik.Volume").val) == 0) {
          setState("chromecast.0.Schlafzimmer.status.volume"/*Schlafzimmer.status.volume*/, getState("javascript.0.Benutzerdefiniert.Google_Home_Musik.Volume").val);
          setState("chromecast.0.Küche.status.volume"/*Küche.status.volume*/, getState("javascript.0.Benutzerdefiniert.Google_Home_Musik.Volume").val);
          setState("chromecast.0.Wohnzimmer.status.volume"/*Wohnzimmer.status.volume*/, getState("javascript.0.Benutzerdefiniert.Google_Home_Musik.Volume").val);
        } else {
          setState("chromecast.0.Schlafzimmer.status.volume"/*Schlafzimmer.status.volume*/, (getState("javascript.0.Benutzerdefiniert.Google_Home_Musik.Volume").val + 10));
          setState("chromecast.0.Küche.status.volume"/*Küche.status.volume*/, getState("javascript.0.Benutzerdefiniert.Google_Home_Musik.Volume").val);
          setState("chromecast.0.Wohnzimmer.status.volume"/*Wohnzimmer.status.volume*/, getState("javascript.0.Benutzerdefiniert.Google_Home_Musik.Volume").val);
        }
      });
      
      

      Also so? (Änderung in Zeile 11 und 26)

      var Text2, my, Ansage;
      
      
      // Fortsetzen
      on({id: 'javascript.0.Benutzerdefiniert.Google_Home_Musik.Fortsetzen', val: true}, function (obj) {
        var value = obj.state.val;
        var oldValue = obj.oldState.val;
        console.log('is aktiv');
        setState("javascript.0.Benutzerdefiniert.Google_Home_Musik.Fortsetzen"/*Google Home Musik.Fortsetzen*/, false);
        setState("alexa2.0.Echo-Devices.G090LF1180440A3H.Commands.speak"/*speak*/, 'Hey Google, spiele Musik');
        $("channel[state.id=spotify-premium.0.*.useForPlayback]").each(function (id, i) {
          setStateDelayed(id, true, 8000, false);
      });
      
      
      // Play Playlist
      on({id: 'javascript.0.Benutzerdefiniert.Google_Home_Musik.Play_Playlist', change: "any"}, function (obj) {
        var value = obj.state.val;
        var oldValue = obj.oldState.val;
        console.log(' is aktiv');
        Text2 = getState("javascript.0.Benutzerdefiniert.Google_Home_Musik.Play_Playlist").val;
        my = Text2.indexOf('my') + 1;
        if (my == 1) {
          Ansage = ['Hey Google, shuffle ',Text2.slice(0, 2),' Playlist ',Text2.slice(3, Text2.length)].join('');
          setState("alexa2.0.Echo-Devices.G090LF1180440A3H.Commands.speak"/*speak*/, Ansage);
          $("channel[state.id=spotify-premium.0.*.useForPlayback]").each(function (id, i) {
          setStateDelayed(id, true, 8000, false);
      });
          console.log(Ansage);
        }
        if (my != 1) {
          Ansage = String('Hey Google, shuffle the Playlist ') + String(getState("javascript.0.Benutzerdefiniert.Google_Home_Musik.Play_Playlist").val);
          setState("alexa2.0.Echo-Devices.G090LF1180440A3H.Commands.speak"/*speak*/, Ansage);
          console.log(Ansage);
        }
      });
      
      // Intelligentes Play
      on({id: 'javascript.0.Benutzerdefiniert.Google_Home_Musik.Intelligentes_Play', change: "any"}, function (obj) {
        var value = obj.state.val;
        var oldValue = obj.oldState.val;
        console.log('is aktiv');
        if (getState("spotify-premium.0.devices.34741af6e3ea8373f2f21e41dcf514ec0c93fe7b.isAvailable").val == true || getState("spotify-premium.0.devices.435883aaaa684c939b3aed555afa2e24.isAvailable").val == true) {
          setState("javascript.0.Benutzerdefiniert.Google_Home_Musik.Fortsetzen"/*Google Home Musik.Fortsetzen*/, true);
        } else {
          setState("javascript.0.Benutzerdefiniert.Google_Home_Musik.Play_Playlist"/*Play Playlist*/, 'my Reggae');
        }
      });
      
      // Lautstärkeanpassung
      on({id: 'javascript.0.Benutzerdefiniert.Google_Home_Musik.Volume', change: "any"}, function (obj) {
        var value = obj.state.val;
        var oldValue = obj.oldState.val;
        if (parseFloat(getState("javascript.0.Benutzerdefiniert.Google_Home_Musik.Volume").val) == 1 || parseFloat(getState("javascript.0.Benutzerdefiniert.Google_Home_Musik.Volume").val) == 0) {
          setState("chromecast.0.Schlafzimmer.status.volume"/*Schlafzimmer.status.volume*/, getState("javascript.0.Benutzerdefiniert.Google_Home_Musik.Volume").val);
          setState("chromecast.0.Küche.status.volume"/*Küche.status.volume*/, getState("javascript.0.Benutzerdefiniert.Google_Home_Musik.Volume").val);
          setState("chromecast.0.Wohnzimmer.status.volume"/*Wohnzimmer.status.volume*/, getState("javascript.0.Benutzerdefiniert.Google_Home_Musik.Volume").val);
        } else {
          setState("chromecast.0.Schlafzimmer.status.volume"/*Schlafzimmer.status.volume*/, (getState("javascript.0.Benutzerdefiniert.Google_Home_Musik.Volume").val + 10));
          setState("chromecast.0.Küche.status.volume"/*Küche.status.volume*/, getState("javascript.0.Benutzerdefiniert.Google_Home_Musik.Volume").val);
          setState("chromecast.0.Wohnzimmer.status.volume"/*Wohnzimmer.status.volume*/, getState("javascript.0.Benutzerdefiniert.Google_Home_Musik.Volume").val);
        }
      });
      
      

      PS danke schon fürs anschauen

      thewhoboxT 1 Reply Last reply
      0
      • Z zuldero

        @thewhobox kannst du mir noch erklären wie es den Namen von Objekt ID Device erkennt? das kapier ich gerade nicht. ich möchte ja auch verstehen was ich mache :)

        Also das Ganze Blockly sieht so aus und die beiden setStateDelayed Zeilen sollen durch die "intelligente Version" ausgetauscht werden natürlich auch mit delay.

        (Ändern in Zeile 11 und 24)

        var Text2, my, Ansage;
        
        
        // Fortsetzen
        on({id: 'javascript.0.Benutzerdefiniert.Google_Home_Musik.Fortsetzen', val: true}, function (obj) {
          var value = obj.state.val;
          var oldValue = obj.oldState.val;
          console.log('is aktiv');
          setState("javascript.0.Benutzerdefiniert.Google_Home_Musik.Fortsetzen"/*Google Home Musik.Fortsetzen*/, false);
          setState("alexa2.0.Echo-Devices.G090LF1180440A3H.Commands.speak"/*speak*/, 'Hey Google, spiele Musik');
          setStateDelayed("spotify-premium.0.devices.435883aaaa684c939b3aed555afa2e24.useForPlayback"/*press to use device for playback (only for non restricted devices)*/, true, 8000, false);]****
        });
        
        // Play Playlist
        on({id: 'javascript.0.Benutzerdefiniert.Google_Home_Musik.Play_Playlist', change: "any"}, function (obj) {
          var value = obj.state.val;
          var oldValue = obj.oldState.val;
          console.log(' is aktiv');
          Text2 = getState("javascript.0.Benutzerdefiniert.Google_Home_Musik.Play_Playlist").val;
          my = Text2.indexOf('my') + 1;
          if (my == 1) {
            Ansage = ['Hey Google, shuffle ',Text2.slice(0, 2),' Playlist ',Text2.slice(3, Text2.length)].join('');
            setState("alexa2.0.Echo-Devices.G090LF1180440A3H.Commands.speak"/*speak*/, Ansage);
            setStateDelayed("spotify-premium.0.devices.435883aaaa684c939b3aed555afa2e24.useForPlayback"/*press to use device for playback (only for non restricted devices)*/, true, 10000, false);
            console.log(Ansage);
          }
          if (my != 1) {
            Ansage = String('Hey Google, shuffle the Playlist ') + String(getState("javascript.0.Benutzerdefiniert.Google_Home_Musik.Play_Playlist").val);
            setState("alexa2.0.Echo-Devices.G090LF1180440A3H.Commands.speak"/*speak*/, Ansage);
            console.log(Ansage);
          }
        });
        
        // Intelligentes Play
        on({id: 'javascript.0.Benutzerdefiniert.Google_Home_Musik.Intelligentes_Play', change: "any"}, function (obj) {
          var value = obj.state.val;
          var oldValue = obj.oldState.val;
          console.log('is aktiv');
          if (getState("spotify-premium.0.devices.34741af6e3ea8373f2f21e41dcf514ec0c93fe7b.isAvailable").val == true || getState("spotify-premium.0.devices.435883aaaa684c939b3aed555afa2e24.isAvailable").val == true) {
            setState("javascript.0.Benutzerdefiniert.Google_Home_Musik.Fortsetzen"/*Google Home Musik.Fortsetzen*/, true);
          } else {
            setState("javascript.0.Benutzerdefiniert.Google_Home_Musik.Play_Playlist"/*Play Playlist*/, 'my Reggae');
          }
        });
        
        // Lautstärkeanpassung
        on({id: 'javascript.0.Benutzerdefiniert.Google_Home_Musik.Volume', change: "any"}, function (obj) {
          var value = obj.state.val;
          var oldValue = obj.oldState.val;
          if (parseFloat(getState("javascript.0.Benutzerdefiniert.Google_Home_Musik.Volume").val) == 1 || parseFloat(getState("javascript.0.Benutzerdefiniert.Google_Home_Musik.Volume").val) == 0) {
            setState("chromecast.0.Schlafzimmer.status.volume"/*Schlafzimmer.status.volume*/, getState("javascript.0.Benutzerdefiniert.Google_Home_Musik.Volume").val);
            setState("chromecast.0.Küche.status.volume"/*Küche.status.volume*/, getState("javascript.0.Benutzerdefiniert.Google_Home_Musik.Volume").val);
            setState("chromecast.0.Wohnzimmer.status.volume"/*Wohnzimmer.status.volume*/, getState("javascript.0.Benutzerdefiniert.Google_Home_Musik.Volume").val);
          } else {
            setState("chromecast.0.Schlafzimmer.status.volume"/*Schlafzimmer.status.volume*/, (getState("javascript.0.Benutzerdefiniert.Google_Home_Musik.Volume").val + 10));
            setState("chromecast.0.Küche.status.volume"/*Küche.status.volume*/, getState("javascript.0.Benutzerdefiniert.Google_Home_Musik.Volume").val);
            setState("chromecast.0.Wohnzimmer.status.volume"/*Wohnzimmer.status.volume*/, getState("javascript.0.Benutzerdefiniert.Google_Home_Musik.Volume").val);
          }
        });
        
        

        Also so? (Änderung in Zeile 11 und 26)

        var Text2, my, Ansage;
        
        
        // Fortsetzen
        on({id: 'javascript.0.Benutzerdefiniert.Google_Home_Musik.Fortsetzen', val: true}, function (obj) {
          var value = obj.state.val;
          var oldValue = obj.oldState.val;
          console.log('is aktiv');
          setState("javascript.0.Benutzerdefiniert.Google_Home_Musik.Fortsetzen"/*Google Home Musik.Fortsetzen*/, false);
          setState("alexa2.0.Echo-Devices.G090LF1180440A3H.Commands.speak"/*speak*/, 'Hey Google, spiele Musik');
          $("channel[state.id=spotify-premium.0.*.useForPlayback]").each(function (id, i) {
            setStateDelayed(id, true, 8000, false);
        });
        
        
        // Play Playlist
        on({id: 'javascript.0.Benutzerdefiniert.Google_Home_Musik.Play_Playlist', change: "any"}, function (obj) {
          var value = obj.state.val;
          var oldValue = obj.oldState.val;
          console.log(' is aktiv');
          Text2 = getState("javascript.0.Benutzerdefiniert.Google_Home_Musik.Play_Playlist").val;
          my = Text2.indexOf('my') + 1;
          if (my == 1) {
            Ansage = ['Hey Google, shuffle ',Text2.slice(0, 2),' Playlist ',Text2.slice(3, Text2.length)].join('');
            setState("alexa2.0.Echo-Devices.G090LF1180440A3H.Commands.speak"/*speak*/, Ansage);
            $("channel[state.id=spotify-premium.0.*.useForPlayback]").each(function (id, i) {
            setStateDelayed(id, true, 8000, false);
        });
            console.log(Ansage);
          }
          if (my != 1) {
            Ansage = String('Hey Google, shuffle the Playlist ') + String(getState("javascript.0.Benutzerdefiniert.Google_Home_Musik.Play_Playlist").val);
            setState("alexa2.0.Echo-Devices.G090LF1180440A3H.Commands.speak"/*speak*/, Ansage);
            console.log(Ansage);
          }
        });
        
        // Intelligentes Play
        on({id: 'javascript.0.Benutzerdefiniert.Google_Home_Musik.Intelligentes_Play', change: "any"}, function (obj) {
          var value = obj.state.val;
          var oldValue = obj.oldState.val;
          console.log('is aktiv');
          if (getState("spotify-premium.0.devices.34741af6e3ea8373f2f21e41dcf514ec0c93fe7b.isAvailable").val == true || getState("spotify-premium.0.devices.435883aaaa684c939b3aed555afa2e24.isAvailable").val == true) {
            setState("javascript.0.Benutzerdefiniert.Google_Home_Musik.Fortsetzen"/*Google Home Musik.Fortsetzen*/, true);
          } else {
            setState("javascript.0.Benutzerdefiniert.Google_Home_Musik.Play_Playlist"/*Play Playlist*/, 'my Reggae');
          }
        });
        
        // Lautstärkeanpassung
        on({id: 'javascript.0.Benutzerdefiniert.Google_Home_Musik.Volume', change: "any"}, function (obj) {
          var value = obj.state.val;
          var oldValue = obj.oldState.val;
          if (parseFloat(getState("javascript.0.Benutzerdefiniert.Google_Home_Musik.Volume").val) == 1 || parseFloat(getState("javascript.0.Benutzerdefiniert.Google_Home_Musik.Volume").val) == 0) {
            setState("chromecast.0.Schlafzimmer.status.volume"/*Schlafzimmer.status.volume*/, getState("javascript.0.Benutzerdefiniert.Google_Home_Musik.Volume").val);
            setState("chromecast.0.Küche.status.volume"/*Küche.status.volume*/, getState("javascript.0.Benutzerdefiniert.Google_Home_Musik.Volume").val);
            setState("chromecast.0.Wohnzimmer.status.volume"/*Wohnzimmer.status.volume*/, getState("javascript.0.Benutzerdefiniert.Google_Home_Musik.Volume").val);
          } else {
            setState("chromecast.0.Schlafzimmer.status.volume"/*Schlafzimmer.status.volume*/, (getState("javascript.0.Benutzerdefiniert.Google_Home_Musik.Volume").val + 10));
            setState("chromecast.0.Küche.status.volume"/*Küche.status.volume*/, getState("javascript.0.Benutzerdefiniert.Google_Home_Musik.Volume").val);
            setState("chromecast.0.Wohnzimmer.status.volume"/*Wohnzimmer.status.volume*/, getState("javascript.0.Benutzerdefiniert.Google_Home_Musik.Volume").val);
          }
        });
        
        

        PS danke schon fürs anschauen

        thewhoboxT Offline
        thewhoboxT Offline
        thewhobox
        wrote on last edited by
        #14

        @zuldero Es erkennt gar nicht den Namen. Es geht einfach alle IDs durch die es in den Objecten gibt wie "spotify-premium.0.devices.435883aaaa684c939b3aed555afa2e24.useForPlayback" und vergleicht dann ob sie in das Schema "spotify-premium.0.*.useForPlayback" passen. Wobei der Stern für jedes beliebiege Zeichen steht.

        Ohne es probiert zu haben sollte das funktionieren. ich hab allerdings noch zwei Anmerkungen:

        1.: Wieso bindest du "'javascript.0.Benutzerdefiniert.Google_Home_Musik.Fortsetzen' nur bei true und setzt es danach wieder zurück? Ich würde einfach auf jedes aktualisieren reagieren, da Google das eh nur auf true setzt. Somit ersparst dir Zeile 9.

        2.: Wenn du das per Delay machen möchtest, würde ich den Selector lieber in Timeout machen:

        setTimeout(8000, function() {
          $("channel[state.id=spotify-premium.0.*.useForPlayback]").each(function (id, i) {
            setStateDelayed(id, true, 8000, false);
         }
        });
        

        Das ersetzt dann Zeile 11 und 12 (und korrigiert die fehlende }) ;)

        Meine Adapter: emby | discovery
        Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

        1 Reply Last reply
        0
        • Z zuldero

          Hallo Leute
          ich scheitere mal wieder an was so simplem... ^^
          ich möchte abhängig vom Namen (Auf dem Bild 1) im jeweiligen Ordner (Auf dem Bild 2) den Datenbunkt betätigen (Auf dem Bild nur der Pfeil hab die 3 vergessen).

          Unbenannt.PNG

          Das Problem ist, dass die Infos die ich verwenden möchte nicht als Wert vorhanden sind, sondern als Name.
          Gibt es ein Blockly dafür das ich einfach nicht finde?

          Ich hätte ja eine Möglichkeit über getIdByName gefunden, jedoch müsste ich so auf jedes device einzeln testen. Dies geht doch bestimmt viel besser. Ev. sowas wie getNameByID? (Mit grünem Marker markiert was ich meine)

          Anmerkung 2019-03-11 142631.jpg

          Am liebsten wäre mir ein Lösung in Blockly aber ich glaub ich sehe schon das wird nix ^^ hahahaha
          Danke schon mal an jeden der das gelesen hat und meinem Problem etwas zeit widmet.

          paul53P Offline
          paul53P Offline
          paul53
          wrote on last edited by paul53
          #15

          @zuldero sagte:

          ich möchte abhängig vom Namen (Auf dem Bild 1)

          const idPlayer = 'spotify-premium.0.player.playlist.device';
          
          function setPlayback() {
             var name = getObject(idPlayer).common.name;
             var ids = getIdByName(name);
             for(let i = 0; i < ids.length; i++) {
                var id = ids[i] + '.useForPlayback'; // im jeweiligen Ordner (Auf dem Bild 2)
                if(getObject(id)) setState(id, true); // den Datenbunkt betätigen
             }
          }
          

          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

          Z 1 Reply Last reply
          0
          • Z Offline
            Z Offline
            zuldero
            wrote on last edited by
            #16

            ich bekomme die ganze zeit einen Fehler wegen der Klammer } in Zeile 4. Obwohl ich schon eine Klammer ) in Zeile 5 hinzugefügt habe um das Timeout zu schliessen.

            Zu deinen Fragen.

            1. Es ist schöner in den Objekten. das ist ein selbst erstelltes Objekt welches den ersten Teil meines Codes triggert. Das hat nur indirekt mit googel zu tun da ich alexa zu google Home sprechen lasse um die musik zu starten. ich kann eben leider nicht vom spotify Adaper aus ein device auswählen. Google home spielt musik auf der Gruppe Haus., zeigt jedoch manchmal Livingroom oder Schlafzimmer usw. an. Um nun die Musik mit Iobroker zu steuern muss ich eben diesen Namen im spotify adapter erkennen und im jeweiligen ordner die useForPlaybacktaste drücken.

            Ich weiss ist extrem mühsam...

            1. Danke an diesem Fehler hätte ich bestimmt 1h gesucht bzw. mich gefragt warum es nicht klappt.

            bzw. die hier die Klammer in Zeile 11

            // Fortsetzen
            on({id: 'javascript.0.Benutzerdefiniert.Google_Home_Musik.Fortsetzen', val: true}, function (obj) {
              var value = obj.state.val;
              var oldValue = obj.oldState.val;
              console.log('is aktiv');
              setState("javascript.0.Benutzerdefiniert.Google_Home_Musik.Fortsetzen"/*Google Home Musik.Fortsetzen*/, false);
              setState("alexa2.0.Echo-Devices.G090LF1180440A3H.Commands.speak"/*speak*/, 'Hey Google, spiele Musik');
              setTimeout(8000, function() {
              $("channel[state.id=spotify-premium.0.*.useForPlayback]").each(function (id, i) {
                setStateDelayed(id, true, 8000, false);
             }
            }));
            });
            
            1 Reply Last reply
            0
            • paul53P paul53

              @zuldero sagte:

              ich möchte abhängig vom Namen (Auf dem Bild 1)

              const idPlayer = 'spotify-premium.0.player.playlist.device';
              
              function setPlayback() {
                 var name = getObject(idPlayer).common.name;
                 var ids = getIdByName(name);
                 for(let i = 0; i < ids.length; i++) {
                    var id = ids[i] + '.useForPlayback'; // im jeweiligen Ordner (Auf dem Bild 2)
                    if(getObject(id)) setState(id, true); // den Datenbunkt betätigen
                 }
              }
              
              Z Offline
              Z Offline
              zuldero
              wrote on last edited by
              #17

              @paul53 said in Name von ObjektID oder getNameByID ?:

              var id = ids[i] + '.useForPlayback'; // im jeweiligen Ordner (Auf dem Bild 2)

              Genau diesen Ordner soll ja automatisch ausgewählt werden. (oder verstehe ich den code gerade falsch?)

              Mir würde es im Prinzip schon reichen wenn ich in einer Variable den Namen von Objekt (auf Bild 1) in einer Variable hätte. Dann könnte ich mit ner if abfrage auf die jeweiligen Ordner verweisen.

              paul53P 1 Reply Last reply
              0
              • Z zuldero

                @paul53 said in Name von ObjektID oder getNameByID ?:

                var id = ids[i] + '.useForPlayback'; // im jeweiligen Ordner (Auf dem Bild 2)

                Genau diesen Ordner soll ja automatisch ausgewählt werden. (oder verstehe ich den code gerade falsch?)

                Mir würde es im Prinzip schon reichen wenn ich in einer Variable den Namen von Objekt (auf Bild 1) in einer Variable hätte. Dann könnte ich mit ner if abfrage auf die jeweiligen Ordner verweisen.

                paul53P Offline
                paul53P Offline
                paul53
                wrote on last edited by
                #18

                @zuldero sagte:

                Mir würde es im Prinzip schon reichen wenn ich in einer Variable den Namen von Objekt (auf Bild 1) in einer Variable hätte.

                Das macht diese Funktion.

                Blockly_getName.JPG

                Export:

                ```
                <xml xmlns="http://www.w3.org/1999/xhtml">
                <variables>
                <variable type="" id=";LZ%8W-K/Jrn)T1/G(.d">idPlayer</variable>
                <variable type="" id="AJOxTENM0(tq#H5CtBfo">name</variable>
                </variables>
                <block type="procedures_defcustomreturn" id="+J[s.wIFQ[FR^QJD7xGN" x="138" y="138">
                <mutation statements="false">
                <arg name="idPlayer" varid=";LZ%8W-K/Jrn)T1/G(.d"></arg>
                </mutation>
                <field name="NAME">getName</field>
                <field name="SCRIPT">cmV0dXJuIGdldE9iamVjdChpZFBsYXllcikuY29tbW9uLm5hbWU7</field>
                <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                </block>
                <block type="variables_set" id="VKrj|f^l1oA45#%2s{kB" x="138" y="213">
                <field name="VAR" id="AJOxTENM0(tq#H5CtBfo" variabletype="">name</field>
                <value name="VALUE">
                <block type="procedures_callcustomreturn" id="0P.!2N+3O5ue/r6R$z%n">
                <mutation name="getName">
                <arg name="idPlayer"></arg>
                </mutation>
                <value name="ARG0">
                <block type="field_oid" id="#Z7krmZFIHs}`:uU]3">
                <field name="oid">default</field>
                </block>
                </value>
                </block>
                </value>
                </block>
                <block type="comment" id="kG:N;=RZe^$$G/o8JQM0" x="438" y="213">
                <field name="COMMENT">spotify-premium.0.player.playlist.device</field>
                </block>
                </xml>

                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 Reply Last reply
                1
                • Z Offline
                  Z Offline
                  zuldero
                  wrote on last edited by
                  #19

                  Halleluja damit kann ich arbeiten, wenn auch eure Methode bestimmt schöner wäre (ich bin gerne offen für alles).

                  Wenn mir jetzt noch jemand sagen kann warum mir Blockly diesen einen Datenpunkt (Device) nicht anzeigen kann wäre ich überglücklich, aber ich kann es auch über js beenden indem ich den namen einfach austausche. kein Problem.

                  Anmerkung 2019-03-11 185708.jpg Anmerkung 2019-03-11 185820.jpg

                  paul53P 1 Reply Last reply
                  0
                  • Z zuldero

                    Halleluja damit kann ich arbeiten, wenn auch eure Methode bestimmt schöner wäre (ich bin gerne offen für alles).

                    Wenn mir jetzt noch jemand sagen kann warum mir Blockly diesen einen Datenpunkt (Device) nicht anzeigen kann wäre ich überglücklich, aber ich kann es auch über js beenden indem ich den namen einfach austausche. kein Problem.

                    Anmerkung 2019-03-11 185708.jpg Anmerkung 2019-03-11 185820.jpg

                    paul53P Offline
                    paul53P Offline
                    paul53
                    wrote on last edited by paul53
                    #20

                    @zuldero sagte:

                    diesen einen Datenpunkt (Device) nicht anzeigen kann

                    device ist kein Datenpunkt ! Wenn Du das Objekt nicht selektieren kannst, dann tausche den Selektor gegen ein Textfeld aus und gib dort die komplette Objekt-ID spotify-premium.0.player.device ein.

                    Blockly_getName.JPG

                    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

                    Z 1 Reply Last reply
                    0
                    • paul53P paul53

                      @zuldero sagte:

                      diesen einen Datenpunkt (Device) nicht anzeigen kann

                      device ist kein Datenpunkt ! Wenn Du das Objekt nicht selektieren kannst, dann tausche den Selektor gegen ein Textfeld aus und gib dort die komplette Objekt-ID spotify-premium.0.player.device ein.

                      Blockly_getName.JPG

                      Z Offline
                      Z Offline
                      zuldero
                      wrote on last edited by
                      #21

                      @paul53 OMG Ihr seit so gut ich danke euch tausend mal. Ach jetzt kapier ichs. du meist den type device. darum konnte ich es nicht wählen. ich meinte immer nur den namen (ist ja auch device) xD.
                      Ich danke euch tausend mal. jetzt schaltet meine musik endlich zuverlässig aus wenn ich ins bett gehe und läuft morgens nicht immer noch xD hahahahaha

                      1 Reply Last reply
                      0
                      Reply
                      • Reply as topic
                      Log in to reply
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      530

                      Online

                      32.7k

                      Users

                      82.4k

                      Topics

                      1.3m

                      Posts
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                      ioBroker Community 2014-2025
                      logo
                      • Login

                      • Don't have an account? Register

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Home
                      • Recent
                      • Tags
                      • Unread 0
                      • Categories
                      • Unreplied
                      • Popular
                      • GitHub
                      • Docu
                      • Hilfe