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. Blockly
  5. JS-Funktion für influxDB2 ohne "await wait(xxxx)" möglich?

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    17
    1
    529

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

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

JS-Funktion für influxDB2 ohne "await wait(xxxx)" möglich?

Scheduled Pinned Locked Moved Blockly
3 Posts 1 Posters 492 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.
  • S Do not disturb
    S Do not disturb
    stenmic
    wrote on last edited by stenmic
    #1

    Hallo,
    ich nutze folgende Funktion in meinen Blocklys für die Abfrage der Influx Datenbank

    2024-09-01 07 34 23.jpg

    var ergebnis;
    sendTo('influxdb.0', 'query', 'from(bucket: "'+Bucket+'") |> range(start: '+Start+', stop: '+Ende+') |> filter(fn: (r) => r["_measurement"] == "'+Datenpunkt+'") |> filter(fn: (r) => r["_field"] == "value") |> filter(fn: (r) => r._value > 0) |> group() |>'+Wert+'()', function (result) {
        if (result.error) {
            console.error(result.error);
        } else {
            ergebnis = JSON.stringify(result);
        }
    });
    await wait(1000);
    return ergebnis;
    

    Es funktioniert auch alles, jedoch stört mich das "await wait(xxxx)" am Ende.
    Gibt es eine Möglichkeit, dass das Ergebnis "returniert" wird sobald es vorhanden ist?

    S 1 Reply Last reply
    0
    • S stenmic

      Hallo,
      ich nutze folgende Funktion in meinen Blocklys für die Abfrage der Influx Datenbank

      2024-09-01 07 34 23.jpg

      var ergebnis;
      sendTo('influxdb.0', 'query', 'from(bucket: "'+Bucket+'") |> range(start: '+Start+', stop: '+Ende+') |> filter(fn: (r) => r["_measurement"] == "'+Datenpunkt+'") |> filter(fn: (r) => r["_field"] == "value") |> filter(fn: (r) => r._value > 0) |> group() |>'+Wert+'()', function (result) {
          if (result.error) {
              console.error(result.error);
          } else {
              ergebnis = JSON.stringify(result);
          }
      });
      await wait(1000);
      return ergebnis;
      

      Es funktioniert auch alles, jedoch stört mich das "await wait(xxxx)" am Ende.
      Gibt es eine Möglichkeit, dass das Ergebnis "returniert" wird sobald es vorhanden ist?

      S Do not disturb
      S Do not disturb
      stenmic
      wrote on last edited by
      #2

      so gehts

      return new Promise((resolve, reject) => {
          let value = 0;
          let query = [
              'from(bucket: "'+Bucket+'")',
              '|> range(start: '+Start+', stop: '+Ende+')',
              '|> filter(fn: (r) => r["_measurement"] == "'+Datenpunkt+'")',
              '|> filter(fn: (r) => r["_field"] == "value")',
              '|> filter(fn: (r) => r._value > 0) |> group()',
              '|> '+Wert+'()'].join('');
       
          sendTo('influxdb.0', 'query', query, function (result) {
              if (result.error) {
                  reject(result.error);
              } else {
                  value = JSON.stringify(result);
                  resolve(value);
              };
          });
      });
      
      S 1 Reply Last reply
      0
      • S stenmic

        so gehts

        return new Promise((resolve, reject) => {
            let value = 0;
            let query = [
                'from(bucket: "'+Bucket+'")',
                '|> range(start: '+Start+', stop: '+Ende+')',
                '|> filter(fn: (r) => r["_measurement"] == "'+Datenpunkt+'")',
                '|> filter(fn: (r) => r["_field"] == "value")',
                '|> filter(fn: (r) => r._value > 0) |> group()',
                '|> '+Wert+'()'].join('');
         
            sendTo('influxdb.0', 'query', query, function (result) {
                if (result.error) {
                    reject(result.error);
                } else {
                    value = JSON.stringify(result);
                    resolve(value);
                };
            });
        });
        
        S Do not disturb
        S Do not disturb
        stenmic
        wrote on last edited by
        #3

        so, nächstes Problem.
        Das Script funktioniert, jedoch stürzt der Javascript Adapter bei Fehlern ab.

        Ich wollte es nun in ein try / catch verpacken.
        Der Adapter stürzt jetzt zwar nicht mehr ab, aber der Fehler wird bei catch nicht sauber in der Konsole ausgegeben.
        Wo liegt mein Fehler?

        try {
            return new Promise((resolve, reject) => {
            let Ergebnis = 0
            let settings = [
                'import "timezone"',
                'import "date"',
                'option location = timezone.location(name: "Europe/Berlin")',
                'from(bucket: "'+Bucket+'")',
                '|> range(start: -'+Start+')',
                '|> filter(fn: (r) => r["_measurement"] == "'+Datenpunkt+'")',
                '|> filter(fn: (r) => r["_field"] == "value")',
                '|> aggregateWindow(every: '+Aggregation+', fn: '+fn+', createEmpty: false) ',
                ].join('');
        
            sendTo('influxdb.0', 'query', settings, function (query) {
                    Ergebnis = query.result[0].map(elm => ({
                    t: (elm.ts !== null && elm.ts !== undefined) ? elm.ts : null,
                    y: (elm._value !== null && elm._value !== undefined) ? elm._value : null
                    }))
                    resolve(Ergebnis)
                })
        	})
        } catch (error) {
            console.warn(error)
        }
        
        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

        578

        Online

        32.7k

        Users

        82.5k

        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