(gelöst)Sonos (Play1) Zusammenfassung ?!

Begonnen von DieterL, 20 März 2015, 09:24:36

Vorheriges Thema - Nächstes Thema

HAJÜFHEM

Guten Abend,

ich hoffe, dass ich an dieser Stelle richtig bin?!

Beschäftige mich seit einigen Wochen mit dem Thema Smarthome und bin im Zuge meiner Informationssammlung zu FHEM gekommen. Habe mir hierzu einen Raspberry Pi aufgebaut und steuere in der Zwischenzeit auch schon die eine oder andere Lichtquelle oder Haushaltsgerät.

Im Zuge meines des Ausbaus bin ich auch über das Thema "FHEM und Sonos" gestolpert und konnte in der Zwischenzeit auch meine vorhandenen Sonos-Komponenten (Connect und Play1) erfolgreich in FHEM einbinden.

Versuche seit einigen Abenden ergebnislos die obige Ausgangssituation bei mir zu implementieren. Leider ohne Erfolg. Habe mich hierzu an den Beispielen im Wiki orientiert und versuche dies entsprechend bei mir abzubilden. Habe hierzu auch eine Playlist mit genau "R. Spielliste" angelegt!

define Sonos_WZ_CONNECT_Appeared_Notify notify Sonos_WZ_CONNECT:presence:.appeared {
   fhem "set Sonos_WZ_CONNECT LoadPlaylist R.%%20Spielliste" ;
   fhem "set Sonos_WZ_CONNECT Volume 15" ;
   fhem "set Sonos_WZ_CONNECT Track random" ;
   fhem "set Sonos_WZ_CONNECT Play"
}

Erhalte jedoch die unterschiedlichsten Fehlermeldungen

Unknown command fhem, try help.
Unknown command fhem, try help.
Unknown command fhem, try help.

oder

Sonos_WZ_CONNECT_Appeared_Notify already defined, delete it first
(Konnte ich der Konfig keine Zeile finden. Nach Neustart vom FHEM war die Fehletmeldung auch nicht mehr vorhanden)

Habe versucht die Konfig. über die Befehlszeile wie auch direkt in fhem.cfg einzufügen. Muss jedoch gestehen, dass ich weit entfernt bin etwas von Programmierung zu verstehen.

Würde mich freuen und mir wünschen, dass ich hier die notwendige Unterstützung bekommen kann, bevor der Frust allzu groß wird.


Vorab besten Dank!!

Jürgen





Reinerlein

Hallo Jürgen,

das sieht mir danach aus, als müsstest du unbedingt das Einsteigerdokument durchgehen. Das sind Fhem-Basic-Fragen...

Leider können wir dir hier auch nicht so richtig helfen, sondern nur einiges vermuten.
Z.B. wenn der Beispielcode so in der Konfigurationsdatei eingegeben wurde, dann fehlen die maskierenden \-Zeichen. Ausserdem müssen die Semikola gedoppelt (sprich maskiert) werden.
Am einfachsten ist die Eingabe über die Fhemweb-Oberfläche. Dazu brauchst du nur erstmal das Notify ohne Inhalt anzulegen:

define Sonos_WZ_CONNECT_Appeared_Notify notify Sonos_WZ_CONNECT:presence:.appeared {}

Dann hast du über die Oberfläche einen Button zum Editieren des Befehlsblocks.
Dort kannst du dann den Inhalt zwischen die geschweiften Klammern reinkopieren:

   fhem "set Sonos_WZ_CONNECT LoadPlaylist R.%%20Spielliste" ;
   fhem "set Sonos_WZ_CONNECT Volume 15" ;
   fhem "set Sonos_WZ_CONNECT Track random" ;
   fhem "set Sonos_WZ_CONNECT Play"

Dabei werden Maskierungen automatisch vom Fhemweb gesetzt...

Ob das dann aber so funktioniert, wie du das möchtest, müssen wir dann mal schauen...

