Hallo an euch und vielen Dank für die vielen Informationen.
@fastfoot
Deine vorgeschlagene Variante mit den verschiedenen Asynch-Parametern/ -Funktionen hatte ich auch ausprobiert. Jedoch hat sich der Zustand des Datenpunktes gar nicht mehr geändert, wenn ich diesen beschreiben wollte. Deshalb bin ich dann auf die Variante mit den lokalen Variablen umgeswitcht.
Somit wird nun am Anfang des Skriptes der aktuelle Zustand der Datenpunkte in eine lokale Variable geschrieben. Die ich dann im Skript weiter verwende. Das einzig "doofe" ist halt, dass ich diese dann im laufenden Skript mit verändern muss, da ich den aktuellen Zustand des Datenpunktes im laufenden Skript ja auch weiter benötige und über getState (aufgrund des Asynch-Problems) nicht nutzen kann.
Also hier ein Beispiel:
Hier werden die Werte am Anfang des Skriptes aus der Datenbank geholt bzw. in eine lokale Variable geschrieben:
// Einlesen der Zustände der Alarmanlage
STATE_ALARM_ZUSTAND = getState('0_userdata.0.Alarmanlage.Alarm_Zustand').val;
STATE_ALARM_AKTIV = getState('0_userdata.0.Alarmanlage.Alarm_Aktiv').val;
Wenn jetzt innerhalb des Skriptes der Zustand des Datenpunktes geändert wird, ändere ich im Anschluss auch die lokale Variable, da ich diese ja im Nachhinein auch weiter nutze bzw. abfrage:
// Setze Alarmzustand aktiv
setState('0_userdata.0.Alarmanlage.Alarm_Zustand', true);
STATE_ALARM_ZUSTAND = true;
Und hier wird die Variable dann nochmals genutzt bzw. abgefragt, bevor sie dann per Telegram verschickt wird:
sendTo('telegram', {
text: '<b>Aktuelle Statusübersicht</b>\n' +
'------------------------------------------\n' +
'Alarmstatus: ' + TextAlarm(STATE_ALARM_ZUSTAND) + '\n' +
'Auslösung: ' + TextAlarm(STATE_ALARM_AKTIV) + '\n' +
'------------------------------------------',
parse_mode: 'HTML',
})
function TextAlarm(zustandAlarm){
Text_Hilf = 'nicht aktiv';
if (zustandAlarm==true){
Text_Hilf = 'aktiv';
}
return Text_Hilf
}
Aus eurer Sicht wäre das nun die optimale und gleichzeitig auch ressourcenschonende Variante?