NEWS
Sonos-HTTP-API Installation für Newbies, Dummies und mich
-
@Matten Versuch es trotzdem mal mit:
[Service] Type=simple ExecStart=/usr/bin/node /home/$user$/node-sonos-http-api-master/server.js Restart=always RestartSec=10
Ich bin kein Linux-Crack, aber vielleicht braucht er den $user$ und routet das dem root zu
-
@Homoran Leider bleibt die Fehlermeldung die gleiche!
-
@Matten
Sorry, dann kann ich dir nicht helfen, dann scheint der Fehler woanders dran zu liegen. -
@Homoran Danke trotzdem!
-
@Matten
vermute der Ordner ist falsch -
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 ...
-
@dwm Danke, die Fehlermeldung kommt nicht mehr, aber der Server startet nicht automatisch...
-
@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 -
@skokarl Für die Autostart-Datei muss ich doch den Pfadnamen eingeben. Installation ist zu 100% nach Deinem Muster ausgeführt worden.
-
@Matten
aber es geht doch nicht, oder ?
Ich habs mit meinem User gemacht, nicht mit root. -
@skokarl Der Server läuft, nur der Autostart nicht.
-
@Matten
schon klar..... weil er den Server nicht starten kann.
Machs nochmal... mit nem normalen User. -
@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 denntail -f /var/log/syslog
-
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 mitsudo 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.
-
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 ?? -
@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. -
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. -
@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
-
@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? -
@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.