Grüße
Reiner

HAJÜFHEM

#17
Guten Abend Reiner,

nachdem mich die Familie den heutigen Vormittag in Beschlag hatte, konnte ich mich am Nachmittag dem Thema zuwenden und bin jetzt Dank Deiner Unterstützung meinem Ziel ein ganzes Stück näher. Der Ablauf hat wie von Dir beschrieben dann auch auf Anhieb funktioniert.  ;)

Ich habe mich dann am nächsten Step versucht und wollte die 2 Player zu einer Gruppe verbinden und hierzu folgenden Befehl ergänzend eingefügt.

fhem "set Sonos Groups [Sonos_WZ_CONNECT], [Sonos_WZ_PLAY_1]" ;

Wobei ich gem. Deinem Wiki alle Schreibweisen ausprobiert habe.
[Sonos_WZ_CONNECT, Sonos_WZ_PLAY_1]
[Sonos_WZ_CONNECT], [Sonos_WZ_PLAY_1]
[Sonos_WZ_PLAY_1, Sonos_WZ_CONNECT]

Auch habe ich testweise "Sonos_PLAY_1" in die funktionierende Konfig. eingefügt, um zu sehen ob PLAY_1 auch angesprochen wird. Funktion wie gewünscht vorhanden! Auch ist die Gruppenschaltung über die Sonos-App ohne Probleme möglich!

Nur die Gruppierung über FHEM will nicht klappen.

Als weiteren Schritt sollte statt der Playliste ein Radiosender zum Start kommen. Gem. Deinem Hinweis in einem anderen Beitrag habe ich die Angaben übernommen. Mit dem Beispielsender der dort genannt wurde hat dies auch funktioniert. Nicht geschafft habe ich den Sender SWR1 Baden-Württemberg zu aktvieren. Wobei gem. dem Hinweis das Leerzeichen durch "%20" ersetzt habe.

"SWR1%20Baden-Württemberg" auch getestet "SWR1%%20Baden-Württemberg"

Sender befindet sich im gleichen Farvoritenfolder und kann über die Sonos-App auch aufgerufen werden.

Gesamt sieht die Konfiguration aktuell so aus:

Sonos_WZ_CONNECT:presence:.appeared {   fhem "set Sonos_WZ_CONNECT StartFavourite /(?i)SWR1%20Baden-Württemberg/" ;
   fhem "set Sonos_WZ_CONNECT Volume 20" ;
   fhem "set Sonos Groups [Sonos_WZ_CONNECT], [Sonos_WZ_PLAY_1]" ;
   fhem "set Sonos_WZ_PLAY_1 Volume 25";
   fhem "set Sonos_WZ_CONNECT Play"

}

Wäre prima, wenn Du mir hierbei noch ein wenig unter die Arme greifen könntest. Vorab besten Dank und einen schönen Samstagabend!!

Gruß
Jürgen

Reinerlein

Hallo Jürgen,

ok, ich versuche mich mal an den einzelnen Punkten :)

- Favoriten: es gibt einen Getter für die Favoriten. Damit kannst du prüfen, ob dein Radiosender enthalten ist, und somit aufrufbar ist.
- Gruppenbildung: Es gibt am Fhem-Device einen Setter "AddMember" mit einer Auswahlliste der verfügbaren Player. Versuch es erstmal damit. Passend dazu gibt es natürlich auch ein "RemoveMember".
- Gruppenbildung die zweite: Du kannst am Sonos-Device (auch über Fhemweb) einen Getter "Groups" aufrufen. Den kannst du ja mal aufrufen, wenn die Gruppen gebildet sind, dann siehst du, was du beim Setter "Groups" angeben kannst.
- Gruppenlautstärke: Wenn du Gruppen gebildet hast, musst du für eine Gesamtanpassung der Lautstärke einen anderen Setter-Befehl nehmen: "GroupVolume"
- Maskierung von Leerzeichen in einem Notify: In einem Notify hat das Prozentzeichen u.U. eine andere Bedeutung, sodass es maskiert werden muss. Bei anderen Fhem-Befehlen ist das u.U. nicht der Fall. Deshalb mein Hinweis auf das Einsteigerdokument. Es gibt hier also ein paar Fhem Eigenheiten zu kennen...

