Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. History Adapter erzeugt risiges fifos.json

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    History Adapter erzeugt risiges fifos.json

    This topic has been deleted. Only users with topic management privileges can see it.
    • D
      Dschaedl last edited by

      Hallo

      Ich habe den History Adapter aktiviert und ihn gleich mal bei sämtlich möglichen Objekten aktiviert (ca. 900).

      Dies ging eine Weile ganz gut, bis mir aufgefallen ist, dass der Node-Prozess vom Controller ca. 800mb Speicher benötigt hat. Beim Beenden ging das hoch bis ca. 1.8Gb und hat ca. 3 Minuten gedauert bis der Prozess wirklich beendet war 😮

      Die Ursache war, dass das fifos.json ständig gewachsen ist und die Daten nicht so wie erwartet nach dem maxLength in Dateien ausgelagert hat.

      Meiner Meinung nach stimmt in der function trimFifo(..) im statesInMemServer.js der splice nicht:

      var end = (minLength > fifo[id].length) ? minLength - fifo[id].length: 0;
      var result = fifo[id].splice(0, end - 1);
      // result wird danach archiviert
      
      

      die Bedingung für 'end' müsste doch umgekehrt sein (fifo.length wird grösser sein als minLength, wenn archiviert wird).

      also:

      var end = (minLength < fifo[id].length) ? fifo[id].length - minLength: 0;
      
      

      und anschliessend gib't noch ein Problem im history.js:90 :

       if (err || !res.common) {
      
      

      res.common darf nicht null sein, gibt sonst einen Fehler auf Zeile :106

      @Bluefox: Ich kann dir in Zukunft auch gerne Pull-Requests erzeugen (Habe aber gerade etwas Chaos in meinen Repos…)

      viele Grüsse

      Daniel

      P.S.

      Das File-basierte Archiv finde ich etwas unpraktisch für die weitere Verwendung (ausserhalb ioBroker). Ich spiele gerade damit die Daten parallel noch in einem Google Spreadsheet zu speichern oder in eine relationale DB abzulegen...

      1 Reply Last reply Reply Quote 0
      • Thisoft
        Thisoft last edited by

        Hallo,

        ich schreibe hier auch gleich mal dazu was mir am History-Adapter auffällt. Über zu hohen Speicherverbrauch kann ich mich nicht beklagen - bei mir ist es eher so dass die Werte nur von den letzten 24h gespeichert werden. Obwohl ich "keine automatische Löschung" eingestellt habe (s.Bild)

        250_zwischenablage01.jpg

        Wo Du gerade die dateibasierte Ablage erwähnst. Ich habe auch die Absicht, die DAten zusätzlich in eine relationale Db zu schreiben. DAzu wollte ich mir gerne mal den Aufbau dieser Db-Files anschauen. Ich habe nur eben bisher noch keine gefunden. Kannst Du mir sagen wo die eigentlich liegen müssten?

        1 Reply Last reply Reply Quote 0
        • D
          Dschaedl last edited by

          Hi

          Warum bei dir nur die letzten 24h gespeichert werden kann ich dir nicht sagen…

          Zu Ablage:

          Wenn die fifos.json 'überläuft', dann werden die daten in data/history/ <tagesdatum>in einer Datei pro ID abgelegt.

          Der Inhalt ist sehr einfach aufgebaut. Hier ein Beispiel eines Aussentemperatur Sensors:

          data/history/20150213/history.hm-rpc.0.JEQ0089712.1.TEMPERATURE.json

          [
            {
              "val": 0.5,
              "ack": true,
              "ts": 1423867577,
              "from": "system.adapter.hm-rpc.0",
              "lc": 1423866809
            },
            {
              "val": 0.4,
              "ack": true,
              "ts": 1423866650,
              "from": "system.adapter.hm-rpc.0",
              "lc": 1423866650
            },
            {
              "val": 0.5,
              "ack": true,
              "ts": 1423866479,
              "from": "system.adapter.hm-rpc.0",
              "lc": 1423866354
            },
            {
              "val": 0.5,
              "ack": true,
              "ts": 1423866354,
              "from": "system.adapter.hm-rpc.0",
              "lc": 1423866354
            },
            {
              "val": 0.4,
              "ack": true,
              "ts": 1423865439,
              "from": "system.adapter.hm-rpc.0",
              "lc": 1423865439
            }
          }
          
          ````</tagesdatum>
          1 Reply Last reply Reply Quote 0
          • Bluefox
            Bluefox last edited by

            @Dschaedl:

            var end = (minLength > fifo[id].length) ? minLength - fifo[id].length: 0;
            var result = fifo[id].splice(0, end - 1);
            // result wird danach archiviert
            
            

            die Bedingung für 'end' müsste doch umgekehrt sein (fifo.length wird grösser sein als minLength, wenn archiviert wird).

            also:

            var end = (minLength < fifo[id].length) ? fifo[id].length - minLength: 0;
            
            

            und anschliessend gib't noch ein Problem im history.js:90 :

             if (err || !res.common) {
            
            

            res.common darf nicht null sein, gibt sonst einen Fehler auf Zeile :106 `
            Da hast du recht. History habe ich jetzt gefixt.

            controller werde ich tick später machen.

            Besten Dank!

            @Dschaedl:

            Das File-basierte Archiv finde ich etwas unpraktisch für die weitere Verwendung (ausserhalb ioBroker). Ich spiele gerade damit die Daten parallel noch in einem Google Spreadsheet zu speichern oder in eine relationale DB abzulegen… `
            Da bin ich auch solcher Meinung. Das will ich aber später ergänzen.

            Erst Funktionalität. Dann verbessern. Die Leute haben Probleme mit Redis/CouchDB Installation. Will ich gar nicht wissen, was die mit InfluxDB, MySQL, sqlite haben werden. Dass muss auch alles konfigurierbar sein… Über Web...

            1 Reply Last reply Reply Quote 0
            • D
              Dschaedl last edited by

              ` > Da bin ich auch solcher Meinung. Das will ich aber später ergänzen.

              Erst Funktionalität. Dann verbessern. Die Leute haben Probleme mit Redis/CouchDB Installation. Will ich gar nicht wissen, was die mit InfluxDB, MySQL, sqlite haben werden. Dass muss auch alles konfigurierbar sein… Über Web... `
              :evil: Ja, stimmt. Allerdings könnte ja man z.B. eigene Speicher-module für den History Adapter schreiben, die dann halt voraussetzen, dass man mit den benötigten Technologien zurecht kommt.

              (Ich habe 'mein' history nun soweit erweitert, dass es Google Spreadsheets und MySQL schreiben kann 🙂 - ist allerdings zur Zeit alles hart codiert; nix mit konfigurierbar. Aber vielleicht wird mir ja bald mal langweilig 😄 )

              Wobei der Geofency Adapter auch schon weit oben auf meiner perönlichen Liste ist…

              viele Grüsse

              Daniel

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

              Support us

              ioBroker
              Community Adapters
              Donate
              FAQ Cloud / IOT
              HowTo: Node.js-Update
              HowTo: Backup/Restore
              Downloads
              BLOG

              1.1k
              Online

              31.7k
              Users

              79.7k
              Topics

              1.3m
              Posts

              3
              5
              2113
              Loading More Posts
              • Oldest to Newest
              • Newest to Oldest
              • Most Votes
              Reply
              • Reply as topic
              Log in to reply
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
              The ioBroker Community 2014-2023
              logo