Sonos steuern

Begonnen von Will, 05 Januar 2013, 15:51:12

Vorheriges Thema - Nächstes Thema

m311331

Hi reinerlein,

habe gerade zwei neue Sonos Player eingebunden
und mir fällt auf das die Ansicht der Player (Steuerung&Anzeige) der neuen jetzt anders ist als beiden "alten"
da sind jetzt buttons  :o

wie bekomme ich das jetzt bei den alten auch hin ?



mfg. m311331
   

Christoph

Einfach die alten Player löschen, und dann werden sie automatisch wieder neu angelegt...

Reinerlein

Hi,

@m311331: Wenn du noch keine großartigen eigenen Einstellungen an den Playern gemacht hast, kannst du sie einfach aus deiner Config entfernen, und einen Neustart machen. Dann werden diese ja auch angelegt.

Alternativ brauchst du nur jeweils ein Remote-Control Device basteln (als Vorlage kannst du ja die neu erzeugten Verwenden), und je einen passenden Weblink dazu, den du in die richtige Gruppe und den richtigen Raum zuweisen musst. Das musst du natürlich für jeden Player machen...

@Mandel: Die Pause zwischen Sprachausgabe und Wiederaufnahme der Wiedergabe ist leider technisch bedingt, und hängt mit der Geschwindigkeit deine Fhem-Maschine zusammen, und wie schnell dein Netz ist.

Zum Thema mit den Playern, die da disappearen, kannst du (zumindest mal testweise) den pingType auf "icmp" umstellen. Leider benötigt Fhem dafür dann root-Rechte... Ich habe mit dieser Variante aber deutlich bessere Ergebnisse...

Die Sonos-Player können leider nicht die Google-Übersetzungsmaschine direkt als Wiedergabequelle verwenden. Das muss immer zwischengespeichert werden.
Wenn du viele gleiche Wiedergaben haben wirst (Standardansagen z.B.) kannst du auch das Attribut "targetSpeakFileHashCache" setzen. Dann wird die Textsprachdatei nur einmal erzeugt, und immer wiederverwendet. Dann geht auch das Anstarten der Durchsage schneller, da Google nicht mehr dazwischenhängt (bzw. nur beim ersten Mal).

Was Sonos alles wiedergeben kann, kann ich dir tatsächlich gar nicht sagen... ich habe hier nur die Standard-MP3-Dateien :)

Zu der Mitteilung im Nachtrag:
Du brauchst doch einfach nur zwischen "DebianMail" und der Log-Ausgabe noch einen fhem-Befehl einstreuen:

fhem('set Sonos_Bad_EG,Sonos_Kueche,Sonos_Schlafzimmer PlayURITemp \\192.168.XXX.XXX\SonosSpeak\front%%20door%%20open.mp3 30');;\
(übrigens hattest du in der Notify-Definition bei der Auflistung der Devices ein Leerzeichen zuviel)
Die Maskierung der %-Zeichen braucht man glaube ich nur im Notify direkt. Beim Watchdog vermutlich nicht...

Grüße
Reinerlein

MandelHL

Danke Reinerlein.

Das Attribut "targetSpeakFileHashCache" anstelle von "attr Sonos targetSpeakFileTimestamp 1"?
Und dann lege ich mir ein paar mp3-Standardansagen in dem Verzeichnis bereit?

Wir sind kurz davor, gleich läuft es wie gewünscht :-)

Viele Grüße
Mandel

Reinerlein

Hi Mandel,

genau, anstatt des Timestamp. Dann brauchst du dir allerdings keine Gedanken mehr um die Sprachdateien machen, sondern du machst immer nur Speak-Durchsagen. Den Rest erledigt das Modul dann...
Du brauchst dann keine eigenen mehr ablegen (es sei denn du möchtest z.B. deine eigene Stimme als Durchsage haben :) )

Grüße
Reinerlein

MandelHL

#1385
Ok, danke. Wobei mir der Unterschied zwischen  "targetSpeakFileHashCache" und "targetSpeakFileTimestamp 1" nicht so ganz klar ist. Ich kann auch in beiden Fällen manuelle Eingaben vorgeben, die im Verzeichnis gespeichert werden.

Wenn ich auf "icmp" umstelle, wie stelle ich dann fhem auf "root"-Rechte um? Muss ich dann die Rechte aller Ordner einzeln ändern?

Danke und viele Grüße
Mandel

m311331

Hi

@Christoph danke

@reinerlein danke dir auch



mfg. m311331

MandelHL

#1387
Hallo Reinerlein,

ich brauche wohl noch einmal Deine Unterstützung.

Das "Disappear"-Problem hält sich im Moment in Grenzen. Zur Zeit läuft alles rund.

Allerdings werden meine mp3-Dateien nicht gespielt. Stattdessen wird die Musik, die zur Zeit läuft nur auf die per Befehl eingetragene Lautstärke angehoben. Andere Lautsprecher, die nicht liefen haben ihren aktuellen Song oder Radiosender eingeschaltet und auch auf die entsprechende Lautstärke angehoben.
Die mp3-Datei in dem mnt/SonosSpeak-Verzeichnis blieb unberücksichtigt.

Hier noch einmal meine Sonos.cfg:
define Sonos SONOS localhost:4711 30 1 5
attr Sonos icon icoSONOSPLAYER_icon-ZP90.png
attr Sonos targetSpeakDir /mnt/SonosSpeak
attr Sonos targetSpeakFileHashCache
attr Sonos targetSpeakURL \\192.168.XXX.XXX\SonosSpeak


Hier noch einmal die Badezimmerfenster.cfg:
#############################################################
#
# Sensor Badezimmerfenster EG
#
#############################################################
#
# Flag zum Behalten der Information das nach 30 Minuten eine Email zur Meldung des offene Fensters herausgegangen ist
# Wird nach diesen 30 Minuten das Fenster geschlossen, wird eine weitere Email versendet
# Flag_email_gesendet = 00 bedeutet: keine Email nach 30 Minuten offen gesendet
# Flag_email_gesendet = FF bedeutet: eine Email nach 30 Minuten offen gesendet
#
define Flag_email_gesendet dummy
#
# Festellung, dass das Fenster 30 Minuten offen war. Eine Email wird versendet. Flag Flag_email_gesendet wird gesetzt.
#
define watchdog_Badezimmerfensterkontakt watchdog Sensor_Badezimmerfenster_EG:open 00:30:00 Sensor_Badezimmerfenster_EG:closed {\
      DebianMail('XXXXXXXXX@gmail.com','Bitte Badezimmerfenster schliessen!','Badezimmerfenster steht seit mehr als 30 Minuten offen. Bitte schliessen!');;\
  fhem('set Sonos_Bad_EG,Sonos_Kueche,Sonos_Schlafzimmer PlayURITemp \\192.168.XXX.XXX\SonosSpeak\Badezimmerfenster_schliessen.mp3 55');;\
      Log 1, "Badezimmerfenster.cfg: Badezimmerfenster zu lange geöffnet";;\
      fhem('setstate watchdog_Badezimmerfensterkontakt defined');;\
      fhem('set Flag_email_gesendet FF');;\
}
attr watchdog_Badezimmerfensterkontakt regexp1WontReactivate 1
#
#
# Festellung, dass das Fenster, wenn es 30 Minuten offen war, danach geschlossen wurde. Es wird dann eine Email versandt und das Flag Flag_email_gesendet zurück gesetzt
#
define Badezimmerfenster_geschlossen_nach_30Min_offen notify Sensor_Badezimmerfenster_EG:closed  {\
    if (Value("Flag_email_gesendet") eq "FF")  {\
          DebianMail('XXXXXXXXX@@gmail.com','Badezimmerfenster wurde geschlossen','Badezimmerfenster wurde nach mehr als 30 Minuten geschlossen.');;\
  fhem('set Sonos_Bad_EG,Sonos_Kueche,Sonos_Schlafzimmer PlayURITemp \\192.168.XXX.XXX\SonosSpeak\Badezimmerfenster_geschlossen.mp3 55');;\
          Log 1, "Badezimmerfenster.cfg: Badezimmerfenster wurde geschlossen";;\
          fhem('set Flag_email_gesendet 00');;\
          }\
}


