Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Daten mit Blockly aus InfluxDB abrufen

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Daten mit Blockly aus InfluxDB abrufen

    This topic has been deleted. Only users with topic management privileges can see it.
    • T
      tobidd last edited by

      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

      Homoran T W 3 Replies Last reply Reply Quote 0
      • Homoran
        Homoran Global Moderator Administrators @tobidd last edited by

        @tobidd was steht denn in result

        T 1 Reply Last reply Reply Quote 0
        • T
          tobidd @tobidd last edited by

          @tobidd
          gibt es eine Möglichkeit, ähnlich zu PHP und print_r($array), sich den Inhalt eines Arrays komplett anzeigen zu lassen?

          1 Reply Last reply Reply Quote 0
          • T
            tobidd @Homoran last edited by

            @homoran
            Genau das würde ich auch gern wissen aber wie gesagt, ich weiß nicht, wie ich mir das anzeigen lassen kann.

            Homoran 1 Reply Last reply Reply Quote 0
            • Homoran
              Homoran Global Moderator Administrators @tobidd last edited by

              @tobidd sagte in Daten mit Blockly aus InfluxDB abrufen:

              ich weiß nicht, wie ich mir das anzeigen lassen kann.

              mit debug block und daran result

              T 1 Reply Last reply Reply Quote 0
              • T
                tobidd @Homoran last edited by

                @homoran
                Du meinst so ?
                12b234f3-02f4-477e-bc8b-9f25c317a4ad-image.png

                Das ist das Ergebnis:

                11:36:11.742	info	javascript.0 (421) script.js.common.Berechnungen.solar: { result: [], error: {} }
                
                T Homoran 2 Replies Last reply Reply Quote 0
                • T
                  tobidd @tobidd last edited by

                  Muss ich eventuell noch etwas nachinstallieren im iobroker?

                  1 Reply Last reply Reply Quote 0
                  • Homoran
                    Homoran Global Moderator Administrators @tobidd last edited by Homoran

                    @tobidd sagte in Daten mit Blockly aus InfluxDB abrufen:

                    Das ist das Ergebnis:

                    von dem debug, oder sind noch andere debugs aktiv?
                    ist result hier die richtige Variable?

                    Warum so geizig mit dem gezeigten. Nur Schnipsel ohne Zusammenhang helfen nicht wirklich.

                    T 1 Reply Last reply Reply Quote 0
                    • T
                      tobidd @Homoran last edited by

                      @homoran

                      Ich habe jetzt alle deaktiviert, bis auf einen.
                      Ich denke, das result die richtige Variable ist, steht ja in dem Blockly unter Ergebnisse so drin oder interpretiere ich das falsch?

                      2151373f-98b7-469f-9cfc-a1ffde623661-image.png

                      Homoran 1 Reply Last reply Reply Quote 0
                      • Homoran
                        Homoran Global Moderator Administrators @tobidd last edited by

                        @tobidd sagte in Daten mit Blockly aus InfluxDB abrufen:

                        steht ja in dem Blockly unter Ergebnisse so drin oder interpretiere ich das falsch?

                        kann ich dir eben nicht sagen, ich nutze diesen Block mangels InfluxDB nicht, aber wenn du mir jetzt sagst was, nachdem du

                        @tobidd sagte in Daten mit Blockly aus InfluxDB abrufen:

                        jetzt alle deaktiviert, bis auf einen.

                        hast im log steht, kann ich vielleicht weiterhelfen.

                        T 1 Reply Last reply Reply Quote 0
                        • T
                          tobidd @Homoran last edited by

                          @homoran

                          es hat sich leider nichts geändert:

                          javascript.0 (421) script.js.common.Berechnungen.solar: **{ result: [], error: {} }**
                          
                          T Homoran 2 Replies Last reply Reply Quote 0
                          • T
                            tobidd @tobidd last edited by

                            @tobidd
                            Im Protokoll vom iobrocker steht folgendes drin:

                            
                            influxdb.1
                            2024-05-30 12:23:10.802	warn	Error in received multiQuery: TypeError: queriesString.split is not a function
                            

                            kannst du damit vielleicht etwas anfangen?

                            Homoran 1 Reply Last reply Reply Quote 0
                            • Homoran
                              Homoran Global Moderator Administrators @tobidd last edited by

                              @tobidd sagte in Daten mit Blockly aus InfluxDB abrufen:

                              es hat sich leider nichts geändert:

                              uninteressant, der output als solcher ist erstmal wichtig.
                              Demnach kommt nichts zurück (leeres array) und auch kein Fehler (leeres JSON)

                              Da müsstest du dir wahrscheinlich die Query noch mal ansehen

                              T 1 Reply Last reply Reply Quote 0
                              • Homoran
                                Homoran Global Moderator Administrators @tobidd last edited by

                                @tobidd sagte in Daten mit Blockly aus InfluxDB abrufen:

                                Im Protokoll vom iobrocker steht folgendes drin:

                                @homoran sagte in Daten mit Blockly aus InfluxDB abrufen:

                                Warum so geizig mit dem gezeigten. Nur Schnipsel ohne Zusammenhang helfen nicht wirklich.

                                und jetzt noch was Tröpfchenweise

                                und Nein, ich kenne mich mit influx nicht aus

                                1 Reply Last reply Reply Quote 0
                                • T
                                  tobidd @Homoran last edited by

                                  @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.

                                  Homoran T 2 Replies Last reply Reply Quote 0
                                  • Homoran
                                    Homoran Global Moderator Administrators @tobidd last edited by

                                    @tobidd sagte in Daten mit Blockly aus InfluxDB abrufen:

                                    wie das Array result innen aussieht

                                    leer

                                    1 Reply Last reply Reply Quote 0
                                    • T
                                      tobidd @tobidd last edited by

                                      @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.

                                      Homoran 1 Reply Last reply Reply Quote 0
                                      • Homoran
                                        Homoran Global Moderator Administrators @tobidd last edited by

                                        @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 1 Reply Last reply Reply Quote 0
                                        • T
                                          tobidd @Homoran last edited by

                                          @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 Reply Quote 0
                                          • W
                                            wolfi913 @tobidd last edited by

                                            @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.

                                            Homoran S 2 Replies Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            808
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

                                            6
                                            35
                                            1837
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo