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

  1. ioBroker Community Home
  2. Deutsch
  3. Visualisierung
  4. [GELÖST]Inhalt eines dropdown über Javascript

NEWS

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.9k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.3k

[GELÖST]Inhalt eines dropdown über Javascript

Geplant Angeheftet Gesperrt Verschoben Visualisierung
22 Beiträge 7 Kommentatoren 5.8k 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.
  • PatrickP Offline
    PatrickP Offline
    Patrick
    schrieb am zuletzt editiert von
    #9

    @paul53:

    @Patrick:

    ist es möglich die werte und den text eines dropdownmenüs über eine Javascript zu beschreiben.

    Würde gerne die Favoriten der Sonosplayer in einem dropdown aufgelistet haben unm sie zu steuern. `
    Habe mal mit meiner Test-Installation von ioBroker (unter Windows 7) experimentiert. Eine Zugriffsmöglichkeit von Javascript auf "Werte" und "Texte" des dropdown Menüs habe ich nicht gefunden.

    Da sich die Favoriten nicht ständig ändern, kann man mit einem Skript und 2 Hilfsdatenpunkten die Erstellung von "Werte" und "Texte" per copy & paste vereinfachen.

    `createState('sonos.favTexte', '', {  // Hilfsdatenpunkt für Texte
        type: 'string',
        def: ''
    });
    
    createState('sonos.favWerte', '', {  // Hilfsdatenpunkt für Werte
        type: 'string',
        def: ''
    });
    
    createState('sonos.favorites', 0, {  // Datenpunkt für dropdown
          read: true,
          write: true,
          desc: 'Sonos Favorit',
          type: 'number',
          max: 20,
          min: 0,
          def: 0
    });
    
    var favList = getState("sonos.0.root.192_168_xxx_yyy.favorites_list").val.split(',');
    var favLen = favList.length;
    var favWerte = '';
    var favTexte = '';
    
    for(var i = 0; i < favLen; i++) {
        favWerte = favWerte + ';' + i;
        favTexte = favTexte + ';' + favList[i];
    }
    
    // erstes Semikolon raus
    favWerte = favWerte.substr(1);
    favTexte = favTexte.substr(1);
    
    setState('sonos.favWerte', favWerte);
    setState('sonos.favTexte', favTexte);
    
    // Reagieren auf neue Auswahl in VIS dropdown
    on("javascript.0.sonos.favorites", function(dp) {
       setState("sonos.0.root.192_168_xxx_yyy.favorites_set", favList[dp.state.val]); 
    });` 
    Nach Änderung der Favoriten im Sonosplayer muss erst das Skript neu gestartet werden und dann die Werte der beiden Hilfsdatenpunkte nach VIS kopiert werden.
    
    Der Datenpunkt **~~[b]~~javascript.0.sonos.favorites[/b]** ist im VIS dropdown unter Object ID auszuwählen.
    
    danke schon mal 
    
    schade das es nicht automatisch funktioniert[/i]
    ``` ` 
    1 Antwort Letzte Antwort
    0
    • BluefoxB Offline
      BluefoxB Offline
      Bluefox
      schrieb am zuletzt editiert von
      #10

      @Patrick:

      keiner eine idee wie man Werte und texte über ein Javascript füllen kann `

      ! ````
      [{"tpl":"tplBasicState","data":{"oid":"dev3","g_fixed":false,"g_visibility":false,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":true,"g_css_border":true,"g_gestures":false,"g_signals":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"value":"A;B;C;D;F","html":"Press me first"},"style":{"left":"530px","top":"151px","width":"100px","height":"20px","border-width":"1px","border-style":"dashed","border-color":"darkgrey","border-radius":"3px","padding":"5px"},"widgetSet":"basic"},{"tpl":"tplJquiSelectList","data":{"oid":"dev1","g_fixed":false,"g_visibility":true,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"visibility-cond":"consist","visibility-val":"A","visibility-groups-action":"hide","values":"{dev3}","texts":"{dev3}","height":"100","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"visibility-oid":"dev3"},"style":{"left":"528px","top":"199px","width":"131px","height":"33px"},"widgetSet":"jqui"},{"tpl":"tplValueString","data":{"oid":"dev1","g_fixed":false,"g_visibility":true,"g_css_font_text":true,"g_css_background":true,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"visibility-cond":"consist","visibility-val":"A","visibility-groups-action":"hide","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"visibility-oid":"dev3"},"style":{"left":"665px","top":"197px","background-color":"#ff6666","width":"118px","height":"25px"},"widgetSet":"basic"},{"tpl":"tplValueString","data":{"oid":"dev3","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":true,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide"},"style":{"left":"666px","top":"153px","background-color":"#ff6666","width":"119px","height":"25px"},"widgetSet":"basic"}]

       ![48_animation.gif](/assets/uploads/files/48_animation.gif) 
      
      Hilft das?
      1 Antwort Letzte Antwort
      0
      • paul53P Offline
        paul53P Offline
        paul53
        schrieb am zuletzt editiert von
        #11

        Das folgende Skript erzeugt eine per Semikolon separierte Favoritenliste aus der durch Komma separierte Sonos-Liste automatisch bei jeder Änderung der Sonos-Liste:

        createState('sonos.favTexte', '', {
            type: 'string',
            def: ''
        });
        
        function formatList(list) {
            setState('sonos.favTexte', list.replace(/,/g, ';'));
        }
        
        var favList = getState("sonos.0.root.192_168_xxx_yyy.favorites_list").val;
        formatList(favList);  // Script start
        
        // Änderung der Favoriten-Liste
        on("sonos.0.root.192_168_xxx_yyy.favorites_list", function(dp) {
            formatList(dp.state.val);
        });
        
        

        In das pulldown Widget muss dann folgendes eingetragen werden, damit die Listen automatisch übernommen werden:

        Object ID: sonos.0.root.192_168_xxx_yyy.favorites_set

        Werte: {javascript.0.sonos.favTexte}

        Texte: {javascript.0.sonos.favTexte}

        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
        • PatrickP Offline
          PatrickP Offline
          Patrick
          schrieb am zuletzt editiert von
          #12

          Perfekt funktioniert

          vielen dank euch beiden

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

            @Patrick:

            Perfekt funktioniert `
            Dann markiere bitte das Thema als gelöst.

            @Bluefox: Zum Script editor in VIS habe ich leider keine Beschreibung gefunden, deshalb meine Fragen:

            • welchen Funktionsumfang kann man nutzen; funktionieren auch getState(id), on(id, callback), … ?

            • muss dazu der JS-Adapter installiert (und eine Instanz aktiv) sein ?

            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
            • H Offline
              H Offline
              Harry-IO-HM
              schrieb am zuletzt editiert von
              #14

              @paul53:

              Das folgende Skript erzeugt eine per Semikolon separierte Favoritenliste aus der durch Komma separierte Sonos-Liste automatisch bei jeder Änderung der Sonos-Liste:

              createState('sonos.favTexte', '', {
                  type: 'string',
                  def: ''
              });
              
              function formatList(list) {
                  setState('sonos.favTexte', list.replace(/,/g, ';'));
              }
              
              var favList = getState("sonos.0.root.192_168_xxx_yyy.favorites_list").val;
              formatList(favList);  // Script start
              
              // Änderung der Favoriten-Liste
              on("sonos.0.root.192_168_xxx_yyy.favorites_list", function(dp) {
                  formatList(dp.state.val);
              });
              
              

              In das pulldown Widget muss dann folgendes eingetragen werden, damit die Listen automatisch übernommen werden:

              Object ID: sonos.0.root.192_168_xxx_yyy.favorites_set

              Werte: {javascript.0.sonos.favTexte}

              Texte: {javascript.0.sonos.favTexte} `

              Hm, bei mir funktioniert das irgendwie nicht.

              Der ausgewählte Wert wird zwar in das Objekt geschrieben und leuchtet dort grün auf. Sonos bzw. der Sonos-Adapter spielt den gewählten Favorit aber nicht ab sondern bleibt beim aktuell eingestellten.

              Mit einen button state widjet, bei dem ich den Favoriten "hard codiert" als Wert eingetragen habe, funktioniert es tadellos.

              Irgendwer ne Idee?

              1 Antwort Letzte Antwort
              0
              • T Offline
                T Offline
                tempestas
                schrieb am zuletzt editiert von
                #15

                Habe das gleiche Problem.

                Was mir auffällt:

                z.B. der tuneIn Radiosender "1000 Oldies" funktioniert. Der läuft sofort los.

                Radio N-Joy dagegen nicht. Und keine einzige Spotify / Sonos Favoritenliste.

                Als wenn im Radiostream von 1000 Oldies der Play Befehl mit abgesetzt wird, bei den anderen aber nicht. Müsste man diesen also mit absetzen, aber dafür fehlt mir wieder die Kenntnis, wie das geht

                KORREKTUR:

                Es geht immer nur der Sender, der Platz 1 in der Liste ist. Das gilt bei dem Widget allerdings bei mir auch, wenn ich mal Dinge manuell eintrage. Immer nur Position 1 der Liste führt dazu, dass die Favorites im Sonos gesettz und dann auch gespielt werden. Bei allen anderen ist es immer nur setzen der Sonos Favorites aber eben ohne Play.

                <size="85">ioBroker | 21 Adapter | Ubuntu Server | intel NUC | Homematic CCU2 | Hue | Osram Lightify| Sonos | 2x Instar Cam | Samsung Tab A 2016 im Holzrahmen| 3x Echo dot | 1x Echo | Neato Botvac D5</size>

                1 Antwort Letzte Antwort
                0
                • T Offline
                  T Offline
                  tempestas
                  schrieb am zuletzt editiert von
                  #16

                  Pix, du benutzt das Widget doch auch bei deiner Sonos Steuerung. Hast du eine Idee, warum immer nur Platz 1 der Liste funktioniert?

                  ODer funktioniert bei dir alles?

                  <size="85">ioBroker | 21 Adapter | Ubuntu Server | intel NUC | Homematic CCU2 | Hue | Osram Lightify| Sonos | 2x Instar Cam | Samsung Tab A 2016 im Holzrahmen| 3x Echo dot | 1x Echo | Neato Botvac D5</size>

                  1 Antwort Letzte Antwort
                  0
                  • T Offline
                    T Offline
                    tempestas
                    schrieb am zuletzt editiert von
                    #17

                    ich pushe nochmal, eventuell hat einer ja noc heine Lösung oder kann zumindest meine Erkenntnis bestätigen?

                    <size="85">ioBroker | 21 Adapter | Ubuntu Server | intel NUC | Homematic CCU2 | Hue | Osram Lightify| Sonos | 2x Instar Cam | Samsung Tab A 2016 im Holzrahmen| 3x Echo dot | 1x Echo | Neato Botvac D5</size>

                    1 Antwort Letzte Antwort
                    0
                    • P Offline
                      P Offline
                      pix
                      schrieb am zuletzt editiert von
                      #18

                      @tempestas:

                      Pix, du benutzt das Widget doch auch bei deiner Sonos Steuerung. Hast du eine Idee, warum immer nur Platz 1 der Liste funktioniert?

                      ODer funktioniert bei dir alles? `
                      Hallo,

                      keine Ahnung, tut mir leid.

                      Bei mir laufen Sonos Favoriten, Amazon-Favoriten, etc.

                      Pix

                      ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

                      1 Antwort Letzte Antwort
                      0
                      • T Offline
                        T Offline
                        tempestas
                        schrieb am zuletzt editiert von
                        #19

                        Danke für deine Rückmeldung.

                        Seltsam, dann verstehe ich nicht, woran es liegt.

                        <size="85">ioBroker | 21 Adapter | Ubuntu Server | intel NUC | Homematic CCU2 | Hue | Osram Lightify| Sonos | 2x Instar Cam | Samsung Tab A 2016 im Holzrahmen| 3x Echo dot | 1x Echo | Neato Botvac D5</size>

                        1 Antwort Letzte Antwort
                        0
                        • PatrickP Offline
                          PatrickP Offline
                          Patrick
                          schrieb am zuletzt editiert von
                          #20

                          @tempestas:

                          Pix, du benutzt das Widget doch auch bei deiner Sonos Steuerung. Hast du eine Idee, warum immer nur Platz 1 der Liste funktioniert?

                          ODer funktioniert bei dir alles? `

                          bei mir funktioniert es wenn so, wenn kein Lehrzeichen nach dem Komma ist ;)

                          createState('sonos.favTexte', '', {

                          type: 'string',

                          def: ''

                          });

                          function formatList(list) {

                          list=list.replace(/ Einbruch/g,'');//Löscht Playlist Einbruch

                          list=list.replace(/ Car Alarm.mp3/g,'');//Löscht Playlist Alarm

                          setState('sonos.favTexte', list.replace(/, /g,';'));

                          }

                          var favList = getState("sonos.0.root.XXX_XXX_XXX_XXX.favorites_list"/favorites_list/).val;

                          formatList(favList); // Script start

                          // Änderung der Favoriten-Liste

                          on("sonos.0.root.XXX_XXX_XXX_XXX.favorites_list", function(dp) {

                          formatList(dp.state.val);

                          });

                          1 Antwort Letzte Antwort
                          0
                          • T Offline
                            T Offline
                            tempestas
                            schrieb am zuletzt editiert von
                            #21

                            ich danke dir.

                            Das war es. Ich musste aus diesem Code Teil:

                            list.replace(/,/g, ';')
                            
                            

                            hinter dem zu ersetzenden Komma noch ein Leerzeichen einfügen, so dass nun kein Leerzeichen mehr enthalten ist, da ersetzt. Nun funktioniert es wunderbar.

                            Vielen Dank für den entscheidenen Hinweis

                            <size="85">ioBroker | 21 Adapter | Ubuntu Server | intel NUC | Homematic CCU2 | Hue | Osram Lightify| Sonos | 2x Instar Cam | Samsung Tab A 2016 im Holzrahmen| 3x Echo dot | 1x Echo | Neato Botvac D5</size>

                            1 Antwort Letzte Antwort
                            0
                            • AlCalzoneA Offline
                              AlCalzoneA Offline
                              AlCalzone
                              Developer
                              schrieb am zuletzt editiert von
                              #22

                              Für so einfache Ersetzungen wie ", " => ";" braucht man keine regulären Ausdrücke (/…./), die nämlich wieder andere Schwierigkeiten mit sich bringen können.

                              list.replace(", ", ";")
                              

                              tuts auch.

                              Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                              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

                              653

                              Online

                              32.4k

                              Benutzer

                              81.4k

                              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