Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Funktion läuft mehrfach. Wie stopen?

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.0k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    698

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.0k

Funktion läuft mehrfach. Wie stopen?

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
4 Beiträge 2 Kommentatoren 335 Aufrufe 2 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • J Offline
    J Offline
    juergschwarz
    schrieb am zuletzt editiert von
    #1

    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.

    CodierknechtC 1 Antwort Letzte Antwort
    0
    • J juergschwarz

      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.

      CodierknechtC Online
      CodierknechtC Online
      Codierknecht
      Developer Most Active
      schrieb am zuletzt editiert von Codierknecht
      #2

      @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

      "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

      Proxmox 9.1.1 LXC|8 GB|Core i7-6700
      HmIP|ZigBee|Tasmota|Unifi
      Zabbix Certified Specialist
      Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

      J 1 Antwort Letzte Antwort
      0
      • CodierknechtC 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 Offline
        J Offline
        juergschwarz
        schrieb am zuletzt editiert von
        #3

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

        CodierknechtC 1 Antwort Letzte Antwort
        0
        • J juergschwarz

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

          CodierknechtC Online
          CodierknechtC Online
          Codierknecht
          Developer Most Active
          schrieb am zuletzt editiert von
          #4

          @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

          "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

          Proxmox 9.1.1 LXC|8 GB|Core i7-6700
          HmIP|ZigBee|Tasmota|Unifi
          Zabbix Certified Specialist
          Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

          1 Antwort Letzte Antwort
          0
          Antworten
          • In einem neuen Thema antworten
          Anmelden zum Antworten
          • Älteste zuerst
          • Neuste zuerst
          • Meiste Stimmen


          Support us

          ioBroker
          Community Adapters
          Donate

          451

          Online

          32.6k

          Benutzer

          82.0k

          Themen

          1.3m

          Beiträge
          Community
          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
          ioBroker Community 2014-2025
          logo
          • Anmelden

          • Du hast noch kein Konto? Registrieren

          • Anmelden oder registrieren, um zu suchen
          • Erster Beitrag
            Letzter Beitrag
          0
          • Home
          • Aktuell
          • Tags
          • Ungelesen 0
          • Kategorien
          • Unreplied
          • Beliebt
          • GitHub
          • Docu
          • Hilfe