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. Min. und Max Wert

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

Min. und Max Wert

Geplant Angeheftet Gesperrt Verschoben JavaScript
4 Beiträge 2 Kommentatoren 309 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.
  • B Online
    B Online
    bloop
    schrieb am zuletzt editiert von
    #1

    Liebe Community,

    Ich würde zu diesem Thema eure Hilfe benötigen.
    Bin noch kompletter Rookie und habe versucht Das Skript aus min-max-temperatursensor bei mir einzubauen.
    Die Daten von der Heizung werden schon seit längerem aufgezeichnet und sind im VIS eingebunden.
    Datenpunkte für die Min und Max Werte 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 das Skript in der Datenbank des Datenpunkes keine Werte. MySQL ist für den Punkt jedoch aktiviert...
    Jetzt bin ich mit meinem Latein am Ende...

    1476761d-4803-462d-87a2-d1f75d3b06a0-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!

    Vielen Herzlichen Dank!!

    F 1 Antwort Letzte Antwort
    0
    • B bloop

      Liebe Community,

      Ich würde zu diesem Thema eure Hilfe benötigen.
      Bin noch kompletter Rookie und habe versucht Das Skript aus min-max-temperatursensor bei mir einzubauen.
      Die Daten von der Heizung werden schon seit längerem aufgezeichnet und sind im VIS eingebunden.
      Datenpunkte für die Min und Max Werte 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 das Skript in der Datenbank des Datenpunkes keine Werte. MySQL ist für den Punkt jedoch aktiviert...
      Jetzt bin ich mit meinem Latein am Ende...

      1476761d-4803-462d-87a2-d1f75d3b06a0-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!

      Vielen Herzlichen Dank!!

      F Offline
      F Offline
      fastfoot
      schrieb am zuletzt editiert von
      #2

      @bloop mach mal in GetResult() ein log(dpoint)

      iobroker läuft unter Docker auf QNAP TS-451+
      SkriptRecovery: https://forum.iobroker.net/post/930558

      B 1 Antwort Letzte Antwort
      0
      • F fastfoot

        @bloop mach mal in GetResult() ein log(dpoint)

        B Online
        B Online
        bloop
        schrieb am zuletzt editiert von
        #3

        @fastfoot
        Danke für die Antwort!
        Habs versucht, jedoch leider ohne Erfolg.

        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(dpoint)
          
        
        08:34:11.856	info	javascript.0 (8747) Start javascript script.js.common.Temp_VL-min_max
        08:34:11.864	info	javascript.0 (8747) script.js.common.Temp_VL-min_max: Name: mqtt.0.Temp_Keller.VL_Heizung.temperature
        08:34:11.865	info	javascript.0 (8747) script.js.common.Temp_VL-min_max: registered 0 subscriptions and 1 schedule
        08:34:11.875	info	javascript.0 (8747) script.js.common.Temp_VL-min_max: {'error':'Error: ER_NO_DB_ERROR: No database selected'}
        08:34:11.877	warn	javascript.0 (8747) TypeError: Cannot read property '0' of undefined at Object.GetResults [as cb] (script.js.common.Temp_VL-min_max:42:134) 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)
        
        B 1 Antwort Letzte Antwort
        0
        • B bloop

          @fastfoot
          Danke für die Antwort!
          Habs versucht, jedoch leider ohne Erfolg.

          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(dpoint)
            
          
          08:34:11.856	info	javascript.0 (8747) Start javascript script.js.common.Temp_VL-min_max
          08:34:11.864	info	javascript.0 (8747) script.js.common.Temp_VL-min_max: Name: mqtt.0.Temp_Keller.VL_Heizung.temperature
          08:34:11.865	info	javascript.0 (8747) script.js.common.Temp_VL-min_max: registered 0 subscriptions and 1 schedule
          08:34:11.875	info	javascript.0 (8747) script.js.common.Temp_VL-min_max: {'error':'Error: ER_NO_DB_ERROR: No database selected'}
          08:34:11.877	warn	javascript.0 (8747) TypeError: Cannot read property '0' of undefined at Object.GetResults [as cb] (script.js.common.Temp_VL-min_max:42:134) 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)
          
          B Online
          B Online
          bloop
          schrieb am zuletzt editiert von
          #4

          @bloop
          Hab mich jetzt weiter gespielt und das Problem gefunden:
          Bei den Datapoints muss der Datenbankname vorgestellt werden.

           sendTo('sql.0', 'query', 'SELECT * FROM iobroker.datapoints WHERE name = \'' + id + '\'', GetResults);
          

          sowohl in der SQLAbfrage als auch im GetResults

          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);
          

          Ab und zu hilft ne Nacht drüber schlafen auch :grin:

          @fastfoot Herzlichen Dank nochmal!

          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

          529

          Online

          32.6k

          Benutzer

          82.1k

          Themen

          1.3m

          Beiträge
          Community
          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
          ioBroker Community 2014-2025
          logo
          • Anmelden

          • Du hast noch kein Konto? Registrieren

          • Anmelden oder registrieren, um zu suchen
          • Erster Beitrag
            Letzter Beitrag
          0
          • Home
          • Aktuell
          • Tags
          • Ungelesen 0
          • Kategorien
          • Unreplied
          • Beliebt
          • GitHub
          • Docu
          • Hilfe