Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Sonos-HTTP-API Installation für Newbies, Dummies und mich

    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

    Sonos-HTTP-API Installation für Newbies, Dummies und mich

    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      skokarl @Matten last edited by

      @Matten
      vermute der Ordner ist falsch

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

        Hochladen der Widgets ... wenn ich abends wieder daheim bin 🙂

        @Matten ... wenn ich mir den screenshot der .service Datei anschaue, sind da schon auch die Sektionen in den eckigen Klammern drin?
        DIE müssen nämlich rein, sonst kommt genau die Fehlermeldung.
        Nochmal:

        [Unit]
        Description=Sonos HTTP API Daemon
        After=syslog.target network.target
        
        [Service]
        Type=simple
        ExecStart=/usr/bin/node /root/node-sonos-http-api-master/server.js
        Restart=always
        RestartSec=10
        
        [Install]
        WantedBy=multi-user.target
        
        

        ... habs nämlich kurz probiert, so funktionierts ...

        M 1 Reply Last reply Reply Quote 0
        • M
          Matten @dwm last edited by

          @dwm Danke, die Fehlermeldung kommt nicht mehr, aber der Server startet nicht automatisch...

          S 1 Reply Last reply Reply Quote 0
          • S
            skokarl @Matten last edited by

            @Matten
            Ich bin jetzt auch nicht der Linux Crack.....
            aber warum installierst Du nicht genauso wie ich es beschrieben habe ?.... da steht nix von root User

            M 1 Reply Last reply Reply Quote 0
            • M
              Matten @skokarl last edited by

              @skokarl Für die Autostart-Datei muss ich doch den Pfadnamen eingeben. Installation ist zu 100% nach Deinem Muster ausgeführt worden.

              S 1 Reply Last reply Reply Quote 0
              • S
                skokarl @Matten last edited by

                @Matten
                aber es geht doch nicht, oder ?
                Ich habs mit meinem User gemacht, nicht mit root.

                M 1 Reply Last reply Reply Quote 0
                • M
                  Matten @skokarl last edited by

                  @skokarl Der Server läuft, nur der Autostart nicht.

                  S 1 Reply Last reply Reply Quote 0
                  • S
                    skokarl @Matten last edited by

                    @Matten
                    schon klar..... weil er den Server nicht starten kann.
                    Machs nochmal... mit nem normalen User.

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

                      @skokarl sagte in [gelöst] Sonos-HTTP-API Installation für Newbies, Dummies und mich:

                      chs nochmal... mit nem normalen User.

                      Im Prinzip läuft der Service ja unter root-Rechten, das darf dem "eigentlich" also nichts ausmachen.

                      Ohne Log ist das Stochern im Nebel ...
                      Wenn Du das Ding startest, was sagt denn

                      tail -f /var/log/syslog
                      
                      1 Reply Last reply Reply Quote 0
                      • D
                        dwm last edited by

                        Könnt mal jemand was ausprobieren?

                        #!/bin/bash
                        
                        SONOSAPI_USER=sonosapi
                        SONOSAPI_DIR=/opt/sonosapi
                        SONOSAPI_SERVICE=sonosapi
                        
                        SONOSAPI_SERVICE_FILE=/etc/systemd/system/$SONOSAPI_SERVICE.service
                        
                        sonosapi_user(){
                          useradd --system --home-dir $SONOSAPI_DIR --shell /bin/bash $SONOSAPI_USER
                          mkdir -p $SONOSAPI_DIR
                          chown $SONOSAPI_USER:$SONOSAPI_USER $SONOSAPI_DIR
                        }
                        
                        
                        sonosapi_install() {
                          cd $SONOSAPI_DIR
                          su -c 'wget https://github.com/jishi/node-sonos-http-api/archive/master.zip' $SONOSAPI_USER
                          su -c 'unzip master.zip' $SONOSAPI_USER
                          su -c 'cd node-sonos-http-api-master && npm install --production' $SONOSAPI_USER
                          rm master.zip
                        }
                        
                        sonosapi_service() {
                        echo Writing $SONOSAPI_SERVICE_FILE
                        cat << EOF > $SONOSAPI_SERVICE_FILE
                        [Unit]
                        Description=Sonos HTTP API Daemon
                        After=syslog.target network.target
                        
                        [Service]
                        Type=simple
                        User=$SONOSAPI_USER
                        ExecStart=/usr/bin/node $SONOSAPI_DIR/node-sonos-http-api-master/server.js
                        Restart=always
                        RestartSec=10
                        
                        [Install]
                        WantedBy=multi-user.target
                        EOF
                        
                        systemctl enable $SONOSAPI_SERVICE
                        systemctl start $SONOSAPI_SERVICE
                        }
                        
                        sonosapi_uninstall() {
                            systemctl stop $SONOSAPI_SERVICE
                            systemctl disable $SONOSAPI_SERVICE
                            rm -rf $SONOSAPI_DIR
                            userdel $SONOSAPI_USER
                            rm $SONOSAPI_SERVICE_FILE
                        }
                        
                        # sonosapi_uninstall
                        sonosapi_user
                        sonosapi_install
                        sonosapi_service
                        
                        

                        Den Code oben auf der Linux Kiste als "sonosapi_install.sh" abspeichern. Das ist im Prinzip die Installationsanleitung als bash-script.
                        Dann ausführen mit

                        sudo bash ./sonosapi_install.sh
                        

                        Danach sollte "eigentlich" alles geritzt sein. Die API läuft dann im Verzeichnis /opt/sonosapi mit einem eigenen User "sonosapi", das bitte berücksichtigen, wenn man im Filesystem was reinspeichert ...

                        Ich hab das jetzt spaßeshalber mal auf ner Ubuntu 18.04 probiert, da klappts.

                        S 1 Reply Last reply Reply Quote 0
                        • S
                          skokarl @dwm last edited by skokarl

                          @dwm

                          Du bist sicherlich um 1000% fitter als ich, aber bisher hat sich noch niemand über den autostart beschwert,
                          da macht doch Matten irgendwas falsch .... oder liegt es an der Linux Version ??

                          D M 2 Replies Last reply Reply Quote 0
                          • D
                            dwm @skokarl last edited by

                            @skokarl ... Keine Ahnung, worans liegt.
                            Der Autostart funktioniert schon so, wie beschrieben, das passt schon. Ohne log-Ausgabe ist das nur Raten, das führt zu nix. Irgendwas ist da halt falsch zusammengestöpselt.

                            1 Reply Last reply Reply Quote 1
                            • C
                              chka last edited by

                              morgen zusammen, ich nutze den adapter für die Sprachausgabe
                              In 4 Zimmern sind größten teils Sonos 1 und Playbar verbaut.
                              Ich lass mich über die Sonos Wecken in dem Musik abgespielt wird.
                              Davor wollte ich noch eine Sprachausgabe über alle Sonos in den unterschiedlichen Zonen ausgeben.
                              Laut Doku sieht dann die url wie folgt aus:

                              http://IP:5005/sayall/Guten%20Morgen.%20Es%20ist:%206%20Uhr%20und%2044.%20Die%20Aktuelle%20Außentemperatur%20beträgt%20-4.3%20Grad%20Celsius.%20Achtung%20Wetterwarnung/de/20
                              

                              manuell geht das ganze mal man sieht auch das alle Zonen zu einer zusammengefast werden, lief Musik wird diese unterbrochen, allerdings von 10 Versuchen geht es vielleicht 2 mal. Und es wird ein Text ausgegeben.
                              Schaue ich in den Sonos Controller sehe ich auch eine Datei die abgespielt werden soll aber es passiert nichts.

                              1 Reply Last reply Reply Quote 0
                              • L
                                LJSven last edited by

                                @dwm Ich habe heute Morgen folgende Fehlermeldung in der Logdatei - was heißt das?

                                javascript.0	2020-02-12 07:09:37.885	error	(3232) at endReadableNT (_stream_readable.js:1145:12)
                                javascript.0	2020-02-12 07:09:37.885	error	(3232) at IncomingMessage.emit (events.js:203:15)
                                javascript.0	2020-02-12 07:09:37.884	error	(3232) at Object.onceWrapper (events.js:286:20)
                                javascript.0	2020-02-12 07:09:37.884	error	(3232) at IncomingMessage.<anonymous> (/opt/iobroker/node_modules/request/request.js:1083:12)
                                javascript.0	2020-02-12 07:09:37.883	error	(3232) at Request.emit (events.js:198:13)
                                javascript.0	2020-02-12 07:09:37.883	error	(3232) at Request.<anonymous> (/opt/iobroker/node_modules/request/request.js:1161:10)
                                javascript.0	2020-02-12 07:09:37.882	error	(3232) at Request.emit (events.js:198:13)
                                javascript.0	2020-02-12 07:09:37.882	error	(3232) at Request.self.callback (/opt/iobroker/node_modules/request/request.js:185:22)
                                javascript.0	2020-02-12 07:09:37.881	error	(3232) at Request._callback (script.js.common.SonosApi.SonosAPI:81:21)
                                javascript.0	2020-02-12 07:09:37.881	error	(3232) at processPlaylists (script.js.common.SonosApi.SonosAPI:787:36)
                                javascript.0	2020-02-12 07:09:37.878	error	(3232) script.js.common.SonosApi.SonosAPI: TypeError: PlaylistData.join is not a function
                                
                                D 1 Reply Last reply Reply Quote 0
                                • D
                                  dwm @LJSven last edited by

                                  @LJSven
                                  Hm ... grundsätzlich gibts bei den Funktionen, die die Playlists abfragen die "PlaylistData" ... das ist ein array, das dann eine "join" Funktion hat.
                                  In dem Fall war PlaylistData KEIN Array, also Typfehler.

                                  Nur einmal aufgetreten, oder öfters?
                                  Was liefert den die API, wenn man "/playlists" fragt?

                                  L 2 Replies Last reply Reply Quote 0
                                  • L
                                    LJSven @dwm last edited by

                                    @dwm sagte in [gelöst] Sonos-HTTP-API Installation für Newbies, Dummies und mich:

                                    @LJSven
                                    Hm ... grundsätzlich gibts bei den Funktionen, die die Playlists abfragen die "PlaylistData" ... das ist ein array, das dann eine "join" Funktion hat.
                                    In dem Fall war PlaylistData KEIN Array, also Typfehler.

                                    Nur einmal aufgetreten, oder öfters?
                                    Was liefert den die API, wenn man "/playlists" fragt?

                                    Bisher einmal - ich beobachte es mal weiter.

                                    1 Reply Last reply Reply Quote 0
                                    • M
                                      Matten @skokarl last edited by

                                      @skokarl @dwm Da ich mit meinem zwave Adapter in meiner Virtualbox immer wieder Probleme hatte bin ich ich auf Proxmox umgestiegen, deshalb melde ich mich heute erst.

                                      Ich habe damit den Adapter nochmals installiert, ebenso das Autostart Script, es läuft jetzt. Vielen Dank!

                                      S 1 Reply Last reply Reply Quote 1
                                      • S
                                        skokarl @Matten last edited by

                                        @Matten

                                        Danke für die Rückmeldung.

                                        1 Reply Last reply Reply Quote 0
                                        • L
                                          LJSven @dwm last edited by

                                          @dwm sagte in [gelöst] Sonos-HTTP-API Installation für Newbies, Dummies und mich:

                                          @LJSven
                                          Hm ... grundsätzlich gibts bei den Funktionen, die die Playlists abfragen die "PlaylistData" ... das ist ein array, das dann eine "join" Funktion hat.
                                          In dem Fall war PlaylistData KEIN Array, also Typfehler.

                                          Nur einmal aufgetreten, oder öfters?
                                          Was liefert den die API, wenn man "/playlists" fragt?

                                          Hallo @dwm,

                                          der Fehler ist heute wieder aufgreteten - auch bei dem FavData.join

                                          Woran kann das liegen? Kann ich da was gegen machen? Ich kann nicht mal einen Zusammenhang feststellen - weil zu dem Zeitpunkt kein Befehl abgesetzt wurde. Ich kann auch nciht sehen, welches Gerät dafür verantwortlich ist, oder?

                                          D 1 Reply Last reply Reply Quote 0
                                          • D
                                            dwm @LJSven last edited by

                                            @LJSven
                                            Das sind die Sonos-Favoriten und die Sonos Playlists die da abgefragt werden, und zwar jede Minute einmal. Insofern ist da kein Gerät dafür verantwortlich, das kommt vom "Gesamtsystem Sonos". Trotzdem sollte die API natürlich den richtigen Datentyp liefern.
                                            Ich hab jetzt mal ein Update hochgeladen, mit folgenden Änderungen:

                                            function processFavorites(FavData, cbParam ){
                                                forceCreate=false;
                                                if (Array.isArray(FavData)){
                                                    var FavListStr = FavData.join(';');
                                                    // dwmlog ("Process Favorites Data: "+JSON.stringify(FavData,null,4)+" gives List "+FavListStr,5);
                                                    createOrSetState(AdapterId+".SonosAPI.FavList",FavListStr,forceCreate,{ type: 'string', name: "Sonos Favorites list"});
                                                } else {
                                                    dwmlog("SonosAPI processFavorites got invalid data: "+JSON.stringify(FavData),2,"warn");
                                                }
                                            }
                                            
                                            function processPlaylists(PlaylistData, cbParam ){
                                                forceCreate=false;
                                                if (Array.isArray(PlaylistData)){
                                                    var PlayListStr = PlaylistData.join(';');
                                                    // dwmlog ("Process Favorites Data: "+JSON.stringify(FavData,null,4)+" gives List "+FavListStr,5);
                                                    createOrSetState(AdapterId+".SonosAPI.Playlists",PlayListStr,forceCreate,{ type: 'string', name: "Sonos Playlist list"});
                                                } else {
                                                    dwmlog("SonosAPI processPlaylists got invalid data: "+JSON.stringify(PlaylistData),2,"warn");
                                                }
                                            }
                                            

                                            das härtet die beiden Funktionen gegen den falschen Datentyp, es wird dann eben eine Warnung ins Log geschrieben, aber die Exception passiert nicht mehr.
                                            Ist irgendwie anscheinend ein Problem in der API selber. Wenns nur sporadisch auftritt, kann man's ignorieren, wie gesagt, die Synchronisierung von Playlists und Favoriten passiert einmal pro Minute.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            462
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            sonos
                                            50
                                            438
                                            95703
                                            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