Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Variablen bleiben gefüllt oder Variablen zurücksetzen

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Variablen bleiben gefüllt oder Variablen zurücksetzen

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

      Hallo zusammen,

      Das angehängte Blockly verwende ich um meine Rollos in einem bestimmten Zeitbreich herunter zu fahren.
      Das funktioniert soweit ganz prima.
      In dem Blockly wird auch geprüft, ob alle Rollos herunter gefahren wurden. Wenn nicht, wird eben die Variable "openRollo" raufgezählt" und die Varibale rolloName wird entsprechend gefüllt.
      Auch das funktioniert.

      Allerdings scheint es mir so, dass die Variablen openRollo und rolloName gefüllt bzw > 0 bleiben, wenn einmal der Fall eingetreten ist das ein Rollo nicht heruntergefahren werden konnte. Denn: Sobald dies einmal passiert, bekomme ich fortan jeden Abend die Info das ein Rollo nicht heruntergefahren werden konnte und zwar immer das/die selbe/n wie zuvor. Daher die Vermutung das die Variablen gefüllt bleiben. Leider weiß ich nicht wo man das nachsehen kann. Unter Objekte finde ich die zumindest nicht.

      Jetzt habe ich in das Blockly noch einen Trigger eingebaut, der die Variablen rolloName und openRollo Nachts um 02 Uhr auf ihren Inhalt prüft und diese ggf zurücksetzt. Kann man das so machen? Oder ist die Variable jetzt nicht doppelt vertreten? Könnte man hier im Prinzip auf die Variablen ohne den Trigger verzichten?

      Blockly.jpg

      Homoran Asgothian 2 Replies Last reply Reply Quote 0
      • Homoran
        Homoran Global Moderator Administrators @SLang77 last edited by Homoran

        @slang-0 sagte in Variablen bleiben gefüllt oder Variablen zurücksetzen:

        Daher die Vermutung das die Variablen gefüllt bleiben. L

        Natürlich bleiben die Werte von Variablen so lange bestehen bis sie geändert werden oder das Skript neu gestartet wird
        Das ist ja auch deren Sinn

        SLang77 1 Reply Last reply Reply Quote 0
        • Asgothian
          Asgothian Developer @SLang77 last edited by

          @slang-0 sagte in Variablen bleiben gefüllt oder Variablen zurücksetzen:

          Jetzt habe ich in das Blockly noch einen Trigger eingebaut, der die Variablen rolloName und openRollo Nachts um 02 Uhr auf ihren Inhalt prüft und diese ggf zurücksetzt. Kann man das so machen? Oder ist die Variable jetzt nicht doppelt vertreten? Könnte man hier im Prinzip auf die Variablen ohne den Trigger verzichten?

          • Gibt es irgend einen Grund die Variable openRollo nicht zu Beginn der Funktion Shutdown-Herbst-Winter auf 0 zu setzen ?
          • Die gleiche Frage für den variable rolloName (mit Wert "")
          • Warum Pause 1 Min ? Besser wäre ein Konstrukt mit stop timeout gefolgt von timeout 1 min, und dann im Timeout alles was sich aktuell hinter dem Pause Baustein befindet.

          A.

          1 Reply Last reply Reply Quote 0
          • SLang77
            SLang77 @Homoran last edited by

            @homoran sagte in Variablen bleiben gefüllt oder Variablen zurücksetzen:

            @slang-0 sagte in Variablen bleiben gefüllt oder Variablen zurücksetzen:

            Daher die Vermutung das die Variablen gefüllt bleiben. L

            Natürlich bleiben die Werte von Variablen so lange bestehen bis sie geändert werden oder das Skript neu gestartet wird
            Das ist ja auch deren Sinn

            Danke. Dann hatte ich das schonmal richtig verstanden...

            @asgothian sagte in Variablen bleiben gefüllt oder Variablen zurücksetzen:

            @slang-0 sagte in Variablen bleiben gefüllt oder Variablen zurücksetzen:

            Jetzt habe ich in das Blockly noch einen Trigger eingebaut, der die Variablen rolloName und openRollo Nachts um 02 Uhr auf ihren Inhalt prüft und diese ggf zurücksetzt. Kann man das so machen? Oder ist die Variable jetzt nicht doppelt vertreten? Könnte man hier im Prinzip auf die Variablen ohne den Trigger verzichten?

            • Gibt es irgend einen Grund die Variable openRollo nicht zu Beginn der Funktion Shutdown-Herbst-Winter auf 0 zu setzen ?
            • Die gleiche Frage für den variable rolloName (mit Wert "")
            • Warum Pause 1 Min ? Besser wäre ein Konstrukt mit stop timeout gefolgt von timeout 1 min, und dann im Timeout alles was sich aktuell hinter dem Pause Baustein befindet.

            A.

            Ähm... ach so... ja... wenn die Funktion angestoßen wird (jeden Tag zum Sonnenuntergang, dann werden auch die Variablen zurück gesetzt... Das macht Sinn... Danke!

            Die Pause ist drinn, da die Rollos eine gewisse Zeit benötigen bis Sie unten sind. Erst dann ist der nötige Wert erreicht. Lässt man die Pause weg wird das Blockly eben ohne Pause abgearbeitet Variablen werden jedes Mal "falsch" befüllt (Rollos sind noch nicht zueende gefahren). Das Resultat ist jedes mal eine Info-Mail obwohl alles ordnungsgemäß geplappt hat.

            Warum kein Timeout? Keine Ahnung... Wusste nicht dass das besser ist. Warum ist das besser?

            Ich habs mal anggepasst:

            Blockly.jpg

            Asgothian 1 Reply Last reply Reply Quote 0
            • Asgothian
              Asgothian Developer @SLang77 last edited by Asgothian

              @slang-0 sagte in Variablen bleiben gefüllt oder Variablen zurücksetzen:

              Warum kein Timeout? Keine Ahnung... Wusste nicht dass das besser ist. Warum ist das besser?

              Das Stichwort für die Antwort ist "synchrone" und "asynchrone" Ausführung.

              Das Skript mit "Pause" ist synchron aufgebaut. Die Pause wartet 1 min. und blockiert die angeforderten Ressourcen bis es weiter geht. Sollte das Skript ein 2. mal gestartet werden wenn die Pause noch läuft so läuft dieses dann doppelt, da das erste Skript noch nicht beendet ist.

              Bei der Verwendung des Timeout werden nur Teile der Ressourcen beibehalten bis der Timeout abgelaufen ist. Das vollständige Skript wird beendet - nur der Teil der im "timeout" steht wird für eine spätere Abarbeitung vorgesehen. Wenn in diesem Fall das Skript ein 2. mal gestartet wird wenn der Timeout noch nicht abgelaufen ist sorgt das "stop Timeout" dafür das die "alte" Markierung zur späteren Abarbeitung entfernt wird bevor eine neu eingetragen wird.

              In diesem speziellen Fall hast Du damit wenig Probleme - auch mit dem Pause Baustein wird das Skript stabil laufen. Es geht da eher um die "best practice". Im Allgemeinen ist das arbeiten mit Timeouts und Events besser als mit Pausen da der gesamte ioBroker auf dem Prinzip der event-getriebenen asynchronen Abarbeitung aufsetzt.

              A.

              SLang77 1 Reply Last reply Reply Quote 1
              • SLang77
                SLang77 @Asgothian last edited by

                @asgothian sagte in Variablen bleiben gefüllt oder Variablen zurücksetzen:

                @slang-0 sagte in Variablen bleiben gefüllt oder Variablen zurücksetzen:

                Warum kein Timeout? Keine Ahnung... Wusste nicht dass das besser ist. Warum ist das besser?

                Das Stichwort für die Antwort ist "synchrone" und "asynchrone" Ausführung.

                Das Skript mit "Pause" ist synchron aufgebaut. Die Pause wartet 1 min. und blockiert die angeforderten Ressourcen bis es weiter geht. Sollte das Skript ein 2. mal gestartet werden wenn die Pause noch läuft so läuft dieses dann doppelt, da das erste Skript noch nicht beendet ist.

                Bei der Verwendung des Timeout werden nur Teile der Ressourcen beibehalten bis der Timeout abgelaufen ist. Das vollständige Skript wird beendet - nur der Teil der im "timeout" steht wird für eine spätere Abarbeitung vorgesehen. Wenn in diesem Fall das Skript ein 2. mal gestartet wird wenn der Timeout noch nicht abgelaufen ist sorgt das "stop Timeout" dafür das die "alte" Markierung zur späteren Abarbeitung entfernt wird bevor eine neu eingetragen wird.

                In diesem speziellen Fall hast Du damit wenig Probleme - auch mit dem Pause Baustein wird das Skript stabil laufen. Es geht da eher um die "best practice". Im Allgemeinen ist das arbeiten mit Timeouts und Events besser als mit Pausen da der gesamte ioBroker auf dem Prinzip der event-getriebenen asynchronen Abarbeitung aufsetzt.

                A.

                Hi,

                Vielen Dank für die ausführliche Erklärung. Stehe noch ganz am Anfang, damit kommt man aber weiter!

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

                Support us

                ioBroker
                Community Adapters
                Donate

                833
                Online

                32.0k
                Users

                80.5k
                Topics

                1.3m
                Posts

                3
                6
                213
                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