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. Error/Bug
  4. Mögliches Speicherleck in den Templates für adapter und vis

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

Mögliches Speicherleck in den Templates für adapter und vis

Geplant Angeheftet Gesperrt Verschoben Ungelöst Error/Bug
visfehlerspeicherleckiobroker.template
6 Beiträge 2 Kommentatoren 292 Aufrufe 2 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 Offline
    OliverIOO Offline
    OliverIO
    schrieb am zuletzt editiert von
    #1

    Unter folgendem Link habe ich einen neuen Fehler erstellt
    https://github.com/ioBroker/ioBroker.template/issues/62

    Da ich aktuell einen neuen Adapter erstelle und diesen mit dem adapter-wizard vorbereitet habe,
    ist mir im template widget code aufgefallen, das sich da ein mögliches Speicherleck versteckt.

    Es wird ein state abonniert (bind), aber nicht wieder deabonniert (unbind).
    Wird das widget neu gezeichnet, weil sich bspw der Datenpunkt geändert hat,
    so wird immer wieder neu der Datenpunkt abonniert, ohne die nicht mehr gültigen Abonnements zu löschen.

    Das geht zum einen manuell vis.states.unbind(datenpunkt,änderungshandler).
    Eleganter ist aber, man fügt das Abonnement einer widgetvariable (stichwort data('bound') und data('boundhandler')
    Dann kümmert sich vis selbst um das aufräumen.

    Wenn man das nicht macht, sammeln sich bei jeder Neuzeichnung immer mehr Abos an, die bei Änderung des Datenpunkts auch alle aufgerufen werden. Das kann schnell die Oberfläche ziemlich laggy machen (selbst in einem anderen Situation erlebt)

    Da das ja Template code ist, ist der Fehler nicht kritisch.
    Wenn aber jemand einen neuen Adapter anfängt und widgets programmiert und das nicht weiß (steht leider auch sonst nirgends), dann gibt es Probleme, die hier im Forum wieder gelöst werden müssen.
    @AlCalzone

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

    AlCalzoneA 1 Antwort Letzte Antwort
    0
    • OliverIOO OliverIO

      Unter folgendem Link habe ich einen neuen Fehler erstellt
      https://github.com/ioBroker/ioBroker.template/issues/62

      Da ich aktuell einen neuen Adapter erstelle und diesen mit dem adapter-wizard vorbereitet habe,
      ist mir im template widget code aufgefallen, das sich da ein mögliches Speicherleck versteckt.

      Es wird ein state abonniert (bind), aber nicht wieder deabonniert (unbind).
      Wird das widget neu gezeichnet, weil sich bspw der Datenpunkt geändert hat,
      so wird immer wieder neu der Datenpunkt abonniert, ohne die nicht mehr gültigen Abonnements zu löschen.

      Das geht zum einen manuell vis.states.unbind(datenpunkt,änderungshandler).
      Eleganter ist aber, man fügt das Abonnement einer widgetvariable (stichwort data('bound') und data('boundhandler')
      Dann kümmert sich vis selbst um das aufräumen.

      Wenn man das nicht macht, sammeln sich bei jeder Neuzeichnung immer mehr Abos an, die bei Änderung des Datenpunkts auch alle aufgerufen werden. Das kann schnell die Oberfläche ziemlich laggy machen (selbst in einem anderen Situation erlebt)

      Da das ja Template code ist, ist der Fehler nicht kritisch.
      Wenn aber jemand einen neuen Adapter anfängt und widgets programmiert und das nicht weiß (steht leider auch sonst nirgends), dann gibt es Probleme, die hier im Forum wieder gelöst werden müssen.
      @AlCalzone

      AlCalzoneA Offline
      AlCalzoneA Offline
      AlCalzone
      Developer
      schrieb am zuletzt editiert von
      #2

      @OliverIO Ich kenne mich mit den VIS-Templates nicht aus. Wenn du den Fix kennst würde ich mich über ein Issue freuen, in dem du kurz beschreibst, welche Zeilen wie geändert werden müssen.

      Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

      OliverIOO 1 Antwort Letzte Antwort
      0
      • AlCalzoneA AlCalzone

        @OliverIO Ich kenne mich mit den VIS-Templates nicht aus. Wenn du den Fix kennst würde ich mich über ein Issue freuen, in dem du kurz beschreibst, welche Zeilen wie geändert werden müssen.

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

        @AlCalzone

        Habe Pull request erstellt
        https://github.com/ioBroker/ioBroker.template/pull/63

        Ich habe allerdings aktuell keine Test instanz auf der ich das ordentlich testen könnte.
        Deswegen habe ich den code in den von mir erzeugten adapter kopiert. Aber besser ist nochmal unabhängig testen :)

        • Bitte bei dir installieren
        • Dann ein Testadapter JS+VIS und TS+VIS erstellen
        • Dann Instanzen anlegen
        • Dann für beide jeweils die beiden erzeugten widgets ins vis legen
        • Dann die developer console öffnen im reiter console darf kein Fehler für diesen adapter erscheinen.

        Noch ein Hinweis, den ich bei einem eigenen Test gemerkt habe.
        Der Adaptername muss den folgenden Anforderungen für Bezeichner von javascript erfüllen.
        Ich habe selbst ein bindestrich im adapternamen verwendet, wurde auch alles anstandslos verarbeitet.
        Bei vis-widgets gibt es dann allerdings probleme, da der adaptername auch als berzeichner verwendet wird
        und alle template-strings durch den adapter namen ersetzt werden.

        • Bei selbst vergebenen Namen gelten folgende Regeln:
        • sie dürfen keine Leerzeichen enthalten
        • sie dürfen nur aus Buchstaben und Ziffern bestehen - das erste Zeichen muss ein Buchstabe sein; es sind Groß- und
        • Kleinbuchstaben erlaubt. Groß- und Kleinschreibung werden unterschieden!
        • sie dürfen keine deutschen Umlaute oder scharfes S enthalten
        • sie dürfen als einziges Sonderzeichen den Unterstrich "_" enthalten
        • sie dürfen nicht mit einem reservierten Wort identisch sein.

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

        AlCalzoneA 1 Antwort Letzte Antwort
        1
        • OliverIOO OliverIO

          @AlCalzone

          Habe Pull request erstellt
          https://github.com/ioBroker/ioBroker.template/pull/63

          Ich habe allerdings aktuell keine Test instanz auf der ich das ordentlich testen könnte.
          Deswegen habe ich den code in den von mir erzeugten adapter kopiert. Aber besser ist nochmal unabhängig testen :)

          • Bitte bei dir installieren
          • Dann ein Testadapter JS+VIS und TS+VIS erstellen
          • Dann Instanzen anlegen
          • Dann für beide jeweils die beiden erzeugten widgets ins vis legen
          • Dann die developer console öffnen im reiter console darf kein Fehler für diesen adapter erscheinen.

          Noch ein Hinweis, den ich bei einem eigenen Test gemerkt habe.
          Der Adaptername muss den folgenden Anforderungen für Bezeichner von javascript erfüllen.
          Ich habe selbst ein bindestrich im adapternamen verwendet, wurde auch alles anstandslos verarbeitet.
          Bei vis-widgets gibt es dann allerdings probleme, da der adaptername auch als berzeichner verwendet wird
          und alle template-strings durch den adapter namen ersetzt werden.

          • Bei selbst vergebenen Namen gelten folgende Regeln:
          • sie dürfen keine Leerzeichen enthalten
          • sie dürfen nur aus Buchstaben und Ziffern bestehen - das erste Zeichen muss ein Buchstabe sein; es sind Groß- und
          • Kleinbuchstaben erlaubt. Groß- und Kleinschreibung werden unterschieden!
          • sie dürfen keine deutschen Umlaute oder scharfes S enthalten
          • sie dürfen als einziges Sonderzeichen den Unterstrich "_" enthalten
          • sie dürfen nicht mit einem reservierten Wort identisch sein.
          AlCalzoneA Offline
          AlCalzoneA Offline
          AlCalzone
          Developer
          schrieb am zuletzt editiert von
          #4

          @OliverIO Der Fix für die zweite Hälfte war viel einfacher als gedacht:

          - vis.binds.test-widget.createWidget(this.data.wid, this.view, this.data, this.style);
          + vis.binds['test-widget'].createWidget(this.data.wid, this.view, this.data, this.style);
          

          Das war die einzige Stelle, wo nicht über diese Syntax auf die Eigenschaften zugegriffen wird.

          Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

          OliverIOO 1 Antwort Letzte Antwort
          0
          • AlCalzoneA AlCalzone

            @OliverIO Der Fix für die zweite Hälfte war viel einfacher als gedacht:

            - vis.binds.test-widget.createWidget(this.data.wid, this.view, this.data, this.style);
            + vis.binds['test-widget'].createWidget(this.data.wid, this.view, this.data, this.style);
            

            Das war die einzige Stelle, wo nicht über diese Syntax auf die Eigenschaften zugegriffen wird.

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

            @AlCalzone
            ok, stimmt, aber punkt Schreibweise geht dann nicht mehr, sondern man muss das immer so im browsercode schreiben.
            so eine kleine warnung im adapter creater wäre doch schön.

            Hintergrund: Als ich gestern den Adapter unterbau fertig gestellt habe,
            wollte ich dann das erste Widget probieren. Es hat eine weile gedauert bis ich den Fehler gefunden habe, bzw. verstanden hab warum das schief ging.

            habe dann den kompletten adapter umbenannt, weil ich einen einheitlichen namen wollt.
            will nur nicht, das es anderen genauso geht und gefrustet sind.

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

            AlCalzoneA 1 Antwort Letzte Antwort
            0
            • OliverIOO OliverIO

              @AlCalzone
              ok, stimmt, aber punkt Schreibweise geht dann nicht mehr, sondern man muss das immer so im browsercode schreiben.
              so eine kleine warnung im adapter creater wäre doch schön.

              Hintergrund: Als ich gestern den Adapter unterbau fertig gestellt habe,
              wollte ich dann das erste Widget probieren. Es hat eine weile gedauert bis ich den Fehler gefunden habe, bzw. verstanden hab warum das schief ging.

              habe dann den kompletten adapter umbenannt, weil ich einen einheitlichen namen wollt.
              will nur nicht, das es anderen genauso geht und gefrustet sind.

              AlCalzoneA Offline
              AlCalzoneA Offline
              AlCalzone
              Developer
              schrieb am zuletzt editiert von
              #6

              @OliverIO Ist allerdings schon an einigen anderen Stellen schon länger (schon immer?) so gewesen. Zumindest stammt der widget-Code aus Zeiten, als es ein separates Widget-Template gab. Die Änderung macht es nur einheitlich an der einen Stelle, wo es noch nicht so war.

              Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

              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

              753

              Online

              32.6k

              Benutzer

              82.2k

              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