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

  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.2k

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

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

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.
  • 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
    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 Online
          W Online
          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

                              518

                              Online

                              32.4k

                              Benutzer

                              81.4k

                              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