@ChrisXY Ich mache es so: Merke den Sollzustand in Datenpunkten oder Variablen und bei Netzspannungswiederkehr wird verzögert gesendet, wenn der Sollzustand "ein" ist.
"Heizventil" enthält den Sollzustand.
// Heizaktor für Auf-/Zu-Ventil ansteuern
// no = Ventil stromlos offen
var no = false;
// Raumkurzname am Anfang des Datenpunktnamen und als JS-Gruppenname
var raum = name.split(".")[2];
var actid = getIdByName(raum + ".Heizaktor-Ein");
var ventid = getIdByName(raum + ".Heizventil");
var netid = getIdByName("USV.Netz");
var net = getState(netid).val;
var vent = getState(ventid).val;
var act = getState(actid).val;
var timer1 = null;
var timer5 = null;
function actor() {
var y = vent;
if(no) y = !vent;
if(act === y) { // Ist == Soll
if(timer1) clearTimeout(timer1);
if(timer5) clearTimeout(timer5);
}
else if(net) { // Ist != Soll und Netz vorhanden
setState(actid, y);
timer1 = setTimeout(function() {setState(actid, y);}, 1000);
timer5 = setTimeout(function() {setState(actid, y);}, 5000);
}
}
actor(); // script start
on(ventid, function(dp) {
vent = dp.state.val;
actor();
});
on(netid, function(dp) {
net = dp.state.val;
act = false; // Aktor ist nach Netzausfall aus
if(net) setTimeout(actor, 10000); // Netzwiederkehr
});
on({id: actid, ack: true}, function(dp) { // Aktor-Zustand bestätigt
act = dp.state.val; // Ist
actor();
});