NEWS
Funktion läuft mehrfach. Wie stopen?
-
Ich baue gerade eine PV-Steuerung mit Akku und Nulleinspeisung. Diese wird per VIS visualisiert. Ich wähle eine von 6 Betriebsarten per VIS dies sind:
0 = Aus
1 = Hand
2 = Auto
3 = Nur Export (Also kein Akku laden nur Bezug von Akku)
4 = Laden bis zu einer vorgegebenen Zeit
5 = Nur laden PV (Kein Akku Bezug falls Woken oder sonstwas)Hier werden also sobald der Wert (Meanwell-Off-On-Auto) die Werte 0 bis 5 gesetzt und die entsprechende Funktion aufgerufen. Dies funktioniert nach einem ersten Start des Scripts sauber.
Annahme: Die Anlage wurde neu gestartet und steht auf AUTO (2).
Jetzt schalte ich auf AUS. Das klappt und alle Regler gehen auf 0.
Schalte ich nun aber weider auf AUTO (2)
Die Fuktion AUTO wird wieder gestartet, läuft aber jetzt ZWEI mal! HIer die Funktion:
Wiederhole ich dies, dann kommt jedesmal ein Durchlauf der Funktion dazu. Wie kann ich das verhindern. Bei den Timeouts geht das ja auch so ähnlich.
Danke schonmal.
-
@juergschwarz
Der Klassiker: Trigger in Trigger!Du reagierst auf einen Trigger und rufst eine Funktion auf. In dieser registrierst Du wieder einen Trigger.
Das funktioniert so nicht.Die Trigger müssen aus den Funktionen raus. Die gehören quasi ins "root" des Scriptes.
In den Funktionen kannst Du Flags (Variablen) setzen (oder eben nicht) und in den Triggern dann eben nur weitermachen, wenn eine bestimmte Variable gesetzt ist.Das Prinzip:
-
@codierknecht Das verstehe ich nicht ganz. In diesem Prinzip rufe ich eine Funktion auf, die nichts anderes macht als die Variable "active" auf wahr zu setzen? Ich setze ja bereits die Variable (Meanwell-Off-On-Auto) auf einen bestimmten Wert, welche ich in der Funktion dann bereits nochmal überprüfe. Hab wohl ziemlich einen Knoten hier.
-
@juergschwarz sagte in Funktion läuft mehrfach. Wie stopen?:
rufe ich eine Funktion auf, die nichts anderes macht als die Variable "active" auf wahr zu setzen?
Das soll lediglich ein mögliches Prinzip darstellen.
Der (oder die) Trigger müssen auf jeden Fall aus den Funktionen raus.https://forum.iobroker.net/topic/70481/blockly-for-dummies-starthilfe-und-tipps