Ankündigung

Einklappen
Keine Ankündigung bisher.

Sonos Anbindung

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

    Super Sache pfischi!
    Also das neue Update.

    Werde diese Woche mal alles testen

    Sind die Config bzw. die ITEM-Einstellungen anzupassen bzw. zu ergänzen?

    Grüße
    Thorsten
    Zuletzt geändert von RoyalTS; 04.01.2016, 18:30.

    Kommentar


      Zitat von RoyalTS Beitrag anzeigen
      Super Sache pfischi!
      Also das neue Update.

      Werde diese Woche mal alles testen

      Grüße
      Thorsten
      Wow,

      noch vor meinem Post
      Ich muss dich aber wegen dem Play-Snippet-Problem noch etws vertrösten, aber ich habs noch auf dem Plan.

      Und hier noch der Link zur neuen Broker-Version:

      LINK


      Grüsse,


      Stefan
      Sonos

      Kommentar


        Schade, also bzgl. Snippet.
        Hat TTS das gleiche Problem? Oder kann ich das zur Zeit nutzen?

        Sind die ITEM-Dateien anzupassen?

        Kommentar


          Zitat von RoyalTS Beitrag anzeigen
          Schade, also bzgl. Snippet.
          Hat TTS das gleiche Problem? Oder kann ich das zur Zeit nutzen?

          Sind die ITEM-Dateien anzupassen?
          Google-TTS müsste auch betroffen sein, weil intern die gleiche Funktion genutzt wird. Aber ich bin schon dran und debugge schon fleissig.
          Die Items müssen nicht geupdatet werden, es sein denn, die neuen Werte und Commands wie "Balance" und "HouseholdID" sollen mit rein.

          Achja, Google-TTS hatte ein Problem mit Captchas. Diese wurden vor der Gnerierung des TTS abgefragt, weil ich keinen User-Angent mitgeschickt hatte. Sollte jetzt behoben sein. Wenn nicht, muss ich mir noch was einfallen lassen

          Grüsse,

          Stefan
          Sonos

          Kommentar


            So, mal wieder am Testen:

            a) "sonos_cmd":
            Play, Stop, etc. geht bei mir nur mit dem "Coordinator" (if is_coordinator = true)
            Das ist so gedacht?

            b) Bei "sh.sonos.get_favorite_radiostations()" ist mir gerade aufgefallen, wie spielt man denn einen Favoriten ab?

            Ich teste weiter

            Danke für die ganze Mühe.

            Grüße
            Thorsten
            Zuletzt geändert von RoyalTS; 06.01.2016, 12:27.

            Kommentar


              Zitat von RoyalTS Beitrag anzeigen
              So, mal wieder am Testen:

              a) "sonos_cmd":
              Play, Stop, etc. geht bei mir nur mit dem "Coordinator" (if is_coordinator = true)
              Das ist so gedacht?

              b) Bei "sh.sonos.get_favorite_radiostations()" ist mir gerade aufgefallen, wie spielt man denn einen Favoriten ab?

              Ich teste weiter

              Danke für die ganze Mühe.

              Grüße
              Thorsten
              Zu a.: Eigentlich sollten die Anfragen dann automatisch an den Koordiantor gesendet werden. Ich schaus mir an.

              zu b. Bin ich gerade dabei einzuoflegen, brauch ich auch gerade bei mir zu Hause.

              Gruss,

              Stefan
              Sonos

              Kommentar


                Guten Morgen zusammen,

                erstmal vielen Dank für die tolle Arbeit, ich bin begeisterter sh.py und sonos Nutzer. Daumen hoch!

                Ich versuche nun seit einiger Zeit die Verwaltung von Playlisten einzubinden, scheitere aber immer beim set_playlist mit einer Fehlermeldung:

                "Server response -- status: False -- response: expected bytes, not str -- sonos_broker:do_POST:63"

                Dabei ist es egal, ob ich den Aufruf aus der sh.py oder sonos_cmd starte. Das Speichern der aktuellen Playlist klappt hingegen ohne Probleme.

                Das Ganze läuft auf einem Ubuntu, Python (3.2.3), requests (2.9.1), sonos-broker (v0.7.-2016-01-04-)...

                Ausgabe aus sonos_cmd:
                Code:
                Playlist (path to file)     []:/tmp/wohn
                Play after insert (0|1)    [0]:
                Invalid status response '400'!
                Server message: expected bytes, not str
                Invalid status response '400'!
                Server message: expected bytes, not str
                Hat jemand eine Idee?

                Danke und Gruß,
                Marcus

                Kommentar


                  Hallo,

                  das Christkind hat mir auch 2 Sonos Play 1 gebracht und somit musste ich natürlich diese auch ins Smarthome einbinden.
                  ...läuft auch (fast) alles Super. Danke fürs tolle Plugin.
                  Ich habe nur das Problem, dass ich die Steckdose des Sonos Nachts und bei Abwesend abschalte.
                  Nun zeigt mir der Status immer noch "true" an, obwohl hier eigentlich nichts mehr aktiv ist.
                  Es bleiben die letzten Zustände in den Variablen, d.h. das Plugin merkt nicht, das der Sonos aus ist.
                  Schalte ich die Steckdose nach längerer Zeit wieder zu, kann ich nicht mehr über das Plugin auf den Sonos zugreifen.
                  Kennt hier jemand das Problem oder bin ich der Einzige???
                  Habe die Vermutung, dass es evtl auch am Sonos_broker liegen könnte???
                  Starte ich diesen neu, so ist der Zugriff wieder da.
                  Bzw. denke mal, dass es aber eher mal wieder an mir liegt , doch irgendwie komme ich nicht weiter.

                  Läuft mit dem original Image auf nem Raspberry....(broker und Plugin sind aktuell)

                  Für nen Tipp oder Hilfe wäre ich echt dankbar...

                  schöne Grüße

                  Axl

                  Kommentar


                    Zitat von blutwurst Beitrag anzeigen
                    Hallo,

                    das Christkind hat mir auch 2 Sonos Play 1 gebracht und somit musste ich natürlich diese auch ins Smarthome einbinden.
                    ...läuft auch (fast) alles Super. Danke fürs tolle Plugin.
                    Ich habe nur das Problem, dass ich die Steckdose des Sonos Nachts und bei Abwesend abschalte.
                    Nun zeigt mir der Status immer noch "true" an, obwohl hier eigentlich nichts mehr aktiv ist.
                    ....
                    Axl
                    Das der Status nicht sofort umspringt, ist normal. Der Broker sucht per default alle 5 Minuten nach neuen Speakern. Dabei werden Offline-Speaker aus der Liste entfernt und der Status auf "Offline" gesetzt. Im Fall der Fälle braucht es also 5 Minuten zur Aktualisierung des Status. Der Umstand war mit bewusst und habe deswegen ein manuelles "Discovery" implementiert.

                    Ich selber schalte per Taster den Kanal des Stromaktors (an dem der Lautsprecher hängt" "an" und "aus". Gleichzeitig möchte ich , das der Taster so lange blinkt, wie der Aktor an ist, der Lautsprecher aber noch nicht "Online". Das ganze habe ich folgendermaßen gelöst (ich wolle das auh mal ins Wiki stellen, komplett mit Screenshots von ETS und den Einstellungen des MDT Tasters):


                    1. Um das ganze etwas dynamischer zu machen, beim zu schaltenden Item des Lautsprechers ein neues Attribut hinzufügen:

                    Code:
                    [[on_off]]
                        type = bool
                        knx_listen = 0/3/0
                        knx_dpt = 1
                        ga_pending = 0/3/7
                    Zur Erklärung: "ga_pending" ist die GA, die beim MDT das Blinken der LED auslöst. Kann optional mitgenommen werden, muss aber nicht. In der folgenden Lokig muss es aber dann raus (ich habs markiert). Die knx_listen-GA ist der Kanal des Schaltaktors.

                    2. Anpassung an /etc/logic.conf:

                    In der /etc/logic.conf in sh.py folgenden Eintrag hinzufügen:

                    Code:
                    [sonos_kueche_pending]
                        filename = sonos_pending_kueche.py
                        watch_item = Sonos_Kueche.on_off
                    Hier müssen natürlich die entsprechenden Werte geändert werden, mein Item ist hier Sonos_Kueche, das Trigger-Attribute "on_off", das haben wir oben hinzugefügt.

                    3. Die Logik an sich:

                    Befindet sich im Anhang und muss in das logics-Verzeichnis von sh.py. Den Dateinamn entsprechend den Anpassungen in der logic.conf abändern. Standartmäßig gehe ich davon aus, dass das Sonos-Plugin in der plugin.conf von sh.py mit "sonos" benannt wurde. Sollte das nicht der Fall sein, muss in Zeile 45 der Logik der entsprchende Name des Plugins abgeändert werden.
                    Kurz gesagt macht das Skript folgendes: Wird der Kanal des Schaltaktors auf "On" gesetzt, wird ein manuelles Suchen gestartet (alle 20sek, max. 2Minuten). Dadurch wird automatisch auch der Status des Lautsprechers auf "On" gesetzt (meiner Erfahrung nach dauert das zwischen 30-60sek). Das gleiche passiert bei "Off". Der Broker sucht nach neuen Lautsprechern und sortiert nicht erreichbare aus, der Status des entsprechenden Lautsprechers müsste innerhalb weniger Sekunden auf "Off" gesetzt werden.


                    Im Anhnag ist die Logik, sowie das Sonos-Item inkl. der hinzugefügten "OnOff"-Eigenschaft als Beispiel.

                    sonos.zip


                    @Axl:

                    Warum der Speaker nach längerer Zeit nicht mehr erreichbar ist, kann ich aus der Ferne nicht sagen hier brauche ich Logs.
                    Angehängte Dateien
                    Zuletzt geändert von pfischi; 27.01.2016, 18:35.
                    Sonos

                    Kommentar


                      Zitat von mwagner Beitrag anzeigen
                      Guten Morgen zusammen,

                      erstmal vielen Dank für die tolle Arbeit, ich bin begeisterter sh.py und sonos Nutzer. Daumen hoch!

                      Ich versuche nun seit einiger Zeit die Verwaltung von Playlisten einzubinden, scheitere aber immer beim set_playlist mit einer Fehlermeldung:

                      "Server response -- status: False -- response: expected bytes, not str -- sonos_broker:do_POST:63"

                      Dabei ist es egal, ob ich den Aufruf aus der sh.py oder sonos_cmd starte. Das Speichern der aktuellen Playlist klappt hingegen ohne Probleme.

                      Das Ganze läuft auf einem Ubuntu, Python (3.2.3), requests (2.9.1), sonos-broker (v0.7.-2016-01-04-)...

                      Ausgabe aus sonos_cmd:
                      Code:
                      Playlist (path to file) []:/tmp/wohn
                      Play after insert (0|1) [0]:
                      Invalid status response '400'!
                      Server message: expected bytes, not str
                      Invalid status response '400'!
                      Server message: expected bytes, not str
                      Hat jemand eine Idee?

                      Danke und Gruß,
                      Marcus
                      Ich bi n dran, am Wochenende gibts ein Bugfix.


                      Gruss,

                      Stefan
                      Sonos

                      Kommentar


                        Zitat von pfischi Beitrag anzeigen

                        Ich bi n dran, am Wochenende gibts ein Bugfix.


                        Gruss,

                        Stefan
                        Das klingt super!

                        Mittlerweile habe ich per sh.py Logic den SoCo separat angesprochen und aktiviere direkt die auf dem Sonos hinterlegten Playlisten. Funktioniert gut, vielleicht ist das auch eine schöne Funktion für den Broker (clear_queue(), add_to_queue(playlist)).

                        Ehrlich gesagt, ist das sogar eher die Funktion die ich suche: Bearbeiten von Playlists über die vorhandenen Sonos Apps, danach brauche ich nur die gewünschten Playlists über einen Taster im Raum laden und los gehts. Beispiel: Unterschiedliche Playisten für Männlein und Weiblein für's Bad morgens...

                        VG,
                        Marcus

                        Kommentar


                          Tipptopp, danke Stefan.

                          Das wird wohl genau meine benötigte Funktion sein, habe es eben mal getestet.
                          Leider noch ein kleines Problem, wo ich dachte, dies sei mit der 1.7er version behoben.
                          Beim Einschalten des Lautsprechers kommt:
                          Code:
                          [FONT=Menlo][SIZE=14px]File "/usr/smarthome/logics/sonos_pending_bad.py", line 24, in discover[/SIZE][/FONT]
                          [FONT=Menlo][SIZE=14px]getattr(sh, plugin_name).discover()[/SIZE][/FONT]
                          [FONT=Menlo][SIZE=14px]AttributeError: 'Item' object has no attribute 'discover'[/SIZE][/FONT]
                          Irgendeine Idee?
                          ...habe die aktuellen Versionen vom broker und Plugin.

                          nochmals ein dickes Danke

                          Gruß

                          Axl
                          Zuletzt geändert von blutwurst; 28.01.2016, 21:09.

                          Kommentar


                            Zitat von blutwurst Beitrag anzeigen
                            Tipptopp, danke Stefan.

                            Das wird wohl genau meine benötigte Funktion sein, habe es eben mal getestet.
                            Leider noch ein kleines Problem, wo ich dachte, dies sei mit der 1.7er version behoben.
                            Beim Einschalten des Lautsprechers kommt:
                            Code:
                            [FONT=Menlo][SIZE=14px]File "/usr/smarthome/logics/sonos_pending_bad.py", line 24, in discover[/SIZE][/FONT]
                            [FONT=Menlo][SIZE=14px]getattr(sh, plugin_name).discover()[/SIZE][/FONT]
                            [FONT=Menlo][SIZE=14px]AttributeError: 'Item' object has no attribute 'discover'[/SIZE][/FONT]
                            Irgendeine Idee?
                            ...habe die aktuellen Versionen vom broker und Plugin.

                            nochmals ein dickes Danke

                            Gruß

                            Axl
                            Es kann eigentlich nur an zwei Sachen liegen:

                            a. Du benutzt nicht das Sonos-Plugin in v1.7
                            b. Das Sonos-Plugin in der Plugin.conf von sh.py heißt nicht "sonos"

                            Ich tippe auf Variante b. Sollte das der Fall sein, dann musst du entweder die Plugin.conf anpassen oder die Logik.

                            Gruss,

                            Stefan

                            Sonos

                            Kommentar


                              Hallo,

                              danke für die schnelle Hilfe,
                              doch leider ist weder a, noch b...schade, daher bin ich mir meinem Latein ziemlich am Ende....

                              Zitat von pfischi Beitrag anzeigen

                              Es kann eigentlich nur an zwei Sachen liegen:

                              a. Du benutzt nicht das Sonos-Plugin in v1.7
                              b. Das Sonos-Plugin in der Plugin.conf von sh.py heißt nicht "sonos"

                              a) Auszug aus dem Plugin selbst (ab Zeile 503)
                              Code:
                              def version(self):
                                      return "v1.7\t2016-01-04"
                              
                                  def discover(self):
                                      return self._send_cmd(SonosCommand.discover())
                              b) Auszug aus der Plugin.conf
                              Code:
                              [sonos]
                                  class_name = sonos
                                  class_path = plugins.sonos
                              Gruß

                              Axl

                              Kommentar


                                Zitat von blutwurst Beitrag anzeigen
                                Hallo,

                                danke für die schnelle Hilfe,
                                doch leider ist weder a, noch b...schade, daher bin ich mir meinem Latein ziemlich am Ende....

                                Axl
                                Das bekommen wir shon gerade.

                                Kannst du mal den class_name in der plugin.conf auf "Sonos" (Großbuchstabe am Anfang) setzten. Sollte das immer nicht gehen, kannst du mal folgenden Code am Anfang der Logik einfügen und die Ausgabe hier posten:

                                Code:
                                for attr in dir(sh):
                                    print(attr)
                                Gruss,

                                Stefan
                                Sonos

                                Kommentar

                                Lädt...
                                X