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

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.3k

[gelöst] Min /Max Temperatursensor

Scheduled Pinned Locked Moved Skripten / Logik
43 Posts 12 Posters 13.7k 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.
  • 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, Shelly, Alexa, iobroker auf einem HP-mini mit Proxmox

          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

                      684

                      Online

                      32.6k

                      Users

                      82.3k

                      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