Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
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.9k

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.4k

timout Frage

Scheduled Pinned Locked Moved JavaScript
15 Posts 5 Posters 1.3k Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • C Offline
    C Offline
    ChristianG
    wrote on last edited by 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 Reply Last reply
    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
      wrote on last edited by
      #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 Reply Last reply
      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
        wrote on last edited by 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 Reply Last reply
        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
          wrote on last edited by 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 Reply Last reply
          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
            wrote on last edited by 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 Reply Last reply
            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
              wrote on last edited by
              #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 Reply Last reply
              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
                wrote on last edited by 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 Reply Last reply
                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
                  wrote on last edited by 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 Reply Last reply
                  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
                    wrote on last edited by
                    #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 Reply Last reply
                    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
                      wrote on last edited by
                      #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 Reply Last reply
                      0
                      Reply
                      • Reply as topic
                      Log in to reply
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      369

                      Online

                      32.6k

                      Users

                      82.3k

                      Topics

                      1.3m

                      Posts
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                      ioBroker Community 2014-2025
                      logo
                      • Login

                      • Don't have an account? Register

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Home
                      • Recent
                      • Tags
                      • Unread 0
                      • Categories
                      • Unreplied
                      • Popular
                      • GitHub
                      • Docu
                      • Hilfe