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. ioBroker Allgemein
  4. History Adapter erzeugt risiges fifos.json

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.5k

History Adapter erzeugt risiges fifos.json

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
5 Beiträge 3 Kommentatoren 2.3k Aufrufe
  • Ä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.
  • D Offline
    D Offline
    Dschaedl
    schrieb am zuletzt editiert von
    #1

    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 :o

    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 Antwort Letzte Antwort
    0
    • ThisoftT Offline
      ThisoftT Offline
      Thisoft
      schrieb am zuletzt editiert von
      #2

      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?

      22 HM-Geräte; PivCCU2 auf RasPi

      ioBroker-Multihost; Ubuntu-Master auf Intel-Atom und 3 RasPi-Clients

      1 Antwort Letzte Antwort
      0
      • D Offline
        D Offline
        Dschaedl
        schrieb am zuletzt editiert von
        #3

        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 Antwort Letzte Antwort
        0
        • BluefoxB Offline
          BluefoxB Offline
          Bluefox
          schrieb am zuletzt editiert von
          #4

          @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 Antwort Letzte Antwort
          0
          • D Offline
            D Offline
            Dschaedl
            schrieb am zuletzt editiert von
            #5

            ` > 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 :D )

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

            viele Grüsse

            Daniel

            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
            FAQ Cloud / IOT
            HowTo: Node.js-Update
            HowTo: Backup/Restore
            Downloads
            BLOG

            659

            Online

            32.7k

            Benutzer

            82.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