Ankündigung

Einklappen
Keine Ankündigung bisher.

Sonos Anbindung

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

    Hi,

    kurze frage läuft bei euch der Plugin noch nach dem neuesten Play1 Update?

    Code:
    2015-07-21 21:53:53,319 INFO     sonos-update Starting new HTTP connection (1): x.x.x.x -- connectionpool.py:_new_conn:203
    2015-07-21 21:53:53,334 WARNING  sonos-update Could not send sonos notification: {'parameter': {'group_command': 0, 'uid': 'rincon_xxxxxxxxxxxxxxxxxxxxx'}, 'command': 'current_state'}. Error: ('Connection aborted.', error(111, 'Connection refused')) -- __init__.py:_send_cmd:464
    2015-07-21 21:53:53,719 DEBUG    Scheduler    sonos-update next time: 2015-07-21 21:55:53+02:00 -- scheduler.py:_next_time:289


    Gruß und Danke



    Marco

    Kommentar


      Hi,

      ich schaue mir das mal an. Im Moment bin ich mit dem Umzug beschäftigt. Aber ich gebe bald Feedback.
      Sonos

      Kommentar


        Mal eine neue Idee gesponnen...
        Ich würde gerne, wenn jemand an der Hof- bzw. Haustür klingelt (ich kann mit meiner Mobotix-Anlage Netzwerkbefehle absetzen) gerne bestimmte Sonos-Lautsprecher einen Türgong abspielen lassen.

        Aber wie kann ich
        - den aktuellen Sonos-Status pausieren,
        - feste Lautstärke einstellen (ok, das ist klar),
        - Gong abspielen (MP3-Datei mit Gong-Klang) und
        - am Ende wieder den Status von zuvor aufnehmen?

        Schwerpunkt ist hier auf den Status pausieren (bzw. speichern und wieder aufnehmen).

        EDIT: so wie hier dachte ich mir das.
        https://www.symcon.de/forum/threads/...280#post116280
        Gerade die Speicherung der aktuellen Position im Song, der Liste, etc.
        "Ausfaden, Meldung, einfaden."
        Wäre doch eine tolle Ergänzung, oder?

        EDIT2: Auch unter http://www.fhemwiki.de/wiki/SONOS bei Beispielen gibt es nette Anregungen.
        "13.5 Beispiel für eine Stummschaltung bei einem Anruf"


        EDIT3: Oh... Docu durchforsten hilft. PLAY_SNIPPET sollte ja helfen
        Mal ausprobieren.

        Danke!
        Grüße
        Thorsten
        Zuletzt geändert von RoyalTS; 05.08.2015, 13:38.

        Kommentar


          Ok.... mit play_snippet bissl gespielt.
          Aber hab noch Probleme gefunden.

          Wenn ich beim Klingeln auf seinem Sonos jetzt was abspielen möchte, dann geht das nur, wenn dieses eine Sonos nicht gruppiert ist.

          Beispiel mit "sonos_cmd":
          Code:
          admin@smarthome:/usr/smarthome$ sonos_cmd
          Connecting to Sonos broker ... done!
          
          Welcome to Sonos Broker console!
          =>> update
          =>> speaker
          
          speaker(s):
          -----------
          (1)        rincon_000e58d28e9a01400    [192.168.1.125|Schlafzimmer|Sonos CONNECT:AMP]
          (2)        rincon_000e58a257c401400    [192.168.1.124|Büro|Sonos CONNECT]
          (3)        rincon_000e58d290a001400    [192.168.1.115|Gäste-WC|Sonos CONNECT:AMP]
          (4)        rincon_000e58c373cc01400    [192.168.1.119|Gäste-WC|Sonos PLAY:1]
          (5)        rincon_000e58851b2001400    [192.168.1.112|Gäste-WC|Sonos PLAY:5]
          (6)        rincon_000e582d7aa001400    [192.168.1.120|Gäste-WC|Sonos CONNECT]
          (7)        rincon_000e5876cef201400    [192.168.1.111|Gäste-WC|Sonos PLAY:3]
          (8)        rincon_000e58c7806a01400    [192.168.1.126|Kinderbad|Sonos PLAY:1]
          (9)        rincon_000e58f0a68c01400    [192.168.1.123|Melissa Schlafzi|Sonos PLAY:3]
          (25)        rincon_000e58f0a38401400    [192.168.1.122|Schlafzimmer|Sonos PLAY:3]
          (26)        rincon_000e58716d5801400    [192.168.1.121|A&A Schlafzimmer|Sonos PLAY:3]
          
          
          =>> speaker 3
          admin@smarthome:/usr/smarthome$ sonos_cmd
          Connecting to Sonos broker ... done!
          
          Welcome to Sonos Broker console!
          =>> update
          =>> speaker
          
          speaker(s):
          -----------
          (1)        rincon_000e58d28e9a01400    [192.168.1.125|Schlafzimmer|Sonos CONNECT:AMP]
          (2)        rincon_000e58a257c401400    [192.168.1.124|Büro|Sonos CONNECT]
          (3)        rincon_000e58d290a001400    [192.168.1.115|Gäste-WC|Sonos CONNECT:AMP]
          (4)        rincon_000e58c373cc01400    [192.168.1.119|Gäste-WC|Sonos PLAY:1]
          (5)        rincon_000e58851b2001400    [192.168.1.112|Gäste-WC|Sonos PLAY:5]
          (6)        rincon_000e582d7aa001400    [192.168.1.120|Gäste-WC|Sonos CONNECT]
          (7)        rincon_000e5876cef201400    [192.168.1.111|Gäste-WC|Sonos PLAY:3]
          (8)        rincon_000e58c7806a01400    [192.168.1.126|Kinderbad|Sonos PLAY:1]
          (9)        rincon_000e58f0a68c01400    [192.168.1.123|Melissa Schlafzi|Sonos PLAY:3]
          (25)        rincon_000e58f0a38401400    [192.168.1.122|Schlafzimmer|Sonos PLAY:3]
          (26)        rincon_000e58716d5801400    [192.168.1.121|A&A Schlafzimmer|Sonos PLAY:3]
          
          
          =>> speaker 3
          
          rincon_000e58d290a001400 =>> play_snippet
          Url (http://.. or Sonos url)   []:x-file-cifs://N5550/MP3/Tuergong.mp3
          snippet volume (-1-100)   [-1]:20
          fade in (0|1)              [0]:0
          group command (0|1)        [0]:1
          Und dann hängt es. Auch mit "group command" = 0.
          Wollte das Türklingel-Signal gerne immer an bestimmte Lautsprecher schicken, egal wie sie gerade gruppiert sind. Danach dann weiter wie zuvor.
          Gerne aber auch an alle in der Gruppe, die ansonsten nicht dabei sind.

          Hat das Problem schon jemand gehabt? Also dass es nicht geht, wenn Lautsprecher gruppiert sind.

          EDIT: Wenn ich an einem einzelnen Lautsprecher eine "normale" Playliste habe, keinen Radio-Stream, dann kommt nach play_snippet die ursprüngliche Musik nicht zurück. Hmm. Ggf. alles eine Ursache des letzten Sonos-Updates?

          Danke und Grüße
          Thorsten
          Zuletzt geändert von RoyalTS; 05.08.2015, 16:50.

          Kommentar


            Mach ich mal weiter.
            Wollte gerade Google_TTS auf die obigen Symptome testen. Aber bekomm keine Ausgabe
            Also auch an einem einzelnen Lautsprecher.

            Mit "sonos_broker -d" bekomm ich folgende Ausgabe und nicht mehr
            Code:
            2015-08-05 17:31:05,738 DEBUG    Thread-278   COMMAND PlayTts -- attributes: group_command: 0, force_stream_mode: 0, uid: rincon_000e58d290a001400, language: de, tts: Hallo, volume: 20, fade_in: 0 -- sonos_commands.py:run:1480
            2015-08-05 17:31:05,750 INFO     Thread-278   Starting new HTTP connection (1): translate.google.com -- connectionpool.py:_new_conn:180
            2015-08-05 17:32:21,358 DEBUG    Thread-290   Server response -- status: True -- response:  -- sonos_broker:do_POST:63
             2015-08-05 17:33:13,351 DEBUG    Thread-278   "GET /translate_tts?ie=UTF-8&tl=de&q=Hallo HTTP/1.1" 302 387 -- connectionpool.py:_make_request:350
            2015-08-05 17:33:13,364 INFO     Thread-278   Starting new HTTP connection (1): ipv4.google.com -- connectionpool.py:_new_conn:180
            2015-08-05 17:33:13,517 DEBUG    Thread-278   "GET /sorry/IndexRedirect?continue=http://translate.google.com/translate_tts%3Fie%3DUTF-8%26tl%3Dde%26q%3DHallo&q=CGMSBFeFZOoYudmIrgUiGQDxp4NLQJpoJkhwIDnezxqamPehQg7jpYU HTTP/1.1" 503 2754 -- connectionpool.py:_make_request:350
            127.0.0.1 - - [05/Aug/2015 17:33:13] "POST / HTTP/1.1" 400 -
            2015-08-05 17:33:13,525 DEBUG    Thread-278   Server response -- status: False -- response: exceptions must derive from BaseException -- sonos_broker:do_POST:63
            Sonos_broker.cfg:
            Code:
            [google_tts]
            
            #Enabled Google-Text-To-Speech. Default: false
            enabled = true
            
            #Select the path where sonos broker will save the converted mp3 files
            #Before a web request is made, sonos broker will check, if the requested file already exists.
            #Possible paths could be: local webserver, mounted smb share ...
            
            save_path = /var/www/google_tts
            
            #Specifies the destination url which sonos broker refers to the sonos speakers. This url must point to 'save_path$
            server_url = http://192.168.1.55/google_tts
            
            #Maximum file size quota in megabytes. Up to this size, sonos broker will save files to 'save_path'.
            #Default: 100
            quota = 200

            EDIT: Oh... hab gerade mal https://translate.google.com/transla...&tl=de&q=Hallo manuell ausgeführt. Da kommt nun noch eine Captcha-Abfrage. Kann das wohl daran liegen?
            Zuletzt geändert von RoyalTS; 05.08.2015, 17:16.

            Kommentar


              Dann sammel ich grad mal weiter, bis wieder alle aus dem Urlaub bzw. Umzug sind

              So würde ich mir die Logic vorstellen, die wie Netzwerkbefehl ausgeführt wird. Dafür setzt meine Mobotix-Klingel ein KNX-Item auf 1 und mit autotimer nach ein paar Sekunden wieder auf 0 zurück.

              Oder kann man Volume, group_command und play kombinieren?
              Und wenn bestimmte Speaker in einer Gruppe sind? Die ist halt nicht immer gleich.

              Danke und Grüße
              Thorsten

              tuergong.py-Logik:
              Code:
              from time import sleep
              
              #trigger current_state for this sonos speaker to get the latest play-state
              #this is necessary to prevent a wrong button state. This happens, if the button was pressed too frequently.
              sleep(0.2)
              
              if sh.EG.Szenen.Klingel() :
                  sh.sonos.Kueche.play_snippet.group_command(1)
                  sh.sonos.GaesteWC.play_snippet.group_command(1)
                  sh.sonos.Lounge.play_snippet.group_command(1)
                  sh.sonos.Bad.play_snippet.group_command(1)
                  sh.sonos.Schlafzimmer.play_snippet.group_command(1)
                  sh.sonos.Esszimmer.play_snippet.group_command(1)
                  sh.sonos.Kind3.play_snippet.group_command(1)
                  sh.sonos.Kinderbad.play_snippet.group_command(1)
                  sh.sonos.Buero.play_snippet.group_command(1)    
                  sh.sonos.Kueche.play_snippet.volume(20)
                  sh.sonos.GaesteWC.play_snippet.volume(20)
                  sh.sonos.Lounge.play_snippet.volume(20)
                  sh.sonos.Bad.play_snippet.volume(20)
                  sh.sonos.Schlafzimmer.play_snippet.volume(20)
                  sh.sonos.Esszimmer.play_snippet.volume(20)
                  sh.sonos.Kind3.play_snippet.volume(15)
                  sh.sonos.Kinderbad.play_snippet.volume(15)
                  sh.sonos.Buero.play_snippet.volume(20)
                  sh.sonos.Kueche.play_snippet("x-file-cifs://N5550/MP3/Tuergong.mp3")
                  sh.sonos.GaesteWC.play_snippet("x-file-cifs://N5550/MP3/Tuergong.mp3")
                  sh.sonos.Lounge.play_snippet("x-file-cifs://N5550/MP3/Tuergong.mp3")
                  sh.sonos.Bad.play_snippet("x-file-cifs://N5550/MP3/Tuergong.mp3")
                  sh.sonos.Schlafzimmer.play_snippet("x-file-cifs://N5550/MP3/Tuergong.mp3"))
                  sh.sonos.Esszimmer.play_snippet("x-file-cifs://N5550/MP3/Tuergong.mp3")
                  sh.sonos.Kind3.play_snippet("x-file-cifs://N5550/MP3/Tuergong.mp3")
                  sh.sonos.Kinderbad.play_snippet("x-file-cifs://N5550/MP3/Tuergong.mp3")
                  sh.sonos.Buero.play_snippet("x-file-cifs://N5550/MP3/Tuergong.mp3")

              Kommentar


                @RoyalTS

                Danke schon mal für das klasse Feedback und Testen. Umzug ist durch, nun warte ich noch auf Internet. Ich sammle alle Issues und baue die dann schnellstmöglich ab.

                Zum Thema GoogleTTS: die ärgern tatsächlich mit dem Captcha, ist mir auch schon passiert, dann geht die Ausgabe natürlich nicht. Generell ist dringendst zu empfehlen, den Broker für GoogleTTS so einzurichten, das er Ansagen offline speichert und wiederverwendet.

                Thema Ansage Mobotix:

                Ich würde in dem Skript zuerst alle Speaker gruppieren, die die Ansage abspielen sollen. Dann irgendeinen der Speaker mit der Play_Snippet Funktion füttern (inkl group_command=1). Dann sorgt Sonos dafür, das alles synchron abgespielt wird. Danach wieder Gruppe auflösen und neu gruppieren. Ich habe schon etwas vorbereitet, wo man Gruppen speichern kann und bei Bedarf switchen kann, so eine Art Presets.

                Beim Volumen bin ich mir nicht ganz sicher, ob ein group_commanf Sinn macht. Die Pegel der einzelnen Lautsprecher sind doch verschieden. Aber im Prinzip sehr einfach zu integrieren, würde für deinen Fall ein paar Zeilen Text im Skript ersparen.
                Gruss,

                Stefan
                Zuletzt geändert von pfischi; 19.08.2015, 17:34.
                Sonos

                Kommentar


                  Danke Stefan für dein Feedback.
                  Mit dem Gruppen speichern käme ein nettes Feature dazu. Allerdings kann ich mir noch nicht ganz vorstellen, wie das dann bei "play_snippet" mit dem Status aller einzelner Lautsprecher funktionieren kann. Die Gruppierungen, bzw. die Musik, die Abspielposition, Lautstärken, etc. können ja jedes mal ganz anders sein.
                  Und wenn man dann zum "play_snippet" den Gesamtstatus speichert, auf einer neuen Gruppe die Wiedergabe startet und im Anschluss alles wieder zum Alten versetzt, dann wäre es schön, wenn die nicht integrierten Lautsprecher davon auch nichts mitbekommen bzw. auch die Nutzer.

                  Ansonsten könnte dann meine passende Logik wie folgt aussehen, wenn ich deinen Vorschlag aufnehmen:
                  tuergong.py
                  Code:
                  from time import sleep
                  
                  sleep(0.2)
                  
                  if sh.EG.Szenen.Klingel() :
                      #Den Status des Sonos-Systems speichern (Playlists, Play-Status, Position, Gruppen, etc.)
                      #bzw. nur den Status der gewünschten Lautsprecher und bei Bedarf der gruppenzugehörigen Lautsprecher
                      sh.sonos.save_status([sh.sonos.Kueche, sh.sonos.GaesteWC, sh.sonos.Lounge, sh.sonos.Esszimmer, sh.sonos.Bad, sh.sonos.Schlafzimmer, sh.sonos.Kinderbad, sh.sonos.Buero])
                      #Klingel-Lautsprecher-Pause
                      sh.sonos.Kueche.pause()
                      sh.sonos.GaesteWC.pause()
                      sh.sonos.Lounge.pause()
                      sh.sonos.Esszimmer.pause()
                      sh.sonos.Bad.pause()
                      sh.sonos.Schlafzimmer.pause()
                      sh.sonos.Kinderbad.pause()
                      sh.sonos.Buero.pause()
                      #Unjoin alle Klingel-Lautsprecher
                      sh.sonos.Kueche.unjoin()
                      sh.sonos.GaesteWC.unjoin()
                      sh.sonos.Lounge.unjoin()
                      sh.sonos.Esszimmer.unjoin()
                      sh.sonos.Bad.unjoin()
                      sh.sonos.Schlafzimmer.unjoin()
                      sh.sonos.Kinderbad.unjoin()
                      sh.sonos.Buero.unjoin()
                      #Klingel-Join aller Klingel-Lautsprecher
                      sh.sonos.GaesteWC.join('rincon_000e58d290a001400') #Küche
                      sh.sonos.Lounge.join('rincon_000e58d290a001400') #Küche
                      sh.sonos.Esszimmer.join('rincon_000e58d290a001400') #Küche
                      sh.sonos.Bad.join('rincon_000e58d290a001400') #Küche
                      sh.sonos.Schlafzimmer.join('rincon_000e58d290a001400') #Küche
                      sh.sonos.Kinderbad.join('rincon_000e58d290a001400') #Küche
                      sh.sonos.Buero.join('rincon_000e58d290a001400') #Küche
                      #Klingeln lassen
                      sh.sonos.Kueche.play_snippet.group_command(1)
                      sh.sonos.Kueche.play_snippet.volume(20)
                      sh.sonos.Kueche.play_snippet("x-file-cifs://N5550/MP3/Tuergong.mp3")
                      #Zustand vor dem Klingel wiederherstellen
                      sh.sonos.reload_status([sh.sonos.Kueche, sh.sonos.GaesteWC, sh.sonos.Lounge, sh.sonos.Esszimmer, sh.sonos.Bad, sh.sonos.Schlafzimmer, sh.sonos.Kinderbad, sh.sonos.Buero]    #Klingel-Lautsprecher-Play alter Zustand
                      sh.sonos.Kueche.play()
                      sh.sonos.GaesteWC.play()
                      sh.sonos.Lounge.play()
                      sh.sonos.Esszimmer.play()
                      sh.sonos.Bad.play()
                      sh.sonos.Schlafzimmer.play()
                      sh.sonos.Kinderbad.play()
                      sh.sonos.Buero.play()
                  Grüße
                  Thorsten

                  Kommentar


                    pfischi Umzug gut überstanden? ;-)

                    Kommentar


                      Zitat von RoyalTS Beitrag anzeigen
                      pfischi Umzug gut überstanden? ;-)
                      Ja, danke der Nachfrage. Haus ist bezogen.Smarthome funktioniert. Schalttermin für Internet ist der 22.10., dann geht's aktiv weiter mit dem Projekt. Es hat sich auch viel getan beim zugrundeliegenden SoCo-Projekt, gibt einigiges an Bugfixes.

                      Danke für die Geduld,

                      Stefan
                      Sonos

                      Kommentar


                        Super! Danke für dein Status-Update. Dann bin ich mal brennend gespannt, was es dann neues gibt

                        Kommentar


                          Hallo,

                          erstmal GROSSES LOB für dies grandiose Plugin! So nach und nach wächst mein Smarthome dank smarthome.py perfekt zusammen. Wahrscheinlich besser, als es manche Kauflösung könnte. Seid einer Woche klappt auch die Sonos-Integration und vier meiner sechs Player lassen sich einwandfrei steuern.

                          Allerdings habe ich im Bad zwei Play:1 als Stereopaar gekoppelt. Diese tauchen in der Speakerliste des Sonos Brokers als ein Player mit der ID des linken Play:1 auf. Leider bekommt der Broker weder Statusupdates von diesem Paar, noch lassen sich Befehle absetzen. Sobald ich das Stereopaar trenne, funktioniert alles einwandfrei.

                          Habe dann folgendes probiert:
                          1. Start Broker
                          2. Trennung des Stereopaars
                          3. Verbinden des Stereopaars
                          4. Verbindung über Broker funktioniert
                          ... ca. 2-3 Stunden warten (oder Broker neu starten)
                          5. Verbindung über Broker zum Stereopaar funktioniert nicht mehr

                          Hat irgendwer eine Idee oder ist das Problem bekannt?

                          Danke vorab für die Unterstützung!

                          Kommentar


                            Hi Bear80,

                            ich habe zwar keine Speaker als Stereopaar gekoppelt, aber die gleichen Probleme mit Gruppen.
                            Und leider kann ich den Broker seit den letzten Sonos-Updates irgendwie gar nicht mehr nutzen.

                            Hoffe gerade auf pfischi, dass er Zeit findet, die Updates alle mit ins Projekt zu nehmen.

                            Daumen drücken und warten

                            Kommentar


                              Ich kann zumindest bestätigen, dass es Stefan gelungen ist, im SoCo für einen connect:amp, der ja per se stereo ist, eine Balanceregelung zu implementieren. Von daher dürfte das wohl über kurz oder lang auch bei zu Stereo gruppierten Monolautsprechern und letztlich auch im plugin funktionieren.

                              Ben

                              Kommentar


                                Kurzes Statusupdate, mein VDSL50 ist geschaltet, ich werde heute auch anfangen mit dem programmieren.

                                Grüsse, Stefan
                                Sonos

                                Kommentar

                                Lädt...
                                X