Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Werte aus influxDB auslesen

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Werte aus influxDB auslesen

    This topic has been deleted. Only users with topic management privileges can see it.
    • F
      flubb last edited by

      Hallo zusammen,

      für eine aktuelle Idee von mir benötige ich eine maximal-Temperatur innerhalb der letzten 10 Minuten. Geloggt wird die Temperatur mit Hilfe einer InfluxDB. Mein Javascript schaut aktuell so aus (beispielhaft jetzt mit der RPI.temp):

      `var end = new Date().getTime();
      var max = 0;
      sendTo('influxdb.0', 'getHistory', {
          id: 'rpi2.0.temperature.soc_temp',
          options: {
              start:      end - 600000,
              end:        end,
              aggregate: 'none' // or 'none' to get raw values
          }
      }, function (result) {
          for (var i = 0; i < result.result.length; i++) {
              console.log(result.result[i].val + ' ' + new Date(result.result[i].ts).toISOString());
              if (result.result[i].val > max) {
              max = result.result[i].val;
              }
          }
          console.log(max)
      });`
      
      Als Ergebnis erhalte ich folgendes:
       ` ~~[quote]~~14:41:34.323	info	javascript.0 script.js.Skript_1: 47.77 2019-01-30T13:31:30.218Z
      
      14:41:34.324	info	javascript.0 script.js.Skript_1: 47.24 2019-01-30T13:32:30.671Z
      
      14:41:34.324	info	javascript.0 script.js.Skript_1: 47.24 2019-01-30T13:33:31.091Z
      
      14:41:34.324	info	javascript.0 script.js.Skript_1: 47.77 2019-01-30T13:34:31.561Z
      
      14:41:34.324	info	javascript.0 script.js.Skript_1: 48.31 2019-01-30T13:35:31.970Z
      
      14:41:34.324	info	javascript.0 script.js.Skript_1: 47.77 2019-01-30T13:36:32.417Z
      
      14:41:34.324	info	javascript.0 script.js.Skript_1: 47.24 2019-01-30T13:37:32.821Z
      
      14:41:34.324	info	javascript.0 script.js.Skript_1: 47.77 2019-01-30T13:38:33.149Z
      
      14:41:34.324	info	javascript.0 script.js.Skript_1: 47.24 2019-01-30T13:39:33.455Z
      
      14:41:34.325	info	javascript.0 script.js.Skript_1: 47.77 2019-01-30T13:40:33.862Z
      
      14:41:34.325	info	javascript.0 script.js.Skript_1: 48.31 `  ` 
      
      Soweit passt das eigentlich, nur verstehe ich nicht wieso der Wert von 13:31:30 in meinem "result" enthalten ist?! Die Abfrage war ja um 14:41:34 für die letzten 10min. Da sollte doch 13:31:30 nicht dabei sein, oder?[/i][/i][/i][/i]
      
      1 Reply Last reply Reply Quote 0
      • SBorg
        SBorg Forum Testing Most Active last edited by

        Das <u>könnte</u> an "47.77 2019-01-30T13:31:30.218Z" liegen. "Z" steht für Zulu, oder genauer gesagt für Zeitzone UTC +/-0. Nur sind wir UTC +1

        Deine ganzen Werte sind nämlich um eine Stunde verschoben. Musst du also beim Schreiben in die InfluxDB berücksichtigen (falls dort falsch), oder beim Script berücksichtigen.

        1 Reply Last reply Reply Quote 0
        • apollon77
          apollon77 last edited by

          Stell den influxdb adapter mal auf debug, und schicke dann getHistory … dann solltest DU im Log sehen was er genau tut. Mach mal.

          Die Vermutung ist das das Absicht ist weil zur Grafischen Darstellung immer ein Wert kurz vor dem ersten sinnvoll ist weil sonst die Darstellung blöd ist 8weil sie mitten im Graphen anfängt).

          bedeutet für dich: Ignoriere einfach den ersten Wert

          1 Reply Last reply Reply Quote 0
          • F
            flubb last edited by

            Ja das ist es. getHistory nimmt immer noch einen Wert vor und nach dem definierten Zeitraum hinzu.

            Indem ich dann einfach erst bei i = 1 anfange passt das für mich aber.

            Nun habe ich aber noch ein anderes Problem: Habe den Code jetzt in eine Blockly-Funktion mit Rückgabewert gepackt und dafür ans Ende folgendes noch hinzugefügt:

            return max;
            

            Jedoch ist dieser Rückgabewert immer 0, obwohl eine Zeile darüber (jedoch steht das noch innerhalb der sendTo-Anweisung)````
            console.log(max);

            1 Reply Last reply Reply Quote 0
            • apollon77
              apollon77 last edited by

              Sorry, gar nicht. Das ist Asychnon.

              Du kannst eine nächste Funktion aufrufen die dann den rest macht

              1 Reply Last reply Reply Quote 0
              • F
                flubb last edited by

                kannst du das bitte näher erläutern. Bin in JS leider ziemlicher Anfänger… Wenn ich das richtig sehe kann ich ja auf keinerlei Daten von innerhalb des sendto-Blocks zugreifen? Wie kann dann eine weitere Funktion darauf zugreifen?

                1 Reply Last reply Reply Quote 0
                • apollon77
                  apollon77 last edited by

                  Du machst eine neue funktion

                  verarbeiteErgebnis(max) {
                     log(max);
                    // tue was immer Du magst
                  }
                  

                  und diese rufst Du dann aus dem sendTo Ergebnis-Block auf indem Du den parameter übergibst

                  1 Reply Last reply Reply Quote 0
                  • F
                    flubb last edited by

                    ok, das hab ich verstanden. Aber mein Hauptscript ist mit Blockly erstellt, und damit weiß ich nicht wirklich wie ich dieses Workaround hinbekommen soll?! Oder gibt es z.B. eine Möglichkeit innerhalb des "Javascript-Funktions"-Block eine "Blockly-Variable" zu verändern?

                    C 1 Reply Last reply Reply Quote 0
                    • C
                      cainam @flubb last edited by

                      @flubb
                      Kannst du mal das Blockly zeigen. Möchte auch gerne daten wieder aus influxdb auswerten in iobroker (durchschnitte etc.) keinen plan wie ich von iobroker auf influx daten abrufen kann... schreiben tue ich sie mit dem adapter...

                      1 Reply Last reply Reply Quote 0
                      • First post
                        Last post

                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      415
                      Online

                      31.8k
                      Users

                      80.0k
                      Topics

                      1.3m
                      Posts

                      4
                      9
                      5813
                      Loading More Posts
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes
                      Reply
                      • Reply as topic
                      Log in to reply
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                      The ioBroker Community 2014-2023
                      logo