Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. (gelöst) Schleife nur einmal ausführen

    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

    (gelöst) Schleife nur einmal ausführen

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

      Hallo,
      ich habe hier ein Testskript welches startet, wenn ein Wert größer als 50 ist und in eine Schleife führt, die beendet wird, wenn der Wert kleiner 50 ist:

      0c8bca89-b8cb-4790-aaed-36de505b4ab2-image.png

      Der Wert ändert sich öfters im Bereich größer 50. Dann startet das Skript bzw die Schleife jedesmal neu.
      Ich möchte aber, dass die Schleife nur einmal gestartet wird und endet, wenn der Wert kleiner 50 ist.
      Ist das möglich?

      Gruß
      Kimchi

      haus-automatisierung 1 Reply Last reply Reply Quote 0
      • haus-automatisierung
        haus-automatisierung Developer Most Active @Kymchy last edited by

        @kymchy sagte in Schleife nur einmal ausführen:

        Ich möchte aber, dass die Schleife nur einmal gestartet wird und endet, wenn der Wert kleiner 50 ist.

        Dann erstell eine Variable, welche z.B. während der Ausführung auf true gesetzt wird und im Trigger geprüft wird, ob die Logik gerade schon einmal läuft.

        K 1 Reply Last reply Reply Quote 1
        • K
          Kymchy @haus-automatisierung last edited by

          @haus-automatisierung wie prüfe ich denn im Trigger, ob die Variable beispielsweise auf true steht?

          haus-automatisierung 1 Reply Last reply Reply Quote 0
          • haus-automatisierung
            haus-automatisierung Developer Most Active @Kymchy last edited by

            @kymchy Falls <variable> - genau wie deine andere Prüfung. Kannst auch ein und draus machen.

            Also Wert > 50 UND Variable.

            K 1 Reply Last reply Reply Quote 0
            • K
              Kymchy @haus-automatisierung last edited by Kymchy

              @haus-automatisierung aber die Variable ist beim ersten Durchlauf undefined und vor der Schleife setzen kann ich sie ja schlecht...also über einen Datenpunkt?

              Codierknecht 1 Reply Last reply Reply Quote 0
              • Codierknecht
                Codierknecht Developer Most Active @Kymchy last edited by

                @kymchy sagte in Schleife nur einmal ausführen:

                aber die Variable ist beim ersten Durchlauf undefined

                Dann setze sie beim Start des Script auf false

                K 1 Reply Last reply Reply Quote 0
                • K
                  Kymchy @Codierknecht last edited by

                  @codierknecht das Skript wird doch bei einer Änderung des Wertes über 50 neu gestartet, während die andere Schleife noch läuft. So klappt das doch nicht.

                  Codierknecht haus-automatisierung 2 Replies Last reply Reply Quote 0
                  • Codierknecht
                    Codierknecht Developer Most Active @Kymchy last edited by Codierknecht

                    @kymchy
                    766dbea7-3d6f-423c-9d48-f75b38916a53-image.png

                    das Skript wird doch ... neu gestartet

                    Ein Script wird in der Regel 1x gestartet und läuft dann bis zum Sanktnimmerleinstag.
                    Es "reagiert" mit den Triggern auf Ereignisse. Da wird nix gestartet oder gestoppt.

                    https://forum.iobroker.net/topic/70481/blockly-for-dummies-starthilfe-und-tipps

                    1 Reply Last reply Reply Quote 2
                    • haus-automatisierung
                      haus-automatisierung Developer Most Active @Kymchy last edited by haus-automatisierung

                      @kymchy sagte in Schleife nur einmal ausführen:

                      das Skript wird doch bei einer Änderung des Wertes über 50 neu gestartet

                      Das Script wird nicht neugestartet. Nur der Inhalt des Triggers wird erneut ausgeführt...
                      Schau am besten die Grundlagen des JavaScript-Adapters in Ruhe an.

                      Sieh Lösung von @Codierknecht (danke fürs Beispiel zusammenklicken!)

                      K 1 Reply Last reply Reply Quote 0
                      • K
                        Kymchy @haus-automatisierung last edited by

                        @haus-automatisierung ich habe es jetzt so und es funktioniert nicht wie gewünscht.

                        a6ac5ce2-1000-42a5-8280-cb1fbcaf3411-image.png

                        Homoran haus-automatisierung Codierknecht 3 Replies Last reply Reply Quote 0
                        • Homoran
                          Homoran Global Moderator Administrators @Kymchy last edited by Homoran

                          @kymchy sagte in Schleife nur einmal ausführen:

                          es funktioniert nicht wie gewünscht.

                          sondern wie?

                          der block serze variable auf falsch muss ja auch über den Trigger

                          K 1 Reply Last reply Reply Quote 0
                          • haus-automatisierung
                            haus-automatisierung Developer Most Active @Kymchy last edited by

                            @kymchy Naja wenn Du bei jedem Trigger-Aufruf den Wert zurücksetzt, hast Du an der Logik ja auch nichts geändert. Außerhalb deklarieren, innerhalb nur entsprechend zurücksetzen.

                            @Codierknecht hat doch ein super Beispiel gebaut.

                            1 Reply Last reply Reply Quote 0
                            • Codierknecht
                              Codierknecht Developer Most Active @Kymchy last edited by

                              @kymchy
                              Nimm statt "Wert von Example.State" einfach den Baustein "Wert" (siehe Beispiel).
                              Den Wert des triggernden DP nochmal zu lesen ist ineffizient.

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

                                @homoran habe meinen Fehler vermutlich gefunden, die Variable muss vor dem Trigger gesetzt werden.

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

                                  @kymchy sagte in Schleife nur einmal ausführen:

                                  @homoran habe meinen Fehler vermutlich gefunden, die Variable muss vor dem Trigger gesetzt werden.

                                  ja

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

                                    @homoran das vergesse ich jedesmal, bei mir hat sich fälschlicherweise eingebrannt, dass der Trigger immer das Erste ist...daher kam ich auch nicht weiter.
                                    Herzlichen Dank.

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

                                      @kymchy sagte in Schleife nur einmal ausführen:

                                      bei mir hat sich fälschlicherweise eingebrannt, dass der Trigger immer das Erste ist

                                      Das gilt auch für den normalen Ablauf.
                                      Was über dem Trigger steht wird nur einmalig bei Skriptstart ausgeführt.

                                      und wie bereits von anderen geschrieben ist Triggern nicht Skriptstart

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

                                        @homoran yo, wieder einiges gelernt...

                                        1 Reply Last reply Reply Quote 0
                                        • Codierknecht
                                          Codierknecht Developer Most Active @Kymchy last edited by

                                          @kymchy
                                          Lies Dir nochmal die Grundlagen durch.

                                          https://forum.iobroker.net/topic/70481/blockly-for-dummies-starthilfe-und-tipps
                                          https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/blockly.md

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

                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          482
                                          Online

                                          31.8k
                                          Users

                                          80.0k
                                          Topics

                                          1.3m
                                          Posts

                                          4
                                          19
                                          595
                                          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