Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. [gelöst] Min /Max Temperatursensor

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    12
    1
    333

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

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

[gelöst] Min /Max Temperatursensor

Scheduled Pinned Locked Moved Skripten / Logik
43 Posts 12 Posters 13.1k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • ThisoftT Offline
    ThisoftT Offline
    Thisoft
    wrote on last edited by
    #28

    Zeigst Du bitte mal die Einstellungen deines SQL-Adapters?

    22 HM-Geräte; PivCCU2 auf RasPi

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

    1 Reply Last reply
    0
    • H Offline
      H Offline
      Haus
      wrote on last edited by
      #29

      @Farmer-cb:

      da kommt auch nicht mehr raus:

      javascript.0	2018-01-03 15:00:00.226	info	script.js.common.minmax.Aussentemp: {"error":"Error: ER_NO_DB_ERROR: No database selected"}
      javascript.0	2018-01-03 15:00:00.158	info	script.js.common.minmax.Aussentemp: sendTo(adapter=sql.0, cmd=query, msg="SELECT id, name FROM datapoints WHERE name = 's7.0.DBs.DB100.Aussentemp'")
      javascript.0	2018-01-03 14:55:00.184	info	script.js.common.minmax.Aussentemp: {"error":"Error: ER_NO_DB_ERROR: No database selected"}
      javascript.0	2018-01-03 14:55:00.157	info	script.js.common.minmax.Aussentemp: sendTo(adapter=sql.0, cmd=query, msg="SELECT id, name FROM datapoints WHERE name = 's7.0.DBs.DB100.Aussentemp'")
      javascript.0	2018-01-03 14:50:00.221	info	script.js.common.minmax.Aussentemp: {"error":"Error: ER_NO_DB_ERROR: No database selected"}
      javascript.0	2018-01-03 14:50:00.158	info	script.js.common.minmax.Aussentemp: sendTo(adapter=sql.0, cmd=query, msg="SELECT id, name FROM datapoints WHERE name = 's7.0.DBs.DB100.Aussentemp'")
      
      

      in der Tabelle steht etwas

      sql.gif `

      sendTo('sql.0', 'query', 'SELECT id, name FROM iobroker.datapoints WHERE nam…....

      js-controller: 1.5.7 / node.js: v8.15.1/ npm: 6.4.1

      admin: 3.6.0

      javascript: 4.1.10

      web: 2.4.1 vis: 1.1.10

      cloud: 2.6.2

      Server: DELL FX170 / linux: Debian 9.5 Stretch

      Adapter: MegaD-2561, Mega-ES…

      1 Reply Last reply
      0
      • ThisoftT Offline
        ThisoftT Offline
        Thisoft
        wrote on last edited by
        #30

        @Haus:

        sendTo('sql.0', 'query', 'SELECT id, name FROM iobroker.datapoints WHERE nam….... `

        JA, das wäre einen Versuch wert. Unter anderem deshalb hatte ich ja (bisher erfolglos ;) ) gefragt welche Db denn der TE im Einsatz hat…

        22 HM-Geräte; PivCCU2 auf RasPi

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

        1 Reply Last reply
        0
        • M Offline
          M Offline
          mctom
          wrote on last edited by
          #31

          jetzt häng ich mich auch noch mal dran…

          folgenden Code habe ich jetzt als Test im Einsatz:

          function SQLAbfrage () {
          log(id);
          
            sendTo('sql.0', 'query', 'SELECT id, name FROM iobroker.datapoints WHERE name = \'' + id + '\'', function(result){
              log(JSON.stringify(result));
              // GetResults(result);
              });
          
          //  sendTo('sql.0', 'query', 'SELECT * FROM iobroker.datapoints WHERE name = \'' + id + '\'', GetResults);
          }
          

          und das kommt im LOG:

          16:50:00.943	[info]	javascript.1 script.js.Test.Test2: hm-rpc.0.IEQ0023353.1.TEMPERATURE
          16:50:00.947	[info]	javascript.1 script.js.Test.Test2: {"error":null,"result":[{"id":21,"name":"hm-rpc.0.IEQ0023353.1.TEMPERATURE"}]}
          

          Woher kommt der Error?

          Was mach ich falsch ?

          Gruß

          Michael

          1 Reply Last reply
          0
          • H Offline
            H Offline
            Haus
            wrote on last edited by
            #32

            @mctom:

            jetzt häng ich mich auch noch mal dran…

            folgenden Code habe ich jetzt als Test im Einsatz:

            function SQLAbfrage () {
            log(id);
            
              sendTo('sql.0', 'query', 'SELECT id, name FROM iobroker.datapoints WHERE name = \'' + id + '\'', function(result){
                log(JSON.stringify(result));
                // GetResults(result);
                });
            
            //  sendTo('sql.0', 'query', 'SELECT * FROM iobroker.datapoints WHERE name = \'' + id + '\'', GetResults);
            }
            

            und das kommt im LOG:

            16:50:00.943	[info]	javascript.1 script.js.Test.Test2: hm-rpc.0.IEQ0023353.1.TEMPERATURE
            16:50:00.947	[info]	javascript.1 script.js.Test.Test2: {"error":null,"result":[{"id":21,"name":"hm-rpc.0.IEQ0023353.1.TEMPERATURE"}]}
            

            Woher kommt der Error?

            Was mach ich falsch ?

            Gruß

            Michael `

            createState('Statistik.Luft1.Max24', 0);
            createState('Statistik.Luft1.Min24', 0);
            
            var id = "hm-rpc.0.IEQ0023353.1.TEMPERATURE";
            var maxid = 'javascript.0.Statistik.Luft1.Max24';
            var minid = 'javascript.0.Statistik.Luft1.Min24';
            var dt = 24;//Zeitraum in Stunden
                dt = dt*3600*1000;
            
            schedule("*/5 * * * *", function(){
                SQLAbfrage(id);
            });
            
            SQLAbfrage(id);
            
            // maximum, minimum
            function minimum(result) {
                ///log(JSON.stringify(result.result));
                setState(minid, result.result[0].MinVal);
            }
            
            function maximum(result) {
                ///log('Fn Max'+ JSON.stringify(result.result));
                setState(maxid, result.result[0].MaxVal);
            }
            
            function SQLAbfrage () {
                ///log(id);
                sendTo('sql.0', 'query', 'SELECT * FROM iobroker.datapoints WHERE name = \'' + id + '\'', GetResults);
            }
            
            function GetResults (dpoint) {
                var end_time = new Date().getTime();
                var start_time = new Date().getTime() - dt;
                ///log(JSON.stringify(dpoint.result)+'//'+start_time);
                ///log(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);
            }
            

            js-controller: 1.5.7 / node.js: v8.15.1/ npm: 6.4.1

            admin: 3.6.0

            javascript: 4.1.10

            web: 2.4.1 vis: 1.1.10

            cloud: 2.6.2

            Server: DELL FX170 / linux: Debian 9.5 Stretch

            Adapter: MegaD-2561, Mega-ES…

            1 Reply Last reply
            0
            • F Offline
              F Offline
              Farmer-cb
              wrote on last edited by
              #33

              juhu

              so funktioniert es jetzt

              var id = "s7.0.DBs.DB100.Aussentemp";
              
              //var maxid = 'javascript.0.Statistik.Luft1.Max24';
              //var minid = 'javascript.0.Statistik.Luft1.Min24';
              var maxid = "javascript.0.scriptEnabled.common.minmax.Statistik.Aussentemp.max24";/*max24*/
              var minid = "javascript.0.scriptEnabled.common.minmax.Statistik.Aussentemp.min24";/*min24*/
              
              var dt = 24;//Zeitraum in Stunden
                dt = dt*3600*1000;
              
              schedule("*/5 * * * *", function(){SQLAbfrage(id);});
              
              SQLAbfrage(id);
              
              // minimum
              function minimum(result) 
                  {
                    log('Fn Min'+JSON.stringify(result.result));
                    setState(minid, result.result[0].MinVal);
                  }
              
              // maximum
              function maximum(result) 
                  {
                    log('Fn Max'+ JSON.stringify(result.result));
                    setState(maxid, result.result[0].MaxVal);
                  }
              
              function SQLAbfrage () 
                  {
                  log('Name: '+id);
                  sendTo('sql.0', 'query', 'SELECT * FROM iobroker.datapoints WHERE name = \'' + id + '\'', GetResults);
                  }
              
              function GetResults (dpoint) 
                  {
                    var end_time = new Date().getTime();
                    var start_time = new Date().getTime() - dt;
                    log('startzeit: '+start_time);
                    log('endzeit: '+end_time);
                    log(JSON.stringify(dpoint.result));
                    log('id: '+dpoint.result[0].name);
              
                    //log(JSON.stringify(dpoint.result)+'//'+start_time);
                    //log(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);
              
                  }
              
              

              meldung im Log:

              18:26:27.313	[info]	javascript.0 Stop script script.js.common.minmax.Aussentemp
              18:26:27.352	[info]	javascript.0 Start javascript script.js.common.minmax.Aussentemp
              18:26:27.353	[info]	javascript.0 script.js.common.minmax.Aussentemp: schedule(cron=*/5 * * * *)
              18:26:27.354	[info]	javascript.0 script.js.common.minmax.Aussentemp: Name: s7.0.DBs.DB100.Aussentemp
              18:26:27.354	[info]	javascript.0 script.js.common.minmax.Aussentemp: sendTo(adapter=sql.0, cmd=query, msg="SELECT * FROM iobroker.datapoints WHERE name = 's7.0.DBs.DB100.Aussentemp'")
              18:26:27.355	[info]	javascript.0 script.js.common.minmax.Aussentemp: registered 0 subscriptions and 1 schedule
              18:26:27.472	[info]	javascript.0 script.js.common.minmax.Aussentemp: startzeit: 1514913987450
              18:26:27.472	[info]	javascript.0 script.js.common.minmax.Aussentemp: endzeit: 1515000387450
              18:26:27.473	[info]	javascript.0 script.js.common.minmax.Aussentemp: [{"id":11,"name":"s7.0.DBs.DB100.Aussentemp","type":0}]
              18:26:27.474	[info]	javascript.0 script.js.common.minmax.Aussentemp: id: s7.0.DBs.DB100.Aussentemp
              18:26:27.475	[info]	javascript.0 script.js.common.minmax.Aussentemp: sendTo(adapter=sql.0, cmd=query, msg="SELECT Round(Min(val),1) As MinVal FROM iobroker.ts_number WHERE ts >= 1514913987450 AND id=11 GROUP BY id")
              18:26:27.475	[info]	javascript.0 script.js.common.minmax.Aussentemp: sendTo(adapter=sql.0, cmd=query, msg="SELECT Round(Max(val),1) As MaxVal FROM iobroker.ts_number WHERE ts >= 1514913987450 AND id=11 GROUP BY id")
              18:26:28.007	[info]	javascript.0 script.js.common.minmax.Aussentemp: Fn Max[{"MaxVal":6.2}]
              18:26:28.008	[info]	javascript.0 script.js.common.minmax.Aussentemp: setForeignState(id=javascript.0.scriptEnabled.common.minmax.Statistik.Aussentemp.max24, state=6.2)
              18:26:28.029	[info]	javascript.0 script.js.common.minmax.Aussentemp: Fn Min[{"MinVal":1.5}]
              18:26:28.030	[info]	javascript.0 script.js.common.minmax.Aussentemp: setForeignState(id=javascript.0.scriptEnabled.common.minmax.Statistik.Aussentemp.min24, state=1.5)
              
              

              finde keine error ausgabe, sollte also funzn

              Vielen Dank bis hierhin schon mal und für die Geduld :D

              hab jetzt nur noch diese Fehlermeldung in der Log :cry: :

              admin.0	2018-01-03 18:26:28.047	error	change ID is empty: {"common":{"enabled":1.5},"from":"system.adapter.javascript.0","ts":1515000388026,"_id":null}
              cloud.0	2018-01-03 18:26:28.037	error	change ID is empty: {"common":{"enabled":1.5},"from":"system.adapter.javascript.0","ts":1515000388026,"_id":null}
              sql.0	2018-01-03 18:26:28.036	error	change ID is empty: {"common":{"enabled":1.5},"from":"system.adapter.javascript.0","ts":1515000388026,"_id":null}
              javascript.0	2018-01-03 18:26:28.035	error	change ID is empty: {"common":{"enabled":1.5},"from":"system.adapter.javascript.0","ts":1515000388026,"_id":null}
              web.0	2018-01-03 18:26:28.033	error	change ID is empty: {"common":{"enabled":1.5},"from":"system.adapter.javascript.0","ts":1515000388026,"_id":null}
              sql.0	2018-01-03 18:26:28.021	error	change ID is empty: {"common":{"enabled":6.2},"from":"system.adapter.javascript.0","ts":1515000388010,"_id":null}
              javascript.0	2018-01-03 18:26:28.023	error	change ID is empty: {"common":{"enabled":6.2},"from":"system.adapter.javascript.0","ts":1515000388010,"_id":null}
              cloud.0	2018-01-03 18:26:28.022	error	change ID is empty: {"common":{"enabled":6.2},"from":"system.adapter.javascript.0","ts":1515000388010,"_id":null}
              web.0	2018-01-03 18:26:28.018	error	change ID is empty: {"common":{"enabled":6.2},"from":"system.adapter.javascript.0","ts":1515000388010,"_id":null}
              
              

              die Werte stehen aber im Datenpunkt
              4639_datenpunkt_minmax.gif

              mach ich da noch etwas verkehrt

              hab die error-meldungen mal in ein eigenen Thread gesetzt

              http://forum.iobroker.net/viewtopic.php?f=8&t=10313

              smartes Haus durch Digitalstrom, enocean, SPS S7-1215, Homematik, Motioneye, iobroker auf einem HP-mini mit Proxmox

              5 x Echo Show, 2 x Echo Dot

              1 Reply Last reply
              1
              • D Offline
                D Offline
                der_Auge
                wrote on last edited by Jey Cee
                #34

                super

                nun habe ich es verstanden.

                der Datenbankname der im Adapter hinterlegt wurde muss mit angegeben werden.

                // -----------------------------------------------------------------------------
                // ----- Abfragen von Werten aus der Datenbank (SQL) ---------------------------
                // -----------------------------------------------------------------------------
                // ----- Datenpunkt der ausgelesen werden soll ---------------------------------
                var id = "javascript.0.eBus.Temperatur.FlowTemp"/*Vorlauf */;
                // ----- Datenpunkte in die gespeichert werden soll ----------------------------
                var maxid = 'javascript.0.Statistik.FlowTemp.Max24';
                var minid = 'javascript.0.Statistik.FlowTemp.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 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('sql.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('sql.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 -----------------------------------------');
                
                }
                //---------------------------------------
                // ----- Funktion jede Minute aufrufen
                schedule("*/1 * * * *", function(){SQLAbfrage(id);});
                

                Nun kann ich weiter versuchen die Tages, Wochen, Jahres-Werte aus der Datenbank abzufragen

                Gruß

                Jürgen

                Master: DN2820FYKH (4GB) Linux NUC 4.4.0-22-generic #40-Ubuntu x86_64

                Slave: Linux RPi2-1 4.1.19-v7+ #858 v4.4.3 # 2.15.1

                SQL-DB : Linux DS 3.10.77 #7321 x86_64 synology412+

                Test : DS916+ VM Debian

                Test : Tinker mit piVCCU

                1 Reply Last reply
                0
                • ThisoftT Offline
                  ThisoftT Offline
                  Thisoft
                  wrote on last edited by
                  #35

                  @der_Auge:

                  der Datenbankname der im Adapter hinterlegt wurde muss mit angegeben werden. `

                  Könnt Ihr mir bitte noch verraten welche Db ihr verwendet? Bei meiner (MSSQL) darf ich den nämlich nicht mit angeben sonst sagt er mir die Tabelle sei unbekannt.

                  22 HM-Geräte; PivCCU2 auf RasPi

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

                  1 Reply Last reply
                  0
                  • D Offline
                    D Offline
                    der_Auge
                    wrote on last edited by
                    #36

                    @Thisoft:

                    @der_Auge:

                    der Datenbankname der im Adapter hinterlegt wurde muss mit angegeben werden. `

                    Könnt Ihr mir bitte noch verraten welche Db ihr verwendet? Bei meiner (MSSQL) darf ich den nämlich nicht mit angeben sonst sagt er mir die Tabelle sei unbekannt. `
                    3361_sql_db.png

                    Master: DN2820FYKH (4GB) Linux NUC 4.4.0-22-generic #40-Ubuntu x86_64

                    Slave: Linux RPi2-1 4.1.19-v7+ #858 v4.4.3 # 2.15.1

                    SQL-DB : Linux DS 3.10.77 #7321 x86_64 synology412+

                    Test : DS916+ VM Debian

                    Test : Tinker mit piVCCU

                    1 Reply Last reply
                    0
                    • F Offline
                      F Offline
                      Farmer-cb
                      wrote on last edited by
                      #37

                      Mahlzeit

                      ich nutze mysql, da gehts

                      smartes Haus durch Digitalstrom, enocean, SPS S7-1215, Homematik, Motioneye, iobroker auf einem HP-mini mit Proxmox

                      5 x Echo Show, 2 x Echo Dot

                      1 Reply Last reply
                      0
                      • Q Offline
                        Q Offline
                        Qlink
                        wrote on last edited by
                        #38

                        @der_Auge:

                        Nun kann ich weiter versuchen die Tages, Wochen, Jahres-Werte aus der Datenbank abzufragen

                        Gruß

                        Jürgen `

                        Hi Jürgen,

                        könntest du dein Script hier reinstellen, sobald du es um die Tages, Wochen und Jahres Werte erweitert hast ?

                        Das wäre toll.

                        Beste Grüße

                        1 Reply Last reply
                        0
                        • D Offline
                          D Offline
                          der_Auge
                          wrote on last edited by
                          #39

                          @Qlink:

                          @der_Auge:

                          Nun kann ich weiter versuchen die Tages, Wochen, Jahres-Werte aus der Datenbank abzufragen

                          Gruß

                          Jürgen `
                          Hi Jürgen,

                          könntest du dein Script hier reinstellen, sobald du es um die Tages, Wochen und Jahres Werte erweitert hast ?

                          Das wäre toll.

                          Beste Grüße `

                          Das werde ich machen.

                          Habe aber bereits festgestellt, das es nicht so einfach ist mit den SQL Befehlen.

                          sendTo('sql.0', 'query', 'SELECT * As MinVal FROM ioBmaster.ts_number WHERE ts >= ' + start_time + ' AND id=' + dpoint.result[0].id + ' GROUP BY id',minimum);
                          sendTo('sql.0', 'query', 'SELECT * As MaxVal FROM ioBmaster.ts_number WHERE ts >= ' + start_time + ' AND id=' + dpoint.result[0].id + ' GROUP BY id',maximum);
                          
                          

                          Hiermit muss ich ja die Werte "von" / "bis" abfragen

                          Vielleicht hat ja jemand eine Idee?

                          Werde es aber weiter versuchen.

                          Gruß

                          Jürgen

                          Master: DN2820FYKH (4GB) Linux NUC 4.4.0-22-generic #40-Ubuntu x86_64

                          Slave: Linux RPi2-1 4.1.19-v7+ #858 v4.4.3 # 2.15.1

                          SQL-DB : Linux DS 3.10.77 #7321 x86_64 synology412+

                          Test : DS916+ VM Debian

                          Test : Tinker mit piVCCU

                          1 Reply Last reply
                          0
                          • ThisoftT Offline
                            ThisoftT Offline
                            Thisoft
                            wrote on last edited by
                            #40

                            Tja, also im SQL ist's eigentlich einfach:

                            sendTo('sql.0', 'query', 'SELECT * As MinVal FROM ioBmaster.ts_number WHERE ts >= ' + start_time + ' AND ts <= ' + end_time + ' AND id=' + dpoint.result[0].id + ' GROUP BY id',minimum);
                            

                            Du mußt dann nur die beiden Variablen "start_time" und "end_time" vorher korrekt befüllen.

                            22 HM-Geräte; PivCCU2 auf RasPi

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

                            1 Reply Last reply
                            0
                            • umbmU Offline
                              umbmU Offline
                              umbm
                              wrote on last edited by
                              #41

                              Da ich mich dem Thema der Min/Max Ermittlung auf einem anderen Weg nähern wollte, mal eine Frage:

                              Wie sieht es mit der Systemlast aus, wenn die Datenbank jede Minute abgefragt wird?

                              Ich wollte das prinzipiell nur so mit Datenpunkten machen, wie es im ersten Beitrag des TE beschrieben ist.

                              Also eigentlich völlig ohne Array oder häufige DB-Abfrage.

                              Erzeugt die ursprüngliche Lösung nicht wesentlich weniger Systemlast, wenn nun zwischen den Datenpunkten seit Mitternacht verglichen wird?

                              1 Reply Last reply
                              0
                              • paul53P Offline
                                paul53P Offline
                                paul53
                                wrote on last edited by paul53
                                #42

                                @umbm:

                                Wie sieht es mit der Systemlast aus, wenn die Datenbank jede Minute abgefragt wird?
                                Erzeugt die ursprüngliche Lösung nicht wesentlich weniger Systemlast, wenn nun zwischen den Datenpunkten seit Mitternacht verglichen wird?

                                Ja, eine Datenbankabfrage erzeugt eine höhere Systemlast, zumal sich auch noch der Temperaturwert seltener als jede Minute ändert.

                                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 Reply Last reply
                                0
                                • B Offline
                                  B Offline
                                  bloop
                                  wrote on last edited by
                                  #43

                                  Liebe Community,

                                  Ich würde zu diesem Thema eure hilfe benötigen.
                                  Bin noch kompletter Rookie und habe versucht das hier angegebene Skript einzubauen.
                                  Datenpunkte sind erstellt, MySQL läuft und dennoch erhalte ich eine Fehlermeldung.
                                  Kann mir bitte jemand weiter helfen?

                                  var id = 'mqtt.0.Temp_Keller.VL_Heizung.temperature';
                                   
                                  var maxid = 'mqtt.0.Temp_Keller.VL_Heizung.Max24';
                                  var minid = 'mqtt.0.Temp_Keller.VL_Heizung.Min24';
                                  var dt = 24;//Zeitraum in Stunden
                                    dt = dt*3600*1000;
                                   
                                  schedule("*/5 * * * *", function(){
                                      SQLAbfrage(id);
                                  });
                                   
                                  SQLAbfrage(id);
                                   
                                  // maximum, minimum
                                  function minimum(result) 
                                  {
                                    log(JSON.stringify(result.result));
                                    setState(minid, result.result[0].MinVal);
                                  }
                                   
                                  function maximum(result) 
                                  {
                                    log('Fn Max'+ JSON.stringify(result.result));
                                    setState(maxid, result.result[0].MaxVal);
                                  }
                                   
                                  function SQLAbfrage () 
                                  {
                                  log('Name: '+id);
                                    sendTo('sql.0', 'query', 'SELECT * FROM datapoints WHERE name = \'' + id + '\'', GetResults);
                                  }
                                   
                                  function GetResults (dpoint) {
                                    var end_time = new Date().getTime();
                                    var start_time = new Date().getTime() - dt;
                                    log('startzeit: '+start_time);
                                    log('endzeit: '+end_time);
                                    log('id: '+dpoint.result[0].name);
                                   
                                    //log(JSON.stringify(dpoint.result)+'//'+start_time);
                                    //log(dpoint.result[0].id + '---//---' + dpoint.result[0].name);
                                    sendTo('sql.0', 'query', 'SELECT Round(Min(val),1) As MinVal FROM 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 ts_number WHERE ts >= ' + start_time + ' AND id=' + dpoint.result[0].id + ' GROUP BY id',maximum);
                                  }
                                  

                                  Ich erhalte folgenden Fehler:

                                  24.1.2021, 16:16:57.511	[info ]: javascript.0 (8747) Start javascript script.js.common.Temp_VL-min_max
                                  24.1.2021, 16:16:57.538	[info ]: javascript.0 (8747) script.js.common.Temp_VL-min_max: Name: mqtt.0.Temp_Keller.VL_Heizung.temperature
                                  24.1.2021, 16:16:57.540	[info ]: javascript.0 (8747) script.js.common.Temp_VL-min_max: registered 0 subscriptions and 1 schedule
                                  24.1.2021, 16:16:57.554	[info ]: javascript.0 (8747) script.js.common.Temp_VL-min_max: startzeit: 1611415017554
                                  24.1.2021, 16:16:57.555	[info ]: javascript.0 (8747) script.js.common.Temp_VL-min_max: endzeit: 1611501417554
                                  24.1.2021, 16:16:57.576	[warn ]: javascript.0 (8747) TypeError: Cannot read property '0' of undefined
                                      at Object.GetResults [as cb] (script.js.common.Temp_VL-min_max:39:27)
                                      at change (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:5297:71)
                                      at Immediate._onImmediate (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:234:41)
                                      at processImmediate (internal/timers.js:461:21)
                                  

                                  Wenn ich das richtig Interpretiere findet er in der Datenbank des Datenpunkes keine Werte. MySQL ist für den Punkt jedoch aktiviert...

                                  c51a3e7b-bcca-4ca8-be3a-3b7265bd9c4e-image.png

                                  Da ich bei den Skripts nur bedingt Durchblicke und mich in den meisten Fällen mit Copy/Paste und Blockly durch Schummle wäre ich sehr dankbar über eure Hilfe!

                                  Herzlichen Dank!!

                                  1 Reply Last reply
                                  0
                                  Reply
                                  • Reply as topic
                                  Log in to reply
                                  • Oldest to Newest
                                  • Newest to Oldest
                                  • Most Votes


                                  Support us

                                  ioBroker
                                  Community Adapters
                                  Donate

                                  387

                                  Online

                                  32.5k

                                  Users

                                  81.6k

                                  Topics

                                  1.3m

                                  Posts
                                  Community
                                  Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                  ioBroker Community 2014-2025
                                  logo
                                  • Login

                                  • Don't have an account? Register

                                  • Login or register to search.
                                  • First post
                                    Last post
                                  0
                                  • Home
                                  • Recent
                                  • Tags
                                  • Unread 0
                                  • Categories
                                  • Unreplied
                                  • Popular
                                  • GitHub
                                  • Docu
                                  • Hilfe