Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Programmablauf in Blockly sequenziell oder parallel?

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Programmablauf in Blockly sequenziell oder parallel?

    This topic has been deleted. Only users with topic management privileges can see it.
    • haus-automatisierung
      haus-automatisierung Developer Most Active @AXMLM last edited by

      @axmlm sagte in Programmablauf in Blockly sequenziell oder parallel?:

      Mein Verdacht ist, dass Blockly Schritt 2 vor 1 macht und so die Werte auseinander driften.

      Wenn Du zwei Trigger auf den gleichen Datenpunkt registrierst, ist es Zufall welcher zuerst ausgeführt wird. Wenn das voneinander abhängig ist, dann die Logik in einen Trigger.

      PS: Warum musst Du überhaupt so oft "nach Zahl" konvertieren? Liegen die Daten nicht im richtigen Format vor? Was ist der Datentyp der Datenpunkte?

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

        @axmlm
        Zusätzlich zu dem was @MartinP und @haus-automatisierung geschrieben haben:

        1. In einem Trigger muss man den Wert des triggernden State nicht nochmal lesen. Dazu gibt's den Block "Wert"
        2. Ich würde die Zwischenwerte in Variablen ablegen und mit denen weiterarbeiten. Spart dann auch mehrfaches Lesen des gleichen State. Außerdem liest sich das besser.

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

        A 1 Reply Last reply Reply Quote 0
        • A
          AXMLM last edited by

          @martinp said in Programmablauf in Blockly sequenziell oder parallel?:

          Wieso nutzt Du überhaupt zwei Trigger auf denselben Datenpunkt?

          Das ist eine gute Frage, ist historisch so gewachsen. Hab's tatsächlich nicht gemerkt. Ist jetzt geändert, Danke!

          Habe jetzt die Zählerauswertung und PV Auswertung in ein Blockly eingefügt (deshalb mal "steuere" und mal "aktualisiere") was denkst Du klappt das so, dass erst der Zähler ausgewertet wird und dann die Berechnung läuft? Ich wollte die Berechnung nicht nach Verbrauch triggern, dann dann aktualisiert es sich dauernd. Der Trigger nach dem Zählerstand, ist da etwas langsamer.

          ![0_1730197386581_chrome_X3a3Suoqjv.png](Uploading 0%)

          1 Reply Last reply Reply Quote 0
          • A
            AXMLM @Codierknecht last edited by

            Internet war kurz weg, jetzt ist alles was ich zuvor geschrieben habe weg. 😢

            Konvertiert, habe ich nur für alle Fälle, falls die Werte nicht als Zahl kommen. Kann man eigentlich weg lassen. Variable wollte ich nicht nutzen, da dann diese nur im Skript intern verwendbar ist und der Wert von Zwischenergebnis (mit meinen Kenntnissen) nicht sichtbar ist.

            Habe jetzt zwei Skripte zusammengefügt und den doppelten Trigger gelöscht. Die Berechnung möchte ich dennoch nicht nach aktuellem Zählerwert starten, sondern nach Zählerstand. Das ist deutlich seltener als der aktuelle Verbrauch.

            Melde mich wieder wenn Internet sich stabilisiert hat.

            Codierknecht 1 Reply Last reply Reply Quote 0
            • A
              AXMLM last edited by

              Internet war kurz weg, jetzt ist alles was ich zuvor geschrieben habe weg. 😢

              Konvertiert, habe ich nur für alle Fälle, falls die Werte nicht als Zahl kommen. Kann man eigentlich weg lassen. Variable wollte ich nicht nutzen, da dann diese nur im Skript intern verwendbar ist und der Wert von Zwischenergebnis (mit meinen Kenntnissen) nicht sichtbar ist.

              Habe jetzt zwei Skripte zusammengefügt und den doppelten Trigger gelöscht. Die Berechnung möchte ich dennoch nicht nach aktuellem Zählerwert starten, sondern nach Zählerstand. Das ist deutlich seltener als der aktuelle Verbrauch.

              Melde mich wieder wenn Internet sich stabilisiert hat.

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

                @axmlm sagte in Programmablauf in Blockly sequenziell oder parallel?:

                der Wert von Zwischenergebnis (mit meinen Kenntnissen) nicht sichtbar ist

                fdc2c0a6-512d-4977-af3e-58b2f91aec67-image.png
                Oder etwas ausführlicher:

                cb6e348b-d2b6-4761-a174-f32d48539a1b-image.png

                Für sowas Datenpunkte zu verbraten ist ineffizient.
                Es sei denn, man braucht die an anderer Stelle wirklich mal.

                1 Reply Last reply Reply Quote 1
                • A
                  AXMLM last edited by

                  oh je, jetzt sind 2 Posts doppelt und einer unvollständig.

                  1 Reply Last reply Reply Quote 0
                  • A
                    AXMLM last edited by AXMLM

                    So, jetzt mit dem Screenshot:

                    Konvertiert, habe ich nur für alle Fälle, falls die Werte nicht als Zahl kommen. Kann man eigentlich weg lassen. Variable wollte ich nicht nutzen, da dann diese nur im Skript intern verwendbar ist und der Wert von Zwischenergebnis (mit meinen Kenntnissen) nicht sichtbar ist.

                    Habe jetzt zwei Skripte zusammengefügt und den doppelten Trigger gelöscht. Die Berechnung möchte ich dennoch nicht nach aktuellem Zählerwert starten, sondern nach Zählerstand. Das ist deutlich seltener als der aktuelle Verbrauch.

                    auch habe ich Zählerauswertung und PV-Berechnungen in einen Skript reinkopiert. Deshalb der Mix aus "steuere" und "aktualisiere". Steuere hat bei der Zählerauswerrtung nicht funktioniert.

                    chrome_X3a3Suoqjv.png

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

                      @axmlm sagte in Programmablauf in Blockly sequenziell oder parallel?:

                      Deshalb der Mix aus "steuere" und "aktualisiere". Steuere hat bei der Berechnung nicht funktioniert.

                      Das ergibt keinen Sinn und kann nicht sein. Du weißt schon wie ioBroker arbeitet und was es mit dem „bestätigt“-Flag auf sich hat?

                      A 1 Reply Last reply Reply Quote 0
                      • A
                        AXMLM @haus-automatisierung last edited by AXMLM

                        @haus-automatisierung said in Programmablauf in Blockly sequenziell oder parallel?:

                        @axmlm sagte in Programmablauf in Blockly sequenziell oder parallel?:

                        Deshalb der Mix aus "steuere" und "aktualisiere". Steuere hat bei der Berechnung nicht funktioniert.

                        Das ergibt keinen Sinn und kann nicht sein. Du weißt schon wie ioBroker arbeitet und was es mit dem „bestätigt“-Flag auf sich hat?

                        Das weiß ich tatsächlich nicht. Fakt ist, das Steuere nicht funktioniert hat, und aktualisiere schon. Bin natürlich bei der Recherche auf "Flags" und "betätigt" gestoßen, habe es aber nicht verstanden.

                        EDIT: habe mein Post oben aktualisiert Steuere hat bei Auswertung des Zählers nicht funktioniert.

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

                          @axmlm aktualisieren schreibt den Wert (in eigene Datenpunkte) bestätigt.
                          Damit ist alles fertig.

                          steuere schreibt den Wert unbestätigt.
                          Das sagt dem Adapter der das Gerät steuert, dass es was zu tun gibt.
                          Wenn der mit der Steuerung fertig ist, setzt er drn Flag auf bestätigt.
                          Damit ist alles fertig

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

                            @axmlm sagte in Programmablauf in Blockly sequenziell oder parallel?:

                            Fakt ist, das Steuere nicht funktioniert hat, und aktualisiere schon.

                            Fakt ist, dass beide Trigger auf "egal" stehen und somit die Logik in jedem Fall ausgeführt wird.

                            Ist das nicht so, bitte ich um eine genaue Fehlerbeschreibung mit einem reproduzierbaren Beispiel, damit das gelöst werden kann.

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

                              @homoran said in Programmablauf in Blockly sequenziell oder parallel?:

                              @axmlm aktualisieren schreibt den Wert (in eigene Datenpunkte) bestätigt.
                              Damit ist alles fertig.

                              steuere schreibt den Wert unbestätigt.
                              Das sagt dem Adapter der das Gerät steuert, dass es was zu tun gibt.
                              Wenn der mit der Steuerung fertig ist, setzt er drn Flag auf bestätigt.
                              Damit ist alles fertig

                              Danke für die Erklärung, diese habe ich schon bei der Erstellung von meinem Skript so gelesen und nicht verstanden. Habe sie jetzt langsam gelesen, aber sorry verstanden habe ich es immer noch nicht. Bzw. den Sinn dieser Unterscheidung.

                              Bin aus der Mechaniker Ecke. Wenn Schraube fest ist, ist sie fest. Ich brauche keine Rückmeldung von der Schraube dass der Drehmomentschlüssel geklickt hat. Mir reicht, dass der Drehmomentschlüssel klickt. In der Programmierung ist es etwas anders, dort ist man viel detaillierter in den Schritten und prüft vieles nach.

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

                                @axmlm said in Programmablauf in Blockly sequenziell oder parallel?:

                                @haus-automatisierung said in Programmablauf in Blockly sequenziell oder parallel?:

                                @axmlm sagte in Programmablauf in Blockly sequenziell oder parallel?:

                                Deshalb der Mix aus "steuere" und "aktualisiere". Steuere hat bei der Berechnung nicht funktioniert.

                                Das ergibt keinen Sinn und kann nicht sein. Du weißt schon wie ioBroker arbeitet und was es mit dem „bestätigt“-Flag auf sich hat?

                                Das weiß ich tatsächlich nicht. Fakt ist, das Steuere nicht funktioniert hat, und aktualisiere schon. Bin natürlich bei der Recherche auf "Flags" und "betätigt" gestoßen, habe es aber nicht verstanden.

                                EDIT: habe mein Post oben aktualisiert Steuere hat bei Auswertung des Zählers nicht funktioniert.

                                alles gut, Logik wird ausgeführt. wie gesagt, mir laufen die berechnete Werte auseinander, aber ich weiß noch nicht warum. Mein erster Verdacht war, dass die Berechnung der Werte nach zufallsreihenfolge erfolgt. Wir haben jetzt geklärt, dass die Abarbeitung der Sequenzen innerhalb eines Triggers sequentiell erfolgt. Skript ist jetzt zusammengeführt und optimiert.

                                Als nächstes muss ich herausfinden, ob der Fehler im Skript, oder in der Berechnung liegt, oder ich einen Gedankenfehler habe.

                                1 Reply Last reply Reply Quote 0
                                • A
                                  AXMLM last edited by AXMLM

                                  Ich verstehe nicht, warum meine Berechnung die historische Werte ins negative verschiebt.

                                  der Richtige Wert ist 113€ das ist der Totale input an Geld über die gesamte laufzeit der Anlage.

                                  aber der Adapter schreibt bei Jahreswert und bei Monatswert 99€ und Start bei -13€. Die -13€ gehen weiter nach unten. Vor 3 Tagen standen da -5€ und das verstehe ich nicht.

                                  chrome_5Ghcf3S2fy.png

                                  1 Reply Last reply Reply Quote 0
                                  • A
                                    AXMLM last edited by

                                    Hier ist das Problem sichtbar

                                    Total ist kleiner als MOnat

                                    chrome_IxkugNXa7M.png

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

                                      @axmlm sagte in Programmablauf in Blockly sequenziell oder parallel?:

                                      Wenn Schraube fest ist, ist sie fest. Ich brauche keine Rückmeldung von der Schraube dass der Drehmomentschlüssel geklickt hat.

                                      wenn aber nur dein Kollege einen Drehmomentschlüssel hat, kannst du nur unkritische Schrauben festzurren.
                                      und du entscheidest selber alles ist fertig (ack=true)

                                      Bei kritischen Befestigungen rufst du den Kollegen (ack=false)
                                      Der nimmt den Drehmomentschlüssel bis es klickt
                                      Dann sagt er: alles ist fertig (ack=true)

                                      1 Reply Last reply Reply Quote 2
                                      • paul53
                                        paul53 @AXMLM last edited by

                                        @axmlm sagte:läuft aber irgendwie nicht rund.

                                        Kann es auch nicht, da Werte, die man in Datenpunkte schreibt, nicht gleich wieder eingelesen werden können, denn steuere / aktualisiere werden asynchron ausgeführt, sind also zum Zeitpunkt des Einlesens noch nicht fertig. Deshalb verwendet man Variablen.

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

                                        Support us

                                        ioBroker
                                        Community Adapters
                                        Donate

                                        744
                                        Online

                                        32.0k
                                        Users

                                        80.3k
                                        Topics

                                        1.3m
                                        Posts

                                        6
                                        20
                                        440
                                        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