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

  1. ioBroker Community Home
  2. Deutsch
  3. Error/Bug
  4. [Gelöst] Speicherlecks im ioBroker?

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.3k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.9k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.3k

[Gelöst] Speicherlecks im ioBroker?

Geplant Angeheftet Gesperrt Verschoben Gelöst Error/Bug
speicherverbrauchadapter speicherverbrauch
51 Beiträge 10 Kommentatoren 4.9k Aufrufe 8 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.
  • OliverIOO OliverIO

    @LoxDUS
    Die einzelnen Adapter laufen ja alle in eigenen threads.
    Was mir an der Grafik aufgefallen ist, dass die größten Steigerungen über kurze Zeit immer im JavaScript Adapter liegt.
    Auch durch Skripte können speicher Lecks entstehen.
    Evtl solltest du dir die einzelnen adapter mal separat anschauen und prüfen ob es hier Steigerungen über die Zeit gibt.

    L Offline
    L Offline
    LoxDUS
    schrieb am zuletzt editiert von
    #12

    @OliverIO
    Ich habe schon mehrfach versucht den javascript adapter neu zu starten. Wenn ich die Instanz beende erhöht sich der freie Speicher um ca. 4 bis 5% (von 7% auf 11%).
    Ich habe das heute gegen Moittag nochmal gemacht.
    1ceb8c6d-38bf-4836-a069-d6c8e75372f6-image.png
    In diesem Ausschnitt sieht man auch wie andere Adapter mit der Zeit immer mehr Speicher brauchen. Ich meine die Sägezahnkurve ist ja bei Java normal. Irgendwann schlägt der "Garbage-Collector" zu und räumt auf. ich habe aber das Gefühl das der nciht alles "aufgeräumt" bekommt.

    1 Antwort Letzte Antwort
    0
    • ChaotC Chaot

      @LoxDUS Ne ganz blöde Frage: Kannst du den Speicher erhöhen?
      Ich habe den Effekt beobachtet das bei mir der Speicher bis 4 GB zugeschrieben wird und das sich dann dort einpendelt. Wenn ich meinem CT nur 4 GB zuordne habe ich die gleichen Probleme wie du. Sobald ich aber 4,5 GB zuordne ist der Effekt weg.

      Ich habe keinerlei Ahnung wie Linux oder der ioBroker den Speicher verwaltet. Mir ist auch nicht klar warum das so ist. Aber ich kann das zu 100% reproduzieren. Deshalb läuft der CT jetzt eben mit 4,5 GB.

      L Offline
      L Offline
      LoxDUS
      schrieb am zuletzt editiert von
      #13

      @Chaot
      ... hm, was mir noch einfällt: Viele ioBroker Instanzen laufen doch auch auf kleinen Raspberries mit z.T. nur 2GByte RAM. Mein Bekannt nutzt auch ioBroker mit dem gleichen NUC wie ich und der hat keinerlei Speicherprobleme.

      Thomas BraunT 1 Antwort Letzte Antwort
      0
      • L LoxDUS

        @Chaot
        ... hm, was mir noch einfällt: Viele ioBroker Instanzen laufen doch auch auf kleinen Raspberries mit z.T. nur 2GByte RAM. Mein Bekannt nutzt auch ioBroker mit dem gleichen NUC wie ich und der hat keinerlei Speicherprobleme.

        Thomas BraunT Online
        Thomas BraunT Online
        Thomas Braun
        Most Active
        schrieb am zuletzt editiert von Thomas Braun
        #14

        @LoxDUS

        free -h
        who -r
        node -v
        nodejs -v
        

        liefert?

        Linux-Werkzeugkasten:
        https://forum.iobroker.net/topic/42952/der-kleine-iobroker-linux-werkzeugkasten
        NodeJS Fixer Skript:
        https://forum.iobroker.net/topic/68035/iob-node-fix-skript
        iob_diag: curl -sLf -o diag.sh https://iobroker.net/diag.sh && bash diag.sh

        L 1 Antwort Letzte Antwort
        0
        • Thomas BraunT Thomas Braun

          @LoxDUS

          free -h
          who -r
          node -v
          nodejs -v
          

          liefert?

          L Offline
          L Offline
          LoxDUS
          schrieb am zuletzt editiert von
          #15

          @Thomas-Braun

          artur@ioBroker2:~$ free -h
                        total        used        free      shared  buff/cache   available
          Mem:          3,8Gi       3,2Gi       420Mi       6,0Mi       184Mi       387Mi
          Swap:         3,9Gi        79Mi       3,9Gi
          artur@ioBroker2:~$ who -r
                   Runlevel 5   2020-12-17 06:45
          artur@ioBroker2:~$ node -v
          v10.17.0
          artur@ioBroker2:~$ nodejs -v
          v10.17.0
          artur@ioBroker2:~$
          
          
          Thomas BraunT 1 Antwort Letzte Antwort
          0
          • L LoxDUS

            @Thomas-Braun

            artur@ioBroker2:~$ free -h
                          total        used        free      shared  buff/cache   available
            Mem:          3,8Gi       3,2Gi       420Mi       6,0Mi       184Mi       387Mi
            Swap:         3,9Gi        79Mi       3,9Gi
            artur@ioBroker2:~$ who -r
                     Runlevel 5   2020-12-17 06:45
            artur@ioBroker2:~$ node -v
            v10.17.0
            artur@ioBroker2:~$ nodejs -v
            v10.17.0
            artur@ioBroker2:~$
            
            
            Thomas BraunT Online
            Thomas BraunT Online
            Thomas Braun
            Most Active
            schrieb am zuletzt editiert von
            #16

            @LoxDUS
            siehe meine Anmerkungen von oben.
            RunLevel 3 fahren, node 12 sauber installieren.

            Linux-Werkzeugkasten:
            https://forum.iobroker.net/topic/42952/der-kleine-iobroker-linux-werkzeugkasten
            NodeJS Fixer Skript:
            https://forum.iobroker.net/topic/68035/iob-node-fix-skript
            iob_diag: curl -sLf -o diag.sh https://iobroker.net/diag.sh && bash diag.sh

            L 2 Antworten Letzte Antwort
            0
            • Thomas BraunT Thomas Braun

              @LoxDUS
              siehe meine Anmerkungen von oben.
              RunLevel 3 fahren, node 12 sauber installieren.

              L Offline
              L Offline
              LoxDUS
              schrieb am zuletzt editiert von
              #17

              @Thomas-Braun

              Werde das jetzt mal auf meinem "Backupsystem" ausprobieren. Melde mich wenn ich was neues habe...

              1 Antwort Letzte Antwort
              0
              • R Ritter

                Hallo,

                ich habe ioBroker unter Windows 10 auf einem NUC laufen mit 8GB RAM und es wird unter Instanzen das angezeigt:

                Datenträger verfügbar: 20.4 %, gesamte RAM-Nutzung: 817 MB / Frei: 5% = 439 MB [Host: NUC - 46 Prozesse]

                Auf dem NUC läuft nur ioBroker, ist das normal oder verschwindet da irgendwo etwas?

                K Offline
                K Offline
                klassisch
                Most Active
                schrieb am zuletzt editiert von
                #18

                @Ritter Bei Windows geht die Spangezeigte Speichernutzung immer rauf. Und irgendwann kommt der Garbage Collector oder sowas und räumt wieder auf. Dann gibt es wieder mehr freien Speicher udn das ganze Spiel beginnt von Neuem.
                Wenn Du keine sichtbaren Probleme hast, dann Lass Windows nur machen, das kann das schon. Mein ioBroker läuft sehr stabil unter Win 10. Habe den Info Adapter mittlerweile pausiert und mache mir einfach keine Sorgen mehr.

                1 Antwort Letzte Antwort
                0
                • Thomas BraunT Thomas Braun

                  @LoxDUS
                  siehe meine Anmerkungen von oben.
                  RunLevel 3 fahren, node 12 sauber installieren.

                  L Offline
                  L Offline
                  LoxDUS
                  schrieb am zuletzt editiert von
                  #19

                  @Thomas-Braun

                  Habe jetzt den Runlevel mit

                   systemctl set-default multi-user.target
                  

                  auf das "alte" Runlevel 3 gestellt und nodejs geupdatet

                  artur@ioBroker:~$ nodejs -v
                  v12.20.0
                  

                  Der aktuelle Speicherverbrauch liegt laut ioBroker bei:
                  11a3494f-88a6-485a-9336-4ef486e7b5c4-image.png
                  also es sind ca. 66% frei

                  artur@ioBroker:~$ free -m
                                total        used        free      shared  buff/cache   available
                  Mem:           3885        1213        2189           6         482        2439
                  Swap:          4027           0        4027
                  artur@ioBroker:~$ who -r
                           Runlevel 3   2020-12-27 00:18
                  artur@ioBroker:~$ node -v
                  v12.20.0
                  artur@ioBroker:~$ nodejs -v
                  v12.20.0
                  artur@ioBroker:~$
                  

                  Bin jetzt mal gespannt wie der Speicher morgen aussieht ;-)

                  Thomas BraunT 1 Antwort Letzte Antwort
                  0
                  • L LoxDUS

                    @Thomas-Braun

                    Habe jetzt den Runlevel mit

                     systemctl set-default multi-user.target
                    

                    auf das "alte" Runlevel 3 gestellt und nodejs geupdatet

                    artur@ioBroker:~$ nodejs -v
                    v12.20.0
                    

                    Der aktuelle Speicherverbrauch liegt laut ioBroker bei:
                    11a3494f-88a6-485a-9336-4ef486e7b5c4-image.png
                    also es sind ca. 66% frei

                    artur@ioBroker:~$ free -m
                                  total        used        free      shared  buff/cache   available
                    Mem:           3885        1213        2189           6         482        2439
                    Swap:          4027           0        4027
                    artur@ioBroker:~$ who -r
                             Runlevel 3   2020-12-27 00:18
                    artur@ioBroker:~$ node -v
                    v12.20.0
                    artur@ioBroker:~$ nodejs -v
                    v12.20.0
                    artur@ioBroker:~$
                    

                    Bin jetzt mal gespannt wie der Speicher morgen aussieht ;-)

                    Thomas BraunT Online
                    Thomas BraunT Online
                    Thomas Braun
                    Most Active
                    schrieb am zuletzt editiert von
                    #20

                    @LoxDUS Warum ist dein swap file eigentlich so groß? Das ist ja mehr als dein RAM? Ich hab das bei mir auf 100 MB laufen:

                    pi@raspberrypi:/opt/iobroker $ free -h
                                  total        used        free      shared  buff/cache   available
                    Mem:          3,8Gi       895Mi       2,1Gi       9,0Mi       783Mi       3,0Gi
                    Swap:          99Mi          0B        99Mi
                    

                    Linux-Werkzeugkasten:
                    https://forum.iobroker.net/topic/42952/der-kleine-iobroker-linux-werkzeugkasten
                    NodeJS Fixer Skript:
                    https://forum.iobroker.net/topic/68035/iob-node-fix-skript
                    iob_diag: curl -sLf -o diag.sh https://iobroker.net/diag.sh && bash diag.sh

                    a200A L 2 Antworten Letzte Antwort
                    0
                    • Thomas BraunT Thomas Braun

                      @LoxDUS Warum ist dein swap file eigentlich so groß? Das ist ja mehr als dein RAM? Ich hab das bei mir auf 100 MB laufen:

                      pi@raspberrypi:/opt/iobroker $ free -h
                                    total        used        free      shared  buff/cache   available
                      Mem:          3,8Gi       895Mi       2,1Gi       9,0Mi       783Mi       3,0Gi
                      Swap:          99Mi          0B        99Mi
                      
                      a200A Offline
                      a200A Offline
                      a200
                      schrieb am zuletzt editiert von
                      #21

                      @Thomas-Braun sagte in Speicherlecks im ioBroker?:

                      @LoxDUS Warum ist dein swap file eigentlich so groß? Das ist ja mehr als dein RAM? Ich hab das bei mir auf 100 MB laufen:

                      Swap-Partition unter Linux sollte ca. doppelt so groß wie der RAM sein. Das ist doch der Sinn einer Swap-Partition, dass der Inhalt des RAM auf die Festplatte ausgelagert werden kann.

                      IoBroker auf QNAP TS-451, Raspi und NUC

                      Thomas BraunT 1 Antwort Letzte Antwort
                      0
                      • a200A a200

                        @Thomas-Braun sagte in Speicherlecks im ioBroker?:

                        @LoxDUS Warum ist dein swap file eigentlich so groß? Das ist ja mehr als dein RAM? Ich hab das bei mir auf 100 MB laufen:

                        Swap-Partition unter Linux sollte ca. doppelt so groß wie der RAM sein. Das ist doch der Sinn einer Swap-Partition, dass der Inhalt des RAM auf die Festplatte ausgelagert werden kann.

                        Thomas BraunT Online
                        Thomas BraunT Online
                        Thomas Braun
                        Most Active
                        schrieb am zuletzt editiert von
                        #22

                        @a200 Ja, in alten Zeiten war das mal die Faustregel. Mach ich aber bei Systemen mit mehr als 2GB RAM nicht mehr.

                        Linux-Werkzeugkasten:
                        https://forum.iobroker.net/topic/42952/der-kleine-iobroker-linux-werkzeugkasten
                        NodeJS Fixer Skript:
                        https://forum.iobroker.net/topic/68035/iob-node-fix-skript
                        iob_diag: curl -sLf -o diag.sh https://iobroker.net/diag.sh && bash diag.sh

                        a200A 1 Antwort Letzte Antwort
                        0
                        • Thomas BraunT Thomas Braun

                          @LoxDUS Warum ist dein swap file eigentlich so groß? Das ist ja mehr als dein RAM? Ich hab das bei mir auf 100 MB laufen:

                          pi@raspberrypi:/opt/iobroker $ free -h
                                        total        used        free      shared  buff/cache   available
                          Mem:          3,8Gi       895Mi       2,1Gi       9,0Mi       783Mi       3,0Gi
                          Swap:          99Mi          0B        99Mi
                          
                          L Offline
                          L Offline
                          LoxDUS
                          schrieb am zuletzt editiert von LoxDUS
                          #23

                          @Thomas-Braun

                          Hmmmm, habe den "default" Vorschlag bei der Installation von Linux gelassen.
                          Habe im Netz foglendes gefunden:
                          1ffca436-8c01-4c07-a6c6-4d61b37607b7-image.png

                          Ich habe ein debian System am laufen:

                          artur@ioBroker:~$ uname -a
                          Linux ioBroker 4.9.0-8-amd64 #1 SMP Debian 4.9.144-3.1 (2019-02-19) x86_64 GNU/Linux
                          
                          

                          Ich könnte das natürlich runter drehen. Wäre vielleicht auch für die verlöteten SSD Module nicht schlecht um eine längere Lebensdauer zu bekommen (ich weiß, ist eine Art Mythos :-) )

                          Ich schaue jetzt mal wie sich der freie Speicher verhält. Für die "Applikation" ioBroker dürfte der SWAP-Speicher ja aber keine Auswirkung haben, oder liege ich da falsch?

                          Viele Grüße,

                          Artur

                          L 1 Antwort Letzte Antwort
                          0
                          • L LoxDUS

                            @Thomas-Braun

                            Hmmmm, habe den "default" Vorschlag bei der Installation von Linux gelassen.
                            Habe im Netz foglendes gefunden:
                            1ffca436-8c01-4c07-a6c6-4d61b37607b7-image.png

                            Ich habe ein debian System am laufen:

                            artur@ioBroker:~$ uname -a
                            Linux ioBroker 4.9.0-8-amd64 #1 SMP Debian 4.9.144-3.1 (2019-02-19) x86_64 GNU/Linux
                            
                            

                            Ich könnte das natürlich runter drehen. Wäre vielleicht auch für die verlöteten SSD Module nicht schlecht um eine längere Lebensdauer zu bekommen (ich weiß, ist eine Art Mythos :-) )

                            Ich schaue jetzt mal wie sich der freie Speicher verhält. Für die "Applikation" ioBroker dürfte der SWAP-Speicher ja aber keine Auswirkung haben, oder liege ich da falsch?

                            Viele Grüße,

                            Artur

                            L Offline
                            L Offline
                            LoxDUS
                            schrieb am zuletzt editiert von
                            #24

                            Zwischenstand nach ein paar Stunden:
                            6c59a465-c1c0-472e-9fc8-e83f99d987a7-image.png

                            Nur noch 61% frei :-(
                            Also in ca. 3h von 66% auf 61%

                            Mal sehen was morgen Früh noch so übrig ist....

                            Thomas BraunT OliverIOO 2 Antworten Letzte Antwort
                            0
                            • L LoxDUS

                              Zwischenstand nach ein paar Stunden:
                              6c59a465-c1c0-472e-9fc8-e83f99d987a7-image.png

                              Nur noch 61% frei :-(
                              Also in ca. 3h von 66% auf 61%

                              Mal sehen was morgen Früh noch so übrig ist....

                              Thomas BraunT Online
                              Thomas BraunT Online
                              Thomas Braun
                              Most Active
                              schrieb am zuletzt editiert von
                              #25

                              @LoxDUS Ist doch gut wenn der RAM genutzt wird?!
                              Alles im grünen Bereich.

                              Linux-Werkzeugkasten:
                              https://forum.iobroker.net/topic/42952/der-kleine-iobroker-linux-werkzeugkasten
                              NodeJS Fixer Skript:
                              https://forum.iobroker.net/topic/68035/iob-node-fix-skript
                              iob_diag: curl -sLf -o diag.sh https://iobroker.net/diag.sh && bash diag.sh

                              1 Antwort Letzte Antwort
                              0
                              • L LoxDUS

                                Zwischenstand nach ein paar Stunden:
                                6c59a465-c1c0-472e-9fc8-e83f99d987a7-image.png

                                Nur noch 61% frei :-(
                                Also in ca. 3h von 66% auf 61%

                                Mal sehen was morgen Früh noch so übrig ist....

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

                                @LoxDUS Im nächsten Test-Durchgang deaktiviert doch mal alle skripte im javascript adapter
                                und vergleiche dann.

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

                                L 1 Antwort Letzte Antwort
                                0
                                • OliverIOO OliverIO

                                  @LoxDUS Im nächsten Test-Durchgang deaktiviert doch mal alle skripte im javascript adapter
                                  und vergleiche dann.

                                  L Offline
                                  L Offline
                                  LoxDUS
                                  schrieb am zuletzt editiert von
                                  #27

                                  ... und da sind es nur noch 24%
                                  334a0136-42bf-486c-9f4d-6c59ba5a042f-image.png

                                  @OliverIO
                                  "...deaktiviere mal alle skripte im javascript adapter..." - Ja, werde ich machen. Ich kann das aber nur einzeln machen weil das ganze Haus damit gesteuert wird und ohne bestimmte Skripte leider nicht mal mehr das Licht an und aus geschaltet werden kann.

                                  Ich fange heute mal an die unwichtigen Skripte wie die ganzen Komfortfunktionen und nice to have skripte zu deaktivieren.

                                  Bleibe am Ball und beriecht morgen wieder.

                                  Thomas BraunT OliverIOO 2 Antworten Letzte Antwort
                                  0
                                  • L LoxDUS

                                    ... und da sind es nur noch 24%
                                    334a0136-42bf-486c-9f4d-6c59ba5a042f-image.png

                                    @OliverIO
                                    "...deaktiviere mal alle skripte im javascript adapter..." - Ja, werde ich machen. Ich kann das aber nur einzeln machen weil das ganze Haus damit gesteuert wird und ohne bestimmte Skripte leider nicht mal mehr das Licht an und aus geschaltet werden kann.

                                    Ich fange heute mal an die unwichtigen Skripte wie die ganzen Komfortfunktionen und nice to have skripte zu deaktivieren.

                                    Bleibe am Ball und beriecht morgen wieder.

                                    Thomas BraunT Online
                                    Thomas BraunT Online
                                    Thomas Braun
                                    Most Active
                                    schrieb am zuletzt editiert von
                                    #28

                                    @LoxDUS

                                    Schau mal mit

                                    htop
                                    

                                    welcher Prozess da anwächst. Vemutlich der io.javascript

                                    Linux-Werkzeugkasten:
                                    https://forum.iobroker.net/topic/42952/der-kleine-iobroker-linux-werkzeugkasten
                                    NodeJS Fixer Skript:
                                    https://forum.iobroker.net/topic/68035/iob-node-fix-skript
                                    iob_diag: curl -sLf -o diag.sh https://iobroker.net/diag.sh && bash diag.sh

                                    1 Antwort Letzte Antwort
                                    0
                                    • L LoxDUS

                                      ... und da sind es nur noch 24%
                                      334a0136-42bf-486c-9f4d-6c59ba5a042f-image.png

                                      @OliverIO
                                      "...deaktiviere mal alle skripte im javascript adapter..." - Ja, werde ich machen. Ich kann das aber nur einzeln machen weil das ganze Haus damit gesteuert wird und ohne bestimmte Skripte leider nicht mal mehr das Licht an und aus geschaltet werden kann.

                                      Ich fange heute mal an die unwichtigen Skripte wie die ganzen Komfortfunktionen und nice to have skripte zu deaktivieren.

                                      Bleibe am Ball und beriecht morgen wieder.

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

                                      @LoxDUS
                                      parallel kannst du mal den artikel lesen. insbesondere den abschnitt mit timers und callbacks.
                                      evtl hast du da in deinen skripten etwas davon eingebaut.
                                      https://auth0.com/blog/four-types-of-leaks-in-your-javascript-code-and-how-to-get-rid-of-them/

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

                                      L 1 Antwort Letzte Antwort
                                      0
                                      • OliverIOO OliverIO

                                        @LoxDUS
                                        parallel kannst du mal den artikel lesen. insbesondere den abschnitt mit timers und callbacks.
                                        evtl hast du da in deinen skripten etwas davon eingebaut.
                                        https://auth0.com/blog/four-types-of-leaks-in-your-javascript-code-and-how-to-get-rid-of-them/

                                        L Offline
                                        L Offline
                                        LoxDUS
                                        schrieb am zuletzt editiert von
                                        #30

                                        @OliverIO
                                        habe mir den Artikel mal durchgelesen. Kann mir durchaus vorstellen das in meinem Code da einige Fälle enthalten sind die zutreffen. Sehe aber im Moment den Wald vor lauter Bäumen nicht mehr:

                                        Habe z.B. folgenden Code der den Ventilator im WC steuert.
                                        Über den Parameter t kann ich beim Aufrufen z.B. mitgeben ob der Aufruf von dem Bewegungsmelder im WC kommt.
                                        Über einen Dialog in der VIS, kann ich den Modus für den Ventilator einstellen: 0, 1, auto (siehe Zeile 5)

                                        
                                        var LTVentilatorGaesteWC; // Nachlauftimer für Ventilator
                                        function VentilatorWC(t)
                                        {   var sLichtDecke = getState(DE_K_LGAST_1).val;   // Deckenlampe WC
                                            var mVent = getState(MVentWC).val; // Modus für Ventilator
                                            var sVent = getState(DE_K_VGAST_1).val; // Status Ventilator
                                        
                                            switch(mVent)
                                            {   case 0:  // Ventilator AUS
                                                    setState(DE_K_VGAST_1, false);
                                                    clearTimeout(LTVentilatorGaesteWC); // Timer beenden
                                                break;
                                                case 1:  // Ventilator EIN
                                                    setState(DE_K_VGAST_1, true);
                                                    clearTimeout(LTVentilatorGaesteWC); // Timer beenden
                                                break;
                                                case 2:  // Ventilator Automatisch steuern
                                                    if(sLichtDecke==true || t==2)
                                                    {   setState(DE_K_VGAST_1, true); // Ventilator wird eingeschaltet sobald ein Licht eingeschaltet wird oder der Bewegungmelder schaltet
                                                        if(t!=2)
                                                        {   clearTimeout(LTVentilatorGaesteWC); // Timer beenden
                                                        } else
                                                        {   // Befehl kommt von Bewegungsmelder den Ventilator einzuschalten .. wird immer wieder neu getriggert (teilweise im Sekundenabstand je nachdem wieviel sich der Gast bewegt)
                                                            clearTimeout(LTVentilatorGaesteWC); // Timer beenden und anschließend neu setzen (solange jemand im WC soll der Ventilator laufen)
                                                            LTVentilatorGaesteWC = setTimeout(function(){setState(DE_K_VGAST_1, false)}, 360000); // Nach 6Minuten ausschalten
                                                        }
                                                    } else
                                                    {   if(sVent == true)  //Ist Ventilator an?
                                                        {   // Ventilator ist an und soll ausgeschaltet werden. Jetzt die Nachlaufzeit abwarten und dann ausschalten
                                                            LTVentilatorGaesteWC = setTimeout(function(){setState(DE_K_VGAST_1, false)}, 360000); // Nach 6Minuten ausschalten
                                                        }
                                                    }
                                                break;
                                            }
                                        }
                                        
                                        

                                        Wenn ich mir den Code jetzt genauer ansehe, auch mit dem Hintergrundwissen aus dem von Dir verlinkten Artikel, vermute ich jetzt, dass die Callback-Funktion aus Zeile 25 und 30 doch jedes mal, wenn ich den Timer eigentlich neu Triggern möchte (mit der Kombination von clearTimeout() (Zeile 24) und setTimeout() (Zeile25) ) im Speicher bleibt und es keine Referenz mehr darauf gibt und mir so den Speicher voll donnere weil der bei der Garbage Collection nicht erfasst wird...?
                                        Zusätzlich habe ich gaaaaaanz viele const definitionen am Anfang jedes Scriptes um die ganzen Datenpunkte "oben" zu definieren (ähnlich #define in C-Dateien), Beispiel:

                                        ...
                                        const DG_K_LPHBE_2 = 'hm-rpc.1.OEQ0862609.15.STATE';
                                        const DG_K_LPHBE_1 = 'hm-rpc.1.OEQ0862609.16.STATE';
                                        const DG_K_SPHBE_1 = 'hm-rpc.1.OEQ0862609.19.STATE';
                                        ...
                                        

                                        klaut das viel Ram weil es "globale Variablen" sind? Kann ich mir nicht vorstellen...

                                        @Thomas-Braun
                                        Du hast glaube ich recht. mit htop konnte ich sehen das sich der io.javascript immer weiter aufgebaut hat. Ich habe jetzt mal einen Großteil der Scripte beendet und nur noch die lebensnotwendigen Scripte am laufen - und diese auch total runtergestript. Im Moment steht der javascript wert bei 205M.
                                        96a12df3-b04d-401c-98fb-5f04ccf52a98-image.png
                                        mal schauen wie er in ein paar Stunden aussieht.

                                        @Thomas-Braun und @OliverIO
                                        Ich befürchte fast das ihr recht habt mit den javascript. Ich komme aus der C-Programmierung für Microcontroller, JavaScript ist mir manchmal zu suspekt wie es mit Speicher und den ganzen Objekt-Jedöns umgeht.

                                        Vielen Dank schonmal,

                                        Artur

                                        OliverIOO 1 Antwort Letzte Antwort
                                        0
                                        • L LoxDUS

                                          @OliverIO
                                          habe mir den Artikel mal durchgelesen. Kann mir durchaus vorstellen das in meinem Code da einige Fälle enthalten sind die zutreffen. Sehe aber im Moment den Wald vor lauter Bäumen nicht mehr:

                                          Habe z.B. folgenden Code der den Ventilator im WC steuert.
                                          Über den Parameter t kann ich beim Aufrufen z.B. mitgeben ob der Aufruf von dem Bewegungsmelder im WC kommt.
                                          Über einen Dialog in der VIS, kann ich den Modus für den Ventilator einstellen: 0, 1, auto (siehe Zeile 5)

                                          
                                          var LTVentilatorGaesteWC; // Nachlauftimer für Ventilator
                                          function VentilatorWC(t)
                                          {   var sLichtDecke = getState(DE_K_LGAST_1).val;   // Deckenlampe WC
                                              var mVent = getState(MVentWC).val; // Modus für Ventilator
                                              var sVent = getState(DE_K_VGAST_1).val; // Status Ventilator
                                          
                                              switch(mVent)
                                              {   case 0:  // Ventilator AUS
                                                      setState(DE_K_VGAST_1, false);
                                                      clearTimeout(LTVentilatorGaesteWC); // Timer beenden
                                                  break;
                                                  case 1:  // Ventilator EIN
                                                      setState(DE_K_VGAST_1, true);
                                                      clearTimeout(LTVentilatorGaesteWC); // Timer beenden
                                                  break;
                                                  case 2:  // Ventilator Automatisch steuern
                                                      if(sLichtDecke==true || t==2)
                                                      {   setState(DE_K_VGAST_1, true); // Ventilator wird eingeschaltet sobald ein Licht eingeschaltet wird oder der Bewegungmelder schaltet
                                                          if(t!=2)
                                                          {   clearTimeout(LTVentilatorGaesteWC); // Timer beenden
                                                          } else
                                                          {   // Befehl kommt von Bewegungsmelder den Ventilator einzuschalten .. wird immer wieder neu getriggert (teilweise im Sekundenabstand je nachdem wieviel sich der Gast bewegt)
                                                              clearTimeout(LTVentilatorGaesteWC); // Timer beenden und anschließend neu setzen (solange jemand im WC soll der Ventilator laufen)
                                                              LTVentilatorGaesteWC = setTimeout(function(){setState(DE_K_VGAST_1, false)}, 360000); // Nach 6Minuten ausschalten
                                                          }
                                                      } else
                                                      {   if(sVent == true)  //Ist Ventilator an?
                                                          {   // Ventilator ist an und soll ausgeschaltet werden. Jetzt die Nachlaufzeit abwarten und dann ausschalten
                                                              LTVentilatorGaesteWC = setTimeout(function(){setState(DE_K_VGAST_1, false)}, 360000); // Nach 6Minuten ausschalten
                                                          }
                                                      }
                                                  break;
                                              }
                                          }
                                          
                                          

                                          Wenn ich mir den Code jetzt genauer ansehe, auch mit dem Hintergrundwissen aus dem von Dir verlinkten Artikel, vermute ich jetzt, dass die Callback-Funktion aus Zeile 25 und 30 doch jedes mal, wenn ich den Timer eigentlich neu Triggern möchte (mit der Kombination von clearTimeout() (Zeile 24) und setTimeout() (Zeile25) ) im Speicher bleibt und es keine Referenz mehr darauf gibt und mir so den Speicher voll donnere weil der bei der Garbage Collection nicht erfasst wird...?
                                          Zusätzlich habe ich gaaaaaanz viele const definitionen am Anfang jedes Scriptes um die ganzen Datenpunkte "oben" zu definieren (ähnlich #define in C-Dateien), Beispiel:

                                          ...
                                          const DG_K_LPHBE_2 = 'hm-rpc.1.OEQ0862609.15.STATE';
                                          const DG_K_LPHBE_1 = 'hm-rpc.1.OEQ0862609.16.STATE';
                                          const DG_K_SPHBE_1 = 'hm-rpc.1.OEQ0862609.19.STATE';
                                          ...
                                          

                                          klaut das viel Ram weil es "globale Variablen" sind? Kann ich mir nicht vorstellen...

                                          @Thomas-Braun
                                          Du hast glaube ich recht. mit htop konnte ich sehen das sich der io.javascript immer weiter aufgebaut hat. Ich habe jetzt mal einen Großteil der Scripte beendet und nur noch die lebensnotwendigen Scripte am laufen - und diese auch total runtergestript. Im Moment steht der javascript wert bei 205M.
                                          96a12df3-b04d-401c-98fb-5f04ccf52a98-image.png
                                          mal schauen wie er in ein paar Stunden aussieht.

                                          @Thomas-Braun und @OliverIO
                                          Ich befürchte fast das ihr recht habt mit den javascript. Ich komme aus der C-Programmierung für Microcontroller, JavaScript ist mir manchmal zu suspekt wie es mit Speicher und den ganzen Objekt-Jedöns umgeht.

                                          Vielen Dank schonmal,

                                          Artur

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

                                          @LoxDUS
                                          Prüfe mal den Zweig bei case 2:
                                          Da stehen ja einige IFs.
                                          Das kommt mir so vor, als das es hier Fälle gibt, bei denen clearTimeout vor erneutem Setzen des Timers nicht aufgelöst wird. Speziell da wo sVent==true ist

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

                                          L 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

                                          562

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          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