Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Blockly wird unregelmäßig ausgeführt, kein Debug!

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Blockly wird unregelmäßig ausgeführt, kein Debug!

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

      Hallo zusammen,

      ich möchte hier ein Thema aufnehmen und um eure Hilfe bitten.
      ich habe seit längerem Probleme mit zwei meiner Blocklyscripte, da beide nicht konstant zuverlässig ausgeführt werden. Soll heißen, das mein Script trotz Cronschedule manchmal nicht ausgeführt wird und trotz Javascript Adapter im Debug keinerlei Meldungen zum geplanten Zeitpunkt angezeigt werden!

      Ich hatte bereits einen Thread bei github aufgemacht, ist laut @apollon77 aber eher kein Adapterproblem.
      Habe das Script hier aus dem Forum, wenn jemand einen Tipp hat um das Script zu vereinfachen um dadurch ggf Fehler zu vermeiden wäre ich sehr dankbar da ich noch ziemlich unerfahren darin bin.

      Verhalten:
      Script 1 soll alle Rollos bis auf Terrasse 6 Uhr zu 50% öffnen und 6:30 dann zu 100%, der erste Schritt wird immer ausgeführt, der zweite allerdings nicht. Keinerlei Output im Debuglog! Gerade habe ich den Teil von 6:30 nochmal auf 6:40 geändert und da werden die Rollos korrekt zu 100% geöffnet!
      1bbc8d25-a614-4b7c-9a3e-d388907c4137-grafik.png

      JS


      `var prozent, Intervall4;

      schedule("30 22 * * *", async function () {
      if (getState("lupusec.0.devices.RF:055b9110.status_ex").val == false) {
      setState("tuya.0.bf9bafec286e1c9621xe1a.1"/control/, 2);
      prozent = 92;
      Intervall4 = setInterval(async function () {
      prozent = (typeof prozent == 'number' ? prozent : 0) + -1;
      if (prozent <= 1) {
      (function () {if (Intervall4) {clearInterval(Intervall4); Intervall4 = null;}})();
      setState("tuya.0.bf9bafec286e1c9621xe1a.101"/switch_stop/, true);
      }
      }, 270);
      }
      });

      Script 2 soll Terrassenrollo Abends 22:30 herunterfahren, das klappt leider nur 2 von 10 mal, bisher konnte ich den Fehler nicht finden warum es oft nicht funktioniert. Wenn das Rollo 22:30 nicht geschaltet wird und ich das Script dann am selbern Abend zB 22:40 nochmal neu plane wird es heruntergefahren. Wenn das Script 22:30 nicht herunter gefahren wird erscheinen keinerlei Fehler, Warnungen oder Meldungen im DebugLog!
      08115266-e178-4ae4-9d24-aa699bacebe7-grafik.png

      JS


      var prozent, Intervall, Intervall2, Intervall3;

      schedule("0 6 * * *", async function () {
      // Rollos hoch
      if (getState("lupusec.0.status.mode_pc_a1").val == 0 && getState("javascript.0.scriptEnabled.User_created.Button_2").val == true) {
      setState("tuya.0.bf0b55acbece98f9328cfu.1"/control/, 0);
      setState("tuya.0.bf7b15a9d963396a54wsvj.1"/control/, 0);
      setState("tuya.0.bf35e6ae8de3acfa370t9x.1"/control/, 0);
      setState("tuya.0.67304186cc50e3726503.1"/status/, 0);
      setState("tuya.0.bf9481040b8a50341fyjjd.1"/control/, 0);
      setState("tuya.0.bf9bafec286e1c9621xe1a.1"/control/, 0);
      setState("tuya.0.bfc2615e46b03c8c69og9w.1"/control/, 0);
      prozent = 50;
      Intervall = setInterval(async function () {
      prozent = (typeof prozent == 'number' ? prozent : 0) + -1;
      if (prozent <= 0) {
      (function () {if (Intervall) {clearInterval(Intervall); Intervall = null;}})();
      // Rollos stop
      setState("tuya.0.bf0b55acbece98f9328cfu.1"/control/, 1);
      setState("tuya.0.bf7b15a9d963396a54wsvj.1"/control/, 1);
      setState("tuya.0.bf35e6ae8de3acfa370t9x.101"/switch_stop/, true);
      setState("tuya.0.67304186cc50e3726503.1"/status/, 2);
      setState("tuya.0.bf9481040b8a50341fyjjd.101"/switch_stop/, true);
      setState("tuya.0.bf9bafec286e1c9621xe1a.1"/control/, 1);
      setState("tuya.0.bfc2615e46b03c8c69og9w.101"/switch_stop/, true);
      }
      }, 200);
      }
      });
      // Rollos auf 100% wenn unscharf
      schedule("40 6 * * *", async function () {
      if (getState("lupusec.0.status.mode_pc_a1").val == 0 && getState("javascript.0.scriptEnabled.User_created.Button_2").val == true) {
      setState("tuya.0.bf0b55acbece98f9328cfu.1"/control/, 0);
      setState("tuya.0.bf7b15a9d963396a54wsvj.1"/control/, 0);
      setState("tuya.0.bf35e6ae8de3acfa370t9x.1"/control/, 0);
      setState("tuya.0.67304186cc50e3726503.1"/status/, 0);
      setState("tuya.0.bf9481040b8a50341fyjjd.1"/control/, 0);
      setState("tuya.0.bf9bafec286e1c9621xe1a.1"/control/, 0);
      setState("tuya.0.bfc2615e46b03c8c69og9w.1"/control/, 0);
      prozent = 100;
      Intervall2 = setInterval(async function () {
      prozent = (typeof prozent == 'number' ? prozent : 0) + -1;
      if (prozent <= 0) {
      (function () {if (Intervall2) {clearInterval(Intervall2); Intervall2 = null;}})();
      // Rollos stop
      setState("tuya.0.bf0b55acbece98f9328cfu.1"/control/, 1);
      setState("tuya.0.bf7b15a9d963396a54wsvj.1"/control/, 1);
      setState("tuya.0.bf35e6ae8de3acfa370t9x.101"/switch_stop/, true);
      setState("tuya.0.67304186cc50e3726503.1"/status/, 2);
      setState("tuya.0.bf9481040b8a50341fyjjd.101"/switch_stop/, true);
      setState("tuya.0.bf9bafec286e1c9621xe1a.1"/control/, 1);
      setState("tuya.0.bfc2615e46b03c8c69og9w.101"/switch_stop/, true);
      }
      }, 190);
      }
      });
      // Rollos Abends runter
      schedule({astro: "sunset", shift: 30}, async function () {
      setState("tuya.0.bf0b55acbece98f9328cfu.1"/control/, 2);
      setState("tuya.0.bf7b15a9d963396a54wsvj.1"/control/, 2);
      setState("tuya.0.67304186cc50e3726503.1"/status/, 1);
      setState("tuya.0.bf9481040b8a50341fyjjd.1"/control/, 2);
      setState("tuya.0.bfc2615e46b03c8c69og9w.1"/control/, 2);
      setState("tuya.0.bf35e6ae8de3acfa370t9x.1"/control/, 2);
      prozent = 85;
      Intervall3 = setInterval(async function () {
      prozent = (typeof prozent == 'number' ? prozent : 0) + -1;
      if (prozent <= 0) {
      (function () {if (Intervall3) {clearInterval(Intervall3); Intervall3 = null;}})();
      // Rollos stop
      setState("tuya.0.bf0b55acbece98f9328cfu.1"/control/, 1);
      setState("tuya.0.bf7b15a9d963396a54wsvj.1"/control/, 1);
      setState("tuya.0.67304186cc50e3726503.1"/status/, 2);
      setState("tuya.0.bf9481040b8a50341fyjjd.101"/switch_stop/, true);
      setState("tuya.0.bfc2615e46b03c8c69og9w.101"/switch_stop/, true);
      setState("tuya.0.bf35e6ae8de3acfa370t9x.1"/control/, 1);
      }
      }, 190);
      });

      1;

      true;

      Versions:

      Adapter version: Javascript Adapter 5.7.0
      JS-Controller version: 4.0.23
      Node version: 14.19.3
      Operating system: Debian
      

      Iobroker läuft in einer Debian VM auf einem IntelNuc host mit Proxmox

      Danke!

      apollon77 Asgothian 2 Replies Last reply Reply Quote 0
      • apollon77
        apollon77 @benziman last edited by

        @benziman Also wie bereits auf Github gesagt würde ich die Skripte erstmal vereinfachen in dem dieses Intervall wegkomm. Das macht nix anderes wie sehr kompliziert ein Delay von x*230ms ... Rechnen und einfach das zweite setState mit Verzögerung und dann den Wert angeben.

        1 Reply Last reply Reply Quote 0
        • B
          benziman last edited by benziman

          @apollon77

          das habe ich jetzt nicht ganz genau verstanden sorry
          du meinst das hier oder? Damit fährt er das Rollo herunter und wie stoppe ich das wieder? oder verseteh ich das mit dem delay falsch?
          de6160cb-3466-48ef-9146-fdc678045450-grafik.png

          so vllt?
          e63ee580-881b-4176-9449-c0c445483f55-grafik.png
          0 fährt Rollo hoch, 1 stoppt Rollo nach 92*230ms (21160ms)

          T paul53 2 Replies Last reply Reply Quote 0
          • T
            TT-Tom @benziman last edited by

            @benziman

            nur mal so gefragt, steht um 06:00 bzw um 22:30 kein Start des Script im Log?

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

              @benziman sagte: so vllt?

              Ja, wenn es bei 50 % (= 10 s?) gestoppt werden soll. Wenn es auf 100 % gefahren werden soll, ist normalerweise kein Stoppen nötig.
              Liefern die Rollos keine Position in einem Datenpunkt?

              B 2 Replies Last reply Reply Quote 0
              • B
                benziman @paul53 last edited by

                @paul53

                nein leider nicht, ich kann nur die Zeit definieren wann die Taster wieder stoppen, einen DP für den aktuellen Prozentstand haben die nicht.

                1 Reply Last reply Reply Quote 0
                • B
                  benziman @TT-Tom last edited by

                  @tt-tom

                  nur das was oben zu sehen ist, komisch ist halt, das es ja manchmal funktioniert. Wenn er das Rollo mal nicht schaltet und ich dann die Zeit auf aktuelle Zeit + 5min ändere startet das Script ja.

                  T 1 Reply Last reply Reply Quote 0
                  • T
                    TT-Tom @benziman last edited by TT-Tom

                    @benziman

                    wenn ich dich richtig verstehe, startet das Script erst garnicht oder startet es und es wird nur nicht geschaltet?

                    ich vermute mal das die Tuya nicht schnell genug reagiert und du schon wieder alles Stoppst.

                    Bau mal debug Meldungen dazwischen um zu sehen was passiert.

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

                      so, habe jetzt alle meine Scripte umgebaut, erster Test bei einem Rollo hat funktioniert. Ich teste das heute Abend.
                      Danke schonmal für den Input an alle!

                      67e63466-e21e-4945-a16e-21d7a5e2d50a-grafik.png

                      ? BananaJoe 2 Replies Last reply Reply Quote 0
                      • ?
                        A Former User @benziman last edited by A Former User

                        @benziman was ist eigentlich Button_2? Ist wohl keine Hardware, bzw wer schaltet Button_2 schon auf wahr.

                        1 Reply Last reply Reply Quote 0
                        • BananaJoe
                          BananaJoe Most Active @benziman last edited by

                          @benziman Offtopic:
                          ich empfinde es immer als Problem wenn man wie bei dir im Screenshot die einzelnen Datenpunkte gar nicht mehr unterscheiden kann. Man könnte nun vor jeden Block einen Kommentar packen.
                          Ich nehme gern die andere Variante:

                          c478b808-1fa6-458a-b30a-59855ea887ca-image.png

                          Bei dem Block kann man den Datenpunkt auswählen - dann sieht es genauso aus wie bisher - oder ein Textfeld ankoppeln und den Pfad da rein kopieren.

                          Per Rechtsklick kann man noch zwischen "internen" und "externen" Eingängen umschalten - die Ansicht aus dem Bild ist "extern"

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

                            @bananajoe sagte: Man könnte nun vor jeden Block einen Kommentar packen.

                            ... oder die Namen der Datenpunkte editieren.

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

                              @benziman dumme frage ? Hast du den haken bei "alle States bei adapterstart abonnieren" im JS adapter gesetzt ? Wenn nein dann hast du ggf. ein race-condition problem, bei dem der im Skript genutzte wert eines Datenpunktes nicht dem entspricht wie er intern gesetzt ist.

                              Das könnte erklären warum z.Bsp. das herunterfahren um 22:30 nur manchmal geht, aber bei einem weiteren Versuch um 22:40 immer.

                              A.

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

                                @asgothian sagte: Hast du den haken bei "alle States bei adapterstart abonnieren" im JS adapter gesetzt ?

                                Ohne den Haken würden Error-Logs bei Verwendung von "Wert vom Objekt ID ..." generiert.

                                B 1 Reply Last reply Reply Quote 1
                                • B
                                  benziman @paul53 last edited by

                                  @paul53

                                  habe eine Debugzeile mit in mein Script aufgenommen, warum auch immer wurde mir im Livelog aber wieder nichts angezeigt, im Logfile von heute habe ich den Fehler aber gefunden. Ich hatte wegen häufiger Tuyaprobleme den Adapter alle 30Min neu gestartet per Cron, das erklärt auch warum das Script mal geht und mal nicht... -.-

                                  mal schauen ob das die nächsten Tage stabil funktioniert, danke an alle Helfer vor allem auch für die Scriptvereinfachung!

                                  apollon77 1 Reply Last reply Reply Quote 0
                                  • apollon77
                                    apollon77 @benziman last edited by

                                    @benziman sagte in Blockly wird unregelmäßig ausgeführt, kein Debug!:

                                    Ich hatte wegen häufiger Tuyaprobleme den Adapter alle 30Min neu gestartet per Cron,

                                    Halb off topic hier ... welche Probleme denn? Auchmit den aktuellsten Versionen? Sind nämlich keine Probeme bekannt

                                    B 1 Reply Last reply Reply Quote 0
                                    • B
                                      benziman @apollon77 last edited by

                                      @apollon77

                                      hing mit dem Tasterzusammen da ich immer wieder timeouts hatte, habe die Rollotaster jetzt ersetzt und keine Probleme.

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

                                      Support us

                                      ioBroker
                                      Community Adapters
                                      Donate

                                      686
                                      Online

                                      32.0k
                                      Users

                                      80.5k
                                      Topics

                                      1.3m
                                      Posts

                                      7
                                      17
                                      679
                                      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