Am Besten machst du solche Dinge erstmal direkt an dem Fhem-Device über die Fhemweb-Oberfläche ohne Programmierung. Dann siehst du erstmal, ob und wie es prinzipiell geht.
Außerdem empfehle ich eine eingehende Durcharbeitung des Wiki zum Sonos-Modul zu diesen Befehlen. Dort gibt es einige Hinweise, die in der Commandref nicht enthalten sind.

Grüße
Reiner

HAJÜFHEM

Hallo Reiner,

ich strauchel mit der Bezeichnung Getter. Was ist damit gemeint und wo finde ich diesen für die Favoriten?

Bei den Gruppen komme ich nicht wirklich weiter. Habe jetzt eine Gruppe 1. Hab aber keine Ahnung wie ich diese erzeugt habe.

Bitte um weitere Hilfestellung. Danke!!

Gruß
Jürgen

HAJÜFHEM

Hallo Reiner,

Pkt. 1 mit dem Aufruf des Senders ist gelöst.

Bei der Gruppenbildung bin leider nicht weitergekommen. Wäre prima, wenn Du mir nochmals Hilfestellung geben kannst.

Wünschen noch eine angenehme Nacht!

Jürgen

Reinerlein

Hallo Jürgen,

es gibt bei Fhem immer einen set- und einen get-Aufruf. Mit set wird im allgemeinen eine Aktion beim Fhem-Device angestossen, die etwas verändert (z.B. Play für das Starten der Wiedergabe usw.) und mit get wird im allgemeinen eine Aktion zum Holen von Informationen angestossen (bzw. direkt zurückgegeben, je nach Fhem-Device)... Siehe auch Einsteigerdoku...

Das bedeutet: ich meine mit Getter einen get-Aufruf am entsprechenden Device.
z.B.:

get Sonos Groups
im Eingabefenster von Fhem eingegeben, liefert dir die aktuelle Gruppenkonstellation.

Mit setter meine ich einen enstsprechenden set-Aufruf an einem Device. z.B.:

set Sonos_Wohnzimmer AddMember Sonos_Schlafzimmer
Fügt der aktuellen Wiedergabe vom Wohnzimmer den Schlafzimmer-Player hinzu (die beiden Player bilden danach also eine Gruppe, wobei das Wohnzimmer der Master ist, sprich derjenige, der bestimmt, was die Gruppe abspielen wird).

Grüße
Reiner

HAJÜFHEM

Hallo Reiner,

bin Deine Hinweise Step für Step durchgegangen, was einiges an Licht ins Dunkle gebracht hat!

Mit dem Set-Befehl "set Sonos_WZ_CONNECT AddMember Sonos_WZ_PLAY_1" wird die Gruppe erstellt. Entsprechend aufgelöst mit
set Sonos_WZ_CONNECT RemoveMember Sonos_WZ_PLAY_1. Ist alles wiederholbar!

Entsprechend erhalte ich über Get die Rückinfo für Gruppe erstellt "[Sonos_WZ_CONNECT, Sonos_WZ_PLAY_1]" für aufgehoben [Sonos_WZ_CONNECT], [Sonos_WZ_PLAY_1].

Nachdem die Steuerung über den Set-Befehl ohne Probleme funktioniert, bin ich davon ausgegangen, dass ich jetzt meinen Sript entsprechend um die nun bekannten Angaben ergänzen kann. Leider erfolgt jedoch keine Auswertung der gesetzten Bedingungen.

