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. Max /Mintemperatur aus influxdb mit gethistory

NEWS

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

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

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

Max /Mintemperatur aus influxdb mit gethistory

Geplant Angeheftet Gesperrt Verschoben JavaScript
javascriptmonitoring
18 Beiträge 5 Kommentatoren 3.1k 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.
  • T Offline
    T Offline
    Trikolon
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen,
    per modbus werden verschiedene Temperaturwerte in eine influxdb gespeichert. Per Flot kann ich mir den Verlauf auch wunderbar ansehen. Ich möchte nun per Skript den Max- und Min-Wert der letzten 24h ausgeben. Prinzipiell klapt aus auch, allerdings nicht über 24h. Da springt die End-Zeit.

    var dateStart = new Date().getTime()-86400000;
    var dateEnd = new Date().getTime();
    
    var maxKoll = -100;
    var minKoll = 100;
    var maxAussen = -100;
    var minAussen = 100;
    
    sendTo('influxdb.0', 'getHistory', {
        id: 'modbus.0.holdingRegisters.1_TemperaturKollektoren',
        options: {
            start:      dateStart,
            end:        dateEnd,
            aggregate: 'none' // or 'none' to get raw values
        }
    }, function (result) {
        for (var i = 0; i < result.result.length; i++) {
            //console.log(result.result[i].val + ' ' + new Date(result.result[i].ts).toISOString());
            if (result.result[i].val > maxKoll) {
                maxKoll = result.result[i].val;
            }
            if (result.result[i].val < minKoll) {
                minKoll = result.result[i].val;
            }
            if (i == 0) {
                console.log('First Value '+ result.result[i].val + ' ' + new Date(result.result[i].ts).toISOString())
            }
            if (i == result.result.length -1) {
                console.log('Last Value '+ result.result[i].val + ' ' + new Date(result.result[i].ts).toISOString())
            }
        }
        console.log('Max Kollektoren: '+ maxKoll);
        console.log('Min Kollektoren: '+ minKoll);
    });
    
    
    15:12:16.674	info	javascript.0 script.js.common.TemperaturMinMax: First Value 41.2 2019-02-17T14:11:41.535Z
    15:12:16.674	info	javascript.0 script.js.common.TemperaturMinMax: Last Value -5 2019-02-18T06:11:28.084Z
    15:12:16.674	info	javascript.0 script.js.common.TemperaturMinMax: Max Kollektoren: 41.4
    15:12:16.674	info	javascript.0 script.js.common.TemperaturMinMax: Min Kollektoren: -5.8
    
    
    

    Hat jemand eine Idee woran das liegen könnte? Die Systemzeit ist korrekt eingetragen.

    Gruß
    Ben

    SegwayS 1 Antwort Letzte Antwort
    0
    • T Trikolon

      Hallo zusammen,
      per modbus werden verschiedene Temperaturwerte in eine influxdb gespeichert. Per Flot kann ich mir den Verlauf auch wunderbar ansehen. Ich möchte nun per Skript den Max- und Min-Wert der letzten 24h ausgeben. Prinzipiell klapt aus auch, allerdings nicht über 24h. Da springt die End-Zeit.

      var dateStart = new Date().getTime()-86400000;
      var dateEnd = new Date().getTime();
      
      var maxKoll = -100;
      var minKoll = 100;
      var maxAussen = -100;
      var minAussen = 100;
      
      sendTo('influxdb.0', 'getHistory', {
          id: 'modbus.0.holdingRegisters.1_TemperaturKollektoren',
          options: {
              start:      dateStart,
              end:        dateEnd,
              aggregate: 'none' // or 'none' to get raw values
          }
      }, function (result) {
          for (var i = 0; i < result.result.length; i++) {
              //console.log(result.result[i].val + ' ' + new Date(result.result[i].ts).toISOString());
              if (result.result[i].val > maxKoll) {
                  maxKoll = result.result[i].val;
              }
              if (result.result[i].val < minKoll) {
                  minKoll = result.result[i].val;
              }
              if (i == 0) {
                  console.log('First Value '+ result.result[i].val + ' ' + new Date(result.result[i].ts).toISOString())
              }
              if (i == result.result.length -1) {
                  console.log('Last Value '+ result.result[i].val + ' ' + new Date(result.result[i].ts).toISOString())
              }
          }
          console.log('Max Kollektoren: '+ maxKoll);
          console.log('Min Kollektoren: '+ minKoll);
      });
      
      
      15:12:16.674	info	javascript.0 script.js.common.TemperaturMinMax: First Value 41.2 2019-02-17T14:11:41.535Z
      15:12:16.674	info	javascript.0 script.js.common.TemperaturMinMax: Last Value -5 2019-02-18T06:11:28.084Z
      15:12:16.674	info	javascript.0 script.js.common.TemperaturMinMax: Max Kollektoren: 41.4
      15:12:16.674	info	javascript.0 script.js.common.TemperaturMinMax: Min Kollektoren: -5.8
      
      
      

      Hat jemand eine Idee woran das liegen könnte? Die Systemzeit ist korrekt eingetragen.

      Gruß
      Ben

      SegwayS Offline
      SegwayS Offline
      Segway
      schrieb am zuletzt editiert von
      #2

      @Trikolon
      Das habe ich bei mir umgesetzt und das javascript aus dem Forum hier genommen --> siehe hier
      funktioniert perfekt musst nur die Datenpunkte ändern und die DB (sql.0)

      Kannst du nutzen um auch 7 Tage, Monat, 30 tage etc. zu machen.

      Gruß Dirk
      Intel Proxmox Cluster (3x NUC) mit Debian & Proxmox / IoB als VM unter Debian / 60+ Adapter installiert

      1 Antwort Letzte Antwort
      0
      • S Offline
        S Offline
        sonystar
        schrieb am zuletzt editiert von
        #3

        Hallo,

        ich bekomme das Script aus dem Link mit einer InfluxDB nicht zum laufen.

        ! ````
        // -----------------------------------------------------------------------------
        // ----- Abfragen von Werten aus der Datenbank (SQL) ---------------------------
        // -----------------------------------------------------------------------------
        ! // ----- Datenpunkt der ausgelesen werden soll ---------------------------------
        var id = "javascript.0.Wetterstation.Aussentemperatur";
        // ----- Datenpunkte in die gespeichert werden soll ----------------------------
        var maxid = 'javascript.0.Statistik.Aussentemp.Max24';
        var minid = 'javascript.0.Statistik.Aussentemp.Min24';
        var dt = 24; // Zeitraum in Stunden
        dt = dt36001000; // Zeitraum umrechnen in ??
        ! // ----- Datenpunkte anlegen ---------------------------------------------------
        createState(maxid, " ");
        createState(minid, " ");
        log('1. ) Datenpunkte angelegt ');
        ! SQLAbfrage(id);
        ! //----- SQL-Abfrage durchführen
        function SQLAbfrage () {
        log('2. ) Datenpunkt => ' + id);
        log('2a.) Abfrage => SELECT * FROM datapoints WHERE name = '' + id + ''');
        sendTo('influxdb.0', 'query', 'SELECT * FROM ioBmaster.datapoints WHERE name = '' + id + ''', GetResults);
        }
        //---------------------------------------
        ! function GetResults (dpoint) {
        log('3. ) Funktion -> GetResults aufrufen');
        var end_time = new Date().getTime();
        var start_time = new Date().getTime() - dt;
        log('3a.) Startzeit : ' + start_time);
        log('3b.) Endzeit : ' + end_time);
        log(' Datenpunkt: ' + dpoint.result);
        log('3c.) result : ' + JSON.stringify(dpoint.result) + ' -//- ' + start_time);
        log(' Datenpunkt: ' + dpoint.result[0].id + ' ---//--- ' + dpoint.result[0].name);
        sendTo('influxdb.0', 'query', 'SELECT Round(Min(val),1) As MinVal FROM ioBmaster.ts_number WHERE ts >= ' + start_time + ' AND id=' + dpoint.result[0].id + ' GROUP BY id',minimum);
        sendTo('influxdb.0', 'query', 'SELECT Round(Max(val),1) As MaxVal FROM ioBmaster.ts_number WHERE ts >= ' + start_time + ' AND id=' + dpoint.result[0].id + ' GROUP BY id',maximum);
        }
        ! //----- Werte schreiben (maximum, minimum)
        //----- minimum
        function minimum(result) {
        log('min )Funktion -> ' + JSON.stringify(result.result));
        setState(minid, result.result[0].MinVal);
        }
        //----- maximum
        function maximum(result) {
        log('max )Funktion -> ' + JSON.stringify(result.result));
        setState(maxid, result.result[0].MaxVal);
        log('---- fertig -----------------------------------------');
        

        Endet mit Error:

        javascript.0	2020-12-18 22:04:12.920	info	(3004) Stop script script.js.common.Skript_1
        javascript.0	2020-12-18 22:04:09.753	error	(3004) at process._tickCallback (internal/process/next_tick.js:68:7)
        javascript.0	2020-12-18 22:04:09.753	error	(3004) at promise.then (/opt/iobroker/node_modules/standard-as-callback/built/index.js:19:49)
        javascript.0	2020-12-18 22:04:09.753	error	(3004) at tryCatcher (/opt/iobroker/node_modules/standard-as-callback/built/utils.js:11:23)
        javascript.0	2020-12-18 22:04:09.753	error	(3004) at client.get (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:616:17)
        javascript.0	2020-12-18 22:04:09.753	error	(3004) at adapter.getForeignState (/opt/iobroker/node_modules/iobroker.javascript/main.js:1140:17)
        javascript.0	2020-12-18 22:04:09.752	error	(3004) at createProblemObject (/opt/iobroker/node_modules/iobroker.javascript/main.js:1559:17)
        javascript.0	2020-12-18 22:04:09.752	error	(3004) at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:1503:37)
        javascript.0	2020-12-18 22:04:09.752	error	(3004) at createVM (/opt/iobroker/node_modules/iobroker.javascript/main.js:1280:28)
        javascript.0	2020-12-18 22:04:09.752	error	(3004) at Object.createScript (vm.js:277:10)
        javascript.0	2020-12-18 22:04:09.752	error	(3004) at new Script (vm.js:83:7)
        javascript.0	2020-12-18 22:04:09.752	error	(3004) SyntaxError: Unexpected token var
        javascript.0	2020-12-18 22:04:09.752	error	(3004) ^^^
        javascript.0	2020-12-18 22:04:09.752	error	(3004) var id = "javascript.0.Wetterstation.Aussentemperatur";
        javascript.0	2020-12-18 22:04:09.752	error	at script.js.common.Skript_1:6
        javascript.0	2020-12-18 22:04:09.752	error	(3004) script.js.common.Skript_1 compile failed:
        javascript.0	2020-12-18 22:04:09.752	info	(3004) Start javascript script.js.common.Skript_1
        

        Kannst du mir helfen?

        SegwayS paul53P 2 Antworten Letzte Antwort
        0
        • S sonystar

          Hallo,

          ich bekomme das Script aus dem Link mit einer InfluxDB nicht zum laufen.

          ! ````
          // -----------------------------------------------------------------------------
          // ----- Abfragen von Werten aus der Datenbank (SQL) ---------------------------
          // -----------------------------------------------------------------------------
          ! // ----- Datenpunkt der ausgelesen werden soll ---------------------------------
          var id = "javascript.0.Wetterstation.Aussentemperatur";
          // ----- Datenpunkte in die gespeichert werden soll ----------------------------
          var maxid = 'javascript.0.Statistik.Aussentemp.Max24';
          var minid = 'javascript.0.Statistik.Aussentemp.Min24';
          var dt = 24; // Zeitraum in Stunden
          dt = dt36001000; // Zeitraum umrechnen in ??
          ! // ----- Datenpunkte anlegen ---------------------------------------------------
          createState(maxid, " ");
          createState(minid, " ");
          log('1. ) Datenpunkte angelegt ');
          ! SQLAbfrage(id);
          ! //----- SQL-Abfrage durchführen
          function SQLAbfrage () {
          log('2. ) Datenpunkt => ' + id);
          log('2a.) Abfrage => SELECT * FROM datapoints WHERE name = '' + id + ''');
          sendTo('influxdb.0', 'query', 'SELECT * FROM ioBmaster.datapoints WHERE name = '' + id + ''', GetResults);
          }
          //---------------------------------------
          ! function GetResults (dpoint) {
          log('3. ) Funktion -> GetResults aufrufen');
          var end_time = new Date().getTime();
          var start_time = new Date().getTime() - dt;
          log('3a.) Startzeit : ' + start_time);
          log('3b.) Endzeit : ' + end_time);
          log(' Datenpunkt: ' + dpoint.result);
          log('3c.) result : ' + JSON.stringify(dpoint.result) + ' -//- ' + start_time);
          log(' Datenpunkt: ' + dpoint.result[0].id + ' ---//--- ' + dpoint.result[0].name);
          sendTo('influxdb.0', 'query', 'SELECT Round(Min(val),1) As MinVal FROM ioBmaster.ts_number WHERE ts >= ' + start_time + ' AND id=' + dpoint.result[0].id + ' GROUP BY id',minimum);
          sendTo('influxdb.0', 'query', 'SELECT Round(Max(val),1) As MaxVal FROM ioBmaster.ts_number WHERE ts >= ' + start_time + ' AND id=' + dpoint.result[0].id + ' GROUP BY id',maximum);
          }
          ! //----- Werte schreiben (maximum, minimum)
          //----- minimum
          function minimum(result) {
          log('min )Funktion -> ' + JSON.stringify(result.result));
          setState(minid, result.result[0].MinVal);
          }
          //----- maximum
          function maximum(result) {
          log('max )Funktion -> ' + JSON.stringify(result.result));
          setState(maxid, result.result[0].MaxVal);
          log('---- fertig -----------------------------------------');
          

          Endet mit Error:

          javascript.0	2020-12-18 22:04:12.920	info	(3004) Stop script script.js.common.Skript_1
          javascript.0	2020-12-18 22:04:09.753	error	(3004) at process._tickCallback (internal/process/next_tick.js:68:7)
          javascript.0	2020-12-18 22:04:09.753	error	(3004) at promise.then (/opt/iobroker/node_modules/standard-as-callback/built/index.js:19:49)
          javascript.0	2020-12-18 22:04:09.753	error	(3004) at tryCatcher (/opt/iobroker/node_modules/standard-as-callback/built/utils.js:11:23)
          javascript.0	2020-12-18 22:04:09.753	error	(3004) at client.get (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:616:17)
          javascript.0	2020-12-18 22:04:09.753	error	(3004) at adapter.getForeignState (/opt/iobroker/node_modules/iobroker.javascript/main.js:1140:17)
          javascript.0	2020-12-18 22:04:09.752	error	(3004) at createProblemObject (/opt/iobroker/node_modules/iobroker.javascript/main.js:1559:17)
          javascript.0	2020-12-18 22:04:09.752	error	(3004) at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:1503:37)
          javascript.0	2020-12-18 22:04:09.752	error	(3004) at createVM (/opt/iobroker/node_modules/iobroker.javascript/main.js:1280:28)
          javascript.0	2020-12-18 22:04:09.752	error	(3004) at Object.createScript (vm.js:277:10)
          javascript.0	2020-12-18 22:04:09.752	error	(3004) at new Script (vm.js:83:7)
          javascript.0	2020-12-18 22:04:09.752	error	(3004) SyntaxError: Unexpected token var
          javascript.0	2020-12-18 22:04:09.752	error	(3004) ^^^
          javascript.0	2020-12-18 22:04:09.752	error	(3004) var id = "javascript.0.Wetterstation.Aussentemperatur";
          javascript.0	2020-12-18 22:04:09.752	error	at script.js.common.Skript_1:6
          javascript.0	2020-12-18 22:04:09.752	error	(3004) script.js.common.Skript_1 compile failed:
          javascript.0	2020-12-18 22:04:09.752	info	(3004) Start javascript script.js.common.Skript_1
          

          Kannst du mir helfen?

          SegwayS Offline
          SegwayS Offline
          Segway
          schrieb am zuletzt editiert von
          #4

          @sonystar sagte in Max /Mintemperatur aus influxdb mit gethistory:

          javascript.0.Wetterstation.Aussentemperatur

          Mhhh error 3004 - unexpected token sagt mir grad nix.

          Gibt es den denn Datenpunkt javascript.0.Wetterstation.Aussentemperatur ?
          Wenn ja wie ist dieser definiert ?

          Gruß Dirk
          Intel Proxmox Cluster (3x NUC) mit Debian & Proxmox / IoB als VM unter Debian / 60+ Adapter installiert

          1 Antwort Letzte Antwort
          0
          • S sonystar

            Hallo,

            ich bekomme das Script aus dem Link mit einer InfluxDB nicht zum laufen.

            ! ````
            // -----------------------------------------------------------------------------
            // ----- Abfragen von Werten aus der Datenbank (SQL) ---------------------------
            // -----------------------------------------------------------------------------
            ! // ----- Datenpunkt der ausgelesen werden soll ---------------------------------
            var id = "javascript.0.Wetterstation.Aussentemperatur";
            // ----- Datenpunkte in die gespeichert werden soll ----------------------------
            var maxid = 'javascript.0.Statistik.Aussentemp.Max24';
            var minid = 'javascript.0.Statistik.Aussentemp.Min24';
            var dt = 24; // Zeitraum in Stunden
            dt = dt36001000; // Zeitraum umrechnen in ??
            ! // ----- Datenpunkte anlegen ---------------------------------------------------
            createState(maxid, " ");
            createState(minid, " ");
            log('1. ) Datenpunkte angelegt ');
            ! SQLAbfrage(id);
            ! //----- SQL-Abfrage durchführen
            function SQLAbfrage () {
            log('2. ) Datenpunkt => ' + id);
            log('2a.) Abfrage => SELECT * FROM datapoints WHERE name = '' + id + ''');
            sendTo('influxdb.0', 'query', 'SELECT * FROM ioBmaster.datapoints WHERE name = '' + id + ''', GetResults);
            }
            //---------------------------------------
            ! function GetResults (dpoint) {
            log('3. ) Funktion -> GetResults aufrufen');
            var end_time = new Date().getTime();
            var start_time = new Date().getTime() - dt;
            log('3a.) Startzeit : ' + start_time);
            log('3b.) Endzeit : ' + end_time);
            log(' Datenpunkt: ' + dpoint.result);
            log('3c.) result : ' + JSON.stringify(dpoint.result) + ' -//- ' + start_time);
            log(' Datenpunkt: ' + dpoint.result[0].id + ' ---//--- ' + dpoint.result[0].name);
            sendTo('influxdb.0', 'query', 'SELECT Round(Min(val),1) As MinVal FROM ioBmaster.ts_number WHERE ts >= ' + start_time + ' AND id=' + dpoint.result[0].id + ' GROUP BY id',minimum);
            sendTo('influxdb.0', 'query', 'SELECT Round(Max(val),1) As MaxVal FROM ioBmaster.ts_number WHERE ts >= ' + start_time + ' AND id=' + dpoint.result[0].id + ' GROUP BY id',maximum);
            }
            ! //----- Werte schreiben (maximum, minimum)
            //----- minimum
            function minimum(result) {
            log('min )Funktion -> ' + JSON.stringify(result.result));
            setState(minid, result.result[0].MinVal);
            }
            //----- maximum
            function maximum(result) {
            log('max )Funktion -> ' + JSON.stringify(result.result));
            setState(maxid, result.result[0].MaxVal);
            log('---- fertig -----------------------------------------');
            

            Endet mit Error:

            javascript.0	2020-12-18 22:04:12.920	info	(3004) Stop script script.js.common.Skript_1
            javascript.0	2020-12-18 22:04:09.753	error	(3004) at process._tickCallback (internal/process/next_tick.js:68:7)
            javascript.0	2020-12-18 22:04:09.753	error	(3004) at promise.then (/opt/iobroker/node_modules/standard-as-callback/built/index.js:19:49)
            javascript.0	2020-12-18 22:04:09.753	error	(3004) at tryCatcher (/opt/iobroker/node_modules/standard-as-callback/built/utils.js:11:23)
            javascript.0	2020-12-18 22:04:09.753	error	(3004) at client.get (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:616:17)
            javascript.0	2020-12-18 22:04:09.753	error	(3004) at adapter.getForeignState (/opt/iobroker/node_modules/iobroker.javascript/main.js:1140:17)
            javascript.0	2020-12-18 22:04:09.752	error	(3004) at createProblemObject (/opt/iobroker/node_modules/iobroker.javascript/main.js:1559:17)
            javascript.0	2020-12-18 22:04:09.752	error	(3004) at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:1503:37)
            javascript.0	2020-12-18 22:04:09.752	error	(3004) at createVM (/opt/iobroker/node_modules/iobroker.javascript/main.js:1280:28)
            javascript.0	2020-12-18 22:04:09.752	error	(3004) at Object.createScript (vm.js:277:10)
            javascript.0	2020-12-18 22:04:09.752	error	(3004) at new Script (vm.js:83:7)
            javascript.0	2020-12-18 22:04:09.752	error	(3004) SyntaxError: Unexpected token var
            javascript.0	2020-12-18 22:04:09.752	error	(3004) ^^^
            javascript.0	2020-12-18 22:04:09.752	error	(3004) var id = "javascript.0.Wetterstation.Aussentemperatur";
            javascript.0	2020-12-18 22:04:09.752	error	at script.js.common.Skript_1:6
            javascript.0	2020-12-18 22:04:09.752	error	(3004) script.js.common.Skript_1 compile failed:
            javascript.0	2020-12-18 22:04:09.752	info	(3004) Start javascript script.js.common.Skript_1
            

            Kannst du mir helfen?

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

            @sonystar
            Das Script ist verstümmelt. Lösche alle "! " am Anfang der Zeilen, in denen es vorhanden ist.
            Zeile 11

            dt = dt36001000; // Zeitraum umrechnen in ??
            

            ändern

            dt = dt * 3600 * 1000; // Zeitraum umrechnen in ms
            

            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
            • S Offline
              S Offline
              sonystar
              schrieb am zuletzt editiert von sonystar
              #6

              @Segway @paul53
              Dankeschön schonmal.
              Jetzt komme ich schonmal ein paar Zeilen weiter:

              javascript.0	2020-12-18 22:14:53.647	info	(3004) Stop script script.js.common.Skript_1
              javascript.0	2020-12-18 22:14:51.485	error	(3004) at process._tickCallback (internal/process/next_tick.js:68:7)
              javascript.0	2020-12-18 22:14:51.485	error	(3004) at promise.then (/opt/iobroker/node_modules/standard-as-callback/built/index.js:19:49)
              javascript.0	2020-12-18 22:14:51.485	error	(3004) at tryCatcher (/opt/iobroker/node_modules/standard-as-callback/built/utils.js:11:23)
              javascript.0	2020-12-18 22:14:51.485	error	(3004) at client.get (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:616:17)
              javascript.0	2020-12-18 22:14:51.485	error	(3004) at adapter.getForeignState (/opt/iobroker/node_modules/iobroker.javascript/main.js:1140:17)
              javascript.0	2020-12-18 22:14:51.485	error	(3004) at createProblemObject (/opt/iobroker/node_modules/iobroker.javascript/main.js:1559:17)
              javascript.0	2020-12-18 22:14:51.485	error	(3004) at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:1503:37)
              javascript.0	2020-12-18 22:14:51.485	error	(3004) at createVM (/opt/iobroker/node_modules/iobroker.javascript/main.js:1280:28)
              javascript.0	2020-12-18 22:14:51.485	error	(3004) at Object.createScript (vm.js:277:10)
              javascript.0	2020-12-18 22:14:51.485	error	(3004) at new Script (vm.js:83:7)
              javascript.0	2020-12-18 22:14:51.485	error	(3004) SyntaxError: missing ) after argument list
              javascript.0	2020-12-18 22:14:51.485	error	(3004) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
              javascript.0	2020-12-18 22:14:51.485	error	(3004) log('2a.) Abfrage => SELECT * FROM datapoints WHERE name = '' + id + ''');
              javascript.0	2020-12-18 22:14:51.485	error	at script.js.common.Skript_1:20
              javascript.0	2020-12-18 22:14:51.485	error	(3004) script.js.common.Skript_1 compile failed:
              javascript.0	2020-12-18 22:14:51.484	info	(3004) Start javascript script.js.common.Skript_1
              

              Scheint eine Klammer zu fehlen? Wo muss ich die setzten?

              SegwayS 1 Antwort Letzte Antwort
              0
              • S sonystar

                @Segway @paul53
                Dankeschön schonmal.
                Jetzt komme ich schonmal ein paar Zeilen weiter:

                javascript.0	2020-12-18 22:14:53.647	info	(3004) Stop script script.js.common.Skript_1
                javascript.0	2020-12-18 22:14:51.485	error	(3004) at process._tickCallback (internal/process/next_tick.js:68:7)
                javascript.0	2020-12-18 22:14:51.485	error	(3004) at promise.then (/opt/iobroker/node_modules/standard-as-callback/built/index.js:19:49)
                javascript.0	2020-12-18 22:14:51.485	error	(3004) at tryCatcher (/opt/iobroker/node_modules/standard-as-callback/built/utils.js:11:23)
                javascript.0	2020-12-18 22:14:51.485	error	(3004) at client.get (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:616:17)
                javascript.0	2020-12-18 22:14:51.485	error	(3004) at adapter.getForeignState (/opt/iobroker/node_modules/iobroker.javascript/main.js:1140:17)
                javascript.0	2020-12-18 22:14:51.485	error	(3004) at createProblemObject (/opt/iobroker/node_modules/iobroker.javascript/main.js:1559:17)
                javascript.0	2020-12-18 22:14:51.485	error	(3004) at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:1503:37)
                javascript.0	2020-12-18 22:14:51.485	error	(3004) at createVM (/opt/iobroker/node_modules/iobroker.javascript/main.js:1280:28)
                javascript.0	2020-12-18 22:14:51.485	error	(3004) at Object.createScript (vm.js:277:10)
                javascript.0	2020-12-18 22:14:51.485	error	(3004) at new Script (vm.js:83:7)
                javascript.0	2020-12-18 22:14:51.485	error	(3004) SyntaxError: missing ) after argument list
                javascript.0	2020-12-18 22:14:51.485	error	(3004) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                javascript.0	2020-12-18 22:14:51.485	error	(3004) log('2a.) Abfrage => SELECT * FROM datapoints WHERE name = '' + id + ''');
                javascript.0	2020-12-18 22:14:51.485	error	at script.js.common.Skript_1:20
                javascript.0	2020-12-18 22:14:51.485	error	(3004) script.js.common.Skript_1 compile failed:
                javascript.0	2020-12-18 22:14:51.484	info	(3004) Start javascript script.js.common.Skript_1
                

                Scheint eine Klammer zu fehlen? Wo muss ich die setzten?

                SegwayS Offline
                SegwayS Offline
                Segway
                schrieb am zuletzt editiert von
                #7

                @sonystar

                habe meines mal kopiert. sieht so aus

                // -----------------------------------------------------------------------------
                // ----- Abfragen von Werten aus der Datenbank (SQL) ---------------------------
                // -----------------------------------------------------------------------------
                
                // ----- Datenpunkt der ausgelesen werden soll ---------------------------------
                var id = "hm-rpc.1.KEQxxxxxxx.1.TEMPERATURE";
                // ----- Datenpunkte in die gespeichert werden soll ----------------------------
                var maxid = 'javascript.0.Datenpunkte.Temp_Aussen.Statistik_Luft_Aussen_Max24';
                var minid = 'javascript.0.Datenpunkte.Temp_Aussen.Statistik_Luft_Aussen_Min24';
                var dt = 24;                // Zeitraum in Stunden
                    dt = dt*3600*1000;      // Zeitraum umrechnen in ??
                
                // ----- Datenpunkte anlegen ---------------------------------------------------
                createState(maxid, " ");
                createState(minid, " ");
                //log('1. ) Datenpunkte angelegt ');
                
                SQLAbfrage(id);
                
                //-----  SQL-Abfrage durchführen
                function SQLAbfrage () {
                //    log('2. ) Datenpunkt => ' + id);
                //    log('2a.) Abfrage    => SELECT * FROM datapoints WHERE name = \'' + id + '\'');
                    sendTo('sql.0', 'query', 'SELECT * FROM iobroker.datapoints WHERE name = \'' + id + '\'', GetResults);
                }
                //---------------------------------------
                
                function GetResults (dpoint) {
                //    log('3. ) Funktion -> GetResults aufrufen');
                    var end_time =   new Date().getTime();
                    var start_time = new Date().getTime() - dt;
                //    log('3a.) Startzeit : ' + start_time);
                //    log('3b.) Endzeit   : ' + end_time);
                //    log('     Datenpunkt: ' + dpoint.result);
                //    log('3c.) result    : ' + JSON.stringify(dpoint.result) + ' -//- ' + start_time);
                //    log('     Datenpunkt: ' + dpoint.result[0].id + ' ---//--- ' + dpoint.result[0].name);
                    sendTo('sql.0', 'query', 'SELECT Round(Min(val),1) As MinVal FROM iobroker.ts_number WHERE ts >= ' + start_time + ' AND id=' + dpoint.result[0].id + ' GROUP BY id',minimum);
                    sendTo('sql.0', 'query', 'SELECT Round(Max(val),1) As MaxVal FROM iobroker.ts_number WHERE ts >= ' + start_time + ' AND id=' + dpoint.result[0].id + ' GROUP BY id',maximum);
                }
                
                //-----  Werte schreiben (maximum, minimum)
                //-----  minimum
                function minimum(result) {
                //  log('min )Funktion -> ' + JSON.stringify(result.result));
                  setState(minid, result.result[0].MinVal);
                }
                //-----  maximum
                function maximum(result) {
                //    log('max )Funktion -> ' + JSON.stringify(result.result));
                    setState(maxid, result.result[0].MaxVal);
                //    log('---- fertig -----------------------------------------');
                    
                }
                //---------------------------------------
                
                // ----- Funktion jede Minute aufrufen
                schedule("*/5 * * * *", function(){SQLAbfrage(id);});
                

                Gruß Dirk
                Intel Proxmox Cluster (3x NUC) mit Debian & Proxmox / IoB als VM unter Debian / 60+ Adapter installiert

                S 1 Antwort Letzte Antwort
                0
                • SegwayS Segway

                  @sonystar

                  habe meines mal kopiert. sieht so aus

                  // -----------------------------------------------------------------------------
                  // ----- Abfragen von Werten aus der Datenbank (SQL) ---------------------------
                  // -----------------------------------------------------------------------------
                  
                  // ----- Datenpunkt der ausgelesen werden soll ---------------------------------
                  var id = "hm-rpc.1.KEQxxxxxxx.1.TEMPERATURE";
                  // ----- Datenpunkte in die gespeichert werden soll ----------------------------
                  var maxid = 'javascript.0.Datenpunkte.Temp_Aussen.Statistik_Luft_Aussen_Max24';
                  var minid = 'javascript.0.Datenpunkte.Temp_Aussen.Statistik_Luft_Aussen_Min24';
                  var dt = 24;                // Zeitraum in Stunden
                      dt = dt*3600*1000;      // Zeitraum umrechnen in ??
                  
                  // ----- Datenpunkte anlegen ---------------------------------------------------
                  createState(maxid, " ");
                  createState(minid, " ");
                  //log('1. ) Datenpunkte angelegt ');
                  
                  SQLAbfrage(id);
                  
                  //-----  SQL-Abfrage durchführen
                  function SQLAbfrage () {
                  //    log('2. ) Datenpunkt => ' + id);
                  //    log('2a.) Abfrage    => SELECT * FROM datapoints WHERE name = \'' + id + '\'');
                      sendTo('sql.0', 'query', 'SELECT * FROM iobroker.datapoints WHERE name = \'' + id + '\'', GetResults);
                  }
                  //---------------------------------------
                  
                  function GetResults (dpoint) {
                  //    log('3. ) Funktion -> GetResults aufrufen');
                      var end_time =   new Date().getTime();
                      var start_time = new Date().getTime() - dt;
                  //    log('3a.) Startzeit : ' + start_time);
                  //    log('3b.) Endzeit   : ' + end_time);
                  //    log('     Datenpunkt: ' + dpoint.result);
                  //    log('3c.) result    : ' + JSON.stringify(dpoint.result) + ' -//- ' + start_time);
                  //    log('     Datenpunkt: ' + dpoint.result[0].id + ' ---//--- ' + dpoint.result[0].name);
                      sendTo('sql.0', 'query', 'SELECT Round(Min(val),1) As MinVal FROM iobroker.ts_number WHERE ts >= ' + start_time + ' AND id=' + dpoint.result[0].id + ' GROUP BY id',minimum);
                      sendTo('sql.0', 'query', 'SELECT Round(Max(val),1) As MaxVal FROM iobroker.ts_number WHERE ts >= ' + start_time + ' AND id=' + dpoint.result[0].id + ' GROUP BY id',maximum);
                  }
                  
                  //-----  Werte schreiben (maximum, minimum)
                  //-----  minimum
                  function minimum(result) {
                  //  log('min )Funktion -> ' + JSON.stringify(result.result));
                    setState(minid, result.result[0].MinVal);
                  }
                  //-----  maximum
                  function maximum(result) {
                  //    log('max )Funktion -> ' + JSON.stringify(result.result));
                      setState(maxid, result.result[0].MaxVal);
                  //    log('---- fertig -----------------------------------------');
                      
                  }
                  //---------------------------------------
                  
                  // ----- Funktion jede Minute aufrufen
                  schedule("*/5 * * * *", function(){SQLAbfrage(id);});
                  
                  S Offline
                  S Offline
                  sonystar
                  schrieb am zuletzt editiert von
                  #8

                  @Segway

                  Nachdem ich das Script jetzt angepasst habe auf Influx kommt folgendes raus:

                  javascript.0	2020-12-18 22:36:36.669	warn	at processImmediate (timers.js:658:5)
                  javascript.0	2020-12-18 22:36:36.669	warn	at tryOnImmediate (timers.js:676:5)
                  javascript.0	2020-12-18 22:36:36.669	warn	at runCallback (timers.js:705:18)
                  javascript.0	2020-12-18 22:36:36.669	warn	at Immediate.setImmediate (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:234:41)
                  javascript.0	2020-12-18 22:36:36.669	warn	at change (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:5297:71)
                  javascript.0	2020-12-18 22:36:36.669	warn	at Object.GetResults [as cb] (script.js.common.Skript_3:37:154)
                  javascript.0	2020-12-18 22:36:36.669	warn	(3004) TypeError: Cannot read property 'id' of undefined
                  javascript.0	2020-12-18 22:36:36.669	warn	(3004) States system pmessage io.messagebox.system.adapter.javascript.0 {"command":"query","message":{"result":[],"error":"Invalid call"},"from":"system.adapter.influxdb.0","callback":{"message":"SEL
                  influxdb.0	2020-12-18 22:36:36.664	error	(3024) query: Error: error parsing query: found NAME, expected identifier, string, number, bool at line 1, char 41
                  javascript.0	2020-12-18 22:36:36.663	info	(3004) script.js.common.Skript_3: registered 0 subscriptions and 1 schedule
                  javascript.0	2020-12-18 22:36:36.652	info	(3004) Start javascript script.js.common.Skript_3
                  

                  Hier das Script:

                  // -----------------------------------------------------------------------------
                  // ----- Abfragen von Werten aus der Datenbank (SQL) ---------------------------
                  // -----------------------------------------------------------------------------
                   
                  // ----- Datenpunkt der ausgelesen werden soll ---------------------------------
                  var id = "javascript.0.Wetterstation.Aussentemperatur";
                  // ----- Datenpunkte in die gespeichert werden soll ----------------------------
                  var maxid = 'javascript.0.Statistik.Temp_Aussen_Max24';
                  var minid = 'javascript.0.Statistik.Temp_Aussen_Min24';
                  var dt = 24;                // Zeitraum in Stunden
                      dt = dt*3600*1000;      // Zeitraum umrechnen in ms
                   
                  // ----- Datenpunkte anlegen ---------------------------------------------------
                  createState(maxid, " ");
                  createState(minid, " ");
                  //log('1. ) Datenpunkte angelegt ');
                   
                  SQLAbfrage(id);
                   
                  //-----  SQL-Abfrage durchführen
                  function SQLAbfrage () {
                  //    log('2. ) Datenpunkt => ' + id);
                  //    log('2a.) Abfrage    => SELECT * FROM datapoints WHERE name = \'' + id + '\'');
                      sendTo('influxdb.0', 'query', 'SELECT * FROM iobroker.datapoints WHERE name = \'' + id + '\'', GetResults);
                  }
                  //---------------------------------------
                   
                  function GetResults (dpoint) {
                  //    log('3. ) Funktion -> GetResults aufrufen');
                      var end_time =   new Date().getTime();
                      var start_time = new Date().getTime() - dt;
                  //    log('3a.) Startzeit : ' + start_time);
                  //    log('3b.) Endzeit   : ' + end_time);
                  //    log('     Datenpunkt: ' + dpoint.result);
                  //    log('3c.) result    : ' + JSON.stringify(dpoint.result) + ' -//- ' + start_time);
                  //    log('     Datenpunkt: ' + dpoint.result[0].id + ' ---//--- ' + dpoint.result[0].name);
                      sendTo('influxdb.0', 'query', 'SELECT Round(Min(val),1) As MinVal FROM iobroker.ts_number WHERE ts >= ' + start_time + ' AND id=' + dpoint.result[0].id + ' GROUP BY id',minimum);
                      sendTo('influxdb.0', 'query', 'SELECT Round(Max(val),1) As MaxVal FROM iobroker.ts_number WHERE ts >= ' + start_time + ' AND id=' + dpoint.result[0].id + ' GROUP BY id',maximum);
                  }
                   
                  //-----  Werte schreiben (maximum, minimum)
                  //-----  minimum
                  function minimum(result) {
                  //  log('min )Funktion -> ' + JSON.stringify(result.result));
                    setState(minid, result.result[0].MinVal);
                  }
                  //-----  maximum
                  function maximum(result) {
                  //    log('max )Funktion -> ' + JSON.stringify(result.result));
                      setState(maxid, result.result[0].MaxVal);
                  //    log('---- fertig -----------------------------------------');
                      
                  }
                  //---------------------------------------
                   
                  // ----- Funktion jede Minute aufrufen
                  schedule("*/5 * * * *", function(){SQLAbfrage(id);});
                  
                  
                  SegwayS 1 Antwort Letzte Antwort
                  0
                  • S sonystar

                    @Segway

                    Nachdem ich das Script jetzt angepasst habe auf Influx kommt folgendes raus:

                    javascript.0	2020-12-18 22:36:36.669	warn	at processImmediate (timers.js:658:5)
                    javascript.0	2020-12-18 22:36:36.669	warn	at tryOnImmediate (timers.js:676:5)
                    javascript.0	2020-12-18 22:36:36.669	warn	at runCallback (timers.js:705:18)
                    javascript.0	2020-12-18 22:36:36.669	warn	at Immediate.setImmediate (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:234:41)
                    javascript.0	2020-12-18 22:36:36.669	warn	at change (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:5297:71)
                    javascript.0	2020-12-18 22:36:36.669	warn	at Object.GetResults [as cb] (script.js.common.Skript_3:37:154)
                    javascript.0	2020-12-18 22:36:36.669	warn	(3004) TypeError: Cannot read property 'id' of undefined
                    javascript.0	2020-12-18 22:36:36.669	warn	(3004) States system pmessage io.messagebox.system.adapter.javascript.0 {"command":"query","message":{"result":[],"error":"Invalid call"},"from":"system.adapter.influxdb.0","callback":{"message":"SEL
                    influxdb.0	2020-12-18 22:36:36.664	error	(3024) query: Error: error parsing query: found NAME, expected identifier, string, number, bool at line 1, char 41
                    javascript.0	2020-12-18 22:36:36.663	info	(3004) script.js.common.Skript_3: registered 0 subscriptions and 1 schedule
                    javascript.0	2020-12-18 22:36:36.652	info	(3004) Start javascript script.js.common.Skript_3
                    

                    Hier das Script:

                    // -----------------------------------------------------------------------------
                    // ----- Abfragen von Werten aus der Datenbank (SQL) ---------------------------
                    // -----------------------------------------------------------------------------
                     
                    // ----- Datenpunkt der ausgelesen werden soll ---------------------------------
                    var id = "javascript.0.Wetterstation.Aussentemperatur";
                    // ----- Datenpunkte in die gespeichert werden soll ----------------------------
                    var maxid = 'javascript.0.Statistik.Temp_Aussen_Max24';
                    var minid = 'javascript.0.Statistik.Temp_Aussen_Min24';
                    var dt = 24;                // Zeitraum in Stunden
                        dt = dt*3600*1000;      // Zeitraum umrechnen in ms
                     
                    // ----- Datenpunkte anlegen ---------------------------------------------------
                    createState(maxid, " ");
                    createState(minid, " ");
                    //log('1. ) Datenpunkte angelegt ');
                     
                    SQLAbfrage(id);
                     
                    //-----  SQL-Abfrage durchführen
                    function SQLAbfrage () {
                    //    log('2. ) Datenpunkt => ' + id);
                    //    log('2a.) Abfrage    => SELECT * FROM datapoints WHERE name = \'' + id + '\'');
                        sendTo('influxdb.0', 'query', 'SELECT * FROM iobroker.datapoints WHERE name = \'' + id + '\'', GetResults);
                    }
                    //---------------------------------------
                     
                    function GetResults (dpoint) {
                    //    log('3. ) Funktion -> GetResults aufrufen');
                        var end_time =   new Date().getTime();
                        var start_time = new Date().getTime() - dt;
                    //    log('3a.) Startzeit : ' + start_time);
                    //    log('3b.) Endzeit   : ' + end_time);
                    //    log('     Datenpunkt: ' + dpoint.result);
                    //    log('3c.) result    : ' + JSON.stringify(dpoint.result) + ' -//- ' + start_time);
                    //    log('     Datenpunkt: ' + dpoint.result[0].id + ' ---//--- ' + dpoint.result[0].name);
                        sendTo('influxdb.0', 'query', 'SELECT Round(Min(val),1) As MinVal FROM iobroker.ts_number WHERE ts >= ' + start_time + ' AND id=' + dpoint.result[0].id + ' GROUP BY id',minimum);
                        sendTo('influxdb.0', 'query', 'SELECT Round(Max(val),1) As MaxVal FROM iobroker.ts_number WHERE ts >= ' + start_time + ' AND id=' + dpoint.result[0].id + ' GROUP BY id',maximum);
                    }
                     
                    //-----  Werte schreiben (maximum, minimum)
                    //-----  minimum
                    function minimum(result) {
                    //  log('min )Funktion -> ' + JSON.stringify(result.result));
                      setState(minid, result.result[0].MinVal);
                    }
                    //-----  maximum
                    function maximum(result) {
                    //    log('max )Funktion -> ' + JSON.stringify(result.result));
                        setState(maxid, result.result[0].MaxVal);
                    //    log('---- fertig -----------------------------------------');
                        
                    }
                    //---------------------------------------
                     
                    // ----- Funktion jede Minute aufrufen
                    schedule("*/5 * * * *", function(){SQLAbfrage(id);});
                    
                    
                    SegwayS Offline
                    SegwayS Offline
                    Segway
                    schrieb am zuletzt editiert von
                    #9

                    @sonystar
                    Irgendwas passt da nicht.

                    Den Datenpunkt den du auslesen möchtest ist ja unter javascript .0 usw
                    Macht das Sinn?
                    Normalerweise kommt der Datenpunkt doch von einem Messgerät wie zB bei mir von einem Homemtaic Temp/Humidity Gerät! Dieses lese ich dann aus.
                    Dein Datenpunkt ist ja anscheinend selber angelegt daher die Frage wie das konfiguriert ist

                    Gruß Dirk
                    Intel Proxmox Cluster (3x NUC) mit Debian & Proxmox / IoB als VM unter Debian / 60+ Adapter installiert

                    S 1 Antwort Letzte Antwort
                    0
                    • SegwayS Segway

                      @sonystar
                      Irgendwas passt da nicht.

                      Den Datenpunkt den du auslesen möchtest ist ja unter javascript .0 usw
                      Macht das Sinn?
                      Normalerweise kommt der Datenpunkt doch von einem Messgerät wie zB bei mir von einem Homemtaic Temp/Humidity Gerät! Dieses lese ich dann aus.
                      Dein Datenpunkt ist ja anscheinend selber angelegt daher die Frage wie das konfiguriert ist

                      S Offline
                      S Offline
                      sonystar
                      schrieb am zuletzt editiert von
                      #10

                      @Segway
                      Nee das passt schon so.

                      {
                        "common": {
                          "name": "Temperatur Außen",
                          "type": "number",
                          "role": "state",
                          "unit": "°C",
                          "custom": {
                            "influxdb.0": {
                              "enabled": true,
                              "changesOnly": true,
                              "debounce": "1000",
                              "retention": 0,
                              "changesRelogInterval": "1800",
                              "changesMinDelta": 0,
                              "storageType": "Number",
                              "aliasId": ""
                            }
                          }
                        },
                        "native": {
                          "name": "Temperatur Außen",
                          "type": "number",
                          "role": "state",
                          "unit": "°C"
                        },
                        "type": "state",
                        "from": "system.adapter.javascript.0",
                        "user": "system.user.admin",
                        "ts": 1606934334904,
                        "_id": "javascript.0.Wetterstation.Aussentemperatur",
                        "acl": {
                          "object": 1636,
                          "state": 1636,
                          "owner": "system.user.admin",
                          "ownerGroup": "system.group.administrator"
                        }
                      }
                      

                      Unbenannt.png

                      1 Antwort Letzte Antwort
                      0
                      • A Offline
                        A Offline
                        adsfa
                        schrieb am zuletzt editiert von adsfa
                        #11

                        Hallo,
                        auch wenn das Thema schon etwas älter ist, würde ich gerne den gleichen Ansatz nutzen.
                        Leider erhalte ich immer folgende Warnung. Hast du vielleicht eine Idee @Segway :)?

                        javascript.0 (129) TypeError: Cannot read property 'id' of undefined at Object.GetResults [as cb] (script.js.Allgemein.Testen.SQL:38:154) at change (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:5618:71) at Immediate._onImmediate (/opt/iobroker/node_modules/@iobroker/db-states-redis/lib/states/statesInRedisClient.js:232:37) at processImmediate (internal/timers.js:461:21)
                        
                        // -----------------------------------------------------------------------------
                        // ----- Abfragen von Werten aus der Datenbank (SQL) ---------------------------
                        // -----------------------------------------------------------------------------
                         
                        // ----- Datenpunkt der ausgelesen werden soll ---------------------------------
                        var id = 'alias.0.Arbeitszimmer.Temperatur.ACTUAL';
                        // ----- Datenpunkte in die gespeichert werden soll ----------------------------
                        var maxid = 'javascript.0.Statistik.Temp_Aussen_Max24';
                        var minid = 'javascript.0.Statistik.Temp_Aussen_Min24';
                        var dt = 24;                // Zeitraum in Stunden
                            dt = dt*3600*1000;      // Zeitraum umrechnen in ms
                         
                        // ----- Datenpunkte anlegen ---------------------------------------------------
                        createState(maxid, " ");
                        createState(minid, " ");
                        //log('1. ) Datenpunkte angelegt ');
                         
                        SQLAbfrage(id);
                         
                        //-----  SQL-Abfrage durchführen
                        function SQLAbfrage () {
                        //    log('2. ) Datenpunkt => ' + id);
                        //    log('2a.) Abfrage    => SELECT * FROM datapoints WHERE name = \'' + id + '\'');
                            sendTo('influxdb.0', 'query', 'SELECT * FROM iobroker.datapoints WHERE name = \'' + id + '\'', GetResults);
                        }
                        //---------------------------------------
                         
                        function GetResults (dpoint) {
                        //    log('3. ) Funktion -> GetResults aufrufen');
                            var end_time =   new Date().getTime();
                            var start_time = new Date().getTime() - dt;
                        //    log('3a.) Startzeit : ' + start_time);
                        //    log('3b.) Endzeit   : ' + end_time);
                        //    log('     Datenpunkt: ' + dpoint.result);
                        //    log('3c.) result    : ' + JSON.stringify(dpoint.result) + ' -//- ' + start_time);
                        //    log('     Datenpunkt: ' + dpoint.result[0].id + ' ---//--- ' + dpoint.result[0].name);
                            sendTo('influxdb.0', 'query', 'SELECT Round(Min(val),1) As MinVal FROM iobroker.ts_number WHERE ts >= ' + start_time + ' AND id=' + dpoint.result[0].id + ' GROUP BY id',minimum);
                            sendTo('influxdb.0', 'query', 'SELECT Round(Max(val),1) As MaxVal FROM iobroker.ts_number WHERE ts >= ' + start_time + ' AND id=' + dpoint.result[0].id + ' GROUP BY id',maximum);
                        }
                         
                        //-----  Werte schreiben (maximum, minimum)
                        //-----  minimum
                        function minimum(result) {
                        //  log('min )Funktion -> ' + JSON.stringify(result.result));
                          setState(minid, result.result[0].MinVal);
                        }
                        //-----  maximum
                        function maximum(result) {
                        //    log('max )Funktion -> ' + JSON.stringify(result.result));
                            setState(maxid, result.result[0].MaxVal);
                        //    log('---- fertig -----------------------------------------');
                            
                        }
                        //---------------------------------------
                         
                        // ----- Funktion jede Minute aufrufen
                        schedule("*/5 * * * *", function(){SQLAbfrage(id);});
                         
                        
                        

                        ee20e0c6-48eb-4db6-b651-61253a2d43fc-image.png

                        SegwayS 1 Antwort Letzte Antwort
                        0
                        • A adsfa

                          Hallo,
                          auch wenn das Thema schon etwas älter ist, würde ich gerne den gleichen Ansatz nutzen.
                          Leider erhalte ich immer folgende Warnung. Hast du vielleicht eine Idee @Segway :)?

                          javascript.0 (129) TypeError: Cannot read property 'id' of undefined at Object.GetResults [as cb] (script.js.Allgemein.Testen.SQL:38:154) at change (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:5618:71) at Immediate._onImmediate (/opt/iobroker/node_modules/@iobroker/db-states-redis/lib/states/statesInRedisClient.js:232:37) at processImmediate (internal/timers.js:461:21)
                          
                          // -----------------------------------------------------------------------------
                          // ----- Abfragen von Werten aus der Datenbank (SQL) ---------------------------
                          // -----------------------------------------------------------------------------
                           
                          // ----- Datenpunkt der ausgelesen werden soll ---------------------------------
                          var id = 'alias.0.Arbeitszimmer.Temperatur.ACTUAL';
                          // ----- Datenpunkte in die gespeichert werden soll ----------------------------
                          var maxid = 'javascript.0.Statistik.Temp_Aussen_Max24';
                          var minid = 'javascript.0.Statistik.Temp_Aussen_Min24';
                          var dt = 24;                // Zeitraum in Stunden
                              dt = dt*3600*1000;      // Zeitraum umrechnen in ms
                           
                          // ----- Datenpunkte anlegen ---------------------------------------------------
                          createState(maxid, " ");
                          createState(minid, " ");
                          //log('1. ) Datenpunkte angelegt ');
                           
                          SQLAbfrage(id);
                           
                          //-----  SQL-Abfrage durchführen
                          function SQLAbfrage () {
                          //    log('2. ) Datenpunkt => ' + id);
                          //    log('2a.) Abfrage    => SELECT * FROM datapoints WHERE name = \'' + id + '\'');
                              sendTo('influxdb.0', 'query', 'SELECT * FROM iobroker.datapoints WHERE name = \'' + id + '\'', GetResults);
                          }
                          //---------------------------------------
                           
                          function GetResults (dpoint) {
                          //    log('3. ) Funktion -> GetResults aufrufen');
                              var end_time =   new Date().getTime();
                              var start_time = new Date().getTime() - dt;
                          //    log('3a.) Startzeit : ' + start_time);
                          //    log('3b.) Endzeit   : ' + end_time);
                          //    log('     Datenpunkt: ' + dpoint.result);
                          //    log('3c.) result    : ' + JSON.stringify(dpoint.result) + ' -//- ' + start_time);
                          //    log('     Datenpunkt: ' + dpoint.result[0].id + ' ---//--- ' + dpoint.result[0].name);
                              sendTo('influxdb.0', 'query', 'SELECT Round(Min(val),1) As MinVal FROM iobroker.ts_number WHERE ts >= ' + start_time + ' AND id=' + dpoint.result[0].id + ' GROUP BY id',minimum);
                              sendTo('influxdb.0', 'query', 'SELECT Round(Max(val),1) As MaxVal FROM iobroker.ts_number WHERE ts >= ' + start_time + ' AND id=' + dpoint.result[0].id + ' GROUP BY id',maximum);
                          }
                           
                          //-----  Werte schreiben (maximum, minimum)
                          //-----  minimum
                          function minimum(result) {
                          //  log('min )Funktion -> ' + JSON.stringify(result.result));
                            setState(minid, result.result[0].MinVal);
                          }
                          //-----  maximum
                          function maximum(result) {
                          //    log('max )Funktion -> ' + JSON.stringify(result.result));
                              setState(maxid, result.result[0].MaxVal);
                          //    log('---- fertig -----------------------------------------');
                              
                          }
                          //---------------------------------------
                           
                          // ----- Funktion jede Minute aufrufen
                          schedule("*/5 * * * *", function(){SQLAbfrage(id);});
                           
                          
                          

                          ee20e0c6-48eb-4db6-b651-61253a2d43fc-image.png

                          SegwayS Offline
                          SegwayS Offline
                          Segway
                          schrieb am zuletzt editiert von
                          #12

                          @adsfa
                          Kann dir da nicht helfen, da ich die SQL nicht mehr am laufen habe sondern auf Influx umgestiegen bin.

                          Gruß Dirk
                          Intel Proxmox Cluster (3x NUC) mit Debian & Proxmox / IoB als VM unter Debian / 60+ Adapter installiert

                          A 1 Antwort Letzte Antwort
                          0
                          • SegwayS Segway

                            @adsfa
                            Kann dir da nicht helfen, da ich die SQL nicht mehr am laufen habe sondern auf Influx umgestiegen bin.

                            A Offline
                            A Offline
                            adsfa
                            schrieb am zuletzt editiert von
                            #13

                            @segway Danke für deine Antwort.
                            Ich nutze auch Influx und würde gerne Datenpunkte in iobroker damit aktualisieren.
                            Wie machst du das jetzt?

                            SegwayS 1 Antwort Letzte Antwort
                            0
                            • A adsfa

                              @segway Danke für deine Antwort.
                              Ich nutze auch Influx und würde gerne Datenpunkte in iobroker damit aktualisieren.
                              Wie machst du das jetzt?

                              SegwayS Offline
                              SegwayS Offline
                              Segway
                              schrieb am zuletzt editiert von
                              #14

                              @adsfa
                              Inwiefern Datenpunkte aktualisieren ? verstehe ich grad nicht !

                              Gruß Dirk
                              Intel Proxmox Cluster (3x NUC) mit Debian & Proxmox / IoB als VM unter Debian / 60+ Adapter installiert

                              A 1 Antwort Letzte Antwort
                              0
                              • SegwayS Segway

                                @adsfa
                                Inwiefern Datenpunkte aktualisieren ? verstehe ich grad nicht !

                                A Offline
                                A Offline
                                adsfa
                                schrieb am zuletzt editiert von
                                #15

                                @segway
                                Ich würde gerne Berechnungen vornehmen, wie z.B. die Min Temperatur der letzten 24h und das Ergebnis in einem Datenpunkt speichern.

                                SegwayS 1 Antwort Letzte Antwort
                                0
                                • A adsfa

                                  @segway
                                  Ich würde gerne Berechnungen vornehmen, wie z.B. die Min Temperatur der letzten 24h und das Ergebnis in einem Datenpunkt speichern.

                                  SegwayS Offline
                                  SegwayS Offline
                                  Segway
                                  schrieb am zuletzt editiert von
                                  #16

                                  @adsfa
                                  Mit Grafana und Influx brauchst du das nicht ! Das kannst du direkt in Grafana machen :-)

                                  Gruß Dirk
                                  Intel Proxmox Cluster (3x NUC) mit Debian & Proxmox / IoB als VM unter Debian / 60+ Adapter installiert

                                  1 Antwort Letzte Antwort
                                  0
                                  • A Offline
                                    A Offline
                                    adsfa
                                    schrieb am zuletzt editiert von
                                    #17

                                    @segway
                                    Danke dir. Wie gebe ich die berechneten Werte an iobroker zurück? Würde die gerne zum Triggern nutzen.

                                    SegwayS 1 Antwort Letzte Antwort
                                    0
                                    • A adsfa

                                      @segway
                                      Danke dir. Wie gebe ich die berechneten Werte an iobroker zurück? Würde die gerne zum Triggern nutzen.

                                      SegwayS Offline
                                      SegwayS Offline
                                      Segway
                                      schrieb am zuletzt editiert von
                                      #18

                                      @adsfa sagte in Max /Mintemperatur aus influxdb mit gethistory:

                                      @segway
                                      Danke dir. Wie gebe ich die berechneten Werte an iobroker zurück? Würde die gerne zum Triggern nutzen.

                                      Ah okay, du willst triggern darauf, dann musste es in einen Wert schreiben ja das stimmt.

                                      Gruß Dirk
                                      Intel Proxmox Cluster (3x NUC) mit Debian & Proxmox / IoB als VM unter Debian / 60+ Adapter installiert

                                      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

                                      785

                                      Online

                                      32.5k

                                      Benutzer

                                      81.6k

                                      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