Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Funktion läuft mehrfach. Wie stopen?

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Funktion läuft mehrfach. Wie stopen?

    This topic has been deleted. Only users with topic management privileges can see it.
    • J
      juergschwarz last edited by

      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)

      Bildschirmfoto vom 2025-01-09 10-13-31.png

      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:

      Bildschirmfoto vom 2025-01-09 10-20-36.png

      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.

      Codierknecht 1 Reply Last reply Reply Quote 0
      • Codierknecht
        Codierknecht Developer Most Active @juergschwarz last edited by Codierknecht

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

        fedf4e70-a131-4bfc-a773-c8dc8434571e-image.png

        J 1 Reply Last reply Reply Quote 0
        • J
          juergschwarz @Codierknecht last edited by

          @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 1 Reply Last reply Reply Quote 0
          • Codierknecht
            Codierknecht Developer Most Active @juergschwarz last edited by

            @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

            1 Reply Last reply Reply Quote 0
            • First post
              Last post

            Support us

            ioBroker
            Community Adapters
            Donate

            702
            Online

            31.7k
            Users

            79.7k
            Topics

            1.3m
            Posts

            2
            4
            175
            Loading More Posts
            • Oldest to Newest
            • Newest to Oldest
            • Most Votes
            Reply
            • Reply as topic
            Log in to reply
            Community
            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
            The ioBroker Community 2014-2023
            logo