homebridge-zp | Sonos http Api

  • Heißt dein systemd file nicht sonosapistart.service?


    Dann müsstest du:

    sudo systemctl enable sonosapistart

    sudo systemctl restart sonosapistart

    sudo journalctl -au sonosapistart


    verwenden.


    Stefan

  • sschuste

    Nur um noch einmal auf Nr. sicher zu gehen:


    Meine zuvor bestehende Datei: sonosapistart.sh habe in den Ordner /home/pi verschoben.

    ich habe unter dem Pfad /etc/systemd/system/ folgende Datei erstellt: sonos-http-api-master.service

    mit dem Inhalt:


    Dann habe ich folgende Befehle abesetzt:


    sudo systemctl daemon-reload

    sudo systemctl enable sonos-http-api-master

    sudo systemctl restart sonos-http-api-master

    sudo journalctl -au sonos-http-api-master


    Dann bin ich bei der Fehlerschleife gelandet.

    Code
    Mar 05 10:03:12 raspberrypi systemd[1]: sonos-http-api-master.service: Main process exited, code=exited, status=217/USER
    Mar 05 10:03:12 raspberrypi systemd[1]: sonos-http-api-master.service: Unit entered failed state.
    Mar 05 10:03:12 raspberrypi systemd[1]: sonos-http-api-master.service: Failed with result 'exit-code'.
    Mar 05 10:03:42 raspberrypi systemd[1]: sonos-http-api-master.service: Service hold-off time over, scheduling restart.
    Mar 05 10:03:42 raspberrypi systemd[1]: Stopped Sonos API.
    Mar 05 10:03:42 raspberrypi systemd[1]: Started Sonos API.


    Kann es sein, dass der Fehler Status=217 /User auf ein Problem mit dem User=sonosapi hinweist?!


    Nachtrag:

    Ok .. mit dem User PI scheint der Dienst jetzt gestartet zu sein! :)



    Vielen vielen Dank!

    4 Mal editiert, zuletzt von Hunter ()

  • Der User sonosapi wollte auf das HomeVerzeichnis von pi zugreifen, und ich schätze, da hats geknallt:


    User=sonosapi

    WorkingDirectory=/home/pi/node-sonos-http-api-master


    Das passt nicht zusammen. Wenn der Dienst unter dem User sonosapi laufen soll, dann kopiere das Verzeichnis node-sonos-http-api-master in das Homeverzeichnis von User sonosapi.


    sudo cp -av /home/pi/node-sonos-http-api-master /home/sonosapi

    sudo chown -R sonosapi:sonosapi /home/sonosapi/node-sonos-http-api-master


    und passe in /etc/systemd/system/sonos-http-api-master.service das WorkingDirectory an:


    User=sonosapi

    WorkingDirectory=/home/sonosapi/node-sonos-http-api-master


    Dann sollte es klappen.


    Stefan

  • Es läuft jetzt wunderbar unter dem User "Pi".
    Jetzt muss ich wohl mal das homebridge-http einrichten, damit ich auch die Befehle in Homekit darstellen kann.


    Auf Wunsch kann ich auch gern nochmal eine komplette Anleitung fertig machen mit der Installation der Pakete und allem drum und dran.


    sschuste Möge Dein Feierabendbierchen heute ganz besonders gut schmecken! Vielen Dank für die reichhaltigen Tipps und Anleitungshinweise!

  • Danke sschuste ! Ich werde nach deiner Anleitung heute Abend auch versuchen die Sonos api in den autostart zu bekommen :)

  • war ja klar das es bei mir nicht glatt läuft:D


    Ich bekomme beim Befehl sudo systemctl enable sonos-http-api-master immer

    Failed to execute operation: No such file or directory


    egal ob ich User=Pi oder User=root eintrage. und bei ExecStart=/usr/bin/node server.js oder ExecStart=/usr/local/bin/node server.js eintrage.

    which node gibt jedenfalls /usr/local/bin/node aus...


    Keine Ahnung :(


    Ich hab das doch richtig verstanden das ich das Startscript nicht benötige bei Systemd? Denn das ist bei mir nicht vorhanden.

  • Maz


    Trag mal für node als Pfad nur

    /usr/bin/node server.js ein.


    Du musst unter /etc/systemd/system nur die Datei sonos-http-api-master.service mit dem Inhalt anlegen. Wenn Dein Ordner node-sonos-http-api-master Im /home/pi Verzeichnis liegt sollte die Config so für dich passen:


    Also die Datei anlegen mit:

    Code
    sudo nsno /etc/systemd/system/node-sonos-http-api-master.servive

    Dann folgenden inhalt einfügen:


    anschließend die 4 Befehle absetzen


    sudo systemctl daemon-reload

    sudo systemctl enable sonos-http-api-master

    sudo systemctl restart sonos-http-api-master

    sudo journalctl -au sonos-http-api-master

    4 Mal editiert, zuletzt von Hunter ()

  • Jetzt hat es komischerweise geklappt aber jetzt steckt es an einer anderen stelle:


    Mär 07 20:52:13 homebridge2 systemd[1]: Stopping Sonos API...

    Mär 07 20:52:13 homebridge2 systemd[1]: Starting Sonos API...

    Mär 07 20:52:13 homebridge2 systemd[1]: Started Sonos API.

    Mär 07 20:52:13 homebridge2 systemd[1]: sonos-http-api-master.service: main process exited, code=exited, status=203/EXEC

    Mär 07 20:52:13 homebridge2 systemd[1]: Unit sonos-http-api-master.service entered failed state.

    Mär 07 20:52:44 homebridge2 systemd[1]: sonos-http-api-master.service holdoff time over, scheduling restart.

    Mär 07 20:52:44 homebridge2 systemd[1]: Stopping Sonos API...

    Mär 07 20:52:44 homebridge2 systemd[1]: Starting Sonos API...

    Mär 07 20:52:44 homebridge2 systemd[1]: Started Sonos API.

  • Das ist jetzt wohl eher wieder was für die Linux Pros :)

    Irgendwie scheint er evtl ein Rechte Problem zu haben beim Starten?


    Status203/exec könnte man hierzu googeln.

    Bei mir war es ja status217/User wodurch ich wusste das es am eingestellten User im Script lag

  • Alles gut jetzt läuft es ! :) Keine Ahnung warum es anfangs nicht lief aber jetzt habe ich

    Code
    ExecStart=/usr/local/bin/node server.js 

    eingetragen und es läuft !


    Danke nochmal für die Hilfe und die Anleitung:)

  • Prima. Noch mal als Tipp für diejenigen, die noch basteln: wer wissen will, was er hier für ExecStart eingeben soll, kann das mit


    which node


    ermitteln. Which liefert den kompletten Pfad eines Programms zurück (in den meisten Fällen).


    Und ja, Maz, das Startscript, das vorher in /etc/init.d herumgammelte, sollte entfernt werden. Systemd erledigt dann alles von völlig allein. Alles richtig gemacht.


    Das könnt ihr übrigens auch für homebridge machen. Ein echter Nutzen liegt auch darin, dass ein Service, der gecrasht ist, von systemd automatisch wieder gestartet wird. Erhöht den WAF um glatte 5 Punkte.


    Stefan

  • sschuste


    evtl liege ich auch falsch aber which node wird bei den meisten /usr/local/bin/node ausgeben.

    Ich meine, dass es bei mir erst funktioniert hatte, als ich den Pfad auf /usr/bin/node geändert hatte.


    Ich bin mir aber nicht wirklich sicher. Wollte nur darauf hinweisen. :)

  • Bei mir liegt node auch in /usr/bin


    Stefan

  • Das wird vermutlich bei fast allen so sein.

    Bei einem "which node" bekommt man als Rückmeldung nur /usr/local/bin/

  • Ich habe auch alles gerade einmal probiert, bekomme aber immer folgende Fehlermeldung:


    Mär 11 11:46:57 raspberrypi systemd[1]: Stopped Sonos API.

    Mär 11 11:46:57 raspberrypi systemd[1]: Started Sonos API.

    Mär 11 11:46:57 raspberrypi systemd[1]: sonos-http-api-master.service: Main process exited, code=exited, status=217/USER

    Mär 11 11:46:57 raspberrypi systemd[1]: sonos-http-api-master.service: Unit entered failed state.

    Mär 11 11:46:57 raspberrypi systemd[1]: sonos-http-api-master.service: Failed with result 'exit-code'.


    Ordnerstruktur bei mir:

    home/pi/node-sonos-http-api-master

    which node -> /usr/local/bin/node


  • Bei mir war es der User=sonos-api den ich auf User=pi ändern musste bei der Fehlermeldung. Dies hast Du ja schon angepasst.


    Probier mal ob der Fehler auch kommt wenn du für ExecStart=/usr/bin/node server.js setzt.

  • Egal was ich eingebe, die Fehlermeldung habe ich komischerweise immer.


    Habe jetzt aber mehrfach meinen Rasp und auch die Homebridge neugestartet es funktioniert bis jetzt noch alles perfekt obwohl die Meldung noch kommt 8o


    Solange es funktioniert ist alles gut :)

  • Vermutlich hast du in dem Logfile nicht bis zum Ende gescrollt und immer nur den Fehler am Anfang gesehen der evtl vor ein paar Stunden auftrat.

    Wenn du hier mal zum Ende scrollst wirst Du vermutlich sehen, dass der Dienst sauber läuft.

  • Hat es hier jemand schonmal geschafft den aktuellen Status der API mithilfe von zB. homebridge-http oder homebridge-http-switch auszulesen?


    Ich würde gerne den Status des Midnight-Mode auslesen (aktiviert oder nicht aktiviert).

  • Was ist denn der Midnight Mode?


    Ich würde gerne meine Spotify Playlisten damit abrufen aber irgendwie hab ich es noch nicht geschafft. Ich glaube man muss sich dafür registrieren.