Ankündigung

Einklappen
Keine Ankündigung bisher.

Sonos Anbindung

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    So,

    ich bin gerade an der weiteren Feinjustierung des Brokers und würde gerne nochmal ein Feedback abfragen

    1. Ich würde gerne für die play_snippet und play_tts Funktionalität nur noch den eingebauten Webservice des Brokers nutzen wollen. Da ich die Verbindung auf den Broker-Port eh für POST-Requetsts aufmachen muss (für den Command-and-Control-Server) kann ich auch gleich diesen Port für GET-Requests von den Lautsprechern nutzen. Dadurch entfällt die teilweise verwirrende Zweiteilung der Konfiguration und die Einrichtung für unerfahrene Benutzer wird wesentlich einfacher. So ist es auch einfacher, die lokale IP des Brokers automatisch ermitteln zu lassen und für die Anfragen play_tts und play_snippet zu nutzen.

    2. Ich führe (wieder) den Streaming-Modus für play_tts ein. Das ist durch eine interne Umstellung wieder problemlos möglich. Ich würde diese Einstellung gerne als default nehmen. Auch hier: Vereinfachung für unerfahrene Benutzer.

    Mit diesen Umstellungen könnte man eigentlich play_tts out-of-the-box mit ausliefern.

    Vor den ganzen Änderung habe ich nch den Hotfix für die Endless-Loop beim Abspielen von play_tts hochgeladen (dicken Dank fürs Testen @dafra).

    --> KLICK MICH <--


    Grüsse,

    Stefan
    Sonos

    Kommentar


      Hi Stefan,

      erstmal ein dickes Lob für dieses Projekt.
      Bei mir läuft die aktuelle Version des Brokers jetzt, die TTS Funktion habe ich über sonos-cmd getestet.
      Als kleiner Stolperstein hat sich für mich einer der Kommentare in der /etc/default/sonos-broker dargestellt. Ohne den webservice funktionierte die Wiedergabe von TTS nicht (vermutlich muss das so :-) ). Mit aktiviertem webservice UND angegebenem web-root Pfad gehts dann auch :-)
      In der /etc/default/sonos-broker steht der default-pfad für den Web-root path ist /var/www, daher dachte ich, dass man den nicht noch explizit angeben muss.

      Sofern ich den nicht angegeben hatte erschien dann im logfile:

      ERROR MainThread No server root-path set. Web server functionality disabled. -- sonos-broker:__init__:228

      Das Resultat war, via sonos-cmd sieht es so aus als würde play_tts funktionieren, fade_in findet statt, dann hört man halt nix (weil der webservice nicht rennt und nicht auf die mp3s zugegriffen werden kann) und nach einiger Zeit spielt die Musik weiter.

      Gruß,

      Gunther

      Kommentar


        Hi,

        ich habe gerade nochmal getestet und hatte dabei doch wieder eine Endlosschleife:

        debug output vom broker logfile:
        Code:
        2017-01-23 15:27:16,597 DEBUG Thread-608 forwarding play_snippet command to coordinator with uid rincon_000e58500e5e01400 -- sonos_speaker.py:play_snippet:1275
        2017-01-23 15:27:16,598 DEBUG Thread-608 Speech: Taking snapshot -- sonos_speaker.py:play_snippet:1288
        
        2017-01-23 15:27:17,074 DEBUG Thread-608 Speech: Playing URI http://192.168.178.61:12900/ZGVfX0hhbGxvIFNjaGF0eiwgaWNoIGtvbW1lIGdlcm5lIGVpbi BTdMO8Y2sgU3RvbGxlbiBlc3Nlbi4gS3Vzcw==.mp3 -- sonos_speaker.py:play_snippet:1293
        
        2017-01-23 15:27:17,212 DEBUG Thread-609 Webservice: delivering file '/var/www/sonos-broker/ZGVfX0hhbGxvIFNjaGF0eiwgaWNoIGtvbW1lIGdlcm5lIGVpbi BTdMO8Y2sgU3RvbGxlbiBlc3Nlbi4gS3Vzcw==.mp3' to client ip 192.168.178.22:35499. -- sonos_service.py:do_GET:81
        
        2017-01-23 15:27:17,288 DEBUG Thread-610 Webservice: delivering file '/var/www/sonos-broker/ZGVfX0hhbGxvIFNjaGF0eiwgaWNoIGtvbW1lIGdlcm5lIGVpbi BTdMO8Y2sgU3RvbGxlbiBlc3Nlbi4gS3Vzcw==.mp3' to client ip 192.168.178.22:35501. -- sonos_service.py:do_GET:81
        
        2017-01-23 15:27:26,127 DEBUG Thread-611 Webservice: delivering file '/var/www/sonos-broker/ZGVfX0hhbGxvIFNjaGF0eiwgaWNoIGtvbW1lIGdlcm5lIGVpbi BTdMO8Y2sgU3RvbGxlbiBlc3Nlbi4gS3Vzcw==.mp3' to client ip 192.168.178.22:35521. -- sonos_service.py:do_GET:81
        
        2017-01-23 15:27:28,985 DEBUG Thread-2 Done waiting -- sonos_service.py:get_speakers_periodically:169
        
        2017-01-23 15:27:29,988 DEBUG Thread-2 active threads: 26 -- sonos_service.py:get_speakers_periodically:163
        
        2017-01-23 15:27:29,990 INFO Thread-2 scan devices ... -- sonos_service.py:get_speakers_periodically:164
        
        2017-01-23 15:27:30,567 DEBUG Thread-2 Start wait -- sonos_service.py:get_speakers_periodically:167
        
        2017-01-23 15:27:33,977 DEBUG Thread-612 Webservice: delivering file '/var/www/sonos-broker/ZGVfX0hhbGxvIFNjaGF0eiwgaWNoIGtvbW1lIGdlcm5lIGVpbi BTdMO8Y2sgU3RvbGxlbiBlc3Nlbi4gS3Vzcw==.mp3' to client ip 192.168.178.22:35545. -- sonos_service.py:do_GET:81
        
        2017-01-23 15:27:41,817 DEBUG Thread-613 Webservice: delivering file '/var/www/sonos-broker/ZGVfX0hhbGxvIFNjaGF0eiwgaWNoIGtvbW1lIGdlcm5lIGVpbi BTdMO8Y2sgU3RvbGxlbiBlc3Nlbi4gS3Vzcw==.mp3' to client ip 192.168.178.22:35564. -- sonos_service.py:do_GET:81
        
        2017-01-23 15:27:50,217 DEBUG Thread-614 Webservice: delivering file '/var/www/sonos-broker/ZGVfX0hhbGxvIFNjaGF0eiwgaWNoIGtvbW1lIGdlcm5lIGVpbi BTdMO8Y2sgU3RvbGxlbiBlc3Nlbi4gS3Vzcw==.mp3' to client ip 192.168.178.22:35587. -- sonos_service.py:do_GET:81
        
        2017-01-23 15:27:59,067 DEBUG Thread-615 Webservice: delivering file '/var/www/sonos-broker/ZGVfX0hhbGxvIFNjaGF0eiwgaWNoIGtvbW1lIGdlcm5lIGVpbi BTdMO8Y2sgU3RvbGxlbiBlc3Nlbi4gS3Vzcw==.mp3' to client ip 192.168.178.22:35609. -- sonos_service.py:do_GET:81

        Traceback von sonos-cmd:

        Code:
        ^CTraceback (most recent call last):
        
        File "/usr/local/lib/python3.5/site-packages/requests/packages/urllib3/connectionpool.py", line 384, in _make_request
        
        httplib_response = conn.getresponse(buffering=True)
        
        TypeError: getresponse() got an unexpected keyword argument 'buffering'
        
        
        During handling of the above exception, another exception occurred:
        
        
        Traceback (most recent call last):
        
        File "/usr/local/bin/sonos-cmd", line 1811, in &lt;module&gt;
        
        broker_cmd.cmdloop()
        
        File "/usr/local/lib/python3.5/cmd.py", line 138, in cmdloop
        
        stop = self.onecmd(line)
        
        File "/usr/local/lib/python3.5/cmd.py", line 217, in onecmd
        
        return func(arg)
        
        File "/usr/local/bin/sonos-cmd", line 187, in do_speaker
        
        speaker.cmdloop()
        
        File "/usr/local/lib/python3.5/cmd.py", line 138, in cmdloop
        
        stop = self.onecmd(line)
        
        File "/usr/local/lib/python3.5/cmd.py", line 217, in onecmd
        
        return func(arg)
        
        File "/usr/local/bin/sonos-cmd", line 918, in do_play_tts
        
        self.commands.play_tts(self.uid, tts, volume, language, fade_in, group_command)
        
        File "/usr/local/bin/sonos-cmd", line 1637, in play_tts
        
        'language': language
        
        File "/usr/local/bin/sonos-cmd", line 1106, in send
        
        headers=self.headers)
        
        File "/usr/local/lib/python3.5/site-packages/requests/api.py", line 110, in post
        
        return request('post', url, data=data, json=json, **kwargs)
        
        File "/usr/local/lib/python3.5/site-packages/requests/api.py", line 56, in request
        
        return session.request(method=method, url=url, **kwargs)
        
        File "/usr/local/lib/python3.5/site-packages/requests/sessions.py", line 488, in request
        
        resp = self.send(prep, **send_kwargs)
        
        File "/usr/local/lib/python3.5/site-packages/requests/sessions.py", line 609, in send
        
        r = adapter.send(request, **kwargs)
        
        File "/usr/local/lib/python3.5/site-packages/requests/adapters.py", line 423, in send
        
        timeout=timeout
        
        File "/usr/local/lib/python3.5/site-packages/requests/packages/urllib3/connectionpool.py", line 594, in urlopen
        
        chunked=chunked)
        
        File "/usr/local/lib/python3.5/site-packages/requests/packages/urllib3/connectionpool.py", line 387, in _make_request
        
        httplib_response = conn.getresponse()
        
        File "/usr/local/lib/python3.5/http/client.py", line 1197, in getresponse
        
        response.begin()
        
        File "/usr/local/lib/python3.5/http/client.py", line 297, in begin
        
        version, status, reason = self._read_status()
        
        File "/usr/local/lib/python3.5/http/client.py", line 258, in _read_status
        
        line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
        
        File "/usr/local/lib/python3.5/socket.py", line 575, in readinto
        
        return self._sock.recv_into(b)
        ​​​​​​​Gruß Gunther

        Kommentar


          gamn

          Du nutzt Version 1.0b4?

          Gruss,

          Stefan
          Sonos

          Kommentar


            Genau,

            heute frisch installiert.

            Gruß,

            Gunther

            Kommentar


              dafra , gamn

              Danke für euer tolles Feedback. Ich habe die dev-Versionv1.0b5 online gestellt. Ich habe die Konfiguration massiv entschlackt. Ich habe ein paar Parameter rausgeworfen und ein paar umbenannt. Ich hoffe es ist jetzt einigermaßen selbsterklärend.
              Durch die Umstellug muss die Konfiguration nochmal angepasst werden.

              TTS ist jetzt standardmäßig aktiv und ohne Webservice nutzbar. Möchte man die Dateien lokal speichern, ist der Webservice notwendig, der aber nun sehr einfach zu konfigurieren ist. So wird jetzt die IP in den meisten Fälle automatisch erkannt.

              gamn
              Warum bei dir die Loop nochmal aufgetreten ist, kann ich noch nicht genau sagen, ich habe aber nochmal eine kleine Anpassung vorgenommen. Bei mir läuft das System jetzt mal ein paar Tage und werde versuchen, das Problem nachzustellen.

              --> DOWNLOAD <--

              Gruss,

              Stefan
              Zuletzt geändert von pfischi; 23.01.2017, 21:06.
              Sonos

              Kommentar


                Hallo Stefan,

                ich habe meine bisherige Installation (incl. Konfiguration) runtergeschmissen und durch 1.05b ersetzt. Ich muss sagen: Ich bin einfach begeistert! Das Setup und die gesamte Konfiguration ist absolut einfach geworden, so muss ein Programm sein. Ein dickes Lob an dieser Stelle!

                Ich habe etwas herumgespielt und es hat soweit alles stabil funktioniert. Das einzige was mir aufgefallen war, dass im (Amazon) Prime-Radio keine Titel und Interpreten angezeigt werden und eine (TTS-) Unterbrechung zum nächsten Titel springt. Entsprechender Log hängt im Anhang. Ich werde die nächsten Tage noch etwas weiter rumprobieren und eventuelle Auffälligkeiten melden.

                Ein Punkt, der unter Jammern auf hohem Niveau läuft, ist noch der Hilfetext zum Parameter local_google_tts in der Konfig. Ich glaube, ich weiß was du damit sagen möchtest - vermutlich etwas in der Art:
                Code:
                The google text-to-speech functionality streams the mp3s from Google directly to the sonos speaker. In case the parameter local_google_tts is set to true, the corresponding mp3 will be cached locally instead, so connection to Google is only necessary in case of uncached TTS phrases. This speeds up the TTS execution and reduces internet traffic.
                Viele Grüße,

                Daniel
                Angehängte Dateien
                Zuletzt geändert von dafra; 24.01.2017, 21:06. Grund: "instead" eingefügt

                Kommentar


                  Gibt es eigentlich noch weitere Widgets für das Sonos Plugin?

                  Kommentar


                    Ich habe für mich eine Minimalversion von Stefans Widget abgeleitet, siehe Post #584. Ansonsten wollte Stefan das Widget für V1.0 ja aktualisieren, da warte ich erst mal was kommt .

                    Gruß, Daniel

                    Kommentar


                      Ok, dann warten wir mal auf die v1.0
                      das hier ist schon ganz geil: https://github.com/ddtlabs/smartvisu...ots/sonos1.png

                      Kommentar


                        dafra

                        Schön das es langsam rund und stabil wird. Das Verhalten vom Amazon-Prime-Music-Service schaue ich mir an. Die Formulierung für die Option 'local_google_tts' war tatsächlich murks, war anscheinend doch schon zu spät Ich war faul und habe deine Formulierung mal übernommen

                        Zum weiteren Vorgehen: ich lasse die aktuelle Version noch bis zum WE laufen. Sollten keine weiteren Fehler auftauchen (wie immer gerne auch hier posten) mache ich daraus die Version v1.0. Ich werde gleich danach ein Minimal-Widget hinterherschieben und am eigentlichen Widget weiterarbeiten. Das verlinkte Widget werde ich auch als Basis nehmen.

                        Grüsse,

                        Stefan
                        Sonos

                        Kommentar


                          Für die 1.0 brauch ich dann aber smarthomeNG? Oder geht die dann noch mit dem "alten" smarthome.py?

                          Grüße
                          Thorsten

                          Kommentar


                            Dem Broker ist es prinzipiell egal, das entsprechende Plugin für Smarthome ist in der jetzigen Betaversion v1.0b5 noch kompatibel, möchte ich jedoch noch zum Release umstellen. Dann geht's nur noch mit SmarthomeNG.

                            Gruss,

                            Stefan
                            Zuletzt geändert von pfischi; 25.01.2017, 11:52.
                            Sonos

                            Kommentar


                              Ok, dann muss ich meinen Raspi doch noch neu aufsetzen

                              Kommentar


                                ... was mir auch noch aufgefallen ist: Wenn die Verbindung zum Sonos mal unterbrochen war (Sonos stromlos oder Netzwerkverbindung gekappt), bekommt man den Stream nicht mehr über "Play" ans laufen.

                                Ich kann allerdings nicht beurteilen ob das ein Bug im Broker ist oder ob das das normale Sonos Verhalten ist.

                                Gruß, Daniel

                                Kommentar

                                Lädt...
                                X