Ankündigung

Einklappen
Keine Ankündigung bisher.

Sonos Anbindung

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

  • RoyalTS
    antwortet
    Code:
    rincon_000e58c373cc01400 =>is_coordinator
    is_coordinator: False
    
    rincon_000e58c373cc01400 =>> play_snippet
    Url (http://.. or Sonos url)   []:x-file-cifs://N5550/MP3/Tuergong.mp3  
    snippet volume (-1-100)   [-1]:15
    fade in (0|1)              [0]:
    group command (0|1)        [0]:1
    Und es wird nichts abgespielt.

    Nur zur Info schon mal.

    Ein einzelnes Sonos-Gerät geht.
    Code:
    rincon_000e5876cef201400 =>> 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]:
    group command (0|1) [0]:
    
    rincon_000e5876cef201400 =>>
    Zuletzt geändert von RoyalTS; 14.12.2016, 18:39.

    Einen Kommentar schreiben:


  • pfischi
    antwortet
    Ok , stimmt. Also muss ich wohl oder über da mal ran

    Einen Kommentar schreiben:


  • RoyalTS
    antwortet
    Ich teste heute Abend daheim nochmal. Aber ich hatte eigentlich group_command mit 0 und 1 getestet.
    Und bezieht sich das laut der Doku nicht nur auf die Lautstärke?

    Einen Kommentar schreiben:


  • pfischi
    antwortet
    Nein, sonos-cmd steuert die gleichen Kommandos an. Wichtig ist nur das Flag group_command, das muss auf 1. Wenns dann immer noch nicht funktioniert, ist es ein Bug

    Einen Kommentar schreiben:


  • RoyalTS
    antwortet
    Also ein einzelner Lautsprecher ohne jegliche Gruppen geht ohne Probleme.
    Und das ich es mit sonos_cmd teste sollte ja nicht das Problem sein, oder?

    Thorsten

    Einen Kommentar schreiben:


  • pfischi
    antwortet
    Ich gehe mal in mich und schau mir nochmal das play_snippet an.

    Stefan

    Einen Kommentar schreiben:


  • RoyalTS
    antwortet
    Hi Stefan,

    klingt toll. Mit
    Code:
    save_state
    dürfte dann recht viel abgedeckt sein

    Aber aktuell hab ich wirklich Probleme mit play_snippet. Ich hab am Wochenende einmal direkt mit
    Code:
    sonos_cmd
    getestet gehabt. Schön Update, zu einem Sonos innerhalb einer Gruppe gewechselt und dann eine MP3 im Sonsos-System ("x-sonos-cifs...") abgespielt. Am Master ging es (manchmal hatte ich den Eindruck, dass es auch da nicht immer will), aber an den Slaves auf jeden Fall nicht. Aber ich teste es heute Abend nochmal. Auch mit einer Logik in SH.py.

    Aber braucht man wirklich eine Datenbank/Textdatei zum Speichern? Könnte doch über eine neue Funktion so laufen.
    Z.B. anstatt play_snippet ein play_alert([Speaker],Link_zur_MP3) und die Werte in Variablen zwischenspeichern.
    Code:
    play_alert([rincon_000e5..,rincon_000e5...,rincon_000e5...], "x-file-cifs://N5550/MP3/tuerklingel.mp3")
    Wäre ne schöne Funktion. Könnte dann auch eine Taste in der Küche sein, die zum Essen ruft

    Danke und Grüße
    Thorsten

    Einen Kommentar schreiben:


  • pfischi
    antwortet
    Hi, ich bin gerade in der SBahn, deswegen nur ein paar kleine Anmerkungen, morgen kann ich ausführlicher schreiben und eventuell auch testen.

    Zum play_snippet Kommando:

    Normalerweise muss du dich nicht drum kümmern, welchen Lautsprecher du in der Gruppe mit dem play_snippet ansprichst, es wird immer über den Coordinator ausgeführt (für dich transparent). Um das Snippet auf allen Lautsprechern in der Gruppe Abspielen zu können, muss das Kindelement
    Code:
    group_command
    vom play_snippet-Item auf 1 bzw. True gesetzt sein, dann wird auf allen Lautsprechern der Gruppe das Snippet abgespielt.

    Im Moment wird nur der Status vor dem play_snippet gespeichert und danach wieder geladen. Vor oder nachdem Auftrennen einer Gruppe ist das noch nicht implementiert. Das schaue ich mir aber an, weil das eventuell relativ einfach zu implementieren ist.

    In dem Fall würde ich dem
    Code:
    join
    und
    Code:
    partymode
    Item noch ein Kinditem
    Code:
    save_state
    mitgeben, wodurch bei True vor einem Umgruppieren der Broker den Status speichert und nachher wieder restored. Mal schauen ob ich wirklich alles an Metadaten speichern und wiederherstellen kann.
    Deckt das deinen Fall soweit ab?

    Theoretisch kann man schon jetzt auch alles über Logiken in sh.py machen. Vor einem join speichert man alle UIDs einer Gruppe und holt sich alle relevanten Daten eines Lautsprechers dieser Gruppe(hier wieder: egal ob Coordinator oder nicht). Das wären hier z.B sonos_playlists, playlist_position, volume etc, also alles was man wiederherstellen will. Das muss bis zum nächste Unjoin nach einem play_snippet persistent gespeichert werden (Datenbank, Textdatei). Nach dem Abspielen des Snipptes wieder alle Speaker einer Gruppe joinen und einem der Lautsprecher wieder alle zuvor gespeicherten Werte senden. Eventuell kann man diesen Ansatz auch verallgemeinert in eine Logik / Funktion des Sonos Plugins packen. Feedback erwünscht

    additional_zone_members:

    Ist eigentlich nur eine reine Info. Mit den gelieferten Sonos-UIDs könnte man z.B. die oben beschriebene Logiken innerhalb von SH.py basteln.

    Danke für die Anregung und Gruss,

    Stefan

    Einen Kommentar schreiben:


  • RoyalTS
    antwortet
    Hallo Stefan,

    mal wieder mit meinem alten Problem im Haus die Sonos klingeln zu lassen.

    Zustand:
    Meine Sonos-Stationen sind irgendwie einzeln oder zu Gruppen zusammengewürfelt, keine Ahnung wie.
    Jetzt möchte ich beim Klingeln an der Haustür (Wird vom Mobotix ein GA auf 1 gesetzt)
    a) von 7-19 Uhr auf allen (also Partymodus) mit play_snippet eine MP3 abspielen lassen,
    b) von 19-7 Uhr nur bei bestimmten im "Elternbereich".

    Nun meine Hauptfrage:
    Wie kann ich die aktuellen Gruppierungen inkl. Playlisten, Trackpositionen, etc. abspeichern, das Snippet abspielen und wieder in den Ursprungszustand versetzen und weiterspielen lassen.
    Nur play_snippet geht ja aufgrund unbekannter Gruppenkonstellationen nicht.

    Bei Gruppen hab ich gemerkt, dass play_snippet nur über das Sonos-Gerät funktioniert, dass "is_coordinator == true" ist. Ok, beim neu zusammenfügen ist das ja klar.
    Bei 2-3 Sonos vielleicht noch einfach, aber wir haben aktuell 12 Sonos im Einsatz.


    Weitere Frage zum Finden einer Lösung:
    Wie nutze ich "additional_zone_members"? Zum Speichern der einzelnen Gruppen muss ich ja für jedes Sonos die zugehörige "Gruppe" inkl. Koordinator (is_coordinator) herausfinden. Damit könnte ich ja über "additional_zone_members" an die Gruppenmitglieder kommen, oder? Was gibt mit der Befehl denn zurück? Hab in der Doku dazu leider nichts gefunden.

    So ein "Klingelmodus" wäre total super. Würde ich dann auch gerne mit dem Telefon koppeln. Da soll dann z.B. einfach nur überall die Lautstärke reduziert werden bzw. über den Lautsprecher via play_tts der Anrufer durchgegeben werden.

    Machbar sollte es ja irgendwie sein.

    Danke für jeden Tip mit dem ich weiter basteln kann.

    Grüße
    Thorsten

    Einen Kommentar schreiben:


  • RoyalTS
    antwortet
    Super, danke Dir

    Einen Kommentar schreiben:


  • pfischi
    antwortet
    Ich wollte dir gerade schreiben. Aufgrund deines Beitrages habe ich nochmal die Setuproutine geändert. Der Broker wird sich je nach Distro nun entweder als systemd oder init.d-Service mit den passenden Scripten installieren. Ich denke spätestens Anfang nächste Woche habe ich ein Release.

    Gruss,

    Stefan

    Einen Kommentar schreiben:


  • RoyalTS
    antwortet
    Okok... nächstes mal erst alle Kids ins Bett schicken und in Ruhe drüber nachdenken

    Hab einfach meine init.d-Skripte angepasst.

    Grüße
    Thorsten

    Einen Kommentar schreiben:


  • RoyalTS
    antwortet
    Hi Stefan,

    irgendwie wollte bzw. wollte apt-get... so nicht, gab kein python3-pip Paket, daher hab ich alles manuell compiliert. Passt nun.
    Nur zu "systemctl" hab ich ne Frage: Bei mir gibts das nicht (altes sh.py Image). Wie könnte ich den Auto-Start nun hinbekommen?

    Danke!
    Thorsten

    Einen Kommentar schreiben:


  • pfischi
    antwortet
    Zitat von RoyalTS Beitrag anzeigen
    Hmm, Stefan...

    ich steh grad auf m Schlauch. Wie bekomm ich "pip3 install..." zum Laufen?
    Code:
    sudo: pip3: command not found
    in ner ENV-Umgebung hab ich es... hab Python3.5.2 manuell nachinstalliert.

    Danke und Grüße
    Thorsten
    Hast du es schon in der systemweiten Umgebung nstalliert?

    Code:
    sudo apt-get install python3-pip
    Gruss,

    Stefan
    Zuletzt geändert von pfischi; 07.12.2016, 06:40.

    Einen Kommentar schreiben:


  • RoyalTS
    antwortet
    Hab ne Lösung gefunden

    Einen Kommentar schreiben:

Lädt...
X