@paul53 So, abschließend noch kurz die Vollzugsmeldung. Alles funktioniert wie gehabt. Um nicht zwei Skripte (mein Blockly und das neue) laufen haben zu müssen, habe ich einfach mein bisheriges Blockly als Javascript ausgeben lassen und einfach quick&dirty vor das neue Script kopiert. Datenpunkte nochmal angepasst und läuft. Ich hatte gestern Nacht, als meine Frau im Bett war, noch versucht, das irgendwie eleganter zu machen, insbesondere nur mit einem Trigger und sauber mit idNummer und idName durchgehend, anstatt wieder auf die Datenpunkte zuzugreifen, aber da bin ich in reinem Javascript irgendwie nicht fit genug. Spätestens beim Versuch, davon dann erst aber der vierten Stelle auszulesen habe ich mich dann irgendwo in den Klammern verzettelt... 😧
Unten das Gesamt-Script, wie es läuft, falls jemand mal sowas in der Art braucht. Und nochmal Danke an Alle. Ohne Eure Hilfe wäre das Ganze sicher noch weitaus uneleganter geworden. So gefällt es mir richtig gut und ich mach mich nun an das Eintragen von meinen Nummern und Namen.
Gruss, Jürgen
function subsequenceFromStartLast(sequence, at1) {
var start = at1;
var end = sequence.length - 1 + 1;
return sequence.slice(start, end);
}
on({ id: [].concat(['0_userdata.0.Zustand.Anrufer-Name']), change: 'any' }, async (obj) => {
let value = obj.state.val;
let oldValue = obj.oldState.val;
if (compareTime('08:00', '22:00', 'between')) {
if (('' + getState('0_userdata.0.Zustand.Anrufer-Name').val).indexOf('00') + 1 == 1) {
if (('' + getState('0_userdata.0.Zustand.Anrufer-Name').val).indexOf('0049') + 1 == 1) {
setState('javascript.0.Alexa-Text' /* Alexa-Text */, ('Anruf von 0' + String(subsequenceFromStartLast(('' + getState('0_userdata.0.Zustand.Anrufer-Name').val), 4))), true);
} else {
setState('javascript.0.Alexa-Text' /* Alexa-Text */, ('Anruf von 00' + String(subsequenceFromStartLast(('' + getState('0_userdata.0.Zustand.Anrufer-Id').val), 0))), true);
}
} else {
setState('javascript.0.Alexa-Text' /* Alexa-Text */, ('Anruf von ' + String(getState('0_userdata.0.Zustand.Anrufer-Name').val)), true);
}
}
});
const telBuch = {
'1234567': 'Müller',
'498934568': 'Heinz'
};
const idNummer = '0_userdata.0.Zustand.Anrufer-Id'/*Anrufer-Id*/;
const idName = '0_userdata.0.Zustand.Anrufer-Name'/*Anrufer-Name*/;
on({ id: idNummer, change: 'any' }, function(dp) {
let name = telBuch[dp.state.val];
if(!name) name = '00' + dp.state.val // unbekannter Name = Nummer
setState(idName, name);
});
EDIT: Script angepasst. Es muss bei den Telefonnummern 49 davor stehen.