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 Lamellen

    function 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);
    }
    


  • @paul53 Danke für die schnelle Antwort. Das schaut auf den ersten Blick (für meine Verhätlnisse) dann doch ziemlich komplexer. Muss ich mir genauer anschauen.
    Lässt sich das Verfahren auch in Blockly realisieren?



Suggested Topics

  • 7
  • 12
  • 22
  • 4
  • 3
  • 2
  • 17
  • 14

1.9k
Online

32.1k
Users

38.8k
Topics

526.1k
Posts