Auf den Befehl, dass das Badezimmerfenster wieder geschlossen wurde, reagieren die Lautsprecher gar nicht.

Vielen Dank für Deine Hilfe.

Viele Grüße und schönen Sonntag
Mandel

rapster

Hi MandelHL,

lager doch mal deine Funktionen, besonders wenn sie so groß sind, in deien myUtils aus.
Ich denke du musst hier sonst noch die ganzen \ in der URI maskieren, allgemein kannst du dadurch so manchem Fehler vermeiden.

Gruß

Reinerlein

Hi Mandel,

der Unterschied zwischen "targetSpeakFileHashCache 1" (hier die "1" nicht vergessen) und "targetSpeakFileTimestamp 1" ist folgender:
Wenn der Dateiname für die durch Google erzeugte Sprachdatei festgelegt werden soll, wird bei HashCache ein Hashwert des Textes angehangen, und bei Timestamp einfach der aktuelle Zeitpunkt vorangestellt.

Wenn man *nur* den Timestamp setzt, sind die Dateien im Ordner chronologisch sortierbar, und unterscheiden sich bei jedem Aufruf. Das ist manchmal wichtig, da Sonos die Dateien beim Abspielen indiziert, und beim nächsten Mal mit demselben Dateinamen wahrscheinlich die falschen Metainformationen anzeigen würde.
Das ist also hauptsächlich ein Workaround für Sonos-Handlungen.

Wenn man *nur* den HashCache setzt, wird an den Dateinamen ein SHA1-Hash des Textes angehangen. Dabei wird geschaut, ob es einen solchen Dateinamen bereits gibt, und bei existenz Google nicht mehr belästigt.
Wenn du das gesetzt hast, erzeugt ein "Speak 30 de Dies ist ein Test" beim ersten mal eine Request an Google, die Datei wird abgelegt und wird von Sonos abgespielt.
Wenn ich nun irgendwann ein weiteres mal "Speak 30 de Dies ist ein Test" aufrufe, wird festgestellt, dass es bereits eine Datei gibt, die denselben Hashwert hat (also mit hoher Wahrscheinlichkeit denselben Text), und wird wiederverwendet, ohne Google zu belästigen oder eine neue Datei anzulegen.
Auch das Sonos diese vielleicht indiziert ist dann kein Problem, da sie ja für denselben Text steht.

Beides gleichzeitig zu setzen, ist nicht sinnvoll!

Auf diese Weise braucht man erstmal keine eigenen Sprachdateien hinterlegen... Alles ist da, und kann so verwendet werden...

Root-Rechte für Sonos bekommst du, wenn es als dieser Benutzer gestartet wird. An den Rechten der Ordner brauchst du dabei erstmal nichts anpassen...
Unter Umständen musst du den Benutzer "fhem" in deiner Datei "/etc/passwd" ausmarkieren, da Fhem beim Start prüft, ob es diesen gibt, und in dessen Kontext umschaltet...

Zu den Skripten kann ich dir nur denselben Tipp geben wie rapster.
Alternativ mit der Eingabe des PlayURITemp für einen Player direkt im Set-Eingabefeld von Fhem anfangen, und schauen was passiert, wenn du immer mehr ausgeben läßt, und/oder anderes abspielen läßt...
Sonst nochmal Rechte prüfen: Kannst du die Datei mit deinem Windows/Mac-Rechner direkt von der Freigabe aus abspielen. Darauf achten, dass du von deinem Rechner aus kein Kennwort für diese Verbindung angegeben hast. Sonos muss da ohne Kennwort draufkönnen...
Hat die Datei das richtige Dateiformat: Kopier dir eine funktionerende Musikdatei aus deiner Sammlung dort hin, und lass diese abspielen...

Grüße
Reinerlein

MandelHL

