Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. timout Frage

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    2.5k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    991

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.3k

timout Frage

Geplant Angeheftet Gesperrt Verschoben JavaScript
15 Beiträge 5 Kommentatoren 1.2k Aufrufe 3 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • C Offline
    C Offline
    ChristianG
    schrieb am zuletzt editiert von ChristianG
    #1

    Hallo zusammen,

    ich habe mir für meine Heizung ein kleines Blockly angelegt mit einem Timeout. Wenn die Javascript Instanz neugestartet wird, ist ein aktiver Timeout dann noch vorhanden oder danach verloren gegangen?

    Bildschirmfoto 2022-09-23 um 08.36.31.png

    Vielen Dank für die Info.

    haus-automatisierungH 1 Antwort Letzte Antwort
    0
    • C ChristianG

      Hallo zusammen,

      ich habe mir für meine Heizung ein kleines Blockly angelegt mit einem Timeout. Wenn die Javascript Instanz neugestartet wird, ist ein aktiver Timeout dann noch vorhanden oder danach verloren gegangen?

      Bildschirmfoto 2022-09-23 um 08.36.31.png

      Vielen Dank für die Info.

      haus-automatisierungH Offline
      haus-automatisierungH Offline
      haus-automatisierung
      Developer Most Active
      schrieb am zuletzt editiert von
      #2

      @christiang Der ist dann nicht mehr vorhanden / wird gelöscht.

      🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
      🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
      📚 Meine inoffizielle ioBroker Dokumentation

      C 1 Antwort Letzte Antwort
      0
      • haus-automatisierungH haus-automatisierung

        @christiang Der ist dann nicht mehr vorhanden / wird gelöscht.

        C Offline
        C Offline
        ChristianG
        schrieb am zuletzt editiert von ChristianG
        #3

        @haus-automatisierung, danke für die schnelle Antwort. Ohje, dann muss ich mir eine andere Lösung überlegen. Falls der Adapter mal automatisch wegen einem Fehler einen Neustart macht, bleibt die Heizung dann bis zum nächsten Nacht-Check an :/

        N 1 Antwort Letzte Antwort
        0
        • C ChristianG

          @haus-automatisierung, danke für die schnelle Antwort. Ohje, dann muss ich mir eine andere Lösung überlegen. Falls der Adapter mal automatisch wegen einem Fehler einen Neustart macht, bleibt die Heizung dann bis zum nächsten Nacht-Check an :/

          N Offline
          N Offline
          Nordischerjung
          schrieb am zuletzt editiert von
          #4

          @christiang
          Mach es doch so. Leg dir einen DP in 0_userdata an und prüfe ob der geschaltet wurde. Wenn JS neu startet wird der blaue Fallsblock einmal ausgeführt.

          7e4cd0cd-6962-4485-826d-25c1a93aa6cd-grafik.png

          Gruß Nordischerjung

          sonnige Grüße von der Ostsee

          C 1 Antwort Letzte Antwort
          0
          • N Nordischerjung

            @christiang
            Mach es doch so. Leg dir einen DP in 0_userdata an und prüfe ob der geschaltet wurde. Wenn JS neu startet wird der blaue Fallsblock einmal ausgeführt.

            7e4cd0cd-6962-4485-826d-25c1a93aa6cd-grafik.png

            C Offline
            C Offline
            ChristianG
            schrieb am zuletzt editiert von
            #5

            @nordischerjung vielen Dank! Werde ich sofort umsetzen. :) Hatte erst die Idee mit einem Timestamp der regelmäßig überprüft wird, aber mit true and false macht es viel mehr sinn und ist auch einfacher in der Abfrage.

            1 Antwort Letzte Antwort
            0
            • C Offline
              C Offline
              ChristianG
              schrieb am zuletzt editiert von ChristianG
              #6

              Ich habe eine weitere Frage:

              Bildschirmfoto 2022-09-26 um 21.54.05.png

              Wenn der Block ausgeführt wird und wieder ausgeführt wird, gibt es dann zwei Timeouts oder wird der erste überschrieben? Will umgehen, dass bei mehrfachem drehen des Thermostats mehrere Timeouts laufen oder irgendwas crashed weil viele Timeouts auslösen.

              Dachte ich löse es wie im nächsten Bild zu sehen, aber dann killt er scheinbar alle Timeouts direkt und dreht wieder auf 0 bei der Heizung.

              Bildschirmfoto 2022-09-26 um 21.55.52.png

              paul53P 1 Antwort Letzte Antwort
              0
              • C ChristianG

                Ich habe eine weitere Frage:

                Bildschirmfoto 2022-09-26 um 21.54.05.png

                Wenn der Block ausgeführt wird und wieder ausgeführt wird, gibt es dann zwei Timeouts oder wird der erste überschrieben? Will umgehen, dass bei mehrfachem drehen des Thermostats mehrere Timeouts laufen oder irgendwas crashed weil viele Timeouts auslösen.

                Dachte ich löse es wie im nächsten Bild zu sehen, aber dann killt er scheinbar alle Timeouts direkt und dreht wieder auf 0 bei der Heizung.

                Bildschirmfoto 2022-09-26 um 21.55.52.png

                paul53P Offline
                paul53P Offline
                paul53
                schrieb am zuletzt editiert von
                #7

                @christiang sagte: dann killt er scheinbar alle Timeouts

                Nein, der letzte Timeout, der nicht mehr innerhalb von 60 Minuten gestoppt wird, ist wirksam.

                Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                C 1 Antwort Letzte Antwort
                0
                • paul53P paul53

                  @christiang sagte: dann killt er scheinbar alle Timeouts

                  Nein, der letzte Timeout, der nicht mehr innerhalb von 60 Minuten gestoppt wird, ist wirksam.

                  C Offline
                  C Offline
                  ChristianG
                  schrieb am zuletzt editiert von ChristianG
                  #8

                  @paul53 Das ist werkwürdig. Dann frage ich mich warum der die Heizung wieder direkt auf 10 dreht :/Bildschirmfoto 2022-09-26 um 22.05.25.png. Vll ist das stoppen vom Timeout schneller als das neue ausführen? Kanns mir nicht erklären. Das script sagt in keinem Punkt dreh direkt wiede runter. Wenn ich das stop raus mache geht es an der Heizung.

                  paul53P 1 Antwort Letzte Antwort
                  0
                  • C ChristianG

                    @paul53 Das ist werkwürdig. Dann frage ich mich warum der die Heizung wieder direkt auf 10 dreht :/Bildschirmfoto 2022-09-26 um 22.05.25.png. Vll ist das stoppen vom Timeout schneller als das neue ausführen? Kanns mir nicht erklären. Das script sagt in keinem Punkt dreh direkt wiede runter. Wenn ich das stop raus mache geht es an der Heizung.

                    paul53P Offline
                    paul53P Offline
                    paul53
                    schrieb am zuletzt editiert von paul53
                    #9

                    @christiang sagte: warum der die Heizung wieder direkt auf 10 dreht

                    Keine Ahnung: Ich kenne diese Thermostate nicht.
                    Du steuerst den Sollwert, der dadurch wieder triggert.

                    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                    C 1 Antwort Letzte Antwort
                    0
                    • paul53P paul53

                      @christiang sagte: warum der die Heizung wieder direkt auf 10 dreht

                      Keine Ahnung: Ich kenne diese Thermostate nicht.
                      Du steuerst den Sollwert, der dadurch wieder triggert.

                      C Offline
                      C Offline
                      ChristianG
                      schrieb am zuletzt editiert von ChristianG
                      #10

                      @paul53 kann es sein, dass er bei einem stop das im Timeout dann ausführt? Ansonsten kann ich es mir nicht erklären :angry:

                      OliverIOO 1 Antwort Letzte Antwort
                      0
                      • C ChristianG

                        @paul53 kann es sein, dass er bei einem stop das im Timeout dann ausführt? Ansonsten kann ich es mir nicht erklären :angry:

                        OliverIOO Offline
                        OliverIOO Offline
                        OliverIO
                        schrieb am zuletzt editiert von
                        #11

                        @christiang
                        wenn das skript bei stopp den timeout nicht selbst löscht/deaktiviert, dann bleibt der solange bestehen, bis er ausgeführt wurde (settimeout) oder bis der adapter gestoppt wird (setinterval).

                        letzteres erzeugt dann auch ein kleinen memory leak, da, wenn man das timeout handle nicht mehr hat, da nicht mehr dran kommt.
                        wenn das skript sehr oft ausgeführt würde, dann wird der/die/das memory leak immer größer.

                        Meine Adapter und Widgets
                        TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                        Links im Profil

                        haus-automatisierungH 1 Antwort Letzte Antwort
                        0
                        • OliverIOO OliverIO

                          @christiang
                          wenn das skript bei stopp den timeout nicht selbst löscht/deaktiviert, dann bleibt der solange bestehen, bis er ausgeführt wurde (settimeout) oder bis der adapter gestoppt wird (setinterval).

                          letzteres erzeugt dann auch ein kleinen memory leak, da, wenn man das timeout handle nicht mehr hat, da nicht mehr dran kommt.
                          wenn das skript sehr oft ausgeführt würde, dann wird der/die/das memory leak immer größer.

                          haus-automatisierungH Offline
                          haus-automatisierungH Offline
                          haus-automatisierung
                          Developer Most Active
                          schrieb am zuletzt editiert von haus-automatisierung
                          #12

                          @oliverio sagte in timout Frage:

                          wenn das skript bei stopp den timeout nicht selbst löscht/deaktiviert, dann bleibt der solange bestehen, bis er ausgeführt wurde

                          Bitte zu der Aussage mal die Stelle im Quellcode verlinken. Wäre aus meiner Sicht ein Bug. Weil die Timeouts ja in der Sandbox / nodejs VM laufen. Wenn das Script gestoppt wird, dürften die nicht mehr existieren. Der Context ist ja ein komplett anderer, als der von der JavaScript-Instanz.

                          https://github.com/ioBroker/ioBroker.javascript/blob/d273e8aa90e40da1527bb692a3ded515ccdad065/lib/sandbox.js#L2386-L2409

                          🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
                          🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
                          📚 Meine inoffizielle ioBroker Dokumentation

                          OliverIOO 1 Antwort Letzte Antwort
                          0
                          • haus-automatisierungH haus-automatisierung

                            @oliverio sagte in timout Frage:

                            wenn das skript bei stopp den timeout nicht selbst löscht/deaktiviert, dann bleibt der solange bestehen, bis er ausgeführt wurde

                            Bitte zu der Aussage mal die Stelle im Quellcode verlinken. Wäre aus meiner Sicht ein Bug. Weil die Timeouts ja in der Sandbox / nodejs VM laufen. Wenn das Script gestoppt wird, dürften die nicht mehr existieren. Der Context ist ja ein komplett anderer, als der von der JavaScript-Instanz.

                            https://github.com/ioBroker/ioBroker.javascript/blob/d273e8aa90e40da1527bb692a3ded515ccdad065/lib/sandbox.js#L2386-L2409

                            OliverIOO Offline
                            OliverIOO Offline
                            OliverIO
                            schrieb am zuletzt editiert von OliverIO
                            #13

                            @haus-automatisierung
                            ok, ich revidiere.
                            die timeouts werden aber nur deswegen gestoppt, weil
                            im sandboxcode von iobroker die nativen funktionen settimeout setinterval abgefangen werden, die handles gemerkt und bei beenden der vm, dann alle ordentlich abgemeldet werden.
                            https://github.com/ioBroker/ioBroker.javascript/blob/58f2b57d18be7937a1e94d81892599a36741a4e1/lib/sandbox.js#L2386

                            ohne das (von dem ich ausgegangen bin) würden die timeouts erst bei prozessende enden, da javascript nur einen eventloop hat und der scriptadapter nur in einem prozess läuft.
                            für jedes script wird zwar ein eigener context eröffnet, aber kein eigener prozess.

                            hier mein testcode

                            const fs = require('fs');
                            let filename = "/opt/iobroker/iobroker-data/test.txt";
                            fs.unlink(filename,()=>{
                                console.log("file deleted");
                                setTimeout(()=>{
                                    console.log("timeout");
                                    fs.writeFile(filename,"test",()=>{
                                        console.log("written");
                                    });
                                },5000)
                            });
                            console.log("exit");
                            stopScript("");
                            
                            

                            interessanterweise hat ein anderer versuch das skript mit "throw Error" zu stoppen zu einem stopp der ganzen adapter instanz geführt.

                            Also dann wäre die Aussage von oben, das auch bei stop des Skripts die timeouts ordentlich aufgeräumt werden und kein memory leak entsteht.

                            Meine Adapter und Widgets
                            TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                            Links im Profil

                            haus-automatisierungH 1 Antwort Letzte Antwort
                            0
                            • OliverIOO OliverIO

                              @haus-automatisierung
                              ok, ich revidiere.
                              die timeouts werden aber nur deswegen gestoppt, weil
                              im sandboxcode von iobroker die nativen funktionen settimeout setinterval abgefangen werden, die handles gemerkt und bei beenden der vm, dann alle ordentlich abgemeldet werden.
                              https://github.com/ioBroker/ioBroker.javascript/blob/58f2b57d18be7937a1e94d81892599a36741a4e1/lib/sandbox.js#L2386

                              ohne das (von dem ich ausgegangen bin) würden die timeouts erst bei prozessende enden, da javascript nur einen eventloop hat und der scriptadapter nur in einem prozess läuft.
                              für jedes script wird zwar ein eigener context eröffnet, aber kein eigener prozess.

                              hier mein testcode

                              const fs = require('fs');
                              let filename = "/opt/iobroker/iobroker-data/test.txt";
                              fs.unlink(filename,()=>{
                                  console.log("file deleted");
                                  setTimeout(()=>{
                                      console.log("timeout");
                                      fs.writeFile(filename,"test",()=>{
                                          console.log("written");
                                      });
                                  },5000)
                              });
                              console.log("exit");
                              stopScript("");
                              
                              

                              interessanterweise hat ein anderer versuch das skript mit "throw Error" zu stoppen zu einem stopp der ganzen adapter instanz geführt.

                              Also dann wäre die Aussage von oben, das auch bei stop des Skripts die timeouts ordentlich aufgeräumt werden und kein memory leak entsteht.

                              haus-automatisierungH Offline
                              haus-automatisierungH Offline
                              haus-automatisierung
                              Developer Most Active
                              schrieb am zuletzt editiert von
                              #14

                              @oliverio sagte in timout Frage:

                              interessanterweise hat ein anderer versuch das skript mit "throw Error" zu stoppen zu einem stopp der ganzen adapter instanz geführt.

                              Das tritt erst seit nodejs 16 auf. Ich habe auch noch kein Idee, warum. Gibt es auch einen Issue zu: https://github.com/ioBroker/ioBroker.javascript/issues/1022

                              Normalerweise sollte das hier gefangen werden: https://github.com/ioBroker/ioBroker.javascript/blob/d273e8aa90e40da1527bb692a3ded515ccdad065/main.js#L1700-L1709

                              Falls Du eine Idee hast, immer her damit :)

                              🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
                              🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
                              📚 Meine inoffizielle ioBroker Dokumentation

                              OliverIOO 1 Antwort Letzte Antwort
                              0
                              • haus-automatisierungH haus-automatisierung

                                @oliverio sagte in timout Frage:

                                interessanterweise hat ein anderer versuch das skript mit "throw Error" zu stoppen zu einem stopp der ganzen adapter instanz geführt.

                                Das tritt erst seit nodejs 16 auf. Ich habe auch noch kein Idee, warum. Gibt es auch einen Issue zu: https://github.com/ioBroker/ioBroker.javascript/issues/1022

                                Normalerweise sollte das hier gefangen werden: https://github.com/ioBroker/ioBroker.javascript/blob/d273e8aa90e40da1527bb692a3ded515ccdad065/main.js#L1700-L1709

                                Falls Du eine Idee hast, immer her damit :)

                                OliverIOO Offline
                                OliverIOO Offline
                                OliverIO
                                schrieb am zuletzt editiert von
                                #15

                                @haus-automatisierung

                                nur ne grobe Ahnung durch kurz googlen ermittelt:
                                Sollte es nicht eigentlich

                                throw new Error
                                

                                heißen. da es das Error-Objekt ja noch nicht gibt.
                                d.h. der Fehler liegt in der Typescript-Deklaration das
                                der Editor da keinen Fehler anzeigt?

                                und da es das ur-Error-Objekt ist, greift der catch-Handler nicht sondern es wird der unhandled rejection Handler des prozesses verwendet
                                https://nodejs.org/api/process.html#event-unhandledrejection

                                Meine Adapter und Widgets
                                TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                                Links im Profil

                                1 Antwort Letzte Antwort
                                0
                                Antworten
                                • In einem neuen Thema antworten
                                Anmelden zum Antworten
                                • Älteste zuerst
                                • Neuste zuerst
                                • Meiste Stimmen


                                Support us

                                ioBroker
                                Community Adapters
                                Donate

                                513

                                Online

                                32.6k

                                Benutzer

                                82.3k

                                Themen

                                1.3m

                                Beiträge
                                Community
                                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                ioBroker Community 2014-2025
                                logo
                                • Anmelden

                                • Du hast noch kein Konto? Registrieren

                                • Anmelden oder registrieren, um zu suchen
                                • Erster Beitrag
                                  Letzter Beitrag
                                0
                                • Home
                                • Aktuell
                                • Tags
                                • Ungelesen 0
                                • Kategorien
                                • Unreplied
                                • Beliebt
                                • GitHub
                                • Docu
                                • Hilfe