Getestet mit:
Sonos_WZ_CONNECT:presence:.appeared {   fhem "set Sonos_WZ_CONNECT StartFavourite SWR1%%20Baden-Württemberg" ;
   fhem "set Sonos_WZ_CONNECT Play" ;
   fhem "set Sonos_WZ_CONNECT AddMember Sonos_WZ_PLAY_1" ;

}


Habe ich hier noch etwas Entscheidenens übersehen?

Danke+Gruß
Jürgen









Reinerlein

Hallo Jürgen,

wird das Event gar nicht ausgelöst, oder kommt es zu einem Fehler bei der Ausführung?
Poste hier mal bitte ein List des Notifies:

list NAMEDESNOTIFIES


Wenn das Event gar nicht ausgelöst wird, dann poste bitte auch ein List deines Sonos-Devices...

Grüße
Reiner

HAJÜFHEM

Hallo Reiner,

und wieder etwas dazu gelernt. Nachdem die Auswertungen so groß sind, habe ich mich nicht getraut dies hier einfach zu posten. Habe deshalb die Ergebnis in Dateiform angehängt.

Ich hoffe Du kannst etwas herausfinden.

Nochmals vielen Dank für Deine Unterstützung!!

Gruß
Jürgen

Reinerlein

Hi Jürgen,

also auf Anhieb kann ich nur einen Fehler sehen: Du hast das Wort "set" bei der dritten Anweisung vergessen.

Gibt es denn sonst noch Fehlermeldungen?

Grüße
Reiner

HAJÜFHEM

Hallo Reiner,

nachdem der Befehl nicht funktioniert hat, habe ich diesen wieder aus der Konfig entfernt und der Fehler ist mir vermutlich vorhin beim erneuten hineinkopieren zum Erstellen des Listings passiert.

Habe den gesamten Ablauf jetzt nochmals durchgeführt.

Die entsprechende Datei incl. Logfile anbei.

Ich kann keine Fehler erkennen. Sobald ich den Befehl "set Sonos_WZ_CONNECT AddMember Sonos_WZ_PLAY_1" über die Befehlszeile der WEB-Oberfläche ausführe stellt sich der gewünschte Zustand ein.

Ich hoffe Du kannst doch noch einen Ansatzpunkt finden.

Danke+Gruß
Jürgen




HAJÜFHEM

Guten Abend Reiner,

sofern Dir nicht doch noch eine Lösung für mein Problem eingefällt,  bzw. anhand der Daten erkennbar ist hätte ich folgende Überlegung.

Die Eingabe "set Sonos_WZ_CONNECT AddMember Sonos_WZ_PLAY_1"direkt in der FHEM Oberfläche funktioniert ohne Probleme. Ist es denkbar, den  Befehl "set Sonos_WZ_CONNECT AddMember Sonos_WZ_PLAY_1"zeitverzögert sep. im System anzulegen und von System ausführen zu lassen.

Wenn JA, hättest Du mir einen Vorschlag wie die Umsetzung am Besten realisierbar ist?! Alternative wäre die kpl. Anlage von Sonos aus dem System zu entfernen und kpl. neu anzulegen mit der Hoffnung, dass dann alles wie gewünscht funktioniert!

Bin gespannt, was Du dazu meinst.

Gruß
Jürgen

Puschel74

ZitatIst es denkbar, den  Befehl "set Sonos_WZ_CONNECT AddMember Sonos_WZ_PLAY_1"zeitverzögert sep. im System anzulegen und von System ausführen zu lassen.
at kennst du?
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

HAJÜFHEM

Guten Abend,

die Funktion "at" habe ich in direkter Verbindung mit einer schaltbaren Lichtquelle eingesetzt. Ich kämpfe an dieser dieser Stelle als Fastneuling mit der Abhängigkeit und der Verknüpfung vom vorhergehenden Einschaltprozess des Sonos-Connect, die ja erfüllt sein muss um dann einen 2. Sonos Play per "set Sonos_WZ_CONNECT AddMember Sonos_WZ_PLAY_1"  einzubinden (if > then).

Gruß
Jürgen