NEWS
Radio nach Sayit Ausgabe auf Sonos wieder starten
-
Da es bei mir und ich denke auch bei anderen nicht funktioniert, dass nach einer Sayit Ausgabe auf dem Sonos Speaker das Radio wieder weiter läuft, habe ich mich mal an einem Script probiert um das zu lösen. Funktioniert soweit.
Vorab, ich stehe ganz am Anfang bei Javascript und an die Spezialisten hier, Verbesserungen sind natürlich erwünscht, möchte ja dazu lernen.
on({time: {hour: 15, minute: 11}}, function() { //Zeitfunktion war nur um das Script für mich zu testen, hier muss der Auslöser rein var idSonosfav = getState("sonos.0.root.192_168_XX_XX.favorites_set").val; //speichern des aktuellen Senders var idSonosplay = getState ("sonos.0.root.192_168_66_40.state_simple").val; //Status des Speakers if (idSonosplay === true) { //Wenn Radio läuft setState (idSayIt, "Achtung bla bla bla"); //Ausgabe setTimeout(function () { setState ("sonos.0.root.192_168_XX_XX.favorites_set", idSonosfav); //nach 7 Sekunden gespeicherten Favoriten Sender wieder starten }, 7000); } else if (idSonosplay === false) { //Wenn Radio nicht läuft setState (idSayIt, "Achtung bla bla bla"); } });
-
Hallo,
bei mir klappt die Funktion leider nicht.
Die Ansage wird abgespielt und nach den 7 Sekunden noch einmal.
Testweise hatte ich die Funktion geteilt und mit einem delay versehen.
Also erst Variablen schreiben, warten, dann abspielen, warten, Radio wieder starten.
Hat leider auch nicht geklappt, die Durchsage wird zwei mal abgespielt und dann ist leider ruhe.
Der Versuch favorites_set durch current_title zu ersetzen klappte auch nicht.
Viele Grüße
reeze
-
Hallo,
Die Ansage wird abgespielt und nach den 7 Sekunden noch einmal. `
Versuch mal:
on({time: {hour: 15, minute: 11}}, function() { //Zeitfunktion war nur um das Script für mich zu testen, hier muss der Auslöser rein var idSonosfav = getState("sonos.0.root.192_168_XX_XX.favorites_set").val; //speichern des aktuellen Senders var idSonosplay = getState ("sonos.0.root.192_168_66_40.state_simple").val; //Status des Speakers if (idSonosplay) { //Wenn Radio läuft setState (idSayIt, "Radio ausgeschaltet: Achtung bla bla bla"); //Ausgabe setState ("sonos.0.root.192_168_XX_XX.favorites_set", idSonosfav); //nach 7 Sekunden gespeicherten Favoriten Sender wieder stellen setStateDelayed ("sonos.0.root.192_168_XX_XX.state_simple", idSonosplay, 7000); //nach 7 Sekunden wieder starten } else { //Wenn Radio nicht läuft setState (idSayIt, "Radio war nicht an: Achtung bla bla bla"); } });
Ich glaube, das "Play" fehlte. AUsserdem braucht man bei "else" kein weiteres "if".
Gruß,
Pix
-
Vielen dank,
ich werde es heut Abend mal versuchen.
Viele Grüße
reeze
-
Keine Ahnung wie das "if" noch da rein kam
Hmm ok, bei mir klappt das so. Aaaaber, je nach Text musste ich auch die Zeit verlängern.
3473_log.txt -
Hallo Zusammen,
das script funktioniert bei mir leider immer noch nicht, die ansage wir 2x abgespielt.
Anbei der code den ich im script habe, vielleicht ist auch ein denkfehler drin.
var idSayIt = "sayit.0.tts.text"; /*Text to speech*/ sonos_ansprache(); function sonos_ansprache(){ var idSonosfav = getState("sonos.0.root.192_168_XXX_XXX.favorites_set").val; //speichern des aktuellen Senders var idSonosplay = getState ("sonos.0.root.192_168_XXX_XXX.state_simple").val; //Status des Speakers if (idSonosplay) { //Wenn Radio läuft setState (idSayIt, "Die Waschmaschine ist fertig!"); //Ausgabe setState ("sonos.0.root.192_168_XXX_XXX.favorites_set", idSonosfav); //nach 7 Sekunden gespeicherten Favoriten Sender wieder stellen setStateDelayed ("sonos.0.root.192_168_XXX_XXX.state_simple", idSonosplay, 7000); //nach 7 Sekunden wieder starten } else { //Wenn Radio nicht läuft setState (idSayIt, "Die Waschmaschine ist fertig!"); } };
Danke und viele Grüße
reeze
-
Sporadisch kommt die Ansage bei mir auch doppelt, weiß nicht ob das evtl. am Adapter selbst liegt.
-
Sporadisch kommt die Ansage bei mir auch doppelt, weiß nicht ob das evtl. am Adapter selbst liegt. `
Bitte mal den Adapter Sonos neu starten.Gruß,
Pix