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

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    16
    1
    249

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

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

Daten mit Blockly aus InfluxDB abrufen

Scheduled Pinned Locked Moved Skripten / Logik
35 Posts 6 Posters 4.0k 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.
  • 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

                      413

                      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