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.6k

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

                          740

                          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