@SILVERSTONE69 - Hier also mein Script:
Kurz zur Erklärung:
Der eigentliche Algorithmus findet ab Zeile 42 statt. Hier werden je nach Uhrzeit verschiedene Zufallszahlen errechnet und die entsprechende Ansage (const ansage) ausgewählt.
Die Funktion begruessung überprüft erstens ob es nicht mitten in der Nacht ist (zwischen 3 und 7 Uhr soll keine Begrüßung stattfinden) und zweitens in welchem Raum gerade eine Anwesenheit existiert. (Da ich derzeit allein lebe, erreicht mich so also die Begrüßung immer in jenem Raum in dem ich mich befinde)
Der Aufruf der Funktion begruessung findet in Zeile 50 mit einem Timeout von 12 sec. statt. Dies aus zwei Gründen: 1. Um eine Zufallszahl errechnen zu können bevor die Funktion aufgerufen wird (dazu würde zugegebener Maßen auch nur 1 sec. genügen) 2. aber damit die Präsenz im Raum erkannt wird. Hier gibt es Verzögerungen weil ich in einem anderen Script die Anwesenheit dadurch überprüfe, in welchem Raum sich die letzte Bewegung abgespielt hat. Um das genau festzustellen benötigt dieses System (mit Hue Bewegungsmeldern) ein paar Sekunden um eine stabile Präsenz in einem Raum festzustellen. Das liegt daran, dass ich ein 5 sec. Polling bei meiner Hue-Bridge eingestellt habe. Nach ca 10 sec. gibt es also nur mehr einen Raum in dem ein aktuelles "movement" eindeutig festgestellt werden kann.
Hoffe es hilft Euch weiter:
var value;
const ansage = ['<speak><emphasis level="reduced">"Hallo NamePerson"</emphasis>," willkommen. Ich "<emphasis level="strong">"freue"</emphasis>" mich, dass Du wieder zu Hause bist!"</speak>',
'<speak>"Willkommen zu "<emphasis level="reduced">" Hause NamePerson!"</emphasis></speak>',
'<speak><emphasis level="reduced">" Hallo NamePerson."</emphasis>" Willkommen zurück."</speak>',
'<speak>"Hallo NamePerson."<emphasis level="strong">" Endlich "</emphasis>" wieder zu Hause!"</speak>',
'<speak>"Willkommen daheim. "<emphasis level="reduced">"NamePerson"</emphasis >", ich hoffe Du hattest einen angenehmen Tag!"</speak>',
'<speak><emphasis level="reduced">"Guten Abend NamePerson."</emphasis>"Dein Tag war hoffentlich nicht zu hart!</speak>',
'<speak><emphasis level="reduced">"Hallo, NamePerson."</emphasis>"Ist heute wieder einmal später geworden.</speak>',
'<speak>"Einen schönen guten Abend, lieber NamePerson."<emphasis level="reduced">"Ich habe schon auf Dich gewartet."</emphasis></speak>',
'<speak><emphasis level="reduced">"NamePerson,"</emphasis>" du kommst spät."<emphasis level="reduced">"Ich hoffe Du hast nicht zu hart arbeiten müssen"</emphasis></speak>',
'<speak>"Ich freue mich NamePerson, dass Du endlich da bist."<emphasis level="reduced">"Ist ganz schön spät geworden heute!"</emphasis></speak>',
'<speak>NamePerson es ist aber heute ganz schön spät geworden."<emphasis level="reduced">"Hauptsache Du bist endlich zu Hause. Ruh Dich aus, schließlich mußt Du bald wieder raus!"</emphasis></speak>'];
function begruessung(value){
console.log('NamePerson ist gerade zu Hause angekommen. Ansagetext: ' + value);
if ((value>0) && compareTime("07:00", "03:00", "between")){
if (getState('javascript.0.Bewegungsmelder.Bad.presence').val == true){
setState('alexa2.0.Echo-Devices.BADEZIMMER.Commands.ssml'/*Bad*/, ansage[value]);
console.log('Begrüßung im Bad');
}
if (getState('javascript.0.Bewegungsmelder.Kueche.Commands.presence').val == true){
setState('alexa2.0.Echo-Devices.KÜCHE.Commands.ssml'/*Kueche*/, ansage[value]);
console.log('Begrüßung in der Küche');
}
if (getState('javascript.0.Bewegungsmelder.Schlafzimmer.Commands.presence').val == true){
setState('alexa2.0.Echo-Devices.SCHLAFZIMMER.Commands.ssml'/*Echo Show 5*/, ansage[value]);
console.log('Begrüßung im Schlafzimmer');
}
if (getState('javascript.0.Bewegungsmelder.Vorzimmer.Commands.presence').val == true){
setState('alexa2.0.Echo-Devices.VORZIMMER.Commands.ssml'/*Vorzimmer*/, ansage[value]);
console.log('Begrüßung im Vorzimmer');
}
if (getState('javascript.0.Bewegungsmelder.Wohnzimmer.Commands.presence').val == true){
setState('alexa2.0.Echo-Devices.WOHNZIMMER.Commands.ssml'/*Wohnzimmer*/, ansage[value]);
console.log('Begrüßung im Wohnzimmer');
}
} else {
setState('alexa2.0.Echo-Devices.WOHNZIMMER.Commands.ssml'/*Wohnzimmer*/, ansage[value]);
}
}
on({id:'radar2.0.NamePerson_XperiaXP_UserDevice._here', change: "gt"}, function (obj) {
if (compareTime("21:00", "null", "<")) {
value = Math.round((Math.random() * (5 - 1) + 1));//Ganzzahlige Zufallszahl zwischen 1 und 5
} else if (compareTime("21:01", "null", ">") && compareTime("22:00", "null", "<")) {
value = Math.round((Math.random() * (8 - 5) + 5));//Ganzzahlige Zufallszahl zwischen 6 und 7
} else if (compareTime("22:01", "null", ">") && compareTime("23:59", "null", "<")) {
value = Math.round((Math.random() * (11 - 9) + 9));//Ganzzahlige Zufallszahl zwischen 8 und 10
}
setTimeout( begruessung,12000,value); //Verzögere, damit Zufallszahl auch errechnet werden kann und Value nicht undefiniert bleibt
});