Ankündigung

Einklappen
Keine Ankündigung bisher.

Sonos Anbindung

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

  • pfischi
    antwortet
    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

    Einen Kommentar schreiben:


  • blutwurst
    antwortet
    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

    Einen Kommentar schreiben:


  • pfischi
    antwortet
    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

    Einen Kommentar schreiben:


  • blutwurst
    antwortet
    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.

    Einen Kommentar schreiben:


  • mwagner
    antwortet
    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

    Einen Kommentar schreiben:


  • pfischi
    antwortet
    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

    Einen Kommentar schreiben:


  • pfischi
    antwortet
    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.

    Einen Kommentar schreiben:


  • blutwurst
    antwortet
    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

    Einen Kommentar schreiben:


  • mwagner
    antwortet
    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

    Einen Kommentar schreiben:


  • pfischi
    antwortet
    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

    Einen Kommentar schreiben:


  • RoyalTS
    antwortet
    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.

    Einen Kommentar schreiben:


  • pfischi
    antwortet
    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

    Einen Kommentar schreiben:


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

    Sind die ITEM-Dateien anzupassen?

    Einen Kommentar schreiben:


  • pfischi
    antwortet
    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

    Einen Kommentar schreiben:


  • RoyalTS
    antwortet
    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.

    Einen Kommentar schreiben:

Lädt...
X