Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • 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. Blockly
  5. [gelöst] Dauerschleife führt zu Memoryproblemen

NEWS

  • wichtiges UPDATE für controller 7.2.2 im stable
    HomoranH
    Homoran
    10
    1
    2.6k

  • Neues YouTube-Video: Visualisierung im Devices-Adapter
    BluefoxB
    Bluefox
    16
    1
    4.7k

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    8
    1
    4.0k

[gelöst] Dauerschleife führt zu Memoryproblemen

Geplant Angeheftet Gesperrt Verschoben Blockly
24 Beiträge 2 Kommentatoren 3.1k Aufrufe 1 Beobachtet
  • Ä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.
  • G GombersIOB

    @paul53
    Ich kann mir programmlogisch kein Ereignis vorstellen bei dem eine Routine aus dem "if-then"-Zweig in den "else"-Zweig wechselt. In den "else"-Zweig kommt man nur über "if" (genauso wie in den "then"-Zweig"). Aber wenn man einmal in einem der beiden Zweige ist kommt man nicht mehr über "if". Der Ablauf bleibt mir ein Rätsel.

    paul53P Offline
    paul53P Offline
    paul53
    schrieb am zuletzt editiert von paul53
    #21

    @gombersiob sagte: Der Ablauf bleibt mir ein Rätsel.

    Wenn sich der Wert des Trigger-Datenpunktes "Switch" ändert (Trigger-Ereignis), wird die Callback-Funktion aufgerufen. Innerhalb der Callback-Funktion wird der Wert des Trigger-Datenpunktes geprüft: Wenn true, wird der mache-Zweig ausgeführt, also das Intervall gestartet; wenn false, wird der sonst-Zweig ausgeführt, also das Intervall gestoppt. Dann wird die Callback-Funktion beendet und auf ein neues Trigger-Ereignis gewartet.

    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
    Produktiv: Asus PN 42 / N100 / 8 GB / 500 GB; Proxmox mit 2 VM (iob / openCCU)

    G 3 Antworten Letzte Antwort
    0
    • paul53P paul53

      @gombersiob sagte: Der Ablauf bleibt mir ein Rätsel.

      Wenn sich der Wert des Trigger-Datenpunktes "Switch" ändert (Trigger-Ereignis), wird die Callback-Funktion aufgerufen. Innerhalb der Callback-Funktion wird der Wert des Trigger-Datenpunktes geprüft: Wenn true, wird der mache-Zweig ausgeführt, also das Intervall gestartet; wenn false, wird der sonst-Zweig ausgeführt, also das Intervall gestoppt. Dann wird die Callback-Funktion beendet und auf ein neues Trigger-Ereignis gewartet.

      G Offline
      G Offline
      GombersIOB
      schrieb am zuletzt editiert von GombersIOB
      #22

      @paul53

      Gelöst!

      Ich habe mir das zitierte JavaScript nochmal angeschaut und ich denke, ich habe den Zusammenhang endlich begriffen. Die Zeile

      (function () {if (Intervall) {clearInterval(Intervall); Intervall = null;}})();
      

      stoppt das Intervall, das mit setIntervall() gestartet wurde und beendet diesen endlosen Loop. Bei "Intervall" muss es sich um eine Art globale Variable handeln. Durch den Wechsel des Triggers von "true" aus "false" läuft das Script ein zweites Mal an (wie bei den anderen Ansätzen ja auch schon) und endet über die "if"-Abfrage jetzt im "else"-Zweig. Und dort wird "Intervall", aus dem ersten Lauf, gestoppt/gelöscht, wie immer man "clear" übersetzen will.

      Ich habe testweise mal die Zeile gelöscht, dann wird der "then"-Zweig, wie ich eigentlich erwartet habe, auch endlos fortgeführt. Es musste doch eine Methode vorhandensein, die den Loop stoppte!!
      Damit ist für mich die Welt wieder in Ordnung und logisch.

      1 Antwort Letzte Antwort
      0
      • paul53P paul53

        @gombersiob sagte: Der Ablauf bleibt mir ein Rätsel.

        Wenn sich der Wert des Trigger-Datenpunktes "Switch" ändert (Trigger-Ereignis), wird die Callback-Funktion aufgerufen. Innerhalb der Callback-Funktion wird der Wert des Trigger-Datenpunktes geprüft: Wenn true, wird der mache-Zweig ausgeführt, also das Intervall gestartet; wenn false, wird der sonst-Zweig ausgeführt, also das Intervall gestoppt. Dann wird die Callback-Funktion beendet und auf ein neues Trigger-Ereignis gewartet.

        G Offline
        G Offline
        GombersIOB
        schrieb am zuletzt editiert von
        #23

        @paul53
        Danke, für die Unterstützung

        1 Antwort Letzte Antwort
        0
        • paul53P paul53

          @gombersiob sagte: Der Ablauf bleibt mir ein Rätsel.

          Wenn sich der Wert des Trigger-Datenpunktes "Switch" ändert (Trigger-Ereignis), wird die Callback-Funktion aufgerufen. Innerhalb der Callback-Funktion wird der Wert des Trigger-Datenpunktes geprüft: Wenn true, wird der mache-Zweig ausgeführt, also das Intervall gestartet; wenn false, wird der sonst-Zweig ausgeführt, also das Intervall gestoppt. Dann wird die Callback-Funktion beendet und auf ein neues Trigger-Ereignis gewartet.

          G Offline
          G Offline
          GombersIOB
          schrieb am zuletzt editiert von GombersIOB
          #24

          @paul53

          Zum Abschluss möchte ich zusammenfassen wie sich für mich die Lösung meiner Frage darstellt:

          Über einen Trigger wird der Status eines Datenpunktes (ObjektID) überwacht. In der Folge des Skriptes wird nicht mehr der Datenpunkt selber geprüft sondern das beim Trigger erstellte Objekt. Deshalb ist es sinnlos in einem Loop den "Wert" des Objekts zu überwachen, denn der ändert sich nicht ja mehr.
          Wenn sich der Datenpunkt nochmal ändert schlägt der Trigger wieder zu, das Script started wegen der Änderung nochmal ind im neuen Script ist ein neues Objekt aus dem Datenpunkt verfügbar.

          Ich habe das nachvollzogen indem ich mir in den Meldungen immer den Timestamp des Objektes auch angezeigt habe - da ist das schön nachzuvollziehen.

          Für meine Frage bietet sich wirklich der Loop über ein Intervall an, das stoppt man, wie oben beschrieben, im neu angelaufenen Script.

          1 Antwort Letzte Antwort
          0

          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
          Antworten
          • In einem neuen Thema antworten
          Anmelden zum Antworten
          • Älteste zuerst
          • Neuste zuerst
          • Meiste Stimmen


          Support us

          ioBroker
          Community Adapters
          Donate

          358

          Online

          33.0k

          Benutzer

          83.4k

          Themen

          1.3m

          Beiträge
          Community
          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
          ioBroker Community 2014-2026
          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