NEWS
Reaktion auf Fehlgeschlagenes SetState
-
Hallo liebe Community,
ist es mir möglich auf ein SetState aus einem Script auf ein physikalisches Device direkt zu reagieren?
Um den konkreten Fall zu beschreiben, ich habe eine Steckdose, die ab und zu nicht reagiert.
Die Log sagt dann Fehler 233 "Mac no Ack". Der IOBroker weiß also, das die Steckdose nicht erreicht wird beim Senden durch fehlendes Acknowledge.
Mein Datenpunkt hat aber den Wert den ich geschrieben habe, ist aber jetzt einfach Rot.Ich möchte einfach eine Funktion ausführen, die noch x mal erneut sendet.
Vielen Dank in vorraus!
-
@JinnBln sagte:
Ich möchte einfach eine Funktion ausführen, die noch x mal erneut sendet.
Ich sende mit 1 s und 5 s Verzögerung nochmal, falls nicht der Aktor mit Ack triggert (dann werden die Timer gestoppt).
const actid = '...'; const ventid = '...'; var vent = getState(ventid).val; // Sollzustand var act = getState(actid).val; // Aktor var timer1 = null; var timer5 = null; function actor() { if(act === vent) { if(timer1) clearTimeout(timer1); if(timer5) clearTimeout(timer5); } else { setState(actid, vent); timer1 = setTimeout(function() {setState(actid, vent);}, 1000); timer5 = setTimeout(function() {setState(actid, vent);}, 5000); } } actor(); // script start on(ventid, function(dp) { vent = dp.state.val; actor(); }); on({id: actid, ack: true}, function(dp) { act = dp.state.val; actor(); });