NEWS
Befehl, erst wenn vorheriger bestätigt wurde (Ack-State)
-
Hallo zusammen,
ich stehe aktuell vor dem Problem, dass ich meine Raffstores nicht ordentlich anfahren kann, da sich die Befehle gegenseitig killen/überlagern.
Daher benötige ich eine Strategie für folgendes Szenario: Start der Funktion "Schließe Rolladen mit übergebenen Variablen x und y"
x ist dabei die Höhe des Raffstores und y der Neigungswinkel der einzelnen Lamellenfunction Raffstore (x,y) {
SetState(ID,x);
Hier würde ich gerne einen Delay haben, solange die Endposition x nicht erreicht und der Wert nicht bestätigt wurde.
SetState(ID,y);
Hier würde ich gerne einen Delay haben, solange die Position y nicht erreicht und der Wert nicht bestätigt wurde.
...
weiterer Programmcode
}Gibt es hierfür Möglichkeit? Entweder gerne per Blockly oder JavaScript.
-
Hallo zusammen,
ich stehe aktuell vor dem Problem, dass ich meine Raffstores nicht ordentlich anfahren kann, da sich die Befehle gegenseitig killen/überlagern.
Daher benötige ich eine Strategie für folgendes Szenario: Start der Funktion "Schließe Rolladen mit übergebenen Variablen x und y"
x ist dabei die Höhe des Raffstores und y der Neigungswinkel der einzelnen Lamellenfunction Raffstore (x,y) {
SetState(ID,x);
Hier würde ich gerne einen Delay haben, solange die Endposition x nicht erreicht und der Wert nicht bestätigt wurde.
SetState(ID,y);
Hier würde ich gerne einen Delay haben, solange die Position y nicht erreicht und der Wert nicht bestätigt wurde.
...
weiterer Programmcode
}Gibt es hierfür Möglichkeit? Entweder gerne per Blockly oder JavaScript.
@SaschaS sagte:
Gibt es hierfür Möglichkeit?
Versuche mal den Ansatz (nicht getestet):
const idRollo = '...'; var move = false; var timer = null; var soll = getState(idRollo).val; function raffstore(x, y) { soll = x; setState(idRollo, soll); move = true; timer = setInterval(function() { if(!move) { soll = y; setState(idRollo, soll); move = true; clearInterval(timer); } }, 1000); } on(idRollo, function(dp) { if(dp.state.ack && dp.state.val == soll) move = false; }); if(!move) raffstore(50, 45); else { timer = setInterval(function() { if(!move) { clearInterval(timer); raffstore(50, 45); } }, 1000); } -
@SaschaS sagte:
Gibt es hierfür Möglichkeit?
Versuche mal den Ansatz (nicht getestet):
const idRollo = '...'; var move = false; var timer = null; var soll = getState(idRollo).val; function raffstore(x, y) { soll = x; setState(idRollo, soll); move = true; timer = setInterval(function() { if(!move) { soll = y; setState(idRollo, soll); move = true; clearInterval(timer); } }, 1000); } on(idRollo, function(dp) { if(dp.state.ack && dp.state.val == soll) move = false; }); if(!move) raffstore(50, 45); else { timer = setInterval(function() { if(!move) { clearInterval(timer); raffstore(50, 45); } }, 1000); }
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login