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. Daten mit Blockly aus InfluxDB abrufen

NEWS

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

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

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

Daten mit Blockly aus InfluxDB abrufen

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
35 Beiträge 6 Kommentatoren 3.4k Aufrufe 5 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.
  • 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.

    HomoranH Nicht stören
    HomoranH Nicht stören
    Homoran
    Global Moderator Administrators
    schrieb am zuletzt editiert von
    #16

    @tobidd sagte in Daten mit Blockly aus InfluxDB abrufen:

    wie das Array result innen aussieht

    leer

    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 -

    1 Antwort Letzte Antwort
    0
    • 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
      schrieb am zuletzt editiert von
      #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 Antwort Letzte Antwort
      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 Nicht stören
        HomoranH Nicht stören
        Homoran
        Global Moderator Administrators
        schrieb am zuletzt editiert von
        #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 Antwort Letzte Antwort
        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
          schrieb am zuletzt editiert von
          #19

          @homoran

          nein, erst jetzt und immer wieder nur das:

          Error in received multiQuery: TypeError: queriesString.split is not a function
          
          K 1 Antwort Letzte Antwort
          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 Offline
            W Offline
            wolfi913
            schrieb am zuletzt editiert von
            #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 Antworten Letzte Antwort
            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 Nicht stören
              HomoranH Nicht stören
              Homoran
              Global Moderator Administrators
              schrieb am zuletzt editiert von
              #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 Antwort Letzte Antwort
              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 Offline
                W Offline
                wolfi913
                schrieb am zuletzt editiert von
                #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 Antwort Letzte Antwort
                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 Nicht stören
                  S Nicht stören
                  stenmic
                  schrieb am zuletzt editiert von
                  #23

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

                  2024-06-21 13 07 12.jpg

                  S 1 Antwort Letzte Antwort
                  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
                    schrieb am zuletzt editiert von 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 Antworten Letzte Antwort
                    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 Offline
                      W Offline
                      wolfi913
                      schrieb am zuletzt editiert von
                      #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 Antwort Letzte Antwort
                      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 Nicht stören
                        S Nicht stören
                        stenmic
                        schrieb am zuletzt editiert von
                        #26

                        @spacerx ???
                        mit meiner Lösung gehts auch :)

                        S 1 Antwort Letzte Antwort
                        0
                        • S stenmic

                          @spacerx ???
                          mit meiner Lösung gehts auch :)

                          S Offline
                          S Offline
                          SpacerX
                          schrieb am zuletzt editiert von
                          #27

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

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

                          1 Antwort Letzte Antwort
                          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
                            schrieb am zuletzt editiert von
                            #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 Antwort Letzte Antwort
                            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
                              schrieb am zuletzt editiert von
                              #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 Antwort Letzte Antwort
                              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
                                schrieb am zuletzt editiert von
                                #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 Antwort Letzte Antwort
                                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
                                  schrieb am zuletzt editiert von tobidd
                                  #31

                                  @kdtcat
                                  siehe nächster Post :)

                                  1 Antwort Letzte Antwort
                                  0
                                  • T Offline
                                    T Offline
                                    tobidd
                                    schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                                    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
                                      schrieb am zuletzt editiert von
                                      #33

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

                                      K 1 Antwort Letzte Antwort
                                      0
                                      • K kdtcat

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

                                        K Offline
                                        K Offline
                                        kdtcat
                                        schrieb am zuletzt editiert von
                                        #34

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

                                        K 1 Antwort Letzte Antwort
                                        0
                                        • K kdtcat

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

                                          K Offline
                                          K Offline
                                          kdtcat
                                          schrieb am zuletzt editiert von
                                          #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 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

                                          708

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          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