NEWS
[gelöst] Blockly schaltet zu oft
-
Ihr habt recht, jetzt kommen wieder die Signale in kurzen Abständen...
-
Und so? Da stoppe ich ja jeden Timeout, bevor der neue startet.
oder eher so?
-
@codierknecht Was ist eine Verriegelungsvariable und den timeout kann ich prüfen mit falls nicht timeout?
Gruß
-
@chris777 sagte: Was ist eine Verriegelungsvariable
Die Verriegelung gegen erneuten Timerstart ist "nicht Verzögerung timeout2", also ist
timeout2
die Verriegelungsvariable.@chris777 sagte in [gelöst] Blockly schaltet zu oft:
oder eher so?
So wird nicht mehr auf false geschaltet und die Logik ist umgedreht.
Weshalb nicht so, wie hier gezeigt ("Switch" = "SG Aktiv")?
-
Ok, dann werde ich es mal so probieren.
Für mich nochmal: es starten jedes Mal Timeouts, wenn die Bedingung erfüllt ist und der Trigger auslöst? Es ist nicht wie in einer SPS, dass solange das Signal anliegt die Bedingung erfüllt ist und der Timer läuft?
Es können viele gleiche Timeouts gestartet werden?
Wenn viele Timeouts gestartet sind, kann ich nicht alle stoppen?
Kann man die Funktionen iwo nachlesen? Bei Verzögerung timeout wäre ich nie darauf gekommen, dass ich damit das aktiv-Signal vom timeout abfrageErstmal allen vielen Dank!
-
@chris777 sagte in [gelöst] Blockly schaltet zu oft:
Es ist nicht wie in einer SPS, dass solange das Signal anliegt die Bedingung erfüllt ist und der Timer läuft?
Nein - auf keinen Fall.
Es können viele gleiche Timeouts gestartet werden?
Ja!
Wenn viele Timeouts gestartet sind, kann ich nicht alle stoppen?
Wenn die einzeln per Name ansprechbar sind: Ja.
Wenn Du einen Timer mehrfach nacheinander gestartet hast: Soweit mir bekannt - Nein.Bedenke immer, dass Du hier keine nacheinander ablaufende Prozesssteuerung hast, sondern ein Ereignisgesteuertes System, bei dem Prozesse auch noch asynchron ablaufen können.
https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md
-
ein Ereignisgesteuertes System, bei dem Prozesse auch noch asynchron ablaufen können.
Stichwort: https://www.google.com/search?q=nebenläufige+programmierung
-
Könnte es jetzt so funktionieren? Mir ist noch nicht klar, ob ich so SG Aktiv in true und false setzen kann oder ob es sich gegenseitig beeinflusst.
-
-
Und wie schalte ich SG Aktiv wieder auf false?
-
@chris777 sagte: Und wie schalte ich SG Aktiv wieder auf false?
Wenn die Variable
aktiv
auf false wechselt und dann 30 Minuten auf false bleibt, schaltet "SG Aktiv" auf false (Variablenwert). -
Ich versuche es mal kurz in Worte zu fassen:
Falls sich value ändert setze aktiv 1 auf true, wenn die Bedingungen Hausb.. etc. erfüllt sind. Wenn Aktiv 1 gleich SG Aktiv ist (egal ob true oder false) stoppe timeout3. Sonst, falls timeout3 nicht true ist, führe timeout3 aus und schalte nach 5 Minuten SG Aktiv auf den Wert von aktiv 1 (hier mit true). Das gleiche, wenn Aktiv 1 auf false wechselt.
Korrekt? -
@chris777 sagte: Wenn Aktiv 1 gleich SG Aktiv ist (egal ob true oder false) stoppe timeout3. Sonst, falls timeout3 nicht true ist, führe timeout3 aus und schalte nach 5 Minuten SG Aktiv auf den Wert von aktiv 1 (hier mit true). Das gleiche, wenn Aktiv 1 auf false wechselt.
Korrekt?
Fast korrekt: falls timeout3 null oder undefined ist,
-
-
Also der Blockly funktioniert nicht. Er schaltet nicht auf aktiv true obwohl die Bedingung erfüllt sind.
-
@chris777 sagte: schaltet nicht auf aktiv true obwohl die Bedingung erfüllt sind.
Sicher, dass die Bedingungen 5 Minuten lang erfüllt sind? Bau einen Debug-Block ein, um es zu prüfen.
-
So scheint es erstmal heute funktioniert zu haben. Jeweils nur ein sauberes True oder False für die entsprechende Zeit..