Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. maximum of 1000 setState during boot

    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

    maximum of 1000 setState during boot

    This topic has been deleted. Only users with topic management privileges can see it.
    • P
      peterfido @Homoran last edited by peterfido

      @homoran Steht in der ersten Zeile meines Logs. Mein System ist mit node 18.20.2 aktueller.

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

        @peterfido

        mit der gerade gefundenen Antwort
        @hschief sagte in maximum of 1000 setState during boot:

        @thomas-braun said in maximum of 1000 setState during boot:

        iob nodejs-update

        Update durchgeführt, aktuelle Version ist jetzt: v.18.20.2, Fehler ist aber auch nach dem Update da.

        seid ihr also was diese Versionen angeht, identisch!
        Sehr gut.

        P H 2 Replies Last reply Reply Quote 0
        • P
          peterfido @Homoran last edited by

          @homoran Evtl. nützlich: Meine iobroker sind VMs unter proxmox. Die Uhren stehen auf Host.

          1 Reply Last reply Reply Quote 0
          • H
            hschief @Homoran last edited by

            @homoran ich hatte die Version ja auf anraten hochgezogen, mir ist aber gestern bei der Erstellung des Issues im Debug Log folgendes aufgefallen, was auch durch dein Log hier nochmals bestätigt wird:

            Mein Log fängt direkt mit den Meldungen der Function an und nicht mit der Initialisierung des Javascript Adapters. Jetzt kann es natürlich sein, dass Meldungen auf meinem System nur einfach zeitlich vorher in den Log kommen. Ich vermute aber eher, dass der Adapter aus irgendeinem Grund noch nicht vollständig gestartet ist,

            Shutdown at 13:55:35 -> Boot at 13:59:24
            2024-04-17 13:55:35.534 - ^[[32minfo^[[39m: javascript.0 (2626) terminating
            2024-04-17 13:59:24.355 - ^[[31merror^[[39m: javascript.0 (953) script.js.Technik.Heizung.BootTestScript: In Function
            2024-04-17 13:59:24.410 - ^[[31merror^[[39m: javascript.0 (953) script.js.Technik.Heizung.BootTestScript: In Function
            2024-04-17 13:59:24.441 - ^[[31merror^[[39m: javascript.0 (953) script.js.Technik.Heizung.BootTestScript: In Function
            2024-04-17 13:59:24.475 - ^[[31merror^[[39m: javascript.0 (953) script.js.Technik.Heizung.BootTestScript: In Function
            2024-04-17 13:59:24.492 - ^[[31merror^[[39m: javascript.0 (953) script.js.Technik.Heizung.BootTestScript: In Function

            Vielen Dank fürs testen, somit scheint es kein allgemeiner Fehler sondern eher eine ganz spezielles Zusammenspiel beim booten zu sein. Kann man irgendwo die Reihenfolge der Adapter beim Starten vorgeben?

            W paul53 2 Replies Last reply Reply Quote 0
            • W
              Wildbill @hschief last edited by

              @hschief Ich habe mir angewöhnt, bei einem Neustart des iobroker (also vor dem Reboot nach Kernel-Updates beispielsweise, oder wenn der js-controller ein Update bekommt) einfach vor dem Beenden selbstständig bestimmte Adapter anzuhalten. Bei mir sind das javascript, Sourceanalytix und devicewatcher. Die starte ich dann erst manuell, wenn die restlichen Adapter wieder laufen. Javascript, da anonsten diverse Scripte mit falschen Werten laufen würden, da manche Adapter hier vor dem Start manchmal „falsche“ Werte anzeigen, Sourceanalytix aus demselben Grund, weil beispielsweise Homematic-Stecker mit Strimmessung hier kurz auf 0 springen und der device-watcher, weil sonst Meldungen über viele Offline-Geräte kommen, weil die jeweiligen Adapter eben noch nicht gestartet sind und deren Geräte teilweise bei alive auf false stehen würden.

              Hat sich bewährt bei mir. Ob sich das irgendwie automatisieren lässt, so dass man eine Reihenfolge für Adapterstarts (selbst) einstellen kann, weiss ich nicht. Ich meine, mal gelesen zu haben, dass der Adapter-Ersteller hier zumindest selbst Abhängigkeiten hingterlegen kann, so dass voneinander abhängige Adapter/Instanzen in korrekter Reihenfolge starten.
              Ungeplante Neustarts von iobroker kommen bei mir höchstens mal vor, wenn ein Stromausfall länger dauert, die USVs leer laufen und die Hosts runterfahren ohne dass ich vorher selbst aktiv geworden wäre. Also höchst selten.

              Gruss, Jürgen

              haus-automatisierung 1 Reply Last reply Reply Quote 0
              • paul53
                paul53 @hschief last edited by paul53

                @hschief sagte: spezielles Zusammenspiel beim booten zu sein.

                Es ist mir unerklärlich wie Node.js zwischen Start nach Boot und normalem Neustart von ioBroker unterscheiden kann.
                Vielleicht passiert etwas Eigenartiges beim Shutdown? Hast du mal ioBroker vor dem Shutdown gestoppt?

                1 Reply Last reply Reply Quote 0
                • P
                  peterfido @hschief last edited by

                  @hschief sagte in maximum of 1000 setState during boot:

                  function Test1() { log('In Function','error'); setState('0_userdata.0.Allgemein.TestBoot', 'test', false); }; log('Script Test1 gestartet:','error'); setTimeout(function(){schedule("*/10 * * * * *", Test1 )},50000);

                  Ich habe das eben mit der Verzögerung getestet.:

                  2024-04-18 11:42:27.863 - info: host.iob instance system.adapter.javascript.0 started with pid 705
                  2024-04-18 11:42:28.702 - info: javascript.0 (705) starting. Version 7.8.0 in /opt/iobroker/node_modules/iobroker.javascript, node: v18.20.2, js-controller: 5.0.19
                  2024-04-18 11:42:28.931 - info: javascript.0 (705) requesting all states
                  2024-04-18 11:42:28.932 - info: javascript.0 (705) requesting all objects
                  2024-04-18 11:42:29.223 - info: javascript.0 (705) received all objects
                  2024-04-18 11:42:29.269 - info: javascript.0 (705) received all states
                  2024-04-18 11:42:29.383 - info: javascript.0 (705) Start javascript script.js.Scripte.CronJobs
                  2024-04-18 11:42:29.405 - error: javascript.0 (705) script.js.Scripte.CronJobs: Script Test1 gestartet:
                  2024-04-18 11:42:29.406 - info: javascript.0 (705) script.js.Scripte.CronJobs: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
                  2024-04-18 11:42:31.861 - info: host.iob instance system.adapter.simple-api.0 started with pid 720
                  2024-04-18 11:42:32.347 - info: simple-api.0 (720) starting. Version 2.7.2 in /opt/iobroker/node_modules/iobroker.simple-api, node: v18.20.2, js-controller: 5.0.19
                  2024-04-18 11:42:32.355 - warn: simple-api.0 (720) Information for Developer: Using the direct "Let's encrypt" module import is deprecated and will be removed in the next js-controller version, use @iobroker/webserver instead
                  2024-04-18 11:42:32.358 - info: simple-api.0 (720) simpleAPI server listening on port 8087
                  2024-04-18 11:42:32.358 - info: simple-api.0 (720) Allow states only when user is owner: false
                  2024-04-18 11:42:32.362 - info: simple-api.0 (720) http server listening on port 8087
                  2024-04-18 11:42:35.867 - info: host.iob instance system.adapter.socketio.0 started with pid 735
                  2024-04-18 11:42:36.419 - info: socketio.0 (735) starting. Version 6.6.1 in /opt/iobroker/node_modules/iobroker.socketio, node: v18.20.2, js-controller: 5.0.19
                  2024-04-18 11:42:36.433 - warn: socketio.0 (735) Information for Developer: Using the direct "Let's encrypt" module import is deprecated and will be removed in the next js-controller version, use @iobroker/webserver instead
                  2024-04-18 11:42:36.452 - info: socketio.0 (735) socket.io server listening on port 8088
                  2024-04-18 11:43:20.004 - error: javascript.0 (705) script.js.Scripte.CronJobs: In Function
                  2024-04-18 11:43:30.001 - error: javascript.0 (705) script.js.Scripte.CronJobs: In Function
                  

                  Somit bei mir wie es soll.

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

                    @wildbill sagte in maximum of 1000 setState during boot:

                    Ich meine, mal gelesen zu haben, dass der Adapter-Ersteller hier zumindest selbst Abhängigkeiten hingterlegen kann, so dass voneinander abhängige Adapter/Instanzen in korrekter Reihenfolge starten.

                    Genau, es gibt verschiedene Tier-Level, welche die Startreihenfolge festlegen. Damit zB Logikadapter laufen, bevor die ersten Werte kommen

                    H W 2 Replies Last reply Reply Quote 2
                    • H
                      hschief @haus-automatisierung last edited by

                      @haus-automatisierung Vielen Dank für die tollen Antworten und auch die Information, dass der Fehler bei euch nicht reproduziert werden kann, Ich werde das Issue in GitHub erstmal schliessen und weiter forschen um das Problem einzugrenzen. Ich berichte was sich weiter ergibt.

                      haus-automatisierung 1 Reply Last reply Reply Quote 0
                      • W
                        Wildbill @haus-automatisierung last edited by

                        @haus-automatisierung sagte in maximum of 1000 setState during boot:

                        Genau, es gibt verschiedene Tier-Level, welche die Startreihenfolge festlegen. Damit zB Logikadapter laufen, bevor die ersten Werte kommen

                        Also eigentlich genau andersrum, wie ich es manuell mache? Ich starte die Logiken eben erst, wenn alle Werte da sind, damit ich keine falschen Werte verarbeite, die bei manchen Adaptern beim Start auftreten.
                        Die Tier-Level kann man als User aber vermutlich nicht selbst festlegen, oder? Die werden vom Adapter-Ersteller fest eincodiert?

                        Gruss, Jürgen

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

                          @wildbill sagte in maximum of 1000 setState during boot:

                          vermutlich nicht selbst festlegen, oder

                          oder!
                          vermute ich.
                          Hab im Expertenmodus mal was gesehen, was genau dafür sein könnte

                          DJMarc75 W 2 Replies Last reply Reply Quote 1
                          • DJMarc75
                            DJMarc75 @Homoran last edited by

                            @homoran rischtisch

                            Screenshot 2024-04-18 125435.png

                            W 1 Reply Last reply Reply Quote 2
                            • W
                              Wildbill @Homoran last edited by

                              @homoran Gerade mal geschaut, Du meinst das hier:

                              c3e6d6d9-b524-4ab1-9d04-2b05a9e8425f-image.png

                              Das sieht in der Tat danach aus. Da schraub ich jetzt aber nix rum, meine manuelle Methode funktioniert mindestens genausogut. 😊

                              Gruss, Jürgen

                              1 Reply Last reply Reply Quote 0
                              • W
                                Wildbill @DJMarc75 last edited by

                                @djmarc75 Gibt es einen Grund, warum logikverarbeitende Adapter da als Erstes gestartet werden? Es gibt ja doch einige Adapter, bei denen zum Start eben nicht alle Werte der „Wahrheit“ entsprechen. Die Logik da als Letztes zu starten erscheint mir da eher „logisch“. Oder gibt es gute Gründe, die ich gar nicht sehe?

                                Gruss, Jürgen

                                DJMarc75 mcm1957 2 Replies Last reply Reply Quote 0
                                • DJMarc75
                                  DJMarc75 @Wildbill last edited by

                                  @wildbill sagte in maximum of 1000 setState during boot:

                                  warum logikverarbeitende Adapter da als Erstes gestartet werden?

                                  kann ich Dir leider nicht beantworten, habe mich damit noch nicht beschäftigt.

                                  1 Reply Last reply Reply Quote 1
                                  • mcm1957
                                    mcm1957 @Wildbill last edited by mcm1957

                                    @wildbill
                                    Einer der Gründe ist (wahrscheinlich) dass man sicherstellen will, dass eine Logik anspricht wenn der Adapter einen (neuen) Wert schreibt. Wird der javascript erst noch dem Adapterstart gestartet dann kann er ev auf das Setzen eines Zustands (via subscription) nicht mehr reagieren weil er das Setzen gar nicht mitbekommt.

                                    Bezüglich device-watcher rege ich an da einen Feature Request beim Adapter zu erstellen. Es erscheint mir sinnvoll wenn der Devicewatcher selbst eine gewisse Zeit nach seinem Start wartet bevor er prüft / alamiert.

                                    Und ja man kann die Startsequenz im grob einstellen. Es gibt 3 Tiers die in der Reihenfolge 1 - 2 - 3 gestartet werden. Aller Adapter innerhalb einers Tiers werden in nicht festgelegter Reihenfolge gestartet. Diese Einstellung kann vom User vorgenommen werden wobei es wahrscheinlich weniger Sinn macht eine vis in Tier 1 zu legen :-).

                                    1 Reply Last reply Reply Quote 2
                                    • W
                                      Wildbill last edited by

                                      @mcm57 Danke für die Erläuterungen. Issue bzw. feature request habe ich bei device watcher mal erstellt.

                                      Bezüglich JavascriptAdapter. Genau deshalb beende ich ihn ja vorab manuell. Gewisse Adapter bzw. Geräte haben die Angewohnheit, beim Start kurz mal auf 0 zu springen und dann erst wieder auf den korrekten Wert. Ich meine, bei Homematic-Zwischensteckern mit Strommessung war das bei mir so bei aktueller Leistung und kumuliertem Wert. Das hat eben Scripte dann falsch ausgelöst und beim Sourceanalytix jedesmal die Meldung gebracht, der Wert hätte sich resettet. Da war/ist es mir lieber, bei Systemstart erstmal quasi die erste Änderung nicht mitzubekommen und dann eben erst, wenn sich alle "beruhigt" hat und die Werte "stabil" sind.
                                      Vielleicht mache ich bei Gelegenheit nochmal einen Test und beende keinen Adapter manuell und schaue, wie es sich mittlerweile verhält. Denn ich mache das bestimmt schon seit 1-2 Jahren so (problemlos).

                                      Gruss, Jürgen

                                      mcm1957 1 Reply Last reply Reply Quote 0
                                      • mcm1957
                                        mcm1957 @Wildbill last edited by

                                        @wildbill
                                        Ich glaub es wird schwierig da eine für alle System passende Lösung zu finden. Wenn es aber Adapter gibt die beim Start den Wert mal so auf 0 setzen, dann kann man da ruhig auch ein Issue erstellen damit der Maintainer schaut ob es dafür einen technischen Grund gibt oder ob nur irgendwo eine an sich unnötige Initialisierung erfolgt.

                                        @peterfido
                                        Ev. check mal ob ev. beim Start von ioBroker im Zuge eine Bootvorgangs die Systemzeit (noch) nicht stimmt (RTC ev defekt / verstellt?) und diese dann erst zeitnahe aktualisisert wird z.B. durch NTP Daemon. Ist aber nur so mal ein Idee ohne dass ich sowas schon mal erlebt hätte.

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

                                          @hschief sagte in maximum of 1000 setState during boot:

                                          auch die Information, dass der Fehler bei euch nicht reproduziert werden kann, Ich werde das Issue in GitHub erstmal schliessen und weiter forschen um das Problem einzugrenzen. Ich berichte was sich weiter ergibt.

                                          Habs noch nicht probiert zu reproduzieren. Lass gerne offen und teile weitere Erkenntnisse im Issue

                                          1 Reply Last reply Reply Quote 0
                                          • P
                                            peterfido last edited by

                                            @mcm57 ich habe da keine Probleme mit der Uhrzeit. Alle VMs nutzen die RTC vom Proxmox-Host.

                                            Mir kam nur die Idee, ob es evtl. beim TO da Probleme geben könnte.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            904
                                            Online

                                            31.8k
                                            Users

                                            80.0k
                                            Topics

                                            1.3m
                                            Posts

                                            13
                                            53
                                            2498
                                            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