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. Skripten / Logik
  4. JavaScript
  5. Hisotry auswerten und aufbereiten

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

Hisotry auswerten und aufbereiten

Geplant Angeheftet Gesperrt Verschoben JavaScript
8 Beiträge 2 Kommentatoren 867 Aufrufe 1 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.
  • T Offline
    T Offline
    tomily
    schrieb am zuletzt editiert von
    #1

    Hallo Leute,

    hat jemand von euch eine Idee, wie ich am simpelsten die Daten des History-Adapters auslesen und verarbeiten kann?

    Der History Adapter zeichnet fleißig die Temperaturen meiner HDDs auf:

    58388600-0f05-4916-9c06-2fe471eb42a6-grafik.png

    2af7355b-eda9-4ce9-8702-b9db3c947c47-grafik.png

    Diese werden unter /opt/iobroker/history/DATUM als. json gespeichert
    3b61b522-a6b3-4dac-8bf4-c68611170eee-grafik.png

    Habe in einem anderen Eintrag dieses Forums bereits einen Scriptschnipsel gefunden. Vielleicht kann man den dazu verwenden (siehe unten)

    Mein ziel wäre es, pro Datenpunkt den durchschnitt zu berechnen.
    Dazu müsste ich quasi "nur" eine bestimmte Anzahl der unterschiedlichen "val" Einträge der JSON-Datei nehmen, addieren und durch die gleiche Anzahl teilen.

    Leider habe ich keine Ahnung wie ich das angehen soll und leider auch nichts vergleichbares gefunden.
    Bitte steinigt mich nicht, falls ich doch ein Foreneintrag übersehen habe!

    DANKE und Grüße
    Tomily

    Achtung, geklaut. NICHT von mir :) #copyrighthoffentlichnichtverletzt :-)

    // History Daten einlesen
    var fs = require('fs');
    
    var heute = formatDate(new Date(),"YYYY") + formatDate(new Date(),"MM") + formatDate(new Date(),"DD");
    var id = "history.synology.0.DiskStationManager.hdd_info.laufwerk_1.temperature";
    var fn = "/opt/iobroker/history/" + heute + "/history." + id + ".json";
    
    var buffer = JSON.parse(fs.readFileSync(fn)); // array of objects
    var len = buffer.length;
    var lastval = buffer[len - 1].val;
    log(len + " " + lastval);
    
    paul53P 1 Antwort Letzte Antwort
    0
    • T tomily

      Hallo Leute,

      hat jemand von euch eine Idee, wie ich am simpelsten die Daten des History-Adapters auslesen und verarbeiten kann?

      Der History Adapter zeichnet fleißig die Temperaturen meiner HDDs auf:

      58388600-0f05-4916-9c06-2fe471eb42a6-grafik.png

      2af7355b-eda9-4ce9-8702-b9db3c947c47-grafik.png

      Diese werden unter /opt/iobroker/history/DATUM als. json gespeichert
      3b61b522-a6b3-4dac-8bf4-c68611170eee-grafik.png

      Habe in einem anderen Eintrag dieses Forums bereits einen Scriptschnipsel gefunden. Vielleicht kann man den dazu verwenden (siehe unten)

      Mein ziel wäre es, pro Datenpunkt den durchschnitt zu berechnen.
      Dazu müsste ich quasi "nur" eine bestimmte Anzahl der unterschiedlichen "val" Einträge der JSON-Datei nehmen, addieren und durch die gleiche Anzahl teilen.

      Leider habe ich keine Ahnung wie ich das angehen soll und leider auch nichts vergleichbares gefunden.
      Bitte steinigt mich nicht, falls ich doch ein Foreneintrag übersehen habe!

      DANKE und Grüße
      Tomily

      Achtung, geklaut. NICHT von mir :) #copyrighthoffentlichnichtverletzt :-)

      // History Daten einlesen
      var fs = require('fs');
      
      var heute = formatDate(new Date(),"YYYY") + formatDate(new Date(),"MM") + formatDate(new Date(),"DD");
      var id = "history.synology.0.DiskStationManager.hdd_info.laufwerk_1.temperature";
      var fn = "/opt/iobroker/history/" + heute + "/history." + id + ".json";
      
      var buffer = JSON.parse(fs.readFileSync(fn)); // array of objects
      var len = buffer.length;
      var lastval = buffer[len - 1].val;
      log(len + " " + lastval);
      
      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von paul53
      #2

      @tomily sagte:

      Daten des History-Adapters auslesen und verarbeiten kann?

      Siehe Doku.

      @tomily sagte in Hisotry auswerten und aufbereiten:

      Mein ziel wäre es, pro Datenpunkt den durchschnitt zu berechnen.

      Dazu sind die History-Daten wenig geeignet, da die Werte in sehr unterschiedlichen Zeitabständen aufgezeichnet werden.
      Man kann natürlich auch die Werte über die Zeit integrieren und dann durch die Gesamtzeit dividieren.

      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

      1 Antwort Letzte Antwort
      0
      • T Offline
        T Offline
        tomily
        schrieb am zuletzt editiert von
        #3

        Danke für die schnelle Antwort.
        Darauf bin ich schon gestoßen....vielleicht sollte ich die Finger davon lassen, wenn ich zu wenig Ahnung vom Scripten habe :-)

        Hat zufällig jemand schonmal soetwas gemacht, bei dem ich die Anfänge es abschauen kann? :-)

        Mich interessiert im Prinzip nur jeweils die Zeile "val" und der dahinter zugehörige Wert.
        Inhalt der Json-DAtei:

        [
          {
            "val": 31,
            "ack": 1,
            "ts": 1605569925521,
            "q": 0,
            "from": "system.adapter.synology.0",
            "user": "system.user.admin"
          },
          {
            "val": 32,
            "ack": 1,
            "ts": 1605571704871,
            "q": 0,
            "from": "system.adapter.synology.0",
            "user": "system.user.admin"
          },
          {
            "val": 31,
            "ack": 1,
            "ts": 1605574513277,
            "q": 0,
            "from": "system.adapter.synology.0",
            "user": "system.user.admin"
          },
          {
            "val": 30,
            "ack": 1,
            "ts": 1605575480922,
            "q": 0,
            "from": "system.adapter.synology.0",
            "user": "system.user.admin"
          },
          {
            "val": 30,
            "ack": 1,
            "ts": 1605598853205,
            "q": 0,
            "from": "system.adapter.history.0",
            "user": "system.user.admin"
          },
          {
            "val": null,
            "ts": 1605598853206,
            "lc": 1605598853206,
            "q": 64,
            "from": "system.adapter.history.0"
          },
          {
            "val": null,
            "ts": 1605599011287,
            "ack": 1,
            "q": 64,
            "from": "system.adapter.history.0"
          },
          {
            "val": 30,
            "ack": 1,
            "ts": 1605599011287,
            "q": 0,
            "from": "system.adapter.history.0",
            "user": "system.user.admin"
          },
          {
            "val": 30,
            "ack": 1,
            "ts": 1605599180650,
            "q": 0,
            "from": "system.adapter.synology.0",
            "user": "system.user.admin"
          },
          {
            "val": 31,
            "ack": 1,
            "ts": 1605636192964,
            "q": 0,
            "from": "system.adapter.synology.0",
            "user": "system.user.admin"
          },
          {
            "val": 30,
            "ack": 1,
            "ts": 1605636797724,
            "q": 0,
            "from": "system.adapter.synology.0",
            "user": "system.user.admin"
          },
          {
            "val": 29,
            "ack": 1,
            "ts": 1605644054896,
            "q": 0,
            "from": "system.adapter.synology.0",
            "user": "system.user.admin"
          },
          {
            "val": 30,
            "ack": 1,
            "ts": 1605646473967,
            "q": 0,
            "from": "system.adapter.synology.0",
            "user": "system.user.admin"
          }
        ]
        
        T 1 Antwort Letzte Antwort
        0
        • T tomily

          Danke für die schnelle Antwort.
          Darauf bin ich schon gestoßen....vielleicht sollte ich die Finger davon lassen, wenn ich zu wenig Ahnung vom Scripten habe :-)

          Hat zufällig jemand schonmal soetwas gemacht, bei dem ich die Anfänge es abschauen kann? :-)

          Mich interessiert im Prinzip nur jeweils die Zeile "val" und der dahinter zugehörige Wert.
          Inhalt der Json-DAtei:

          [
            {
              "val": 31,
              "ack": 1,
              "ts": 1605569925521,
              "q": 0,
              "from": "system.adapter.synology.0",
              "user": "system.user.admin"
            },
            {
              "val": 32,
              "ack": 1,
              "ts": 1605571704871,
              "q": 0,
              "from": "system.adapter.synology.0",
              "user": "system.user.admin"
            },
            {
              "val": 31,
              "ack": 1,
              "ts": 1605574513277,
              "q": 0,
              "from": "system.adapter.synology.0",
              "user": "system.user.admin"
            },
            {
              "val": 30,
              "ack": 1,
              "ts": 1605575480922,
              "q": 0,
              "from": "system.adapter.synology.0",
              "user": "system.user.admin"
            },
            {
              "val": 30,
              "ack": 1,
              "ts": 1605598853205,
              "q": 0,
              "from": "system.adapter.history.0",
              "user": "system.user.admin"
            },
            {
              "val": null,
              "ts": 1605598853206,
              "lc": 1605598853206,
              "q": 64,
              "from": "system.adapter.history.0"
            },
            {
              "val": null,
              "ts": 1605599011287,
              "ack": 1,
              "q": 64,
              "from": "system.adapter.history.0"
            },
            {
              "val": 30,
              "ack": 1,
              "ts": 1605599011287,
              "q": 0,
              "from": "system.adapter.history.0",
              "user": "system.user.admin"
            },
            {
              "val": 30,
              "ack": 1,
              "ts": 1605599180650,
              "q": 0,
              "from": "system.adapter.synology.0",
              "user": "system.user.admin"
            },
            {
              "val": 31,
              "ack": 1,
              "ts": 1605636192964,
              "q": 0,
              "from": "system.adapter.synology.0",
              "user": "system.user.admin"
            },
            {
              "val": 30,
              "ack": 1,
              "ts": 1605636797724,
              "q": 0,
              "from": "system.adapter.synology.0",
              "user": "system.user.admin"
            },
            {
              "val": 29,
              "ack": 1,
              "ts": 1605644054896,
              "q": 0,
              "from": "system.adapter.synology.0",
              "user": "system.user.admin"
            },
            {
              "val": 30,
              "ack": 1,
              "ts": 1605646473967,
              "q": 0,
              "from": "system.adapter.synology.0",
              "user": "system.user.admin"
            }
          ]
          
          T Offline
          T Offline
          tomily
          schrieb am zuletzt editiert von
          #4

          @tomily
          Hier noch ein kleiner Nachtrag. Mit diesen Zeilen, kann ich wenigstens schonmal die Werte in das Log bringen:

          var end = Date.now();
          sendTo('history.0', 'getHistory', {
              id: 'synology.0.DiskStationManager.hdd_info.laufwerk_1.temperature',
              options: {
                  start:      end - 3600000,
                  end:        end,
                  aggregate: 'onchange'
              }
          }, function (result) {
              for (var i = 0; i < result.result.length; i++) {
                  console.log(result.result[i].val + ' ' + new Date(result.result[i].ts).toISOString());
              }
          
          });
          
          Ergebnis
          ![b6e0b651-bc01-4e51-8866-e6ca963074f8-grafik.png](/assets/uploads/files/1605709192483-b6e0b651-bc01-4e51-8866-e6ca963074f8-grafik.png) 
          

          Bin ich da auf der richtigen Spur?

          1 Antwort Letzte Antwort
          0
          • T Offline
            T Offline
            tomily
            schrieb am zuletzt editiert von
            #5

            Hallo Leute, sorry für das halbe Selstgespräch. Wollte meine letzte 2 Antworten löschen, darf ich aber nicht :-)
            Konnte durch ein weiteres Beispielscript fast ans Ziel kommen. Hier mein aktueller Zwischenstand:

            var summe = 0;
            var counter = 0;
            
            var end = Date.now();
            sendTo('history.0', 'getHistory', {
                id: 'synology.0.DiskStationManager.hdd_info.laufwerk_2.temperature',
                options: {
                    start:      end - 7200000,
                    end:        end,
                    aggregate: 'onchange'
                    }
            }, function (result) {
                for (var i = 0; i < result.result.length; i++) {
                    console.log(result.result[i].val + ' ' + new Date(result.result[i].ts).toISOString());
                    //console.log(result.result[i].val);
                    (summe = summe + result.result[i].val);
                    (counter = counter + 1)
                    }
                    //Zusammenfassung ausgeben
                    console.log("Summe = " + summe)
                    console.log("Anzahl = " + counter)
                    console.log("Durchschnitt = " + (summe / counter))
            });
            

            Ergebnis:
            cedeee3f-0a68-4abc-93ea-5fe5be042eb4-grafik.png

            paul53P 1 Antwort Letzte Antwort
            0
            • T tomily

              Hallo Leute, sorry für das halbe Selstgespräch. Wollte meine letzte 2 Antworten löschen, darf ich aber nicht :-)
              Konnte durch ein weiteres Beispielscript fast ans Ziel kommen. Hier mein aktueller Zwischenstand:

              var summe = 0;
              var counter = 0;
              
              var end = Date.now();
              sendTo('history.0', 'getHistory', {
                  id: 'synology.0.DiskStationManager.hdd_info.laufwerk_2.temperature',
                  options: {
                      start:      end - 7200000,
                      end:        end,
                      aggregate: 'onchange'
                      }
              }, function (result) {
                  for (var i = 0; i < result.result.length; i++) {
                      console.log(result.result[i].val + ' ' + new Date(result.result[i].ts).toISOString());
                      //console.log(result.result[i].val);
                      (summe = summe + result.result[i].val);
                      (counter = counter + 1)
                      }
                      //Zusammenfassung ausgeben
                      console.log("Summe = " + summe)
                      console.log("Anzahl = " + counter)
                      console.log("Durchschnitt = " + (summe / counter))
              });
              

              Ergebnis:
              cedeee3f-0a68-4abc-93ea-5fe5be042eb4-grafik.png

              paul53P Offline
              paul53P Offline
              paul53
              schrieb am zuletzt editiert von
              #6

              @tomily
              Die Variable counter ist unnötig, denn die Anzahl steht schon in result.result.length.

              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

              T 1 Antwort Letzte Antwort
              0
              • paul53P paul53

                @tomily
                Die Variable counter ist unnötig, denn die Anzahl steht schon in result.result.length.

                T Offline
                T Offline
                tomily
                schrieb am zuletzt editiert von
                #7

                @paul53 Mercie für den Hinweis. Das baue ich direkt um.

                Hast du mir evlt. noch nen Tipp, wie ich es hinbekomme, dass das Script ausomatisch los läuft?

                Vermutlich ist es am Sinnvollsten, das bei einer Änderung der ID zu tun? Oder jede volle Stunde.

                LG

                paul53P 1 Antwort Letzte Antwort
                0
                • T tomily

                  @paul53 Mercie für den Hinweis. Das baue ich direkt um.

                  Hast du mir evlt. noch nen Tipp, wie ich es hinbekomme, dass das Script ausomatisch los läuft?

                  Vermutlich ist es am Sinnvollsten, das bei einer Änderung der ID zu tun? Oder jede volle Stunde.

                  LG

                  paul53P Offline
                  paul53P Offline
                  paul53
                  schrieb am zuletzt editiert von
                  #8

                  @tomily sagte:

                  das Script ausomatisch los läuft?

                  Packe es in die Callback-Funktion von schedule().

                  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

                  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

                  729

                  Online

                  32.6k

                  Benutzer

                  82.1k

                  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