Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Buttons triggern Script -> wie resetten?

    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

    Buttons triggern Script -> wie resetten?

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

      Hallo zusammen,

      ich habe eine VIS mit 4 Buttons, die einen String in einen DP schreiben.
      Nun möchte ich nach drücken einer der Buttons den DP per Blockly auswerten und entsprechende Aktionen ausführen.

      Soweit klappt alles wunderbar, das Script startet führt aus und am Ende resette ich den DP wieder mit Null
      Dann startet das Script wieder von vorne....

      Folgende Gedanken:
      Ich könnte natürlich nach dem Trigger (on(DP....) eine WENN Abfrage setzen auf nicht null....
      Dann wird aber das Script trotzdem 2x durchlaufen (beim 2. mal eben nur kurz)

      gibt es eine intelligentere Lösung?

      VG Michael

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

        @mottimuc sagte in Buttons triggern Script -> wie resetten?:

        gibt es eine intelligentere Lösung?

        dazu müsste man die unintelligente Lösung kennen!

        bitte Blockly zeigen

        M 1 Reply Last reply Reply Quote 1
        • Asgothian
          Asgothian Developer @Mottimuc last edited by Asgothian

          @mottimuc die intelligente Lösung:
          Da wo du das Skript auslösen willst nutzt du „steure“ , also setzen ohne acknowlege.
          Das ist soweit ich weiß aus den Visualisierungen Standard.

          Im trigger dann auch „steure“ zur Auslösung fordern

          Beim zurücksetzen einfach mit ack=true ( oder aktualisieren in blocky ) nutzen. Dann löst das das Skript nicht aus.

          A.
          Nachtrag zum Probieren. Das folgende Skript löst keine Endlosschleife aus, obwohl im Trigger der Datenpunkt geändert wird auf den getriggert wurde. Grund dafür ist die rot umrandete Einstellung
          Screenshot 2024-10-22 at 14.14.53.png

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

            @homoran
            Hier die View, die Einstellung des Buttons und die Abfrage im Blockly:

            22-10-2024_17-20-54.jpg

            22-10-2024_17-21-23.jpg

            22-10-2024_17-22-17.jpg

            Ich habe einen DP(STR) in den die 4 Buttons jeweils andere Buchstaben schreiben werden.
            Das Blockly soll bei Änderung / Aktualisierung des DP starten und dann über einen Switch entscheiden was getan wird.
            Da da einige längere, aber ähnliche Workflows dahinter liegen, möchte ich aus dem Blockly raus andere Scripte aufrufen und am Ende das Formular resetten. Also Werte Nullen und den DP bttn_VALUE auf NULL setzen.

            Grundsätzliche Frage:
            Hier im Forum wird die Methode über den Trigger DP das Script zu starten positiv bewertet.
            Daher vermute ich, dass es eben auch einen Best-Case geben muss.... oder?

            paul53 2 Replies Last reply Reply Quote 0
            • M
              Mottimuc @Asgothian last edited by

              @asgothian sagte in Buttons triggern Script -> wie resetten?:

              Da wo du das Skript auslösen willst nutzt du „steure“ , also setzen ohne acknowlege

              geht leider nicht, in den MDW Widgets sehe ich die Option nicht? oder bin ich blind?

              VG M

              PS: ich hab zuerst geschaut, ob ich das in VIS 2 umsetzen möchte. Da hier aber weder eine vernünftige Doku vorliegt, noch der Funktionsumfang der Material Design Widgets gegeben ist, verzichte ich darauf.

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

                @mottimuc sagte: Also Werte Nullen und den DP bttn_VALUE auf NULL setzen.

                Wozu soll das gut sein? Das ist bei Trigger auf "wurde aktualisiert" nicht nötig.

                @mottimuc sagte in Buttons triggern Script -> wie resetten?:

                Methode über den Trigger DP das Script zu starten positiv bewertet.

                Du setzt aber keinen DP zum Triggern, sondern du startest Skripte, was nicht zu empfehlen ist.
                Packe besser den Inhalt zu startenden Skripte in Funktionen.

                Blockly_temp.JPG

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

                  @paul53 sagte in Buttons triggern Script -> wie resetten?:

                  Du setzt aber keinen DP zum Triggern, sondern du startest Skripte, was nicht zu empfehlen ist.

                  Hi Paul,

                  sorry, kannst Du mich bitte aufklären?
                  Ich dachte eben, genauso wäre es gut, da nur kompiliert wird, wenn benötigt?
                  Wie wäre es Ideal?
                  Das JS in die VIS packen? Oder die weiteren Prozessschritte in Funktionen und diese aus dem Trigger raus ausrufen?
                  (Sorry, ich bin noob)

                  ja, mit wurde aktualisiert hatte ich mir fast gedacht, war mir aber nicht sicher, ob das auch so wäre, wenn derselbe Button 2 mal gedrückt werden sollte.... daher der Gedanke mit dem "null"-setzen.

                  Ich habe nun die Variante von Asgothian getestet, die würde gehen.
                  (ich gestehe aber, dass ich den Hintergrund zwischen bestätigter und unbestätigter Änderung von DPs mir noch aneignen muss...)

                  Danke vorab!

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

                    @mottimuc sagte: da nur kompiliert wird, wenn benötigt?

                    Ja, es wird bei jedem Skriptstart kompiliert - was unnötig Ressourcen zur Laufzeit verbraucht. Im anderen Falle werden alle Skripte nur einmal bei Start der Javascript-Instanz kompiliert.

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

                      @mottimuc sagte: Hier die View

                      Wie unterscheidest du "clear" von "cancel"?

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

                        @paul53
                        das habe ich auch vorhin gemerkt 🙄
                        Clear heißt nun refresh....

                        VG M

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

                          @mottimuc sagte: Clear heißt nun refresh....

                          Ich habe es mal mit L (wie LÖSCHEN) kodiert.

                          Blockly_temp.JPG

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

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          865
                          Online

                          31.9k
                          Users

                          80.1k
                          Topics

                          1.3m
                          Posts

                          4
                          11
                          428
                          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