NEWS
Playlist in Alexa2-Adapter wird nur angespielt
-
Guten Morgen,
ich habe ein kleines Problem mit einem Weckerscript. Ich will das bei erreichen der Weckzeit im Alexa2-Adapter eine Playlist gespielt wird. Leider kommt es öfter vor (und das hauptsächlich beim Weckner meiner GöGa) das die Playlist nur kurz angespielt wird (nicht mal eine Sekunde) und dann wieder stopt. Die Datenpunkte werden gesetzt
und angeblich hatt er 11 Sekunden gedudelt.Ich habe das Script mehrfach gecheckt, dinde aber keinen Fehler. Vieleicht sieht einer von euch was hier falsch läuft.
// Musik-Lautstärke auf 5%, wird kontinuielich gesteigert auf 20% setState('alexa2.0.Echo-Devices.'+EchoDevice+'.Player.volume', 5); let tmpPlLstNr = getState(Path + 'iCal.'+Name+'.MusicProvider').val; let tmpPlLst = getState(Path + 'iCal.'+Name+'.Playlist').val; if (DEBUG) log('Wecker: Wecker für '+WeckerName+' Musikwecker für Provider:'+tmpPlLstNr+' mit Playlist '+tmpPlLst); if (tmpPlLstNr == 0) { setStateDelayed('alexa2.0.Echo-Devices.'+EchoDevice+'.Music-Provider.Amazon-Music-Playlist', tmpPlLst, 8000, false); if (DEBUG) log('Wecker: Wecker für '+WeckerName+' Playlist gesetzt'); } else if (tmpPlLstNr == 1) { setStateDelayed('alexa2.0.Echo-Devices.'+EchoDevice+'.Music-Provider.Spotify-Playlist', tmpPlLst, 8000, false); if (DEBUG) log('Wecker: Wecker für '+WeckerName+' Playlist gesetzt'); } else if (tmpPlLstNr == 3) { setStateDelayed('alexa2.0.Echo-Devices.'+EchoDevice+'.Music-Provider.TuneIn', tmpPlLst, 8000, false); if (DEBUG) log('Wecker: Wecker für '+WeckerName+' Playlist gesetzt'); } let ii = 8000; for (let i = 10; i <= 20; i += 5) { ii = ii + 5000; setStateDelayed('alexa2.0.Echo-Devices.'+EchoDevice+'.Player.volume', i, ii, false); if (DEBUG) log('Wecker: Wecker für '+WeckerName+' Lautstärkenerhöhung für Delay in '+ii+' MSek und Lautstärke '+i); } }
Danke schon mal im vorraus
Carsten -
@CKMartens sagte:
for (let i = 10; i <= 20; i += 5) {
Damit funktioniert es nicht, da kein neues setStateDelayed() erzeugt wird, sondern nur die Übergabeparameter in der Schleife geändert werden. Verwende ein Intervall:
setTimeout(function() { var level = 10; var timer = setInterval(function() { setState('alexa2.0.Echo-Devices.'+EchoDevice+'.Player.volume', level); if(level < 20) level += 5; else clearInterval(timer); }, 5000); }, 8000);
-
@paul53 sagte in Playlist in Alexa2-Adapter wird nur angespielt:
Damit funktioniert es nicht, da kein neues setStateDelayed() erzeugt wird, sondern nur die Übergabeparameter in der Schleife geändert werden. [...]
Tatsächlich funktioniert der Part schon bei mir. Habe es für die Erhöhung der Laustärke und um die Nachttischlampen heller werden zu lassen.
let ii = 8000; for (let i = 10; i <= 20; i += 5) { ii = ii + 5000; setStateDelayed('alexa2.0.Echo-Devices.'+EchoDevice+'.Player.volume', i, ii, false); if (DEBUG) log('Wecker: Wecker für '+WeckerName+' Lautstärkenerhöhung für Delay in '+ii+' MSek und Lautstärke '+i); } [...] let ii = 8000; for (var i = 10; i <= 40; i += 5) { ii = ii + 2000; setStateDelayed(tmp_lichtDev, i, ii, false); if (DEBUG) log('Wecker: Wecker für '+WeckerName+' Helligkeitserhöhung für Delay in '+ii+' MSek und Helligkeit '+i); }
Warum aber die Playlisten nicht immer gespielt werden, sondern manchmal nur ein paar Sekunden angespielt werden verwirrt mich. Und wie es aussieht ist meist der erste Weck-Cron betroffen.