Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Anfängerfrage: Reihenfolge von Skriptausführung

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Anfängerfrage: Reihenfolge von Skriptausführung

    This topic has been deleted. Only users with topic management privileges can see it.
    • T
      ticaki Developer @Harald-ohne-Nummer last edited by ticaki

      @Harald-ohne-Nummer

      Für Ereignisse und Zeitplan stimmt das alles, aber natürlich wird bei
      a= 3+2
      a = a * 3
      die Reihenfolge eingehalten.

      Dein while(1) blockiert alles was danach kommt und ist ganz schlechter Stil. Nimm dafür Zeitplan oder Intervall

      Alles was du unter Trigger/Timeout findest läuft asynchron alles andere* synchron.

      *Funktionen(Reiter Funktionen) ohne Rückgabe sind asynchron, die mit synchron

      Aber natürlich laufen nur Programmfunktionen die aufgerufen werden und wenn du mit while (1) oder ähnlichem die Ausführung stoppst, werden sie nie gestartet.

      Einfaches Beispiel:

      1. Wenn es klingelt öffne die Tür
      2. Warte bis die Tür sich öffnet und dann tue ...

      jetzt drehe die unumstößlichen Befehle rum 🙂

      Da wäre es doch besser:

      1. Wenn es klingelt öffne die Tür
      2. Wenn die Tür sich öffnet tue ....
      paul53 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @ticaki last edited by

        @ticaki sagte: ist ganz schlechter Stil. Nimm dafür Zeitplan oder Intervall

        Auch eine zyklische Abfrage ist kein guter Stil. Besser prüft man, ob mind. alle 10 Minuten getriggert wird:

        Blockly_temp.JPG

        T 1 Reply Last reply Reply Quote 0
        • T
          ticaki Developer @paul53 last edited by ticaki

          @paul53
          Als Ersatz ist das guter Stil.

          Auf das Problem bezogen würde ich bei Erstellung des Telegramms prüfen, ob einer der Zeitstempel jünger als now() -10 Minuten ist. Hätte ich die Zeit vom letzten Telegram würde ich between prüfen. Mit der jetzigen Version sollte die Erstellung oder Versand des Telegrams den Wert auf false setzen und nicht ein Timer.

          H 1 Reply Last reply Reply Quote 0
          • H
            Harald-ohne-Nummer @ticaki last edited by

            Vielen Dank für Eure Rückmeldungen! Von Stil habe ich keine Ahnung 😊 , aber auf Basis Eurer Infos habe ich jetzt zwei Varianten, die beide funktionieren...

            2023-08-25_ZigBee-Aktualisierung_a.jpg

            oder

            2023-08-25_ZigBee-Aktualisierung_b.jpg

            Das ist dann beides ok?

            T 1 Reply Last reply Reply Quote 0
            • T
              ticaki Developer @Harald-ohne-Nummer last edited by ticaki

              @harald-ohne-nummer
              Ich hab damit nur ein Problem die Zeitlinie:

              0:00 Telegram nachricht
              0:01 Skript check
              0:08 Zigbee hat sich seit 10 Minuten nicht gemeldet
              0:10 Telegammnachricht
              0:01 Skript registriert Zigbee
              0:20 Telegrammnachricht 12 Minuten zu spät.

              nur zur Info: ein/dein Interval startet das erste mal nach 10 minuten und dann alle 10 Minuten

              H 1 Reply Last reply Reply Quote 0
              • H
                Harald-ohne-Nummer @ticaki last edited by

                @ticaki Für meinen Anwendungsfall ist es egal, ob der "Funkausfall" ein paar Minuten früher oder später bemerkt wird. Das ist ein Ereignis, das ohnehin nicht oder nur sehr selten vorkommen sollte und dessen Auswirkungen nicht kritisch sind. D.h. es reicht, wenn ich das dann ggf. ein paar Minuten "zu spät" bemerke.

                A 1 Reply Last reply Reply Quote 0
                • A
                  AXMLM @Harald-ohne-Nummer last edited by

                  Ich grabe das hier mal aus, da das Problem das gleiche ist. Die Reihenfolge der Aktionen unter einem Trigger läuft nicht sequenziell ab.

                  Ich habe einen Berechnungsscript in Blockly gebaut. Hier scheint es zu sein, dass die Berechnungsreihenfolge durcheinander läuft und der Volumetracker dadurch Fehlermeldungen produziert.

                  0_userdata.0.Benutzervariablen.Strom.Wert_Gespart wurde scheinbar resetet! Reset von 874.13 nach 874.11 passe alle Startwerte an
                  

                  hier ist der Blockly Block.

                  982be6ea-a09b-4480-aa85-50dcf48226f5-image.png

                  kann ich irgendwie Blockly dazu zwingen die Berechnungen nacheinander zu machen, oder macht er das eh und der Fehler liegt woanders?

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

                    @axmlm sagte: kann ich irgendwie Blockly dazu zwingen die Berechnungen nacheinander zu machen

                    Ja, verwende Variablen für Werte, die später wieder verwendet werden, denn "aktualisiere" wird asynchron ausgeführt, ist also beim Wiedereinlesen noch nicht fertig.

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

                      @paul53 said in Anfängerfrage: Reihenfolge von Skriptausführung:

                      @axmlm sagte: kann ich irgendwie Blockly dazu zwingen die Berechnungen nacheinander zu machen
                      Ja, verwende Variablen für Werte, die später wieder verwendet werden, denn "aktualisiere" wird asynchron ausgeführt, ist also beim Wiedereinlesen noch nicht fertig.

                      Meinst Du so?
                      ec8a0d0b-1484-4ad6-8142-ebe94ac4d43f-image.png
                      EDIT:

                      geht nicht:

                      
                      javascript.0	10:33:08.705	error	script.js.Strom.PV-Ertragswerte: getState has been called with id of type "number" but expects a string
                      javascript.0	10:33:08.706	error	script.js.Strom.PV-Ertragswerte: TypeError: Cannot read properties of undefined (reading 'val')
                      javascript.0	10:33:08.707	error	at Object.<anonymous> (script.js.Strom.PV-Ertragswerte:9:62)
                      
                      A 1 Reply Last reply Reply Quote 0
                      • A
                        AXMLM @AXMLM last edited by

                        jetzt läufts

                        a6453720-0a64-41fe-994b-94083bb0b97e-image.png

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

                          die Fehlermeldungen sind leider geblieben.

                          
                          valuetrackerovertime.0
                          2025-04-30 11:10:49.694	warn	0_userdata.0.Benutzervariablen.Strom.PV-Eigenverbrauch wurde scheinbar resetet! Reset von 3250.42 nach 3250.33 passe alle Startwerte an
                          
                          valuetrackerovertime.0
                          2025-04-30 11:10:49.693	warn	0_userdata.0.Benutzervariablen.Strom.Verbrauch_gesamt wurde scheinbar resetet! Reset von 9820.42 nach 9820.33 passe alle Startwerte an
                          
                          valuetrackerovertime.0
                          2025-04-30 11:10:49.691	warn	0_userdata.0.Benutzervariablen.Strom.Wert_Gewinn wurde scheinbar resetet! Reset von 1216.99 nach 1216.97 passe alle Startwerte an
                          
                          valuetrackerovertime.0
                          2025-04-30 11:10:49.689	warn	0_userdata.0.Benutzervariablen.Strom.Wert_Gespart wurde scheinbar resetet! Reset von 874.36 nach 874.34 passe alle Startwerte an
                          
                          valuetrackerovertime.0
                          2025-04-30 11:09:39.804	warn	0_userdata.0.Benutzervariablen.Strom.PV-Eigenverbrauch wurde scheinbar resetet! Reset von 3250.41 nach 3250.32 passe alle Startwerte an
                          
                          valuetrackerovertime.0
                          2025-04-30 11:09:39.801	warn	0_userdata.0.Benutzervariablen.Strom.Verbrauch_gesamt wurde scheinbar resetet! Reset von 9820.41 nach 9820.32 passe alle Startwerte an
                          
                          1 Reply Last reply Reply Quote 0
                          • First post
                            Last post

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          474
                          Online

                          31.7k
                          Users

                          79.7k
                          Topics

                          1.3m
                          Posts

                          8
                          27
                          1161
                          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