ich versuche seit einiger Zeit eine Türklingel mit Sonos zum Laufen zu bringen. Es gibt ja schon ein paar Beiträge dazu, aber zu meinem Problem habe ich so noch nichts gefunden. Jedoch würde es mich wundern, wenn es sonst niemanden betrifft.
Von Anfang an hatte ich zwei zwar sporadische, aber dennoch regelmäßig auftretende Probleme:
a) Die Lautstärke bei der Wiedergabe war immer mal wieder falsch. Entweder der Klingelton war zu leise oder die Wiedergabe der Musik nach dem Klingelton lief dann auf der Klingellautstärke weiter.
b) Am Ende des Klingeltons wurde hin und wieder ein Lied aus der Playlist abgespielt; häufig nur die ersten 1-2 Sekunden, manchmal auch länger.
Der Fehler mit der Lautstärke ließ sich damit lösen, dass ich den Wert nicht mehr an die playSound-Funktion als Parameter übergeben sondern in den Einstellungen des Things fest hinterlegt habe.
Also statt
playSound("sonos:...", "doorbell.mp3", new PercentType(25))
nutze ich
playSound("sonos:...", "doorbell.mp3") + Thing-Configuration
Leider ist dadurch nun der Wert nicht mehr mittels App einstellbar; oder lässt sich das irgendwie realisieren, dass man den Wert der Konfiguration eines Thing darstellt und verändert? Zur Not könnte ich mit dieser festen Lautstärke aber noch leben.
Das größere Problem ist das sporadische Abspielen nach dem Klingeln. Mittlerweile habe ich zumindest scheinbar die Ursache gefunden und suche noch nach einer praktikablen Lösung.
Eines Tages kam es beim Abspielen des Klingeltons dazu, dass dieser plötzlich in einer Dauerschleife lief... also DingDong - DingDong - DingDong - ... . Zeitgleich hatt ich die Sonos App auf meinem Handy offen und man konnte wunderbar sehen, dass der Repeat-Mode auf Repeat-1 stand. In diesem Zustand lief das Klingeln dann für ca. 20s (ich vermute es ist der Timeout-Wert der Benachrichtigungen, so ist es im Thing derzeit konfiguriert).
Daraufhin habe ich begonnen mir das Verhalten immer parallel in der App anzuschauen. So wie es sich dort darstellt, wird der Klingelton beim Abspielen als zusätzliches Lied an das Ende der aktiven Playlist angehängt, dann abgespielt, und danach wieder entfernt. Idealerweise geht dann die alte Wiedergabe weiter. Allerdings greift gleichzeitig der aktuell eingestellte Repeat-Mode der Playlist auch beim Abspielen des Klingeltons. Steht der vor dem Klingeln auf Repeat-1, läuft auch der Klingelton in Dauerschleife bis zum Timeout. Steht er auf Repeat-All, beginnt nach dem Klingeln die Playlist wieder von vorne, d.h. es wird das erste Lied abgespielt. Meist dann nur etwa 1 Sekunde, gelegentlich aber auch länger. Das Timeout scheint hier nicht zu greifen.
Der erste Lösungsansatz war, vor dem Abspielen des Klingeltons den Repeat-Mode zu speichern, auf OFF zu stellen und nach dem Abspielen wiederherzustellen. Das funktioniert an sich auch ganz gut, leider kommt dann aber gleich die nächste Herausforderung

Mein letzter Versuch war dann, kurz vor dem Aufruf von playSound einen Timer zu starten von 1s, um während der Klingelton bereits läuft den Repeat-Mode auf OFF zu stellen, aber das scheint nicht zu reichen. Er wird dann dennoch mindestens einmal wiederholt.
Hat irgendjemand schon mal ähnliches erlebt und eine Lösung gefunden?
Gruß Nils