Posts by Thyraz

    Hallo Schlick,


    du kannst mal versuchen den neuen Installationsweg über das vorkompilierte Zip ("Release Version") zu testen.

    Als neue Installation sollte das wahrscheinlich so laufen:


    Code
    mkdir sonos-kids-controller
    cd sonos-kids-controller
    wget https://github.com/Thyraz/Sonos-Kids-Controller/releases/download/V1.2/sonos-kids-controller.zip
    unzip sonos-kids-controller.zip
    rm sonos-kids-controller.zip
    npm install


    Danach Konfiguration / Start wie bisher.

    Wenn es klappt, gerne Rückmeldung dazu.

    Dann füge ich das in die Doku als Standardweg ein und schiebe das selbst Kompilieren dann weiter nach unten als Anleitung für die, welche bei der Weiterentwicklung unterstützen wollen.


    Grüße,

    Tobias

    Nachdem rogerimhof 2 neue Pull Requests erstellt hatte hab ich mal ne V1.2 hochgeladen.

    - Einträge ohne Cover-Artwork zeigen nun ein Dummybild and und lassen sich normal anklicken / abspielen.

    - Für Spotify kann man nun über den "Add" Dialog Medien über eine Artist-ID hinzufügen. Damit lassen sich wie mit Queries mehrere Alben auf einmal eintragen. Ist aber etwas leichter zu bedienen und erspart NOT Verknüpfungen bei nicht eindeutigen Artist Names.


    Da ich keine neuen Pakete aus npm hinzugefügt habe, könnte das Archiv entpacken und drüberkopieren evtl. ausreichen:

    https://github.com/Thyraz/Sono…troller/releases/tag/V1.2


    Wenn das nicht klappt, gerne berichten ob das mit einem npm install und / oder npm update aus dem sonos-kids-controller Verzeichnis zu fixen ist.


    Evtl. vor dem Ganzen mal eine Kopie eures sonos-kids-controller Verzeichnisses erstellen.


    Ansonsten geht natürlich der Weg die aktuellen Sourcen runterzuladen und das www Verzeichnis selbst zu compilieren weiterhin.

    Also so wie das Update bisher noch auf Github beschrieben ist.


    Werde demnächst auch mal schauen wie man mit möglichst wenig Schritten auf Basis des Release Archivs eine saubere Neuinstallation hinbekommt.

    Dann ändere ich die Doku so ab, dass das selbst-compilieren nicht mehr der Standardweg ist.

    Sollte das Ganze stark vereinfachen.

    Wenn du das ganze etwas einrückst, sieht du recht schnell was dir fehlt. ;)



    Da fehlt auf oberster Ebene noch die abschließende geschweifte Klammer (also als letzte Zeile unter das bisherige Konstrukt).

    neomorph  No.Trace ich hab mal eine Testversion für euch an diesen Post angehängt.

    Einfach das www Verzeichnis in eurer Installation in www.old umbenennen und dann das www Verzeichnis aus dem angehängten Zip dafür reinkopieren.


    Dann eben alles neu starten.


    neomorph beim Anklicken eines Artist-Namens im Hörbuch-Reiter der App gibt es jetzt 2 Logausgaben in der Console.


    Einmal die abgerufene und geparste Config.

    Wenn man die Objektstruktur mit den kleinen Pfeilen aufklappt, sieht man die TTS Konfiguration.


    Als zweites wird noch geloggt ob die App die TTS Funktion aufruft oder nicht.


    Im Network Tab sollte man bei aktivem TTS dann eben auch gleich den Aufruf an node-sonos-http-api sehen.



    No.Trace ich hab in der Version außerdem ein kleines Delay zwischen Queue löschen und Album laden eingefügt.

    Für den Fall, dass der Titel Nr. 1 irgendwie zu schnell drin landet und aus der Queue gelöscht wird.

    Glaube aber noch nicht so recht daran, dass das dein Problem löst...

    Sehr komisch, dass pause ab und an Fehler wirft.
    Hast du dann auch den Effekt, dass die Wiedergabe weiter läuft nachdem du zurück zum Menu gehst, oder beendet er die Wiedergabe trotz des Fehlers?


    Beim Zurückgehen zum Menu sende ich ja nur diesen einen Befehl an node-sonos-http-api.
    Ein Timing Problem, von wegen zu viele Anfragen gleichzeitig kann es also auch nicht sein.


    Habe das gerade gefühlt 100x getestet bei mir.

    Immer rein in ein Album, dann wieder raus.

    Dann noch öfter mal Play / Pause in der Player Ansicht.

    Bekomme von node-sonos-http-api immer ein "200" (OK) zurück.


    Wegen TTS:

    Kannst du mal den genauen Inhalt deiner config.json posten?

    (Falls du Spotify credentials drin hast diese natürlich rausnehmen vorher.)


    Ich fürchte der geht bei dir irgendwie in die Codeverzweigung für deaktiviertes TTS.

    Denn da sollte man schon den Aufruf im Network Tab der Entwicklertools sehen:

    neomorph und No.Trace evtl. könnt ihr mal genau die Aufrufe raussuchen die Sonos Kids Controller macht und diese dann händisch nochmal im Browser einfügen.

    Damit man weiß, dass die Aufrufe wirklich identisch sind.


    Schaltet in Chrome dazu die Entwickertools ein und wechselt dort in den Network Tab.

    Dann navigiert zu der Stelle in Sonos Kids Controller, bei der ihr den Aufruf aktivieren könnt.


    Also neomorph für TTS einfach die Startseite um dann gleich einen Artistnamen anzuklicen,

    No.Trace für die Wiedergabe in der Albenansicht um dieses gleich wiederzugeben.


    Dann im Network Tab der Entwicklertools auf das "Parkverbot"-Icon ( :P ) klicken um den bisher geloggten Traffic auszublenden.

    Und danach die gewünscht Aktion im Kids Controller ausführen.

    Nun solltet ihr die Aufrufe an die node-sonos-http-api sehen.

    In meinem Beispiel ist das einmal ClearQueue und einmal der Aufruf des neuen Albums.


    Man kann den Link eines API Aufrufs auch kopieren:

    Dann einen neuen Tab öffnen und dort wieder einfügen.


    Wie sehen die Links aus und unterscheidet sich das Resultat wenn ihr die Links per Copy & Paste direkt im Browser ausführt ggü. dem Aufruf vom Kids-Controller?

    Und unterscheiden sich die Links zu denen die ihr händisch zusammengebastelt hattet?


    neomorph bei dir reicht ja an sich ein Aufruf um zu sehen ob es geht.

    No.Trace du kannst ja evtl. ein paarmal zwischen 2 Alben im Kids-Controller hin- und herwechseln und dann händisch mit den kopierten Links zwischen den selben Alben ein paarmal wechseln.

    Dann siehst du ja recht gut wo der problematische Effekt auftritt.

    kai mit direkt URL eingeben klappt meinst du .../RoomName/amazonmusic/now/album:{albumID}, oder?

    Da kommt nie der Track 2, auch bei mehrmaligem Testen?


    Siehst du in der Konsole vom Browser ob das Kommando aus dem Sonos Kids Controller auch so abgeschickt wird?

    Ich mache ja an sich nichts anders, verstehe das noch nicht so recht und mir fehlt daher auch die zündende Idee an welcher Schraube wir drehen können..


    Zwecks Deezer:

    in der Ausgabe kommt ja eine ID.

    Hast du mal versucht einen Aufruf damit zusammen zu basteln?

    Könnte ja evtl. so funktionieren:


    http://192.168.2.120:5005/Wohn…ch/deezer/album:201065872


    Wegen der Codestelle:

    Ich denke das ist nur die Behandlung, dass Tracks per Zufallsanordnung eingefügt werden wenn Shuffle aktiv ist.

    Ist Shuffle aus greift der If-Zweig ja eh nicht ...

    So schnell sollte man den Inhalt ja gar nicht wechseln können.

    Du musst ja immer rein und wieder aus aus der Playeransicht.


    Ich sende da an sich nur 3 Befehle:


    Stop beim verlassen der Playeransicht

    Dann beim erneuten Anwählen eines Albums erst Queue löschen, damit das alte Album nicht mehr drin ist und dann eben das Abspielen des neuen Albums.


    Das geht so schnell, da kommst du mit den Fingern nicht hinterher. ;)


    Ist das denn gut reproduzierbar?

    Sprich fangen alle Alben immer oder sehr oft mit dem 2ten Titel an?

    Und ist es immer der 2. oder auch mal ein noch weiter hinten liegender?


    Falls man es gut reproduzieren kann,

    kannst ja mal versuchen es wie von rogerimhof beschrieben zu analysieren.


    Sprich:

    - Wie sehen die Aufrufe von Sonos-Kids-Controller aus, ist da was auffällig?

    - Was passiert wenn du die Kommandos händisch in der Browserzeile eingibst?


    Zum NAS:

    Du siehst die Alben also schon in der Sonos App unter Durchsuchen -> Musikbibliothek?

    Dann im Sonos-Kids-Controller als Medientyp Library eintragen, siehe Screenshot.


    Aber auch da startet er bei mir verlässlich mit Titel 1.

    Hab keine so richtige Idee woher das kommen soll, sofern es kein Bug in node-sonos-http-api ist ...

    Ok, kann sein, dass der Service dann keine Schreibrechte auf die Datei hatte.


    Zwecks TTS:
    Komisch wenn es erst nicht ging und nun doch.

    Der Aufruf ist ja recht simpel und sollte immer gleich sein.


    Hast du es immer mit den selben Alben probiert?

    Evtl. machen Sonderzeichen noch Probleme teilweise und dann geht es bei bestimmten Texten nicht?


    Oder node-sonos-http-api wollte gerade nicht so recht.

    Ggf. bei so etwas mal Sonos-Kids-Controller, node-sonos-http-api und die Sonos Box selbst mal neu starten.

    Als letzter Ausweg dann mal Schritt für Schritt schauen welche Software nicht so recht will mit der Anleitung von rogerimhof ein Post weiter oben.


    Das mit Track 2 ist komisch.

    Ich starte ja dir Übergabe für ein bestimmtes Album und lade nicht einzelne Tracks.

    Mit welchem Streamingdienst ist das denn? Ich kann halt leider auch nur mit Spotify testen.

    Passiert das auch mit Alben in der lokalen Sonos Bibliothek (also z.B. Musik auf einem NAS)?

    Dann könnte ich das mal probieren.


    Eine ander spontane Idee wäre:

    Ist der Sonos auf Shuffle-Mode?

    Ich glaube das stelle ich nicht explizit aus bisher.

    Weiß nicht ob der letzte Status erhalten bleibt wenn man ein Album über node-sonos-http-api lädt...

    Ein neuer Test um die Software einfacher zu installieren / upzudaten.


    Es wird nun bei jedem Release ein vorkompiliertes Zip geben:

    https://github.com/Thyraz/Sonos-Kids-Controller/releases/


    Damit entfällt das ganze komplieren der Webapp etc ...


    - sonos-zip-controller.zip herunterladen

    - Euer altes Verzeichnis umbenennen, da dort noch der ganze alte Müll zum selber kompilieren drin ist

    - Ein neues Verzeichnis mit dem selben Namen erstellen

    - sonos-kids-controller.zip entpacken und den Inhalt in den Ordner kopieren

    - npm install in diesem Ordner ausführen um Abhängigkeiten zu installieren

    - eure config.json und data.json aus dem alten, umbenannten Ordner in die neue Installation rüberkopieren

    - fertig (dann eben starten wie bisher: entweder händisch über npm start oder falls ihr den Autostart konfiguriert habt einfach neu booten)


    Sehr gerne hier Rückmeldungen (erfolgreiche oder nicht erfolgreiche) hinterlassen,

    damit ich weiß ob ich die Installationsanleitung auf diesen einfacheren Installationsweg umbauen kann...

    So, größeres Update nachdem mich rogerimhof mit einer Implementierung für Playlists zu einem etwas größerem Umbau angeregt hat. ;)


    Es gibt nun Medienkategorien für Hörspiele, Musik, Playlists und Radiosender.

    Diese werden auf der Hauptseite als Reiter angezeigt, über die man die jeweiligen Medien dieser Kategorie anzeigen kann.


    Für Playlists und Musik kann man wieder Local Library, Spotify, Apple Music und Amazon Music Unlimited verwenden.

    Bisher hinzugefügte Medien werden als Hörspiel interpretiert.

    Es ist allerdings nur Spotify getestet bisher. Für Apple und Amazon ist die Doku von node-sonos-http-api nicht so ganz eindeutig.

    Falls es nicht geht bitte hier melden.


    Für Radiosender gibt es TuneIn, hier muss man die ID aus der URL von TuneIn auslesen.

    Z.B. https://tunein.com/radio/SWR3-996-s24896/ wäre dann 24896 (also ohne das "s" am Anfang).


    Doku auf Github zu dem Ganzen gibt es noch keine, ziehe ich die Tage nach.

    Bei Unklarheiten einfach hier fragen. :)

    Die Wiedergabesteuerung läuft über node-sonos-http-api.

    Eine Nodejs Bibliothek um Sonos zu steuern.


    Es wird auch noch die Spotify Web API angezapft, das ist aber nur für Komfort-Features von Content von Spotify wie z.B. automatisches Album Artwork laden.


    Die eigentlichen Kommando sind von der Anzahl her sehr begrenzt, weswegen man nicht viel ändern müsste um etwas anderes anzusprechen.


    Eine andere Lösung ist eine zur REST API von node-sonos-http-api kompatible Drop-In Lösung zu schreiben.

    Dann muss kann man Sonos-Kids-Controller ohne Modifikationen nutzen und hat so keine Probleme bei Updates.

    Hier hat andi82 schon so eine Bibliothek vorgestellt, über die man Spotify Connect Lautsprecher ansteuern kann:

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


    Das ganze nutzt die Spotify Web API und stellt dann eine handvoll Endoints bereit um die Komandos des Players dorthin umzulenken:

    https://github.com/amueller-te…b/main/spotify-control.js


    Damit bekommt man schon so einiges an Hardware angesprochen.

    Amazon Echos sind ja auch Spotify Connect kompatibel.


    Man könnte auch eine zusätzliche Squeezebox Installation lokal auf die Kiste packen.

    Die kann man glaub ich auch für Spotify Connect konfigurieren.

    Dann könnte man lokale Audioausgabe nutzen und Lautsprecher mit in der Box integrieren.


    Wer ganz lokal Musik hören will könnte sich z.B. eines der npm Pakete zum Ansteuern von mplayer anschauen.

    Hier bekommt man sicher auch wieder recht schnell einen minimalen Wrapper als Dop-In Lösung drum herum gebaut...

    Es gab bei node-sonos-http-api einen angenommenen Pull-Request der Probleme beim Abspielen beschreibt,

    falls man vorher z.B. über Sonos-Connect vom Handy aus auf den Sonos Lautsprecher gestreamt hat.


    Sowas hab ich auch schon beobachtet und wurde hier glaub auch schon erwähnt.


    Ich hab den Commit auch in meinen Fork übernommen.


    Es könnte sich also lohnen, node-sonos-http-api zu aktualisieren...

    Hallo Jens,


    nachdem das Hinzufügen über UniqueID dank rogerimhof ja mittlerweile geht, notfalls einzeln per ID, sind ja nicht so viele.


    Normal würde ich versuchen als Artist Tabaluga einzutragen, da die Alben ja von Peter Maffay sind, damit es dennoch unter Tabaluga erscheint (und man erkennt auch schneller ob noch irgendwelcher Blödsinn mit im Query hängenbleibt den man nicht wollte).


    Dann ein Query nach dem Schema: artist:"Peter Maffay" album:Tabaluga

    Man kann im Albumnamen dann glaub noch mit AND OR und NOT arbeiten.

    NOT ist aber glaub nur einmal gültig. Die genauen Regeln sind bei Spotify erklärt, da ist ein Link auf meiner Github Seite wo das mit den Queries erwähnt ist.


    Podcasts werden glaub auch von sonos-node-http-api gar nicht unterstützt.

    Somit auch nicht möglich das einfach in den Sonos-Kids-Controller einzubauen, sorry....