Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Visualisierung
    4. [Vorlage] Script für Sonos-Adapter

    NEWS

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    • Save The Date: ioBroker@Smart Living Forum Solingen, 14.06.

    [Vorlage] Script für Sonos-Adapter

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

      Hi,

      diese Vorlage bietet diverse Zusatzfunktionen zur Steuerung der Sonos-Geräte. Voraussetzung ist natürlich der Sonos-Adapter.

      Auszug aus den Funktionen:

      1. Favoriten in VIS: In VIS können die Sonos-Favoriten, also die in der App unter "Mein Sonos" gelistet sind, als Liste dargestellt werden. Klickt man auf einen dieser Favoriten, so wird der abgespielt und entsprechend im VIS auch markiert. Ein Menü bietet auch eine Auswahl, welche Favoriten zur Auswahl stehen sollen. Hier ein gif-Video, welches das zeigt.
        sonos-script-video-gif.gif

      2. State 'allStop': Setzt ALLE Sonos-Geräte des Adapters auf "stop".

      3. State 'customFavoritesPlay': Startet das Abspielen der Favoriten. Dabei wird der aktuell im Adapter gesetzte Favorit genommen, falls dieser nicht gesetzt ist, dann wird der 1. Favorit genommen. Es wird dabei auch eine Standard-Lautstärke gesetzt, die im Script unter PRESET_VOLUME definiert wird.

      4. State 'customFavoritesPlayG': Wie 'customFavoritesPlay', nur dass die Standard-Lautstärke der Sonos-Gruppe gesetzt wird, und nicht des einzelnen Gerätes.

      5. State 'customFavoritesPlayByNumber': Spielt einen Favoriten ab, in dem die entsprechende Nummer dem State übergeben wird.

      6. State 'customFavoritesPlayNext': Springt zum nächsten Favoriten-Eintrag in der Favoriten-Liste. Spielt den ersten Favoriten ab, falls aktuell der letzte Favorit gewählt ist.

      7. State 'customFavoritesPlayPrevious': Springt zum vorangegangenen Favoriten-Eintrag in der Favoriten-Liste. Spielt den letzten Favoriten ab, falls aktuell der erste Favorit gewählt ist.

      8. State 'volumeUp': Erhöht die Lautstärke. Voreingestellt ist die Erhöhung um 3 %, kann über VOL_VALUE in den Script-Einstellungen angepasst werden.

      9. State 'volumeDown': Verringert die Lautstärke. Voreingestellt ist die Verringerung um 3 %, kann über VOL_VALUEin den Script-Einstellungen angepasst werden.

      10. State 'volumeGroupUp': Wie 'volumeUp', nur dass hier die Gruppen-Lautstärke angepasst wird.

      11. State 'volumeGroupDown': Wie 'volumeDown', nur dass hier die Gruppen-Lautstärke angepasst wird.

      12. Geräte als Gruppe hinzufügen: Mittels GROUP_ON_PLAY / GROUP_ON_PLAY_DEVICES kann man in den Script-Einstellungen definieren, dass beim Abspielen eines Sonos-Gerätes automatisch weitere Geräte zur Gruppe hinzugefügt werden.


      Zur Einrichtung:

      1. Das Script in den JavaScript-Adapter als neues JS einfügen. Dort dann entsprechend die Einstellungen vornehmen. Das Script legt pro Sonos-Gerät entsprechende Datenpunkte (States) an, also wie im Sonos-Adapter:
        sonos-states.png

      2. Für VIS habe ich ein Projekt sonos-vis-project.zip erstellt, dieses ist hier zum Herunterladen verfügbar. Die Datei vis-views.json öffnet ihr am besten in einem Text-Editor, und macht dort Suchen/Ersetzen (STRG+h): suchen nach 10_10_10_10, ersetzen durch den Channel eures Sonos-Gerätes zur Anzeige in VIS. Channel ist der Teil des States in eurem Sonos-Adapter. Also bei sonos.0.root.192_168_0_100 ist das dann 192_168_0_100.
        Dann importiert ihr das Projekt in VIS.

      3. Wichtig: Wenn ihr die Größe des Widgets zur Darstellung der Favoriten ändert, müsst ihr auch die CSS-Datei anpassen, damit die Darstellung nicht "unsauber" wird.


      Und nun?
      Das war es auch schon 🙂 Nun sollte alles laufen.
      Zur Formatierung im VIS passt ihr entsprechend das CSS im VIS an, also z.B. die Farbe des aktuell ausgewählten Favoriten.

      Ich freue mich auf eure Rückmeldung.

      TJJochen M matze55 3 Replies Last reply Reply Quote 7
      • C
        charakterkopf last edited by

        Hi Mic,

        nachdem der Web Server in V.2 abgeschaltet ist suche ich genau sowas.

        Kannst du die Vis auch auf Git stellen? Dann könnte ich die 1zu1 die Tage mal kopieren und deine Lösung ausprobieren.
        Danke!

        Gruß charakterkopf

        1 Reply Last reply Reply Quote 0
        • D
          DjNetwork last edited by DjNetwork

          Hallo Mic,

          leider funzt bei mir was nicht. Und zwar ist es das Script selber. Habe das Widget in der View drin. Wird auch angezeigt, aber bleibt komplett leer. Ebenso der Favoriten-Datenpunkt "javascript.0.Sonos.Control.Music.favoriteListHtml".
          Angelegt wird alles, aber das Script meldet in 142 und dann in 73 einen Fehler.

          13:16:41.531 error javascript.0 at refreshFavoritesList (script.js.common.Test-Scripte.Neues_Sonos_Script:142:3)
          13:16:41.531 error javascript.0 at Object.<anonymous> (script.js.common.Test-Scripte.Neues_Sonos_Script:73:9)

          widget.PNG

          Habe zwar schon viel bei mir verbaut, aber mit Scripten bin ich mir echt ziemlich unsicher, daher
          dinde meinen Fehler nicht wirklich... Hat vielleicht jemand ne Idee?

          fehler.PNG

          1 Reply Last reply Reply Quote 0
          • S
            stockics6 last edited by

            Hi,
            ich habe leider das selbe Problem 😞

            1 Reply Last reply Reply Quote 0
            • Mic
              Mic Developer last edited by Mic

              @DjNetwork @stockics6

              Ich hatte beim Kopieren eine JS-Funktion vergessen, ist jetzt behoben mit Version 0.2.

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

                Danke für die Vorlage.
                Habe die gerade mal bei mir eingespielt.
                Zum testen habe ich in meine Favoriten bisher nur 2 Alben, 1 Amazon Music Playlist und ein Radiosender.

                Der Radiosender funktioniert tadellos, bei den Alben bzw Playlist bekomme ich in Log nur:

                Cannot replaceWithFavorite: Error: Got status 500 when invoking /MediaRenderer/AVTransport/Control
                

                Vorher kommt der Versuch:

                try to control id sonos.0.root.192_168_1_175.favorites_set with {"val":"Für Immer","ack":false,"ts":1567538712255,"q":0,"from":"system.adapter.web.0","user":"system.user.admin","lc":1567538711254}
                

                Fehler gefunden.
                Hatte die Favoriten schon sehr lange drin und im Grunde auch nicht mehr benutzt.
                In der SONOS-App konnte ich auch nicht das komplette Album wiedergeben, sondern nur auf die Titel klicken.
                Favoriten gelöscht und neu angelegt und siehe da, in der App habe ich jetzt auch ein Wiedergabe-Button und das Widget läuft jetzt auch.
                Danke!

                1 Reply Last reply Reply Quote 0
                • Mic
                  Mic Developer last edited by Mic

                  Hier ein Teaser / Preview 🙂

                  Im VIS können nun Sonos-Favoriten ausgewählt werden, die dann in VIS in einer Liste zur Auswahl stehen.
                  Hier ein gif-Video, welches das zeigt.
                  Läuft alles sehr flüssig, man klickt auf den Bearbeitungs-Stift, fügt Favoriten hinzu, oder entfernt diese.
                  Werde ich demnächst veröffentlichen hier, inklusive View-Export etc.

                  test3.gif

                  1 Reply Last reply Reply Quote 4
                  • C
                    charakterkopf last edited by

                    sieht cool aus.

                    1 Reply Last reply Reply Quote 0
                    • Mic
                      Mic Developer last edited by

                      Update:

                      Ich habe das Script deutlich erweitert, siehe ersten Beitrag in diesem Thread, den ich jetzt vollständig aktualisiert habe.
                      Script und VIS-Projekt ist nun zum Download verfügbar.

                      Ich freue mich auf eure Rückmeldungen.

                      1 Reply Last reply Reply Quote 2
                      • W
                        Wildbill last edited by

                        Hi,

                        Installation problemlos, keine Fehlermeldungen beim starten des Skripts und Importieren des angepassten Views. Allerdings bleibt der Datenpunkt customFavoriteList leider bei allen Sonos-Geräten leer, auch wenn ich in der Sonos-App Favoriten ändere oder hinzufüge. Beim zugehörigen Datenpunkt favorites_list im Sonos-Adapter kommt die Änderung an, nur Dein Skript scheint hier nichts auszulesen oder zu finden. Keine Ahnun, wo ich ansetzen soll...

                        Gruss, Jürgen

                        Mic 1 Reply Last reply Reply Quote 0
                        • Mic
                          Mic Developer @Wildbill last edited by

                          @Wildbill sagte in [Vorlage] Script für Sonos-Adapter:

                          Allerdings bleibt der Datenpunkt customFavoriteList leider bei allen Sonos-Geräten leer

                          Hi Jürgen,

                          das war eigentlich so gewollt, d.h. dass initial die Liste leer ist und man über den Stift dann die Favoriten, die im VIS erscheinen sollen, hinzufügt:
                          stift.png

                          Scheint aber nicht logisch 🙂 Habe daher das Script nun umgestellt, so dass initial alle Sonos-Favoriten in Datenpunkt customFavoriteList übernommen werden, mit dem Stift kann man dann einzelne entfernen.
                          Hier Version 1.1 des Scripts: sonos-script.js

                          1 Reply Last reply Reply Quote 2
                          • W
                            Wildbill last edited by Wildbill

                            @Mic
                            Hi,

                            kaum macht man es richtig, geht es auch. 😀 Ja, das mit dem Stift ist nicht so wirklich intuitiv, der ist mir gar nicht aufgefallen und hatte ich auch nirgends gelesen. Kaum drauf geklickt, und schon waren sie da. 🙄
                            Nun teste ich aber dennoch die neue Version, man will ja up to date bleiben. Dickes Danke!

                            Gruss, Jürgen

                            EDIT: Läuft. Datenpunkte gelöscht, Skript aktualisiert und neu gestartet und alles da, wie ich es ursprünglich dachte. TOP 👍

                            B 1 Reply Last reply Reply Quote 1
                            • M
                              michihorn last edited by

                              Hallo habe eben mal die Vis view im Editor überarbeitet. Dann wollte ich die Widget in eine neue View importieren. Der Prozeß, wie es geht ist klar. Aber es werden keine Elemente angelegt. Was kann das sein?
                              Gruß Michael

                              Mic 1 Reply Last reply Reply Quote 0
                              • W
                                Wildbill last edited by Wildbill

                                Hi,
                                die Icons werden im Projektordner gesucht. Wenn Du nur den View in ein anderes Projekt kopiert hast, fehlen die. Das geht dann nur über SSH direkt auf dem Iobroker-Rechner oder umständlich über den Dateimanager von VIS. Im Sonos-Projekt der Ordner Icons. Der muss in Den Projekt kopiert und dann die Pfade im View (Export in Texteditor und dann da) angepasst werden.
                                Gruß, Jürgen

                                1 Reply Last reply Reply Quote 0
                                • Mic
                                  Mic Developer @michihorn last edited by

                                  @michihorn
                                  Wie von @Wildbill beschrieben...
                                  Oder du extrahierst die Icons aus der ProjektZip-Datei und kopierst sie per einen SSH-Dateimanager rüber auf deinen Rechner, auf dem der ioBroker läuft, etwa nach /opt/iobroker/iobroker-data/files/vis.0/ und dort in ein Unterverzeichnis.

                                  M 1 Reply Last reply Reply Quote 0
                                  • W
                                    Wildbill last edited by

                                    @Mic Ich habe einen kleinen Bug gefunden. Einer meiner Favoriten hat(te) ein Komma im Text, was dazu führte, dass Dein Skript das da getrennt hat und ich einmal den vorderen Teil und einmal separat den hinteren Teil als jeweils eigenen Favorit angezeigt bekam. Anwählen liessen sich beide nicht. Ich habe dann in der Sonos-App das Komma raus und den Favorit neu rübergezogen (der besagte Stift 🙄 ) und alles ist gut. Aber vielleicht lässt sich da ja noch was machen...

                                    Gruss, Jürgen

                                    Mic 1 Reply Last reply Reply Quote 0
                                    • Mic
                                      Mic Developer @Wildbill last edited by Mic

                                      @Wildbill
                                      Das Problem ist hier, dass der Sonos-Adapter in sonos.0.root.xx_xx_xx_xx.favorites_list die Favoriten komma-separiert, bzw. Komma und Leerzeichen. Dadurch kann ich Script-seitig nicht wirklich unterscheiden, ob das Komma im Favoriten-Text der App, oder durch den Sonos-Adapter gesetzt wurde.

                                      Besser wäre wohl, wenn der Adapter die Trennung per Semikolon machen würde, so wie es auch Spotify und andere Adapter machen.
                                      Werde mal ein Issue auf Github aufmachen im Sonos-Adapter.

                                      Update: Issue aufgemacht: https://github.com/ioBroker/ioBroker.sonos/issues/54

                                      Mic-M created this issue in ioBroker/ioBroker.sonos

                                      closed [Request] Change state favorites_list from comma separated to semicolon separated #54

                                      N 1 Reply Last reply Reply Quote 1
                                      • W
                                        Wildbill last edited by

                                        @Mic Ah ja, das hatte ich noch gar nicht drauf geachtet. Naja, ob Komma oder Semikolon ist ja fast egal, es gibt bestimmt auch Playlists mit Semikolon im Namen. Wenn man es weiss ist es ja kein Problem, das kurz im Sonos-Adapter zu ändern, aber vielleicht gibt es ja eine Lösung, die passt.

                                        Gruss, Jürgen

                                        1 Reply Last reply Reply Quote 0
                                        • Mic
                                          Mic Developer last edited by

                                          @Wildbill
                                          Jedenfalls danke für Deinen Hinweis hier im Thread.
                                          Semikolon ist aus Erfahrung plattform-übergreifend als Trennzeichen etabliert, daher wäre das m.E. sinnvoller, aber schließt natürlich auch nicht aus, dass im Name dann doch ein ; vergeben wird. Deutlich besser wäre sicherlich ein JSON state im Sonos-Adapter, dann wäre es völlig egal.

                                          1 Reply Last reply Reply Quote 0
                                          • M
                                            michihorn @Mic last edited by michihorn

                                            Ich hab es hinbekommen. Danke, allerdings habe ich jetzt einige Projekte im VIS die ich nicht mehr weg bekomme.
                                            So sieht es auf Datei Ebene aus:
                                            4a.PNG
                                            ...und so im VIS
                                            3.JPG
                                            nur das unterste Projekt sollte es geben. Wie kann die übrigen löschen?

                                            Zu dem Projekt habe ich auch eine Frage:

                                            Die Schaltflächen Stop / Play funktionieren bei mir nicht
                                            5.JPG

                                            Gibt es eine einfache Chance einen anderen Raum zu gruppieren?

                                            Michael

                                            Mic 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            1.0k
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            vis
                                            46
                                            153
                                            24436
                                            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