Skip to content
  • 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
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Daten mit Blockly aus InfluxDB abrufen

NEWS

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.8k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.0k

Daten mit Blockly aus InfluxDB abrufen

Scheduled Pinned Locked Moved Skripten / Logik
35 Posts 6 Posters 3.4k Views 5 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.
  • T tobidd

    @homoran

    Die Query funktioniert ja im Querybuilder von Influx, da kommt auch genau ein Wert zurück.
    Ich wüsste gern wie das Array result innen aussieht, also ob es da Indizes gibt oder ob nicht.

    T Offline
    T Offline
    tobidd
    wrote on last edited by
    #17

    @tobidd

    wieso nur Schnipsel?
    Oben steht doch der gesamte Code?
    Und der Logoutput gibt nun mal nur diese wenigen Infos her. Wenn ich wüsste, wie ich da mehr Informationen rausbekomme, würde ich es ja tun. Der Adapter steht auch schon auf Debug.

    HomoranH 1 Reply Last reply
    0
    • T tobidd

      @tobidd

      wieso nur Schnipsel?
      Oben steht doch der gesamte Code?
      Und der Logoutput gibt nun mal nur diese wenigen Infos her. Wenn ich wüsste, wie ich da mehr Informationen rausbekomme, würde ich es ja tun. Der Adapter steht auch schon auf Debug.

      HomoranH Do not disturb
      HomoranH Do not disturb
      Homoran
      Global Moderator Administrators
      wrote on last edited by
      #18

      @tobidd sagte in Daten mit Blockly aus InfluxDB abrufen:

      wieso nur Schnipsel?

      ehrlich jetzt?

      hat früher nichts im iobroker log gestanden?
      erst jetzt?

      kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

      der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

      T 1 Reply Last reply
      0
      • HomoranH Homoran

        @tobidd sagte in Daten mit Blockly aus InfluxDB abrufen:

        wieso nur Schnipsel?

        ehrlich jetzt?

        hat früher nichts im iobroker log gestanden?
        erst jetzt?

        T Offline
        T Offline
        tobidd
        wrote on last edited by
        #19

        @homoran

        nein, erst jetzt und immer wieder nur das:

        Error in received multiQuery: TypeError: queriesString.split is not a function
        
        K 1 Reply Last reply
        0
        • T tobidd

          Hallo liebe Gemeinde,

          ich versuche jetzt schon seit 3 Tagen werte aus meiner InfluxDB 2 via Blockly Skripten abzurufen.
          Da ich mich mit Java nicht auskenne, versuche ich das eben über Blockly.
          Leider bin ich dabei überhaupt nicht erfolgreich.

          Ich habe es, wie in diesem Post beschrieben, versucht, natürlich mit meinen eigenen Werten aber es klappt nicht.

          Re: Blockly InfluxDB2.0 Flux Abfrage

          Ich habe zu erst im Influx Querybuilder eine Abfrage erstellt, die funktioniert.

          from(bucket: "iobroker")
            |> range(start: -1m)
            |> filter(fn: (r) => r["_measurement"] == "mqtt.1.solaranzeige.huawei.pv1_leistung")
            |> filter(fn: (r) => r["_field"] == "value")
            |> last()
          

          Da kommt genau ein Wert raus (die Sinnhaftigkeit sei jetzt mal dahin gestellt, es geht erst mal darum, das es funktioniert)

          Das ganze habe ich dann ins Blockly wie folgt eingebaut.
          9b175914-99b5-4d39-b61e-c8bd8d0455ae-image.png

          var flux, result;
          
          
          on({ id: 'mqtt.0.solaranzeige.sh10rt.hausverbrauch' /* solaranzeige/sh10rt/hausverbrauch */, change: 'ne' }, async (obj) => {
            let value = obj.state.val;
            let oldValue = obj.oldState.val;
            flux = ['from(bucket: "iobroker")','|> range(start: -1m)','|> filter(fn: (r) => r["_measurement"] == "mqtt.1.solaranzeige.huawei.pv1_leistung")','|> filter(fn: (r) => r["_field"] == "value")','|> last()'].join('');
            sendTo('influxdb.1', 'query', { 'result': flux }, async (result) => {
              setState('0_userdata.0.Solar.pv_ertrag_heute' /* pv_ertrag_heute */, parseFloat(getAttr(JSON.stringify(result, null, 2), 'result.0.0._value')));
              console.log(parseFloat(getAttr(JSON.stringify(result, null, 2), 'result.0.0._value')));
              console.log(getAttr(JSON.stringify(result, null, 2), 'result.0.0._value'));
            });
            console.log("influxdb.1: " + "");
          });
          

          Wenn ich das Script starte, steht im Log folgendes:

          11:27:21.080	info	javascript.0 (421) Start JavaScript script.js.common.Berechnungen.solar (Blockly)
          11:27:21.082	info	javascript.0 (421) script.js.common.Berechnungen.solar: registered 1 subscription, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
          11:28:12.350	info	javascript.0 (421) script.js.common.Berechnungen.solar: influxdb.1:
          11:28:12.374	info	javascript.0 (421) script.js.common.Berechnungen.solar: NaN
          11:28:12.378	info	javascript.0 (421) script.js.common.Berechnungen.solar: null
          

          Der Adapter influxdb.1 ist auch der richtige.
          Was mache ich falsch?
          Ich habe es vorher mit einer Influxdb 1.8 und Select Statements, welche mir ehrlich gesagt besser gefallen würden, versucht aber das Ergebnis war das gleiche.

          Ich hoffe, Ihr könnt mich auf den richtigen Pfad zurück bringen.

          Grüße Tobi

          W Online
          W Online
          wolfi913
          wrote on last edited by
          #20

          @tobidd
          Nach langem Probieren würd' ich so was aus der influxDB rausbekommen:
          Screenshot 2024-05-30 131731.png
          Screenshot 2024-05-30 131754.png
          Inhalt der JS Funktion:

          var ergebnis;
          sendTo('influxdb.0', 'query', flux, function (result) {
              if (result.error) {
                  console.error(result.error);
              } else {
                  // show result
                  // console.log('Rows: ' + JSON.stringify(result));
                  ergebnis = JSON.stringify(result);
              }
          });
          await wait(1000);
          return ergebnis;
          

          Vielleicht kannst Du ja damit was anfangen.
          Mit dem sendTo-Block klappt's irgendwie gar nicht.

          HomoranH S 2 Replies Last reply
          0
          • W wolfi913

            @tobidd
            Nach langem Probieren würd' ich so was aus der influxDB rausbekommen:
            Screenshot 2024-05-30 131731.png
            Screenshot 2024-05-30 131754.png
            Inhalt der JS Funktion:

            var ergebnis;
            sendTo('influxdb.0', 'query', flux, function (result) {
                if (result.error) {
                    console.error(result.error);
                } else {
                    // show result
                    // console.log('Rows: ' + JSON.stringify(result));
                    ergebnis = JSON.stringify(result);
                }
            });
            await wait(1000);
            return ergebnis;
            

            Vielleicht kannst Du ja damit was anfangen.
            Mit dem sendTo-Block klappt's irgendwie gar nicht.

            HomoranH Do not disturb
            HomoranH Do not disturb
            Homoran
            Global Moderator Administrators
            wrote on last edited by
            #21

            @wolfi913 sagte in Daten mit Blockly aus InfluxDB abrufen:

            würd' ich so was aus der influxDB rausbekommen:

            bitte als Text in code-tags posten

            @wolfi913 sagte in Daten mit Blockly aus InfluxDB abrufen:

            Mit dem sendTo-Block klappt's irgendwie gar nicht.

            wie gesagt kenne ich den nicht.

            kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

            Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

            der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

            W 1 Reply Last reply
            0
            • HomoranH Homoran

              @wolfi913 sagte in Daten mit Blockly aus InfluxDB abrufen:

              würd' ich so was aus der influxDB rausbekommen:

              bitte als Text in code-tags posten

              @wolfi913 sagte in Daten mit Blockly aus InfluxDB abrufen:

              Mit dem sendTo-Block klappt's irgendwie gar nicht.

              wie gesagt kenne ich den nicht.

              W Online
              W Online
              wolfi913
              wrote on last edited by
              #22

              @homoran

              {"result":[[{"result":"_result","table":0,"_start":"2024-05-30T10:16:41.25298107Z","_stop":"2024-05-30T11:16:41.25298107Z","_time":"2024-05-30T11:02:48.423Z","_value":74,"_field":"value","_measurement":"hmip.0.devices.3014F711A0000EDD89A1774D.channels.1.humidity","ts":1717066968423}]],"ts":1717067801258,"error":null}
              
              1 Reply Last reply
              0
              • W wolfi913

                @tobidd
                Nach langem Probieren würd' ich so was aus der influxDB rausbekommen:
                Screenshot 2024-05-30 131731.png
                Screenshot 2024-05-30 131754.png
                Inhalt der JS Funktion:

                var ergebnis;
                sendTo('influxdb.0', 'query', flux, function (result) {
                    if (result.error) {
                        console.error(result.error);
                    } else {
                        // show result
                        // console.log('Rows: ' + JSON.stringify(result));
                        ergebnis = JSON.stringify(result);
                    }
                });
                await wait(1000);
                return ergebnis;
                

                Vielleicht kannst Du ja damit was anfangen.
                Mit dem sendTo-Block klappt's irgendwie gar nicht.

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

                @wolfi913 falls du es noch brauchst, so bekommt man den "value" raus.

                2024-06-21 13 07 12.jpg

                S 1 Reply Last reply
                0
                • S stenmic

                  @wolfi913 falls du es noch brauchst, so bekommt man den "value" raus.

                  2024-06-21 13 07 12.jpg

                  S Offline
                  S Offline
                  SpacerX
                  wrote on last edited by SpacerX
                  #24

                  @stenmic mal eine Variante um Daten aus influxdb mit Blockly zu bekommen.

                  https://forum.iobroker.net/topic/56125/blockly-influxdb2-0-flux-abfrage

                  DS720|Nuc8i3BEH|Proxmox|RaspberryMatic|ioBroker|influxDB2|Grafana

                  W S 2 Replies Last reply
                  0
                  • S SpacerX

                    @stenmic mal eine Variante um Daten aus influxdb mit Blockly zu bekommen.

                    https://forum.iobroker.net/topic/56125/blockly-influxdb2-0-flux-abfrage

                    W Online
                    W Online
                    wolfi913
                    wrote on last edited by
                    #25

                    @spacerx sagte in Daten mit Blockly aus InfluxDB abrufen:

                    @stenmic mal eine Variante um Daten aus influxdb mit Blockly zu bekommen.

                    https://forum.iobroker.net/topic/56125/blockly-influxdb2-0-flux-abfrage

                    Das ist der eingangs verlinkte Thread von @tobidd der ja bei ihm nicht funktioniert hatte.

                    @stenmic

                    falls du es noch brauchst, so bekommt man den "value" raus.

                    Danke. Aber ich hatte es ja nicht gebraucht. Und @tobidd hatte es ja oben schon korrekt in seinem Blockly drinnen wie der value zu extrahieren ist result.0.0._value. Daher bin ich darauf nicht extra eingegangen.

                    1 Reply Last reply
                    0
                    • S SpacerX

                      @stenmic mal eine Variante um Daten aus influxdb mit Blockly zu bekommen.

                      https://forum.iobroker.net/topic/56125/blockly-influxdb2-0-flux-abfrage

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

                      @spacerx ???
                      mit meiner Lösung gehts auch 🙂

                      S 1 Reply Last reply
                      0
                      • S stenmic

                        @spacerx ???
                        mit meiner Lösung gehts auch 🙂

                        S Offline
                        S Offline
                        SpacerX
                        wrote on last edited by
                        #27

                        @stenmic ja klar. Viele Wege führen nach Rom.

                        DS720|Nuc8i3BEH|Proxmox|RaspberryMatic|ioBroker|influxDB2|Grafana

                        1 Reply Last reply
                        0
                        • T tobidd

                          @homoran

                          nein, erst jetzt und immer wieder nur das:

                          Error in received multiQuery: TypeError: queriesString.split is not a function
                          
                          K Offline
                          K Offline
                          kdtcat
                          wrote on last edited by
                          #28

                          @tobidd Ich habe jetzt auch festgestellt, dass das Blockly "sendTo" nicht mehr funktioniert. Scheinbar ist durch ein Update die Query Funktion geändert worden. Blockly generiert jetzt immer ein Query Array, welches bei InfluxDb nicht erlaubt ist. Im Javascript Code erkennt man das am { Zeichen.

                          Meine bis jetzt einzige Lösung ist das Script als Native Script weiterzuführen.

                          T 1 Reply Last reply
                          0
                          • K kdtcat

                            @tobidd Ich habe jetzt auch festgestellt, dass das Blockly "sendTo" nicht mehr funktioniert. Scheinbar ist durch ein Update die Query Funktion geändert worden. Blockly generiert jetzt immer ein Query Array, welches bei InfluxDb nicht erlaubt ist. Im Javascript Code erkennt man das am { Zeichen.

                            Meine bis jetzt einzige Lösung ist das Script als Native Script weiterzuführen.

                            T Offline
                            T Offline
                            tobidd
                            wrote on last edited by
                            #29

                            @kdtcat
                            Hallo, kannst du mir eventuell ein Beispiel zeigen, wie du das gelöst hast.
                            Ich hatte jetzt lange keine Lust mehr dem Thema nachzugehen. Jetzt bin ich wieder etwas motivierter.

                            Grüße Tobi

                            K 1 Reply Last reply
                            0
                            • T tobidd

                              @kdtcat
                              Hallo, kannst du mir eventuell ein Beispiel zeigen, wie du das gelöst hast.
                              Ich hatte jetzt lange keine Lust mehr dem Thema nachzugehen. Jetzt bin ich wieder etwas motivierter.

                              Grüße Tobi

                              K Offline
                              K Offline
                              kdtcat
                              wrote on last edited by
                              #30

                              @tobidd sagte in Daten mit Blockly aus InfluxDB abrufen:

                              @kdtcat
                              Hallo, kannst du mir eventuell ein Beispiel zeigen, wie du das gelöst hast.
                              Ich hatte jetzt lange keine Lust mehr dem Thema nachzugehen. Jetzt bin ich wieder etwas motivierter.

                              Grüße Tobi

                              Hier als Beispiel die beiden ersten Werte meines Scripts:

                              schedule("*/2 * * * *", async () => {
                                result = !''.length;
                                sendTo('influxdb.0', 'query', 'from(bucket: "solar")  |> range(start: -1m) |> filter(fn: (r) => r["_field"] == "Energy.Battery.Charge.Level") |> aggregateWindow(every: 2m, fn: mean)', async (result) => {
                                  test1 = (await jsonataExpression(result,'*[0]._value '));
                                  setStateDelayed('0_userdata.0.Enpal.BatteryLevel', Math.round(test1 * 100) / 100, true, parseInt(((0) || '').toString(), 10), false);
                                });
                                await wait(3000);
                                result = !''.length;
                                sendTo('influxdb.0', 'query', 'from(bucket: "solar")  |> range(start: -1m) |> filter(fn: (r) => r["_field"] == "Power.Consumption.Total") |> aggregateWindow(every: 2m, fn: mean)', async (result) => {
                                  test2 = (await jsonataExpression(result,'*[0]._value '));
                                  setStateDelayed('0_userdata.0.Enpal.PowerConsumptionTotal', test2, true, parseInt(((0) || '').toString(), 10), false);
                                });
                                await wait(3000);
                              });
                              
                              T 1 Reply Last reply
                              0
                              • K kdtcat

                                @tobidd sagte in Daten mit Blockly aus InfluxDB abrufen:

                                @kdtcat
                                Hallo, kannst du mir eventuell ein Beispiel zeigen, wie du das gelöst hast.
                                Ich hatte jetzt lange keine Lust mehr dem Thema nachzugehen. Jetzt bin ich wieder etwas motivierter.

                                Grüße Tobi

                                Hier als Beispiel die beiden ersten Werte meines Scripts:

                                schedule("*/2 * * * *", async () => {
                                  result = !''.length;
                                  sendTo('influxdb.0', 'query', 'from(bucket: "solar")  |> range(start: -1m) |> filter(fn: (r) => r["_field"] == "Energy.Battery.Charge.Level") |> aggregateWindow(every: 2m, fn: mean)', async (result) => {
                                    test1 = (await jsonataExpression(result,'*[0]._value '));
                                    setStateDelayed('0_userdata.0.Enpal.BatteryLevel', Math.round(test1 * 100) / 100, true, parseInt(((0) || '').toString(), 10), false);
                                  });
                                  await wait(3000);
                                  result = !''.length;
                                  sendTo('influxdb.0', 'query', 'from(bucket: "solar")  |> range(start: -1m) |> filter(fn: (r) => r["_field"] == "Power.Consumption.Total") |> aggregateWindow(every: 2m, fn: mean)', async (result) => {
                                    test2 = (await jsonataExpression(result,'*[0]._value '));
                                    setStateDelayed('0_userdata.0.Enpal.PowerConsumptionTotal', test2, true, parseInt(((0) || '').toString(), 10), false);
                                  });
                                  await wait(3000);
                                });
                                
                                T Offline
                                T Offline
                                tobidd
                                wrote on last edited by tobidd
                                #31

                                @kdtcat
                                siehe nächster Post 🙂

                                1 Reply Last reply
                                0
                                • T Offline
                                  T Offline
                                  tobidd
                                  wrote on last edited by tobidd
                                  #32

                                  @kdtcat

                                  ich habe das jetzt so gelöst:

                                  var flux, hausverbrauch, bezug;
                                  
                                  // Beschreibe diese Funktion …
                                  async function query_influx(flux) {
                                      var ergebnis;
                                      sendTo('influxdb.0', 'query', flux, function (result) {
                                          if (result.error) {
                                              console.error(result.error);
                                          } else {
                                              //show result
                                              //console.log('Rows: ' + JSON.stringify(result));
                                             ergebnis = JSON.stringify(result);
                                          }
                                      });
                                      await wait(1000);
                                      return ergebnis;
                                  }
                                  
                                  
                                  on({ id: 'mqtt.0.solaranzeige.sh10rt.hausverbrauch' /* solaranzeige/sh10rt/hausverbrauch */, change: 'any' }, async (obj) => {
                                    let value = obj.state.val;
                                    let oldValue = obj.oldState.val;
                                    hausverbrauch = await query_influx(['from(bucket: "solaranzeige2")',' |> range(start: today(), stop: now())','|> filter(fn: (r) => r["_measurement"] == "mqtt.0.solaranzeige.sh10rt.hausverbrauch")','|> filter(fn: (r) => r["_field"] == "value")','|> sum()',''].join(''));
                                    hausverbrauch = parseFloat(getAttr((() => { try { return JSON.parse(hausverbrauch); } catch (e) { return {}; }})(), 'result.0.0._value'));
                                    bezug = await query_influx(['from(bucket: "solaranzeige2")',' |> range(start: today(), stop: now())','|> filter(fn: (r) => r["_measurement"] == "mqtt.0.solaranzeige.sh10rt.bezug")','|> filter(fn: (r) => r["_field"] == "value")','|> sum()',''].join(''));
                                    bezug = parseFloat(getAttr((() => { try { return JSON.parse(bezug); } catch (e) { return {}; }})(), 'result.0.0._value'));
                                    setState('0_userdata.0.Solar.autarkiegrad_heute' /* autarkiegrad_heute */, ((1 - bezug / hausverbrauch) * 100), true);
                                  });
                                  

                                  Ich hoffe an Hand der Bilder ist klar was wo hin gehört.
                                  Vielleicht hilft es ja jemandem.
                                  Einen Herzlichen Dank an ALLE, die mir Hinweise zur Lösungsfindung gegeben haben.

                                  blockly.jpg
                                  js2.jpg
                                  js.jpg

                                  K 1 Reply Last reply
                                  0
                                  • T tobidd

                                    @kdtcat

                                    ich habe das jetzt so gelöst:

                                    var flux, hausverbrauch, bezug;
                                    
                                    // Beschreibe diese Funktion …
                                    async function query_influx(flux) {
                                        var ergebnis;
                                        sendTo('influxdb.0', 'query', flux, function (result) {
                                            if (result.error) {
                                                console.error(result.error);
                                            } else {
                                                //show result
                                                //console.log('Rows: ' + JSON.stringify(result));
                                               ergebnis = JSON.stringify(result);
                                            }
                                        });
                                        await wait(1000);
                                        return ergebnis;
                                    }
                                    
                                    
                                    on({ id: 'mqtt.0.solaranzeige.sh10rt.hausverbrauch' /* solaranzeige/sh10rt/hausverbrauch */, change: 'any' }, async (obj) => {
                                      let value = obj.state.val;
                                      let oldValue = obj.oldState.val;
                                      hausverbrauch = await query_influx(['from(bucket: "solaranzeige2")',' |> range(start: today(), stop: now())','|> filter(fn: (r) => r["_measurement"] == "mqtt.0.solaranzeige.sh10rt.hausverbrauch")','|> filter(fn: (r) => r["_field"] == "value")','|> sum()',''].join(''));
                                      hausverbrauch = parseFloat(getAttr((() => { try { return JSON.parse(hausverbrauch); } catch (e) { return {}; }})(), 'result.0.0._value'));
                                      bezug = await query_influx(['from(bucket: "solaranzeige2")',' |> range(start: today(), stop: now())','|> filter(fn: (r) => r["_measurement"] == "mqtt.0.solaranzeige.sh10rt.bezug")','|> filter(fn: (r) => r["_field"] == "value")','|> sum()',''].join(''));
                                      bezug = parseFloat(getAttr((() => { try { return JSON.parse(bezug); } catch (e) { return {}; }})(), 'result.0.0._value'));
                                      setState('0_userdata.0.Solar.autarkiegrad_heute' /* autarkiegrad_heute */, ((1 - bezug / hausverbrauch) * 100), true);
                                    });
                                    

                                    Ich hoffe an Hand der Bilder ist klar was wo hin gehört.
                                    Vielleicht hilft es ja jemandem.
                                    Einen Herzlichen Dank an ALLE, die mir Hinweise zur Lösungsfindung gegeben haben.

                                    blockly.jpg
                                    js2.jpg
                                    js.jpg

                                    K Offline
                                    K Offline
                                    kdtcat
                                    wrote on last edited by
                                    #33

                                    @tobiddGute Idee mit der Function. Damit habe ich mein Script auch wieder "Blockly fähig" gemacht.

                                    K 1 Reply Last reply
                                    0
                                    • K kdtcat

                                      @tobiddGute Idee mit der Function. Damit habe ich mein Script auch wieder "Blockly fähig" gemacht.

                                      K Offline
                                      K Offline
                                      kdtcat
                                      wrote on last edited by
                                      #34

                                      @kdtcat 7d31e849-77bc-46aa-9735-7c2d68b5975d-image.png

                                      K 1 Reply Last reply
                                      0
                                      • K kdtcat

                                        @kdtcat 7d31e849-77bc-46aa-9735-7c2d68b5975d-image.png

                                        K Offline
                                        K Offline
                                        kdtcat
                                        wrote on last edited by
                                        #35

                                        @kdtcat ```

                                        var parm1, parm2, result, BatteryLevel, PowerConsumptionTotal, PowerProductionTotal, EnergyProductionTotalDay, EnergyConsumptionTotalDay, EnergyExternalTotalOutDay, EnergyBatteryChargeDay, EnergyStorageTotalOutDay, StromverbrauchAnteilSolarTag, STromverbrauchAlleTag;
                                        
                                        // Beschreibe diese Funktion …
                                        async function iq(parm1, parm2) {
                                             // Beschreibe diese Funktion 
                                             var ergebnis, fparm, fparm2; 
                                                fparm = 'from(bucket: "solar") |> range(start: -1m) |> filter(fn: (r) => r["_field"] == ' + parm1 + ') |> aggregateWindow(every: 2m, fn: mean)';
                                                fparm2 = '0_userdata.0.Enpal.' + parm2;
                                                sendTo('influxdb.0', 'query', fparm, async (result) => {
                                                test0 = (await jsonataExpression(result,'*[0]._value '));
                                                setStateDelayed(fparm2, test0, true, parseInt(((0) || '').toString(), 10), false);
                                              });
                                            return ergebnis;
                                            
                                        
                                        }
                                        
                                        
                                        schedule("*/2 * * * *", async () => {
                                          result = await iq('"Energy.Battery.Charge.Level"', 'BatteryLevel');
                                          await wait(3000);
                                          BatteryLevel = Math.round(getState('0_userdata.0.Enpal.BatteryLevel').val * 100) / 100;
                                          setStateDelayed('0_userdata.0.Enpal.BatteryLevel', { val: BatteryLevel, ack: false }, parseInt(((0) || '').toString(), 10), false);
                                          result = await iq('"Power.Consumption.Total"', 'PowerConsumptionTotal');
                                          await wait(3000);
                                          PowerConsumptionTotal = getState('0_userdata.0.Enpal.PowerConsumptionTotal').val;
                                          result = await iq('"Power.Production.Total"', 'PowerProductionTotal');
                                          await wait(3000);
                                          PowerProductionTotal = getState('0_userdata.0.Enpal.PowerProductionTotal').val;
                                          result = await iq('"Energy.Production.Total.Day"', 'EnergyProductionTotalDay');
                                          await wait(3000);
                                          EnergyProductionTotalDay = getState('0_userdata.0.Enpal.EnergyProductionTotalDay').val;
                                          result = await iq('"Energy.Consumption.Total.Day"', 'EnergyConsumptionTotalDay');
                                          await wait(3000);
                                          EnergyConsumptionTotalDay = getState('0_userdata.0.Enpal.EnergyConsumptionTotalDay').val;
                                          result = await iq('"Energy.External.Total.Out.Day"', 'EnergyExternalTotalOutDay');
                                          await wait(3000);
                                          EnergyExternalTotalOutDay = getState('0_userdata.0.Enpal.EnergyExternalTotalOutDay').val;
                                          result = await iq('"Energy.Battery.Charge.Day"', 'EnergyBatteryChargeDay');
                                          await wait(3000);
                                          EnergyBatteryChargeDay = getState('0_userdata.0.Enpal.EnergyBatteryChargeDay').val;
                                          result = await iq('"Energy.Storage.Total.Out.Day"', 'EnergyStorageTotalOutDay');
                                          await wait(3000);
                                          EnergyStorageTotalOutDay = getState('0_userdata.0.Enpal.EnergyStorageTotalOutDay').val;
                                          StromverbrauchAnteilSolarTag = EnergyProductionTotalDay - EnergyExternalTotalOutDay;
                                          StromverbrauchAnteilSolarTag = StromverbrauchAnteilSolarTag - EnergyBatteryChargeDay;
                                          setStateDelayed('0_userdata.0.Enpal.StromverbrauchAnteilSolarTag', { val: StromverbrauchAnteilSolarTag, ack: false }, parseInt(((0) || '').toString(), 10), false);
                                          STromverbrauchAlleTag = StromverbrauchAnteilSolarTag + EnergyStorageTotalOutDay + EnergyConsumptionTotalDay;
                                          setStateDelayed('0_userdata.0.Enpal.StromverbrauchAlleTag', { val: STromverbrauchAlleTag, ack: false }, parseInt(((0) || '').toString(), 10), false);
                                          console.info((['1: ',BatteryLevel,', 2: ',PowerConsumptionTotal,', 3: ',PowerProductionTotal,', 4: ',EnergyProductionTotalDay,', 5: ',EnergyConsumptionTotalDay,', 6: ',EnergyExternalTotalOutDay,', 7: ',EnergyBatteryChargeDay,', 8: ',EnergyStorageTotalOutDay,', 9: ',StromverbrauchAnteilSolarTag,', 10: ',STromverbrauchAlleTag].join('')));
                                        });
                                        
                                        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

                                        635

                                        Online

                                        32.4k

                                        Users

                                        81.4k

                                        Topics

                                        1.3m

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

                                        • Don't have an account? Register

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