Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Visualisierung
    4. [GELÖST]Inhalt eines dropdown über Javascript

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [GELÖST]Inhalt eines dropdown über Javascript

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

      Hallo

      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.

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

        keiner eine idee wie man Werte und texte über ein Javascript füllen kann
        1083_unbenannt.png

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

          Zum Ermitteln des Zustandstextes siehe http://forum.iobroker.net/viewtopic.php?f=21&t=4199&p=41973#p41973.

          Willst Du entsprechende Datenpunkte erzeugen, geht das mit createState():

          createState(Variabeln, 0, {
                read: true, 
                write: true, 
                desc: "Beschreibung", 
                type: "number", 
                max: 2,
                min: 0, 
                def: 0, 
                states: {
                  0:"OFF",
                  1:"ON",
                  2:"AUTO"
                }
          });
          
          
          1 Reply Last reply Reply Quote 0
          • Patrick
            Patrick last edited by

            danke schon mal

            ich hoffe ich steige da noch durch…

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

              @paul53:

              Zum Ermitteln des Zustandstextes siehe http://forum.iobroker.net/viewtopic.php?f=21&t=4199&p=41973#p41973.

              Willst Du entsprechende Datenpunkte erzeugen, geht das mit createState():

              createState(Variabeln, 0, {
                    read: true, 
                    write: true, 
                    desc: "Beschreibung", 
                    type: "number", 
                    max: 2,
                    min: 0, 
                    def: 0, 
                    states: {
                      0:"OFF",
                      1:"ON",
                      2:"AUTO"
                    }
              });
              
              ```` `  
              

              ok ich verstehe es nicht wo muss was hin??

              und wo bekomme ich dem index her ?

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

                Ich verwende kein VIS, gehe aber davon aus, dass man Werte nur bei bestehenden Datenpunkten verändern kann. Gibt es den gewünschten Datenpunkt noch nicht, muss man ihn erzeugen. Das geht entweder im Reiter "Objekte" oder per Script des Javascript-Adapters.

                Die gezeigte createState()-Funktion wird also als ein Skript im JS-Adapter eingegeben (oder aus dem Forum kopiert und angepasst) und bei Start des Skripts wird der Datenpunkt unter "javascript.0." erzeugt. Diesen Datenpunkt (z.B. "javascript.0.Variabeln") kann man dann über "Object ID" in VIS auswählen.

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

                  @paul53:

                  Ich verwende kein VIS, gehe aber davon aus, dass man Werte nur bei bestehenden Datenpunkten verändern kann. Gibt es den gewünschten Datenpunkt noch nicht, muss man ihn erzeugen. Das geht entweder im Reiter "Objekte" oder per Script des Javascript-Adapters.

                  Die gezeigte createState()-Funktion wird also als ein Skript im JS-Adapter eingegeben (oder aus dem Forum kopiert und angepasst) und bei Start des Skripts wird der Datenpunkt unter "javascript.0." erzeugt. Diesen Datenpunkt (z.B. "javascript.0.Variabeln") kann man dann über "Object ID" in VIS auswählen. `

                  das hab ich schon verstanden aber wie kann ich die Variable aus Vis aufrufen

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

                    @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.[/i]
                    
                    1 Reply Last reply Reply Quote 0
                    • Patrick
                      Patrick last edited by

                      @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 Reply Last reply Reply Quote 0
                      • Bluefox
                        Bluefox last edited by

                        @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 Reply Last reply Reply Quote 0
                        • paul53
                          paul53 last edited by

                          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}

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

                            Perfekt funktioniert

                            vielen dank euch beiden

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

                              @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 ?

                              1 Reply Last reply Reply Quote 0
                              • H
                                Harry-IO-HM last edited by

                                @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 Reply Last reply Reply Quote 0
                                • T
                                  tempestas last edited by

                                  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.

                                  1 Reply Last reply Reply Quote 0
                                  • T
                                    tempestas last edited by

                                    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?

                                    1 Reply Last reply Reply Quote 0
                                    • T
                                      tempestas last edited by

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

                                      1 Reply Last reply Reply Quote 0
                                      • P
                                        pix last edited by

                                        @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

                                        1 Reply Last reply Reply Quote 0
                                        • T
                                          tempestas last edited by

                                          Danke für deine Rückmeldung.

                                          Seltsam, dann verstehe ich nicht, woran es liegt.

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

                                            @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 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            639
                                            Online

                                            31.8k
                                            Users

                                            80.0k
                                            Topics

                                            1.3m
                                            Posts

                                            7
                                            22
                                            5362
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo