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. Blockly
  5. [gelöst] Name von ObjektID oder getNameByID?

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    11
    1
    509

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.7k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.6k

[gelöst] Name von ObjektID oder getNameByID?

Geplant Angeheftet Gesperrt Verschoben Blockly
21 Beiträge 3 Kommentatoren 1.9k Aufrufe 2 Watching
  • Ä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.
  • Z Offline
    Z Offline
    zuldero
    schrieb am zuletzt editiert von zuldero
    #1

    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 1 Antwort Letzte Antwort
    0
    • paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von
      #2

      getIdByName(name) funktioniert nur mit den Namen von Datenpunkten. Du hast aber Gerätenamen markiert. Was willst Du damit machen ?

      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
      • Z Offline
        Z Offline
        zuldero
        schrieb am zuletzt editiert von
        #3

        Hintergrund ist, ich muss dieses "useForPlayback" für das jeweilige device drücken um den ganzen Ordner überhaupt verwenden zu können. Ansonsten Passiert auch nichts. (der Adapter funktioniert eig. gar nicht richtig mit den Chromecast Audios, ich machs jedoch möglich).

        GetidByName ist für meinen Anwendungsfall (glaube ich) nicht das richtige, jedoch das einzige worauf ich bei meiner Recherche (hab dich schon fast erwartet paul53 XD hahaha) gestossen bin.

        1 Antwort Letzte Antwort
        0
        • Z Offline
          Z Offline
          zuldero
          schrieb am zuletzt editiert von
          #4

          Also um es noch etwas besser zu erklären, ich lasse alexa sagen: ok google spiele musik. Daraufhin aktalisiert sich der erste sate (device) mit dem aktuell ausgewählten gerät. Google bug etwas rum, ist eig. immer das ganze Haus jedoch wird manchmal was andres angezeigt. um nun die Musik über den spotify adapter steuern zu können, muss ich eben dieses "useForPlayback" drücken.

          ich weiss umständlicher geht es nich musik zu machen, jedoch finde ich keine andere möglichkeit für diese chromcast audios (die ich schon vor IoBrocker hatte)

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

            Ich habe mich geirrt: getIdByName(name) funktioniert auch für Geräte (habe es gerade getestet). Du erhältst allerdings ein Array, da der Name "Wohnzimmer" mehrfach verwendet wird.

            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
               }
            }
            

            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 Antwort Letzte Antwort
            0
            • thewhoboxT Offline
              thewhoboxT Offline
              thewhobox
              schrieb am zuletzt editiert von
              #6

              Das ginge doch bestimmt besser über den Selector oder?

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

              Ich hatte auch vor den Selector als Blockly-Element zu machen, da ich den auch öfters gebrauchen könnte.
              Wird aber noch ne weile dauern.

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

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

                Da es keinen Kanal gibt, besser so

                const playback = $('*.useForPlayback');
                

                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

                thewhoboxT 1 Antwort Letzte Antwort
                0
                • paul53P paul53

                  Da es keinen Kanal gibt, besser so

                  const playback = $('*.useForPlayback');
                  
                  thewhoboxT Offline
                  thewhoboxT Offline
                  thewhobox
                  schrieb am zuletzt editiert von
                  #8

                  @paul53 Wenn ich in meinem Testscript (mal alle Zigbee Batterien aufliesten) das "channel[state.id=" weg lasse funktioniert es aber nicht mehr.

                  Muss aber gestehen hab das noch nie wirklich verstanden^^

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

                  paul53P 1 Antwort Letzte Antwort
                  0
                  • thewhoboxT thewhobox

                    @paul53 Wenn ich in meinem Testscript (mal alle Zigbee Batterien aufliesten) das "channel[state.id=" weg lasse funktioniert es aber nicht mehr.

                    Muss aber gestehen hab das noch nie wirklich verstanden^^

                    paul53P Offline
                    paul53P Offline
                    paul53
                    schrieb am zuletzt editiert von
                    #9

                    @thewhobox Wirklich ? Das wäre auch für mich unverständlich.

                    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

                    thewhoboxT 1 Antwort Letzte Antwort
                    0
                    • paul53P paul53

                      Ich habe mich geirrt: getIdByName(name) funktioniert auch für Geräte (habe es gerade getestet). Du erhältst allerdings ein Array, da der Name "Wohnzimmer" mehrfach verwendet wird.

                      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
                         }
                      }
                      
                      Z Offline
                      Z Offline
                      zuldero
                      schrieb am zuletzt editiert von
                      #10
                      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 1 Antwort Letzte Antwort
                      0
                      • paul53P paul53

                        @thewhobox Wirklich ? Das wäre auch für mich unverständlich.

                        thewhoboxT Offline
                        thewhoboxT Offline
                        thewhobox
                        schrieb am zuletzt editiert von
                        #11

                        @paul53 Ja habe es gerade nochmal getestet:

                        var x = $("channel[state.id=*.battery]");
                        log(JSON.stringify(x));
                        var y = $("*.battery");
                        log(JSON.stringify(y));
                        

                        ergibt folgendes Log:
                        16:21:09.540 info javascript.0 script.js.Skript_2: {"0":"zigbee.0.00158d00027c2af3.battery","1":"zigbee.0.00158d000278e3ef.battery","2":"zigbee.0.00158d0002cb43ca.battery","length":3}
                        16:21:09.540 info javascript.0 script.js.Skript_2: {"length":0}

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

                        1 Antwort Letzte Antwort
                        0
                        • 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
                          schrieb am zuletzt editiert von
                          #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 Antwort Letzte Antwort
                          0
                          • Z Offline
                            Z Offline
                            zuldero
                            schrieb am zuletzt editiert von
                            #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 Antwort Letzte Antwort
                            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
                              schrieb am zuletzt editiert von
                              #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 Antwort Letzte Antwort
                              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
                                schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                                0
                                • Z Offline
                                  Z Offline
                                  zuldero
                                  schrieb am zuletzt editiert von
                                  #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 Antwort Letzte Antwort
                                  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
                                    schrieb am zuletzt editiert von
                                    #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 Antwort Letzte Antwort
                                    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
                                      schrieb am zuletzt editiert von
                                      #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 Antwort Letzte Antwort
                                      1
                                      • Z Offline
                                        Z Offline
                                        zuldero
                                        schrieb am zuletzt editiert von
                                        #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 Antwort Letzte Antwort
                                        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
                                          schrieb am zuletzt editiert von 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 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

                                          593

                                          Online

                                          32.5k

                                          Benutzer

                                          81.8k

                                          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