Ankündigung

Einklappen
Keine Ankündigung bisher.

Sonos Anbindung

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

    #16
    Hi Stefan,

    Zitat von pfischi Beitrag anzeigen
    Ich werde mir im Vorfeld ein Sonos-Gerät holen und mich mal ans Werk machen.
    Super.

    Bis bald

    Marcus

    Kommentar


      #17
      Super!

      Da freu ich mich, wenn es ein Plugin für Sonos gibt.

      Dank Dir schon mal!

      Grüße
      Thorsten

      Kommentar


        #18
        Kleines Update: ich habe mir ein Sonos Play 1 gekauft und werde mich mal diese Woche ans programmieren machen.
        Der Sound aus dem kleinen Teil ist wirklich beeindruckend.
        Sonos

        Kommentar


          #19
          Nice

          Really looking forward to Sonos integration, I have been trying

          https://github.com/TrondKjeldas/knxsonos

          But due to lack of documentation had no luck.

          https://github.com/SoCo/SoCo

          It works with Python 2.xx but with Python3

          Code:
          TypeError: method expected 2 arguments, got 3
          I for one are a willing beta tester

          Kommentar


            #20
            So , kleines Update:

            Bin schon fleissig am programmieren. Ich verwende als Basis folgendes Projekt
            SoCo.

            Folgendes schwebt mir vor (als Erweiterung zu SoCo) und wird gerade von mir integriert:

            • Client - Server - Kommunikation
            • sqlite-Datenbank für Datenhaltung
            • ...


            Wenn die ganzen rudimentären Sachen integriert sind, werde ich das Projekt in Github veröffentlichen.

            Folgende Sachen sind bereits fertig:

            • SoCo Python3-"ready" gemacht
            • rudimentäres Server-Client-Grundgerüst
            • erste Datenbank-Tabellen und Funktionen zur Speicherung von Device-Informationen

            • funktionsfähige Suche nach Sonos-Geräten im Netzwerk


            Es bleibt noch einiges zu tun, aber Spass machts Der "WAF" bei meiner Frau sinkt gerade etwas (Zitat: "Legt das Notebook weg..."), aber das wird sich spätestens mit einer Sonos-Smarthome.py-Lösung wieder legen.

            Guten Rutsch euch allen,

            Stefan

            Sonos

            Kommentar


              #21
              Kleines Update:

              Das "Framework" für die Serveranwendung ist so gut wie fertig. Ich habe einen Argparser servereitig implementiert, der die clienseitigen Anfragen auswertet und die entsprechenden Fehlermeldungen / Hilfen ausspuckt.
              Weiterhin hat die Datenbank ihr Grundgerüst bekommen und kann in mehreren Tabellen die Infos für die Sonos-Geräte aufnehmen.

              Folgende Features sind bereits fertig (ich stell das hier schon mal als Commandline dar, so wie die Anfragen später an der Server geschickt werden):

              refresh quick ("kurzer" Scan nach allen Speakern (online/offline, uid, model)

              refresh all (sucht nach allen Speakern und fragt jeden gefundenen Speaker nach detaillierten Informationen, z.B. Zone, Software-Version, Mac, etc)

              refresh single {id, uid, ip} (holt Infos für einen Speaker. Gesucht werden kann anhand der IP, der eindeutigen UID des Speaker oder per Datenbank-ID des Geräts

              list all {offline, online, complete} (Liste alle Speaker auf)

              list single {id, uid, ip} (Listet einen einzelnen Speaker auf}

              Als nächstes werden die ganzen Sonos-Funktionen integriert, sollte aber zügig gehen, da ich hier das SoCo-Projekt gut integrieren kann.

              Nächste Woche werde ich das entsprechende Github-Project online stellen.

              Bis dahin,

              Stefan
              Sonos

              Kommentar


                #22
                Super!

                Bin total gespannt und bereit zum Testen

                Kommentar


                  #23
                  Bin auch schon gespannt auf das Plugin.

                  Greetinx,
                  Udo

                  Kommentar


                    #24
                    shHonos

                    So, der erste Schritt ist gemacht.

                    Ich habe unter shSonos ein neues Github-Projekt angelegt. Da ich noch ein bisschen auf wackeligen "Python-Füssen "stehe, musste eine setup.py nochmal hinten anstehen, wird aber asap nachgeliefert. Im Moment reicht es, alle Dateien in ein Verzeichnissen mit Schreibrechten zu kopieren.

                    Zur Zeit ist erstmal nur der Server im Github-Repository (inkl. einer kleinen Test-Client-App) ausgecheckt. Die Woche werde ich nutzen, um mir das richtige Design für das Smarthome-Plugin zu überlegen.

                    Zur Installation des Server auf dem Raspberry bitte unbedingt den Punkt 3 in der README beachten. Eine kleine Anleitung zum Ansteuern der ersten integrierten Kommandos ist auch da mit drin.

                    Es gibt noch viele Ecken und Kanten, aber die werden mit der Zeit alle noch rund.

                    Viel Spass,

                    Stefan
                    Sonos

                    Kommentar


                      #25
                      Hallo Stefan,

                      ich scheint Dir Spaß zu machen, schön. Ich bin froh das sich jemand dem Thema annimmt.
                      Eine kritische Frage, ist diese Komplexität notwendig? Wenn ich es richtig sehe, müssen ein paar Python-Module und ein separater Dienst installiert werden. Es wäre schön wenn es weniger Abhängigkeiten geben würde, das macht die Nutzung einfacher und den Code wahrscheinlich schlanker.

                      Bis bald

                      Marcus

                      Kommentar


                        #26
                        Zitat von mknx Beitrag anzeigen
                        Hallo Stefan,

                        ich scheint Dir Spaß zu machen, schön. Ich bin froh das sich jemand dem Thema annimmt.
                        Eine kritische Frage, ist diese Komplexität notwendig? Wenn ich es richtig sehe, müssen ein paar Python-Module und ein separater Dienst installiert werden. Es wäre schön wenn es weniger Abhängigkeiten geben würde, das macht die Nutzung einfacher und den Code wahrscheinlich schlanker.

                        Bis bald

                        Marcus
                        Hallo Markus, danke für das Feedback. Die Idee mit dem Server war / ist eigentlich, das ganze etwas systemunabhaengig zu designen (Kommunikation über TCP, Serverresponse als xml etc). Das entsprechende Plugin für sh käme dann sozusagen als Beigabe hinzu. Die Komplexität des Codes verlagert sich also eigentlich nur vom Plugin zum Server. Angedacht ist, das der Server weitere Funktionalitaeten wie z.B. Backup der Gruppen, Playlisten durchführt, da laut Sonosforen die Speaker bei Stromausfall alle Einstellugen verlieren.

                        Aber ich stell das Thema gerne zur Diskussion. Man koennte das SoCo Projekt auch ohne Server integrieren. Meiner Ansicht nach macht aber auch hier eine kleine Sqlite-Datenbank Sinn.

                        Zum Thema nachzuinstallierende Plugins:

                        Die lxml-Bibliothek bekomme ich raus, bei der requests-library wird es aber schwierig, weil dies Bestandteil vom Soco-Project ist. Diese koennte man aber schon ins Image integrieren, eine Installation von pip oder ähnlichem würde entfallen.

                        Edit: Der Server würde auch periodisch das Pollen des Status aller Speaker übernehmen. Die Infos bekommen die Clients dann hauptsächlich aus der Datenbank geliefert. Kann ich die gleiche Funktionalität ohne Performanceauswirkung mit einem Smarthome.py-Plugin abbilden?


                        Mfg,

                        Stefan



                        Gesendet von meinem GT-N7000 mit Tapatalk
                        Sonos

                        Kommentar


                          #27
                          Sonos Anbindung

                          Hallo an alle,

                          ich habe den ersten Prototypen für das Sonos-Plugin fertig. Ihr findet es hier unter https://github.com/pfischi/shSonos im Unterorder plugin.sonos.

                          Bisher ist nur die "mute"-Funktion integriert im Plugin, weitere folgen im Laufe des WE.

                          Wer bereits den Sonos-Server installiert hatte, muss diesen durch das neue Release ersetzen.

                          Eine ausführliche Anleitung folgt.


                          Edit: Anleitung ist im Plugin.Sonos-Unterordner hinzugefügt.

                          Anleitung für die 'mute'-Funktionalität ist hochgeladen.




                          Schönes WE an alle,

                          Stefan
                          Sonos

                          Kommentar


                            #28
                            Kleines Update,

                            im Moment bin ich dabei, dem Sonos-Server eine interessante Funktion zu implementieren. Man kann sich über simple GET-Anfragen bei den Speakern für Events registrieren, diese schicken dann Information beim Eintreten des Events an alle Subscriber (hier der Sonos-Server). Damit würde ein Pollen von Zuständen entfallen.

                            Schade das man das alles selber im Netz finden muss, Sonos gibt da null Hilfe (Anfrage an den Support).


                            Schönen Abend,

                            Stefan
                            Sonos

                            Kommentar


                              #29
                              Großes Update

                              Auf Github habe ich gerade ein dickes Update hochgeladen.

                              Hier die Änderungen in aller Kürze:


                              • Server HTTP (anstatt TCP) umgestellt
                              -> Kommandos per Browser absetzbar
                              • Server entschlackt: Datenbank raus, komplizierten Argparser raus, simplerer Kommando-Struktur
                              • Implementierung von Sonos-Events
                                • der Server registriert sich bei den einzelnen Sonos-Speakern und bekommt automatisch Rückmeldung bei Statusänderungen
                                • Server sucht automatisch nach neuen Sonos-Speakern und schmeisst alte aus seiner List raus
                                • empfangene Events werden durch den Sonos-Server (Broker wäre eigentlich die bessere Bezeichnung) an alle registrierte Clients gesendet (das Smarthome.py-Plugin registriert sich automatisch, soehe Doku Github)
                                  • das Plugin empfängt nun unverzüglich auch Statusäbderungen am Speaker, die durch andere Clients getriggert wurden (iPad, Androi etc)


                              • lxml entfernt, deshalb nur noch die request-Bibliothek notwendig (Raspberry Pi)
                              • logischere Plugin-Kommandos
                              • integrierte Kommandos bisher:
                                • Mute
                                • Volume
                                • Led
                                • der rest folgt asap, die Struktur war bisher wichtiger




                              Auf Github habe ich ein wenig ausführlicher alles beschrieben, Unter dem Sonoslugin-Ordner findet ihr auch Beispiele zur Integration ins Smarthome.py-Projekt.


                              Mit der Bitte um Bugtrack-Logs,


                              Stefan
                              Sonos

                              Kommentar


                                #30
                                Noch ein kleines Update (im Developer-Zweig)

                                https://github.com/pfischi/shSonos/tree/develop

                                Neue Funktionen im Server, respektive im Plugin:

                                • Play
                                • Pause
                                • Stop
                                • Track-Titel



                                Bis bald,


                                Stefan
                                Sonos

                                Kommentar

                                Lädt...
                                X