Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Wie paralleles Ausführen verhindern?

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    Wie paralleles Ausführen verhindern?

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

      Hallo Community,

      ich habe in einem Script mehrere Trigger. Ich möchte jedoch verhindern, dass verschiedene Trigger mehrere Instanzen des Scripts parallel starten. Wenn eine Script-Instanz bereits läuft und ein weiterer Trigger auslöst, so soll keine neue Script-Instanz gestartet werden.

      Wie kann man das umsetzen?

      Danke und Gruß
      somethingcreator

      souly75 paul53 2 Replies Last reply Reply Quote 0
      • souly75
        souly75 @somethingcreator last edited by souly75

        @somethingcreator hallo,
        zeige doch mal bitte das Script. normalerweise wird das Script nur einmal gestartet bei auslösen eines Triggers. sind ja "oder" Auslöser.

        1 Reply Last reply Reply Quote 0
        • paul53
          paul53 @somethingcreator last edited by paul53

          @somethingcreator sagte: ein weiterer Trigger auslöst, so soll keine neue Script-Instanz gestartet werden.

          Es werden keine Skript-Instanzen neu gestartet, sondern die Trigger werden in der Reihenfolge ihres Auftretens innerhalb des Skriptes ausgelöst und die jeweils programmierten Aktionen ausgeführt.
          Soll der zuerst auftretende Trigger das Auslösen weiterer Trigger innerhalb einer bestimmten Zeit verhindern, dann muss man eine Timer-Sperre verwenden. Prinzip:

          Blockly_temp.JPG

          EDIT: Liefern die Trigger-DP zeitlich zusammenhängende Werte (aus einer Instanz), die ausgewertet werden sollen, muss man auf den letzten Trigger warten.

          Blockly_temp.JPG

          1 Reply Last reply Reply Quote 0
          • S
            somethingcreator last edited by

            danke für die Hinweise. Ich verstehe nun die Funktionsweise der Script-Ausführung besser. Ich habe auch nun eine Lösung mit einer Sperrvariable, die auf ersten Blick gut funktioniert. Startet das Script, wird die Sperrvariable auf "true" gesetzt. Nach Beendigung auf "false". Alle Trigger-Auslösungen bei "true" werden abgebrochen.

            1 Reply Last reply Reply Quote 0
            • Homoran
              Homoran Global Moderator Administrators last edited by

              @somethingcreator Könntest du bitte dein Skript zeigen!
              Es kommt ja vielleicht auf Feinheiten an, ob und was geblockt werden muss

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

                @homoran
                Hier zwei Trigger als Beispiele, es gibt noch mehr
                Screenshot 2024-08-19 182009.png

                Hier die Logik beim Start der Hauptroutine:
                Screenshot 2024-08-19 182048.png

                Hier wird die Sperre nach Ausführung aufgehoben.
                Screenshot 2024-08-19 182125.png

                Homoran 1 Reply Last reply Reply Quote 0
                • Homoran
                  Homoran Global Moderator Administrators @somethingcreator last edited by Homoran

                  @somethingcreator sagte in Wie paralleles Ausführen verhindern?:

                  Hier zwei Trigger als Beispiele, es gibt noch mehr

                  gut dass du es zeigst!
                  das ist ja was anderes!

                  du hast zwei unabhängige Skripte, die die selbe Funktion aufrufen in einem Blockly.

                  Also nicht zwei triggernde Datenpunkte an einem Skript

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

                    @homoran ich habe noch weitere triggernde Datenpunkte. Kannst Du bitte erklären, was jetzt anders ist bei der Ausführung je Trigger? Es ist mir klar, dass die Lösung nicht ganz robust ist. Wenn sich z.B. das Setzen der Sperrvariable verheddert, wird das Script nicht laufen. Ist aber erstmal der Anfang. Kann man es besser/anders lösen?

                    paul53 1 Reply Last reply Reply Quote 0
                    • paul53
                      paul53 @somethingcreator last edited by paul53

                      @somethingcreator sagte: Kann man es besser/anders lösen?

                      Wozu soll der 5-Minuten-Trigger gut sein?
                      Übrigens: Eine Funktion ohne Timer wird nicht durch einen neuen Trigger unterbrochen, sondern sie wird bis zu Ende ausgeführt, bevor der neue Trigger sie erneut startet.

                      S 1 Reply Last reply Reply Quote 0
                      • S
                        somethingcreator @paul53 last edited by

                        @paul53 sagte in Wie paralleles Ausführen verhindern?:

                        Übrigens: Eine Funktion ohne Timer wird nicht durch einen neuen Trigger unterbrochen, sondern sie wird bis zu Ende ausgeführt, bevor der neue Trigger sie erneut startet.

                        Das kann ich in meinen Tests nicht bestätigen. Jeder Trigger ob Timer oder Datenpunkt lässt die Hauptroutine sofort starten. Unabhängig davon, ob diese zu Ende gelaufen ist.

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        401
                        Online

                        31.9k
                        Users

                        80.2k
                        Topics

                        1.3m
                        Posts

                        4
                        10
                        419
                        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