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.
-
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:

-
@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.
-
@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
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