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); }
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden