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. Node-Red
  5. InfluxDB mit Node-RED auslesen und schreiben - so geht's!

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    23
    1
    1.3k

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.5k

InfluxDB mit Node-RED auslesen und schreiben - so geht's!

Geplant Angeheftet Gesperrt Verschoben Node-Red
11 Beiträge 4 Kommentatoren 7.3k Aufrufe 4 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.
  • W woodbert

    Ich wollte die Daten, die der ioBroker in der influxDB anlegt, in Node-RED auslesen und dachte mir in meiner Einfalt, dass das "mal so eben" geht. Leider gibt es da ein paar Fallstricke - und anscheinend fand ich nicht die richtigen Suchbegriffe, um hier oder bei Google die Lösung zu finden.

    Ich bin einigermaßen vertraut mit SQL, aber bei influx ist die Philosphie komplett anders und ich stehe immer wieder mal auf dem Schlauch. Vielleicht kann ich hier mit einem kleinen Beitrag anderen eine lange Suche ersparen ;-)

    Das Video hätte mir geholfen, aber ich fand es erst später: "Prescient Devices Inc." erklärt es bei YouTube in aller Kürze.

    Worauf dort nicht eingegangen wird und was mir viel Kopfzerbrechen bereitet hat, ist die Angabe der Influx-Version. Ich habe hier eine V 1.8.3, also dachte ich mir, dass ich bei der Konfiguration der influx-Nodes eben [1.8-flux] auswählen muss. Leider wird danach eine einfache Query mit SELECT unmöglich, man muss dann "flux sprechen", eine mir völlig unverständliche Variante zur Abfrage.
    Kurzum: unbedingt [1.x] auswählen:

    2021-11-11-094308 Screenshot .png

    Damit kann man dann wirklich einfache Abfragen machen wie z.B.

    SELECT * FROM test
    

    Wenn man auf die völlig abwegige Idee kommt, den letzten, also aktuellsten Eintrag auszulesen, macht man das so:

    SELECT * FROM test ORDER BY DESC LIMIT 1
    

    (Leider gibt es kein LAST oder ähnliches)

    Ich habe hier ein paar Beispiele zum Rumspielen angelegt, so sieht das aus:

    2021-11-11-093102 Screenshot .png

    Im ersten Inject-Node setze ich als Value mit JSONata einen Zufallswert 0-10, das "measurement" lege ich auch hier fest und nicht im influxdb-out-Node.
    Der Name der Database ist bei mir iobroker, das wird in bei der Konfiguration der DB eingetragen (s.o.).

    Das Auslesen der Daten ist in der mittleren Zeile "dumm", es werden einfach alle ("*") Einträge ausgelesen, das Ergebnis ist ein Array von Objects.

    2021-11-11-101117 Screenshot .png

    In der unteren Zeile ist das intelligent, es wird nur der letzte Eintrag geholt und dann im payload (dem Ergebnis der Query), das erste Objekt und darin das Field "value" abgefragt ("msg.payload[0].value"), damit bekomme ich den Wert, den ich oben reingesteckt habe.

    2021-11-11-101215 Screenshot .png

    "value" ist der Standardname, der für dumm eingestellte payloads von influx gewählt wird. Wer andere fields möchte, findet Beispiele im o.g. Video.

    Viel Erfolg!

    P.S.: Vor dem Installieren des angehängten Flows, muss noch in der Palette "node-red-contrib-influxdb" installiert werden, oder passiert das automatisch??

    flows-2.json

    R Offline
    R Offline
    rewenode
    schrieb am zuletzt editiert von
    #2

    @woodbert sagte in InfluxDB mit Node-RED auslesen und schreiben - so geht's!:

    (Leider gibt es kein LAST oder ähnliches)

    Das ist so nicht korrekt. Du kannst LAST() verwenden.

    Auszug aus einem fuction-node von mir:

    let qdevice = msg.payload.device; 
    let qserie  = msg.payload.serie;
    
    
    let query   = `SELECT LAST("value") AS "${qserie}" ` +
                  `FROM "${qdevice}" `;
    
    msg.query = query
    return msg;
    

    Gruß
    Reiner

    W 1 Antwort Letzte Antwort
    0
    • R rewenode

      @woodbert sagte in InfluxDB mit Node-RED auslesen und schreiben - so geht's!:

      (Leider gibt es kein LAST oder ähnliches)

      Das ist so nicht korrekt. Du kannst LAST() verwenden.

      Auszug aus einem fuction-node von mir:

      let qdevice = msg.payload.device; 
      let qserie  = msg.payload.serie;
      
      
      let query   = `SELECT LAST("value") AS "${qserie}" ` +
                    `FROM "${qdevice}" `;
      
      msg.query = query
      return msg;
      

      Gruß
      Reiner

      W Offline
      W Offline
      woodbert
      schrieb am zuletzt editiert von woodbert
      #3

      @rewenode
      Schick, ich danke dir! Habe ich übersehen.

      Um denselben "Output" zu bekommen muss ich dann aber das hier schreiben:

      SELECT LAST(value) AS value FROM test
      

      Ansonsten steht in den Objekten des Arrays "last" als key.

      Wallbox KEBA KC-P30-EC220122-E00
      (noch) Twingo Z.E. "Vibes"
      (bald) ZOE R135 Z.E. 50 Intens

      R 2 Antworten Letzte Antwort
      0
      • W woodbert

        @rewenode
        Schick, ich danke dir! Habe ich übersehen.

        Um denselben "Output" zu bekommen muss ich dann aber das hier schreiben:

        SELECT LAST(value) AS value FROM test
        

        Ansonsten steht in den Objekten des Arrays "last" als key.

        R Offline
        R Offline
        rewenode
        schrieb am zuletzt editiert von
        #4

        @woodbert sagte in InfluxDB mit Node-RED auslesen und schreiben - so geht's!:

        Um denselben "Output" zu bekommen muss ich dann aber das hier schreiben:

        Wird wohl auf den Typ deiner Spalte value ankommen. Bei mir gehts mit "value". Wobei man "value" ja nicht wirklich als Spaltenbezeichner nehmen sollte - mein Fehler.
        Gibt übrigens auch FIRST()

        Und dann sollte man es aus Performacegründen mit GROUP BY kombinieren.
        Siehe hier https://stackoverflow.com/questions/29193898/influxdb-getting-only-last-value-in-query

        Gruß
        Reiner

        W 1 Antwort Letzte Antwort
        0
        • W woodbert

          @rewenode
          Schick, ich danke dir! Habe ich übersehen.

          Um denselben "Output" zu bekommen muss ich dann aber das hier schreiben:

          SELECT LAST(value) AS value FROM test
          

          Ansonsten steht in den Objekten des Arrays "last" als key.

          R Offline
          R Offline
          rewenode
          schrieb am zuletzt editiert von
          #5

          @woodbert Achtung, value (in meinem Beispiel) ist ein Spalte

          Gruß
          Reiner

          1 Antwort Letzte Antwort
          0
          • R rewenode

            @woodbert sagte in InfluxDB mit Node-RED auslesen und schreiben - so geht's!:

            Um denselben "Output" zu bekommen muss ich dann aber das hier schreiben:

            Wird wohl auf den Typ deiner Spalte value ankommen. Bei mir gehts mit "value". Wobei man "value" ja nicht wirklich als Spaltenbezeichner nehmen sollte - mein Fehler.
            Gibt übrigens auch FIRST()

            Und dann sollte man es aus Performacegründen mit GROUP BY kombinieren.
            Siehe hier https://stackoverflow.com/questions/29193898/influxdb-getting-only-last-value-in-query

            Gruß
            Reiner

            W Offline
            W Offline
            woodbert
            schrieb am zuletzt editiert von
            #6

            @rewenode sagte in InfluxDB mit Node-RED auslesen und schreiben - so geht's!:

            Und dann sollte man es aus Performacegründen mit GROUP BY kombinieren.
            Siehe hier https://stackoverflow.com/questions/29193898/influxdb-getting-only-last-value-in-query

            Hmm, ich sage doch, dass ich influx "nicht verstehe" ;-)
            Immerhin steht bei stackoverflow, dass die schlechte Performance für InfluxDB v0.8 gilt, vielleicht ist das ja bei v1.8 behoben ;-)

            Wallbox KEBA KC-P30-EC220122-E00
            (noch) Twingo Z.E. "Vibes"
            (bald) ZOE R135 Z.E. 50 Intens

            1 Antwort Letzte Antwort
            0
            • M Offline
              M Offline
              Mauri 0
              schrieb am zuletzt editiert von
              #7

              @woodbert said in InfluxDB mit Node-RED auslesen und schreiben - so geht's!:

              In der unteren Zeile ist das intelligent, es wird nur der letzte Eintrag geholt und dann im payload (dem Ergebnis der Query), das erste Objekt und darin das Field "value" abgefragt ("msg.payload[0].value"), damit bekomme ich den Wert, den ich oben reingesteckt habe.

              Guten Morgen
              Wo hast du diesen Term "msg.payload[0].value" eingegeben? denn ich möchte wirklich aus dem Array nur die Value als payload haben.... Die Lösung von Dir funktioniert ansonsten (hab den Flow importiert)
              Danke für eure Antworten!

              W mickymM 2 Antworten Letzte Antwort
              0
              • M Mauri 0

                @woodbert said in InfluxDB mit Node-RED auslesen und schreiben - so geht's!:

                In der unteren Zeile ist das intelligent, es wird nur der letzte Eintrag geholt und dann im payload (dem Ergebnis der Query), das erste Objekt und darin das Field "value" abgefragt ("msg.payload[0].value"), damit bekomme ich den Wert, den ich oben reingesteckt habe.

                Guten Morgen
                Wo hast du diesen Term "msg.payload[0].value" eingegeben? denn ich möchte wirklich aus dem Array nur die Value als payload haben.... Die Lösung von Dir funktioniert ansonsten (hab den Flow importiert)
                Danke für eure Antworten!

                W Offline
                W Offline
                woodbert
                schrieb am zuletzt editiert von
                #8

                @mauri-0
                Was du oben siehst ist die Ausgabe eines debug-nodes.
                Du kannst das natürlich auch in einen change-node schreiben und in msg.payload füllen.

                Wallbox KEBA KC-P30-EC220122-E00
                (noch) Twingo Z.E. "Vibes"
                (bald) ZOE R135 Z.E. 50 Intens

                1 Antwort Letzte Antwort
                1
                • M Mauri 0

                  @woodbert said in InfluxDB mit Node-RED auslesen und schreiben - so geht's!:

                  In der unteren Zeile ist das intelligent, es wird nur der letzte Eintrag geholt und dann im payload (dem Ergebnis der Query), das erste Objekt und darin das Field "value" abgefragt ("msg.payload[0].value"), damit bekomme ich den Wert, den ich oben reingesteckt habe.

                  Guten Morgen
                  Wo hast du diesen Term "msg.payload[0].value" eingegeben? denn ich möchte wirklich aus dem Array nur die Value als payload haben.... Die Lösung von Dir funktioniert ansonsten (hab den Flow importiert)
                  Danke für eure Antworten!

                  mickymM Online
                  mickymM Online
                  mickym
                  Most Active
                  schrieb am zuletzt editiert von
                  #9

                  @mauri-0 Einfach aus dem Debug Fenster den Pfad kopieren und wie @woodbert bereits sagte die payload auf diesen Pfad mittels einer Change Node setzen:

                  666edba9-c4bb-4475-ba41-8fd703dfdc8c-image.png

                  copy path.gif

                  Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                  W 1 Antwort Letzte Antwort
                  1
                  • mickymM mickym

                    @mauri-0 Einfach aus dem Debug Fenster den Pfad kopieren und wie @woodbert bereits sagte die payload auf diesen Pfad mittels einer Change Node setzen:

                    666edba9-c4bb-4475-ba41-8fd703dfdc8c-image.png

                    copy path.gif

                    W Offline
                    W Offline
                    woodbert
                    schrieb am zuletzt editiert von
                    #10

                    @mickym
                    Danke für die schöne Aufbereitung meines Vorschlags. Am iPhone von unterwegs war mir das doch zu schwierig :blush:

                    Wallbox KEBA KC-P30-EC220122-E00
                    (noch) Twingo Z.E. "Vibes"
                    (bald) ZOE R135 Z.E. 50 Intens

                    M 1 Antwort Letzte Antwort
                    1
                    • W woodbert

                      @mickym
                      Danke für die schöne Aufbereitung meines Vorschlags. Am iPhone von unterwegs war mir das doch zu schwierig :blush:

                      M Offline
                      M Offline
                      Mauri 0
                      schrieb am zuletzt editiert von
                      #11

                      @woodbert und @mickym Danke euch für eure Ausführungen!!:+1:

                      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

                      704

                      Online

                      32.5k

                      Benutzer

                      81.7k

                      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