Danke Reinerlein für Deine umfangreichen Ausführungen, die mir sehr geholfen haben.

Vielen Dank auch Dir, rapster.

Eventuell habe ich den Fehler der nicht ausgegebenen Sprachdatei selbst gefunden und werde das ausprobieren.
Ich könnte mir vorstellen, dass ich
Zitatfhem('set Sonos_Bad_EG,Sonos_Kueche,Sonos_Schlafzimmer PlayURITemp \\192.168.XXX.XXX\SonosSpeak\Badezimmerfenster_schliessen.mp3 55');;\

ändern muss und noch das Verzeichnis "mnt" angeben muss, so dass die Zeile wie folgt auszusehen hat:
Zitatfhem('set Sonos_Bad_EG,Sonos_Kueche,Sonos_Schlafzimmer PlayURITemp \\192.168.XXX.XXX\mnt\SonosSpeak\Badezimmerfenster_schliessen.mp3 55');;\

Mal sehen, ob es damit klappt.

Danke noch einmal und viele Grüße
Mandel

Reinerlein

Hi Mandel,

das wird nichts ändern, da das Sonos-System von "aussen" zugreift, und nichts mit dem Pfad auf deinem Pi anfangen kann...

Grüße
Reinerlein

aherby

Hallo Reinerlein,

frohes neues Jahr 2015 noch und danke für deine ständige Weiterentwicklung an diesem Modul.
Sicher liegt es wieder an meinem FHEM-Server oder Instanz aber nach den letzten Updates in diesem Jahr
stürzt mein Fhem immer ab sobald z.B. der folgende Befehl ausgeführt wird:
"set Sonos_Wechselraum PlayURI http://streams.planetradio.de/planetradio/aac/hqlivestream.m3u 13"
Hatte jetzt über die Feiertage frei und da wurde die morgendliche Wiedergabe um 6:15 Uhr deaktiviert.
Da seit Montag wieder so ein komisches Ding names Wecker klingelt hätte ich gern wieder die automatische Wiedergabe
aber scheinbar verträgt sich da was nicht.

Hat sich ggf was geändert?

Danke

Alex
FHEM 6.0 auf Raspberry Pi 4b 4GB, RaspberryMatic auf Raspi3b mit Charly-Funkmodul, ZigeeBridge mt deCONZ... . Homematic mittels HMCCU, Sonos 3xS1, 1xS6 (Play5 in der 2te Generation), 1xS9 (Soundbar), 1x SonosSub
1-Wire® to I2C host interface with ESD mit DS18B/S20.

Reinerlein

Hi Alex,

da ist beim Anpassen von PlayURI für die Playbar ein Fehler reingerutscht. Du bist jetzt der erste, der das verwendet und bemerkt :)

Ich habe da was korrigiert und eingecheckt. Also ab Morgen im update oder jetzt im SVN...
Kannst du das bitte testen?

Sorry dafür.

Grüße
Reinerlein

aherby

Guten Morgen Reinerlein,

kein Ding. Habe mich nur gewundert warum ich morgens nichts mehr höre, dachte schon ich vertrag das Arbeiten nicht mehr. :-)
Ist doch kein Ding, Fehler passieren, hab mich nur gewundert über das Verhalten oder nicht Verhalten von den Playern.

Naja hast du mir vor einiger Zeit glaube mich mal empfohlen dass so zu machen. Daher verwende ich den Befehl (mehrfach).
Ein 6 fach Wandtaster wird zum einstellen von 8 verschiedenen Abspielvarianten genutzt.

Ok ich teste es nachher. Betrifft es nur die Playbar oder auch Play 1 oder andere?

Gruß

Alex

FHEM 6.0 auf Raspberry Pi 4b 4GB, RaspberryMatic auf Raspi3b mit Charly-Funkmodul, ZigeeBridge mt deCONZ... . Homematic mittels HMCCU, Sonos 3xS1, 1xS6 (Play5 in der 2te Generation), 1xS9 (Soundbar), 1x SonosSub
1-Wire® to I2C host interface with ESD mit DS18B/S20.