Sonos Kids Controller (nun auch für andere Spotify Connect Geräte): Touchscreen Jukebox für nicht mehr ganz so kleine Kinder

  • Hallo in die Runde,


    ich habe das Projekt durch Zufall gefunden und mich komplett von 0 mit der Materie beschäftigt. Leider komme ich nicht weiter beim letzten Installationsschritt:


    Code
    ionic build --prod

    Ich bekomme folgenden Fehler:


    Code
    Unbekannte Argumente: use-program-dependencies, useProgramDependencies
    An unhandled exception occurred: NGCC failed.
    See "/tmp/ng-DjiGvh/angular-errors.log" for further details.
    [ERROR] An error occurred while running subprocess ng.
    
            ng run app:build:production exited with exit code 127.
    
            Re-running this command with the --verbose flag may provide more information.

    Ich finde leider im Netz keine Hilfe dazu und der Log ist auch nichtssagend. Kann jemand helfen bitte?


    Node Version: v15.5.0


    EDIT2: Habe eine Lösunge gefunden: https://stackoverflow.com/ques…th-an-unhandled-exception


    Hier für das Projekt


    1. ls -lisa um die Datei tsconfig.json zu "finden"
    2. nano tsconfig.json um die Datei zu ändern
    3. Zeile "enableIvy":false einfügen
    4. in der Zeile davor ein "," hinzufügen

    Die ganze Datei:

    Edited once, last by timo.beil: Node Version hinzugefügt, Lösung gefunden ().

  • Jetzt bin ich einen Schritt weiter. Wie bei Dir sehe ich jetzt das Cover, kann es anklicken und das Menü mit Cover, Vor und Zurück, laut leiser erscheint. Aber leider spielt die Sonos Box nichts ab ....


    --> Ich hab es jetzt hinbekommen. Die Beispiel settings.json ist fehlerhaft in der Readme von Github für node-sonos-api. Die Kommentare z.B. Ich habe die Einträge nun auf das notwendige reduziert und jetzt funktioniert alles bestens!

    HI hotspot_2 , hast du noch etwas anderes getan? Gleiches Problem bei mir

  • HI hotspot_2 , hast du noch etwas anderes getan? Gleiches Problem bei mir

    Bei mir war noch ein Problem das ich in beiden Dateien (config) nicht die gleichen Keys für die Spotify API eingetragen hatte.


    Um diesen Fehler auf die Schliche zu kommen würde ich auf dem Port 5005 mal einen Mitschnitt machen auf dem Raspi mit tcpdump und schauen was da abgesetzt wird. Wenn Du das z.B. mit Wireshark Dir anschaust und das passt nicht bzw. funktioniert beim einfügen in den Browser nicht, dann kommst Du so vielleicht der Sache auf die Schliche.


    Einfach tcdump starten, ein paar mal draufklicken und sehen was da so rausgeht.

  • Bei mir war noch ein Problem das ich in beiden Dateien (config) nicht die gleichen Keys für die Spotify API eingetragen hatte.

    hotspot_2 - danke für die Antwort! Was meinst du mit beiden Dateien? Ich habe nur eine config - die andere ist doch die data?


    • config.json
    • data.json

    EDIT: habs - in beiden Config Dateien (API und Controler) sollte die gleiche IP stehen, und am besten wohl nicht 127.0.0.1 auch wenn alles auf einem Pi läuft

  • Hallo, erstmal vielen Dank für das tolle Projekt. Mein Sohn ist total begeistert....


    Ich habe ein paar Ideen, was man noch verbessern könnte. Da ich bisher noch keine Erfahrung mit Angular habe, wird es wohl eine Weile dauern, bis ich mich da einarbeite.


    Thyraz: Soll ich die Ideen als Issue im Github eintragen? Dann kann man sie bewerten und tracken....


    Ein Problem ist mir aufgefallen: Manchmal wir ein falscher Track abgespielt. Zum Beispiel hat mein Sohn vorhin eine Folge "Die Schule der magischen Tiere" angemacht, und zunächst kam ein Track von Bibi und Tina. Es war schon mehrmals, aber immer wurden Titel abgespielt, die auch in meine Bibliothek sind. Ich habe mal ein bisschen geschaut und mir ist aufgefallen, dass die Playliste im Sonos immer länger wird, die alten Titel scheinen nie gelöscht zu werden. Hängt das vielleicht damit zusammen? Hat jemand schonmal etwas ähnliches beobachtet? Achja, ich nutzt Spotify...


    Grüße

  • hi,


    Ich wäre hier für eine Lösung auch sehr dankbar. Ich versuche gerade über den API Entwickler eine Information zu bekommen.

    Wenn ich was habe, würde ich es hier auch posten. Vielleicht hat aber hier jemand schon eine Lösung.

  • hi,


    Ich wäre hier für eine Lösung auch sehr dankbar. Ich versuche gerade über den API Entwickler eine Information zu bekommen.

    Wenn ich was habe, würde ich es hier auch posten. Vielleicht hat aber hier jemand schon eine Lösung.

    Ich kann in meinem Sonos System zu Hause mehrere unterschiedliche Musik Streams gleichzeitig hören. Alles läuft über einen Spotify Premium Account welcher in der Sonos App hinterlegt ist. Heißt, die Kinder (pro Raum ein Lautsprecher aus dem gleichen Sonos Gesamtsystem) können ihren gewünschten Inhalt abspielen und ich im Wohnzimmer (mit Lautsprechern auch aus dem gleichen Sonos Gesamtsystem) meinen Inhalt, alles zur gleichen Zeit.

    Wichtig dabei jedoch dass die jeweiligen Streams über die Sonos App gestartet werden. Starten zusätzlich Streams über die Spotify App, Alexa oder auch Google Assistant mit dem gleichen Spotify Premium Account, wird jedoch die ursprüngliche Wiedergabe angehalten.

  • Auch von mir vielen Dank für das tolle Projekt!


    Ich beiße mir jedoch seit mehreren Tagen die Zähne am Chromium-(Auto-)Start aus.

    Ich habe alle Schritte wie in der Github-Anleitung beschrieben, durchgeführt, aber bei mir startet kein Chromium.


    Daten: Raspberry Pi 4, 4 GB

    OS: Raspberry OS Buster Lite

    Console Autologin aktiviert


    Wenn der Raspy hochfährt, passiert jedoch außer dem Autologin des Users "pi" nichts. Ich habe es auch schon mit chromium statt chromium-browser versucht, da passiert auch nichts.

    Via putty kommt beim Aufruf Folgendes:

    Code
    dpkg-query: Kein Paket gefunden, das auf bluealsa passt
    ERROR:browser_main_loop.cc(1432)] Unable to open X display.

    Liegt aber wohl am Aufruf via putty.

    Verwende ich chromium statt chromium-browser fehlt die Meldung zu "bluealsa", am Ergebnis ändert sich jedoch nichts.


    Hab jetzt auch mal aus Spaß nochmal alles von vorne genau dokumentiert nach Anleitung gemacht, Ergebnis ist aber schon gleich nach openbox und chromium-browser-Installation haargenau das Gleiche :(


    Hat jemand noch einen guten Ratschlag?


    PS: Über einen Browser von einem anderen System im Netzwerk komme ich auf die Controller-Seite. Daran liegts also nicht.


    Fehler selbst gefunden: .bash_profile steht in /home/pi/ und nicht unter /root/

    Edited 2 times, last by oibboddl: Fehler selbst gelöst. ().

  • Hallo zusammen,


    ich versuche auch schon seit einigen Tagen die Jukebox für meine Kinder zu installieren. Basis ist ein Raspberry 3 mit dem Pimoroni hyperpixel Display und einer aktuellen Version von Raspberry Pi OS Lite (32-bit) mit dem Release 02/12/2020.


    Da ich gerne eine Step-by-Step Anleitung hierfür erstellen möchte, die ich auch gerne Teile, habe ich jeden Schritt dokumentiert. Falls etwas unnötig oder falsch ist, bin ich für eine entsprechende Info dankbar!


    Hier meine exakten Schritte:

    Nun erhalte ich ich bei

    Code
    ionic build --prod

    leider die folgenden Fehlermeldungen:

    Kann mir bitte jemand weiterhelfen?

  • So schon mal versucht?


    If you run into out of memory erros during the build process, try to set a memory limit manually:

    Code
    export NODE_OPTIONS=--max-old-space-size=3072
    
    ionic build --prod

    Gruß Kai

  • Hi

    & danke für das Projekt. Der Controller läuft, spielt aber noch nix :)


    Wo gebe ich denn (in welcher Form) die Zugangsdaten für Apple Music an?

    -> muss man offenbar nicht (oder es reicht, wenn man es bei Sonos hinterlegt hat). Hatte anderswo einen Fehler, jetzt funzt alles :)


    Viele Grüße

    Meta

    Edited once, last by Meta ().

  • @Thyraz: Wäre es zusätzlich noch möglich, den Titel, der gerade läuft, auf der entsprechenden Seite darzustellen?


    Viele Grüße

    Hab es mal auf die Ideen Liste genommen, unser Sohn kann noch nicht lesen, daher hatte ich das bisher noch nicht vermisst. Macht aber schon irgendwie Sinn.

    Ist allerdings Teil eines größeren Umbaus von dem ich nicht weiß wann ich dazu komme.


    Bisher ruft die Box keinen Status des Sonos Players ab, sondern schickt nur eine Handvoll Befehle.

    Um den aktuellen Titel zu tracken muss man ja aber konstant den Status abfragen und auch Prüfen ob die Wiedergabe geändert wurde.


    Würde das Projekt sicher aufwerten, ist aber auch nochmal einiges an Arbeit.


    Ein Problem ist mir aufgefallen: Manchmal wir ein falscher Track abgespielt. Zum Beispiel hat mein Sohn vorhin eine Folge "Die Schule der magischen Tiere" angemacht, und zunächst kam ein Track von Bibi und Tina. Es war schon mehrmals, aber immer wurden Titel abgespielt, die auch in meine Bibliothek sind. Ich habe mal ein bisschen geschaut und mir ist aufgefallen, dass die Playliste im Sonos immer länger wird, die alten Titel scheinen nie gelöscht zu werden. Hängt das vielleicht damit zusammen?

    Beides ist hier auch schon aufgetreten.

    Das mit nicht funktionierendem Hinzufügen neuer Titel (Ein früher gehörtes Album läuft dafür weiter) hatte ich manchmal wenn ich zwischendurch vom Handy direkt auf den Sonos Lautsprecher gestreamt habe.

    Teilweise musste ich den Sonos One dann neu starten damit es wieder ging.

    Evtl. hat das was mit der Nur-ein-Spotify-Account-Unterstützt Geschichte von node-sonos-http-api zu tun.

    Ist aber nur geraten.


    Zum zweiten Punkt: Ja das löschen der Playlist beim Starten eines neuen Albums scheint nur selten zu funktionieren.

    Somit kommt nach der aktuellen Wiedergabe oft wieder altes (nicht zu ende gehörtes) Zeug.

    Laut node-sonos-http-api Doku sollte mit den verwendeten Funktionen die Queue eigentlich gelöscht werden.

    Hab hier auch schon auf der Todo-Liste vorher nochmal ein explizites Löschen der Playlist auszuführen.

  • Zum zweiten Punkt: Ja das löschen der Playlist beim Starten eines neuen Albums scheint nur selten zu funktionieren.

    Somit kommt nach der aktuellen Wiedergabe oft wieder altes (nicht zu ende gehörtes) Zeug.

    Laut node-sonos-http-api Doku sollte mit den verwendeten Funktionen die Queue eigentlich gelöscht werde

    Ich habe bei mir den Eindruck gewonnen, dass immer (bzw. sehr, sehr oft) der zuletzt gespielte (=oberste Track der aktuellen Queue) Track stehen bleibt, wenn man Titel aus der Musikbibliothek spielt und dann Sachen von Spotify oder Amazon Music abspielen lässt. Zumindest konnte ich dieses Verhalten bei mir sehr oft wiederholt beobachten. Sofern ich mich nur in der Musikbibliothek bewege, tritt dieses Phänomen bei mir nicht auf. Tritt also ggf. nur im Zusammenhang mit den Online-Musikdiensten auf?


    Eine weitere Merkwürdigkeit, die ich in meinem System beobachten konnte:

    Es lassen sich keine Titel aus der Musikbibliothek abspielen, bei denen im Album-Titel ein ":" (Doppelpunkt) enthalten ist (via Amazon Music stört der Doppelpunkt übrigens nicht!).

    Lösche ich im ID3-Tag den Doppelpunkt und ziehe die Änderung im Controller nach, klappt es sofort.


    Ich persönlich hadere jedoch am meisten noch mit zwei Punkten:

    - Die fehlende Möglichkeit Playlists oder alle Alben eines Interpreten in einem Rutsch aus der Musikbibliothek einpflegen zu können (wie schon mehrfach von Anderen auch vermisst)

    - Zeitweise werden sämtliche Aktionen (TTS und Abspielen) nur mit großer Verzögerung durchgeführt bzw. gestartet (Raspi und Sonos sind fest im LAN verkabelt! Kein Traffic im Netz). Manchmal geht es recht zackig, aber oftmals auch nicht. Für mich als Erwachsenen, der das über die Sonos App testweise mitverfolgen kann, gerade noch verkraftbar; aber ich kenne einen Vierjährigen, der kennt da keinerlei Geduld.


    Aber das ist auch schon ein wenig Jammern auf hohem Niveau ;)

  • Bei mir taucht immer wieder dieser Fehler auf ... Nachdem ich die erste Installation "zerschossen" habe ;(


    Code
    pi@chilipie-kiosk:~/Sonos-Kids-Controller-master$ sudo ionic build --prod
    > ng run app:build:production
    An unhandled exception occurred: Invalid or unexpected token
    See "/tmp/ng-qoKcV0/angular-errors.log" for further details.
    [ERROR] An error occurred while running subprocess ng.
            
            ng run app:build:production exited with exit code 127.
            
            Re-running this command with the --verbose flag may provide more information.

    Auch der Tip mit der Änderung in der tsconfig.json Datei hat nicht geholfen ...

    Und auch die Anpassung des Speichers hilft nicht ...

    Code
    export NODE_OPTIONS=--max-old-space-size=3072

    Hat vielleicht jemand nen Tip gegen den exit code 127?


    **********


    Hab das Ganze nun mal auf dem Mac kompiliert ... reicht es, wenn ich nun das Verzeichnis vom Mac auf den Pi verschiebe?

    Oder welchen Ordner muss ich wohin kopieren?


    **********

    Edited once, last by No.Trace ().

  • So schon mal versucht?


    If you run into out of memory erros during the build process, try to set a memory limit manually:

    Code
    export NODE_OPTIONS=--max-old-space-size=3072
    
    ionic build --prod

    Gruß Kai

    Hey Kai,


    vielen Dank, das war die Lösung! Sorry, steht ja auch im Git :stumm: Ist nur zu weit unten für mich gewesen...


    Vielen herzlichen Dank für die Arbeit! Jetzt läuft (fast) alles!


    Thyraz Besteht denn Interesse an meiner Step-by-Step Anleitung, oder ist es dir lieber wenn das auf GitHub so bleibt und du es entsprechend editieren kannst? Falls ja würde ich dich bitten, dir schon mal meinen obigen Post anzusehen und mir ein kurzes Feedback zu geben, ob das so stimmt. Bei mir läuft es jetzt jedenfalls nach dieser Anleitung und den nachfolgenden Schritten, die ja im Git stehen.

    Edited once, last by iee168 ().

  • Hi ...


    Eigentlich ist ja im GitHub schon alles erklärt ... aber eine Schritt-für-Schritt-Anleitung finde ich gar nicht schlecht,

    ich habe auch erst ein paar Anläufe gebraucht, bis ich z. B. rausgefunden habe, wo und wie man NodeJS oder auch

    das node-sonos-http-api installiert ... war auch ganz neu auf dem Gebiet ;)


    CU Kai

  • Alright, here we go!


    Disclaimer: Das ist eine, von mir erweiterte, Step-by-Step Anleitung wie ich den Sonos-Kids-Controller mit Spotify auf meinem System zum laufen gebracht habe, ohne Ansprüche auf eine Allgemeingültigkeit. Bitte Info an mich, falls du hier einen Fehler entdeckst.


    NICHTS hiervon ist von mir, ich habe es nur aus den verschiedenen Quellen zusammengetragen. Diese Quellen waren vor allem:

    Ausführlichere Infos, und nach einer gewissen Zeit sicher auch die aktuelleren, findest du natürlich dort.


    Mein System:


    Bevor wir also loslegen, die Grundlagen:


    Ich habe die SD-Karte über den Pi Imager auf meinem Mac bespielt. Den Pi Imager gibt es aber auch für Windows und Ubuntu.

    Im Anschluss zeigt der Finder die Karte nicht an, man muss sie einmal aus- und wieder einstecken. Am besten ist es, dann gleich das eigene WLAN zu konfigurieren. Das machst du, indem du eine Textdatei (ich empfehle Textastic für OSX oder Notepad++ für Windows) mit dem folgenden Inhalt erstellst (vergiss nicht deine WLAN-Daten einzufügen) und unter dem Namen wpa_supplicant.conf direkt im Hauptverzeichnis der SD-Karte abspeicherst. Beim nächsten Boot wird sie erkannt, eingepflegt und aus dem Boot-Folder gelöscht.


    Code
    ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
    update_config=1
    country=DE
    
    network={
           ssid="wlan-bezeichnung"
           psk="passwort"
           key_mgmt=WPA-PSK
    }

    Anmerkung von kle: Du kannst auch noch eine leere Textdatei mit dem Namen ssh.txt in den Boot-Folder ablegen, um SSH gleich zu aktivieren. Dann brauchst du es später nicht mehr in der Raspi-config aktivieren und kannst dich gleich nach dem Boot draufschalten.


    Jetzt bootest du dein System mit einem Bildschirm/Fernseher am HDMI-Port und einer USB-Tastatur.

    Nachdem du dich mit den Standard-Zugangsdaten angemeldet hast (User: pi Passwort: raspberry), rufst du erst einmal die folgenden Befehle auf, um dein System auf den neuesten Stand zu bringen:

    Code
    apt-get update
    apt-get upgrade

    Und bitte gleich noch das Standardpasswort ändern, mit dem eingeloggten User pi und:

    Code
    passwd


    Jetzt gehts in die Raspi-config um SSH und den Autologin zu konfigurieren:


    Code
    sudo raspi-config

    1. System Options --> S4 Hostname (muss nicht, aber falls du deinem Raspi einen anderen Namen geben möchtest.

    2. System Options --> S5 Boot / Auto Login --> B2 Console Autologin (brauchen wir später für den Kiosk-Mode).

    3. Interface Options --> P2 SSH enable Wenn du nicht weisst, was du damit anstellst, solltest du es vielleicht erst einmal nachlesen ;)

    5. Localisation Options --> L1 Locale --> bis de_DE.UTF-8 scrollen und aktivieren.

    5. Localisation Options -->L2 Timezone --> Europe --> Berlin

    <Finish>


    Reboot tut nicht nur Windows gut, also bitte einmal neu starten mit


    Code
    sudo reboot

    Wer ebenfalls ein Pimorony Hyperpixel sein Eigen nennt, installiert es über den nächsten Schritt. Ansonsten bitte überspringen und bei Upgrade Node weiterlesen:

    Installation Hyperpixel Display:

    Code
    curl -sSL https://get.pimoroni.com/hyperpixel4 | bash

    //0 auswählen: Rectangular Pi 3B+ or older


    Wer es gerne so gedreht haben möchte, dass die Ports oben liegen:

    Code
    hyperpixel4-rotate right

    Und jetzt einmal neustarten, schon sollte das Display mit Touch funktionieren:

    Code
    sudo shutdown -r now


    Upgrade Node


    Diese Schritte habe ich mir von hier kopiert.


    Code
    curl -sL https://deb.nodesource.com/setup_15.x | sudo -E bash -
    sudo apt-get install -y nodejs


    Einmal verifizieren, ob es funktioniert hat:

    Code
    nodejs -v

    Bei mir ist die aktuelle Version 15.5.0.


    Jetzt müssen wir uns darum kümmern, dass die Node-sonos-http-api installiert wird. Dazu gehen wir ins Hauptverzeichnis des Users pi (in welchem wir uns eigentlich schon die ganze Zeit befinden müssten ;) )


    Code
    git clone https://github.com/Thyraz/node-sonos-http-api

    In das Verzeichnis wechseln:


    Code
    cd node-sonos-http-api

    ...und installieren dort npm:


    Code
    npm install --production

    Bei mir tauchten nach der Installation ein paar rot markierte Fehler auf, weshalb ich diese noch mit


    Code
    npm audit fix --force

    (Größtenteils) behoben habe. Die noch übrigen Fehler waren aber anscheinend nicht so tragisch, als dass ich nicht hätte weitermachen können.


    Jetzt sollte es mit

    Code
    npm start

    Funktionieren, ohne dass eine Fehlermeldung erscheint.


    Wir wechseln das Verzeichnis in /presets/ und erstellen die preset.json mit dem Editor nano erstellen.


    Code
    sudo nano preset.json

    In diese Datei muss nun der Raumnamen der Sonos Box eingepflegt werden. In meinem Beispiel ist es die Box mit dem Namen "Büro".


    mit strg+x und zweimaligen Bestätigen speichern wir die Datei.


    Jetzt müssen wir uns erst einmal bei Spotify mit unserem Account hier anmelden und eine Spotify App erstellen. Dadurch erhalten wir die client keys (ClientID und das ClientSecret).


    Bei dem folgenden Schritt bin ich mir nicht sicher, ob er wirklich notwendig ist. Aber er schadet jedenfalls auch nicht. Die Spotify-Keys brauchen wir so oder so...


    Im Stammverzeichnis der node-sonos-http-api eine neue Datei namens "settings.json" anlegen,


    Code
    sudo nano settings.json


    Und mit dem folgenden Inhalt bestücken:


    Code
    {
    "spotify": {
    "clientId": "XXXX",
    "clientSecret": "XXXXX"
    },
    "library": {
    "randomQueueLimit": 50
    }
    }

    Wieder speichern und nano beenden.


    Installation des Sonos-Kids-Controllers:

    Zurück im Home-Verzeichnis des pi-Users diese Befehle, einen nach dem anderen, ausführen:


    Code
    sudo npm install -g @ionic/cli
    wget https://github.com/Thyraz/Sonos-Kids-Controller/archive/master.zip
    unzip master.zip
    rm master.zip
    cd Sonos-Kids-Controller-master
    npm install
    npm audit fix
    ionic build --prod


    Falls der build mit "Unbekannte Argumente_ use-program-dependencies..." fehlschlägt, wird folgender fix von timo.beil empfohlen:


    Code
    ls -lisa //findet die Datei "tsconfig-json"
    nano tsconfig.json

    In dem Inhalt der Datei hinter anhängen:

    Code
    "strictInjectionParameters":true",
    "enableIvy":false

    Nicht das Komma hinter dem vorherigen Parameter "true," vergessen! und speichern.


    Falls die Kompilierung mit der folgenden Fehlermeldung abbricht, was bei mir der Fall war:

    FATAL ERROR: MarkCompactCollector: young object promotion failed Allocation failed - JavaScript heap out of memory


    Das hier ausführen:

    Code
    export NODE_OPTIONS=--max-old-space-size=3072

    Anschließend noch einmal

    Code
    ionic build --prod

    Ausführen und die Daumen drücken. Das dauert ein wenig.


    Kompilierung erfolgreich? SUPER! Dann:

    Code
    cd server/config
    cp config-example.json config.json


    Jetzt die /server/config/config.json mit nano editieren und darin die Sonos-Box, spotify ClientID und clientSecret eintragen. Wie im obigen Beispiel, lautet der Name der Box bei mir "Büro". Da wir vorhin die node-sonos-htttp-api auf dem selben Raspi installiert haben, lautet die IP-Adresse des Servers 127.0.0.1 (eigenes Gerät). Wer es auf einem anderen Raspi installiert hat, muss hier die IP des anderen Geräts angeben.



    Fast fertig!


    Mal schauen, ob es läuft:


    Code
    npm start


    Sollte der Server starten, kannst du von deinem PC aus den Raspi ansurfen und solltest ein schwarzes User Interface sehen. Die Adresse lautet:


    http://ip-adresse-des-raspis:8200


    Jetzt kannst du deine Alben einpflegen. Wie das geht, steht im GitHub-Manual.


    Jetzt muss noch der Autostart konfiguriert werden:


    Code
    sudo npm install pm2 -g 

    Hier erhielt ich Warnmeldungen, auf eine neuere Version von npm zu updaten.


    Jetzt bauen wir uns ein kleines Startup Script was ja funktionieren sollte, da der pi-user sich automatisch beim booten einloggt. Wichtig ist, diesen ersten Befehl NICHT mit sudo zu starten:


    Code
    pm2 startup

    Die jetzt folgende Ausgabe zeigt einen Befehl, welchen es zu kopieren und auszuführen gibt. Diesmal mit "sudo". Bei mir sieht er so aus:


    Code
    sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u pi --hp /home/pi


    Jetzt in das Verzeichnis vom node-sonos-http-api wechseln und folgendes ausführen:


    Code
    pm2 start server.js
    pm2 save


    Anschließend wieder in das Verzeichnis vom Sonos-Kids Controller wechseln:


    Code
    pm2 start server.js
    pm2 save


    Openbox als window Manager installieren

    Code
    sudo apt-get install --no-install-recommends xserver-xorg x11-xserver-utils xinit openbox


    Chromium installieren


    Code
    sudo apt-get install --no-install-recommends chromium-browser


    Wenn node-sonos-http-api auf demselben pi installiert ist, was in dieser Anleitung der Fall ist, den automatischen start von Openbox und Chromium editieren:


    Code
    sudo nano /etc/xdg/openbox/autostart

    folgenden Inhalt hinein schreiben:


    Code
    # Disable screen saver / power management
    xset s off
    xset s noblank
    xset -dpms
    
    
    # Start Chromium
    sed -i 's/"exited_cleanly":false/"exited_cleanly":true/' ~/.config/chromium/'Local State'
    sed -i 's/"exited_cleanly":false/"exited_cleanly":true/; s/"exit_type":"[^"]\+"/"exit_type":"Normal"/' ~/.config/chromium/Default/Preferences
    chromium-browser --disable-infobars --kiosk 'http://IP-Adresse-Des-Raspi:8200'


    Jetzt muss noch im home-verzeichnis des users pi die Datei .bash_profile erstellt , und mit dem automatischen startbefehl ausgestattet werden:


    Code
    cd /home/pi
    sudo nano .bash_profile

    Den folgenden Inhalt in die leere Datei kopieren:


    Code
    [[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && startx -- -nocursor


    Jetzt neustarten und Daumen drücken!

    Code
    sudo reboot


    FERTIG!!!


    Sollte nach einer bestimmten Zeit eine Blase in Chromium erscheinen, diesen workaround nutzen:


    Code
    sudo touch /etc/chromium-browser/customizations/01-disable-update-check;echo CHROMIUM_FLAGS=\"\$\{CHROMIUM_FLAGS\} --check-for-update-interval=31536000\" | sudo tee /etc/chromium-browser/customizations/01-disable-update-check