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. InfluxDB Daten aufarbeiten

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

InfluxDB Daten aufarbeiten

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
8 Beiträge 2 Kommentatoren 452 Aufrufe 2 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.
  • M Offline
    M Offline
    Mico
    schrieb am zuletzt editiert von
    #1

    Moin,

    Ich würde gerne meine gesammelten Raumwerte in Influx aufarbeiten und mittels Task in ein neues Bucket mit mehr Struktur überführen.

    Ich habe Sonoff Sensoren für die Temperatur und Luftfeuchte in den Räumen. die Werte werden in Influx gesammelt und in das Bucket iobroker übermittelt. Leider sind diese Datenströme nicht strukturiert. Mein Ziel ist es diese so aufzuarbeiten damit am ende es so aussieht raumwerte, zimmer , stube, temperatur oder luftfeuchtigkeit
    Ich habe nun dieses Skript das die gesammelten Werte in diesem fall der stube alle 60min ausgibt. um es dann in die neu zu bringende Struktur zu erfassen jeweils nach 24h. Leider ist da was falsch in den Zeilen "to" aber ich weiß nicht wirklich was. Wie müßte das richtig aussehen ?, damit ich dann auch alle anderen Räume darin speichern kann.

    from(bucket: "iobroker")
      |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
      |> filter(fn: (r) => r["_measurement"] == "zigbee.0.00124b00290fd3fb.humidity" or r["_measurement"] == "zigbee.0.00124b00290fd3fb.temperature")
      |> filter(fn: (r) => r["_field"] == "value")
      |> aggregateWindow(every: 60m, fn: mean, createEmpty: false)
      |> yield(name: "mean")
    
      |> to(
        bucket: "raumwerte",
        tagColumns: ["zimmer"],["stube"],
        fieldFn: (r) => ({ "temperatur": r._value, "humidity": r._value })
      )
    

    Gruß
    Mico

    Marc BergM 1 Antwort Letzte Antwort
    0
    • M Mico

      Moin,

      Ich würde gerne meine gesammelten Raumwerte in Influx aufarbeiten und mittels Task in ein neues Bucket mit mehr Struktur überführen.

      Ich habe Sonoff Sensoren für die Temperatur und Luftfeuchte in den Räumen. die Werte werden in Influx gesammelt und in das Bucket iobroker übermittelt. Leider sind diese Datenströme nicht strukturiert. Mein Ziel ist es diese so aufzuarbeiten damit am ende es so aussieht raumwerte, zimmer , stube, temperatur oder luftfeuchtigkeit
      Ich habe nun dieses Skript das die gesammelten Werte in diesem fall der stube alle 60min ausgibt. um es dann in die neu zu bringende Struktur zu erfassen jeweils nach 24h. Leider ist da was falsch in den Zeilen "to" aber ich weiß nicht wirklich was. Wie müßte das richtig aussehen ?, damit ich dann auch alle anderen Räume darin speichern kann.

      from(bucket: "iobroker")
        |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
        |> filter(fn: (r) => r["_measurement"] == "zigbee.0.00124b00290fd3fb.humidity" or r["_measurement"] == "zigbee.0.00124b00290fd3fb.temperature")
        |> filter(fn: (r) => r["_field"] == "value")
        |> aggregateWindow(every: 60m, fn: mean, createEmpty: false)
        |> yield(name: "mean")
      
        |> to(
          bucket: "raumwerte",
          tagColumns: ["zimmer"],["stube"],
          fieldFn: (r) => ({ "temperatur": r._value, "humidity": r._value })
        )
      

      Gruß
      Mico

      Marc BergM Offline
      Marc BergM Offline
      Marc Berg
      Most Active
      schrieb am zuletzt editiert von Marc Berg
      #2

      @mico
      Da fehlt neben der korrekten Aufbereitung auch das Ziel-Measurement. Bin nicht ganz sicher, ob das das Ziel ist, aber wenn du es so machst:

      from(bucket: "iobroker")
        |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
        |> filter(fn: (r) => r["_measurement"] == "zigbee.0.00124b00290fd3fb.humidity" or r["_measurement"] == "zigbee.0.00124b00290fd3fb.temperature")
        |> filter(fn: (r) => r["_field"] == "value")
        |> aggregateWindow(every: 60m, fn: mean, createEmpty: false)
        |> pivot(rowKey:["_time"], columnKey: ["_measurement"], valueColumn: "_value")
        |> map(fn: (r) => ({
            _time: r._time,
            _field: "value",
            _measurement: "raumwerte",
            temperatur: r["zigbee.0.00124b00290fd3fb.temperature"],
            humidity: r["zigbee.0.00124b00290fd3fb.humidity"],
            zimmer: "stube"
          }))
       |> to( bucket: "raumwerte", tagColumns: ["zimmer"], fieldFn: (r) => ({ temperatur: r.temperatur, humidity: r.humidity }) )
      

      Dann würden die zwei Measurements in eins mit dem "Zimmer"-Tag "Stube" überführt werden. Ob es jetzt sinnvoll ist, ein neues Bucket "raumwerte" zu erstellen oder einfach das neue Measurement "raumwerte" im Bucket "iobroker" zu erstellen, ist Ansichtssache.

      Grüße aus dem Zug nach Solingen. (dessen Halt in Solingen heute entfällt :face_with_rolling_eyes: )

      NUC10I3+Ubuntu+Docker+ioBroker+influxDB2+Node Red+EMQX+Grafana

      Pi-hole, Traefik, Checkmk, Conbee II+Zigbee2MQTT, ESPSomfy-RTS, LoRaWAN, Arduino, KiCad

      Benutzt das Voting im Beitrag, wenn er euch geholfen hat.

      M 1 Antwort Letzte Antwort
      0
      • Marc BergM Marc Berg

        @mico
        Da fehlt neben der korrekten Aufbereitung auch das Ziel-Measurement. Bin nicht ganz sicher, ob das das Ziel ist, aber wenn du es so machst:

        from(bucket: "iobroker")
          |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
          |> filter(fn: (r) => r["_measurement"] == "zigbee.0.00124b00290fd3fb.humidity" or r["_measurement"] == "zigbee.0.00124b00290fd3fb.temperature")
          |> filter(fn: (r) => r["_field"] == "value")
          |> aggregateWindow(every: 60m, fn: mean, createEmpty: false)
          |> pivot(rowKey:["_time"], columnKey: ["_measurement"], valueColumn: "_value")
          |> map(fn: (r) => ({
              _time: r._time,
              _field: "value",
              _measurement: "raumwerte",
              temperatur: r["zigbee.0.00124b00290fd3fb.temperature"],
              humidity: r["zigbee.0.00124b00290fd3fb.humidity"],
              zimmer: "stube"
            }))
         |> to( bucket: "raumwerte", tagColumns: ["zimmer"], fieldFn: (r) => ({ temperatur: r.temperatur, humidity: r.humidity }) )
        

        Dann würden die zwei Measurements in eins mit dem "Zimmer"-Tag "Stube" überführt werden. Ob es jetzt sinnvoll ist, ein neues Bucket "raumwerte" zu erstellen oder einfach das neue Measurement "raumwerte" im Bucket "iobroker" zu erstellen, ist Ansichtssache.

        Grüße aus dem Zug nach Solingen. (dessen Halt in Solingen heute entfällt :face_with_rolling_eyes: )

        M Offline
        M Offline
        Mico
        schrieb am zuletzt editiert von
        #3

        Danke für deine schnelle Antwort leider meldet er ein invalid script.

        Ich weiß noch nicht warum deswegen habe ich ein Bild wo die werte stehen beigefügt und in welcher struktur sie stehen sollten.

        Da sind die Werte:
        Screenshot 2024-11-09 081240.png

        und so sollen sie hinterher in einem neuen bucket überführt werden.

        Screenshot 2024-11-09 082007.png

        Ein neues bucket damit ich die werte aus dem iobroker nach einer Zeit löschen kann.

        Gruß
        Mico

        Marc BergM 1 Antwort Letzte Antwort
        0
        • M Mico

          Danke für deine schnelle Antwort leider meldet er ein invalid script.

          Ich weiß noch nicht warum deswegen habe ich ein Bild wo die werte stehen beigefügt und in welcher struktur sie stehen sollten.

          Da sind die Werte:
          Screenshot 2024-11-09 081240.png

          und so sollen sie hinterher in einem neuen bucket überführt werden.

          Screenshot 2024-11-09 082007.png

          Ein neues bucket damit ich die werte aus dem iobroker nach einer Zeit löschen kann.

          Gruß
          Mico

          Marc BergM Offline
          Marc BergM Offline
          Marc Berg
          Most Active
          schrieb am zuletzt editiert von Marc Berg
          #4

          @mico sagte in InfluxDB Daten aufarbeiten:

          Danke für deine schnelle Antwort leider meldet er ein invalid script.

          Hmmm, bei mir läuft das. Führe mal nur die Query (ohne "to") aus und zeige mal das Ergebnis. Es wird ja immer ausgegeben, wo genau der Fehler liegt.

          EDIT: und ja, genau so wie du jetzt beschreibst würde es dann aussehen.

          NUC10I3+Ubuntu+Docker+ioBroker+influxDB2+Node Red+EMQX+Grafana

          Pi-hole, Traefik, Checkmk, Conbee II+Zigbee2MQTT, ESPSomfy-RTS, LoRaWAN, Arduino, KiCad

          Benutzt das Voting im Beitrag, wenn er euch geholfen hat.

          M 1 Antwort Letzte Antwort
          0
          • Marc BergM Marc Berg

            @mico sagte in InfluxDB Daten aufarbeiten:

            Danke für deine schnelle Antwort leider meldet er ein invalid script.

            Hmmm, bei mir läuft das. Führe mal nur die Query (ohne "to") aus und zeige mal das Ergebnis. Es wird ja immer ausgegeben, wo genau der Fehler liegt.

            EDIT: und ja, genau so wie du jetzt beschreibst würde es dann aussehen.

            M Offline
            M Offline
            Mico
            schrieb am zuletzt editiert von
            #5

            @marc-berg said in InfluxDB Daten aufarbeiten:

            Hmmm, bei mir läuft das. Führe mal nur die Query (ohne "to") aus und zeige mal das Ergebnis. Es wird ja immer ausgegeben, wo genau der Fehler liegt.

            EDIT: und ja, genau so wie du jetzt beschreibst würde es dann aussehen.

            Ich versuche das über Create Task ist das falsch?

            M 1 Antwort Letzte Antwort
            0
            • M Mico

              @marc-berg said in InfluxDB Daten aufarbeiten:

              Hmmm, bei mir läuft das. Führe mal nur die Query (ohne "to") aus und zeige mal das Ergebnis. Es wird ja immer ausgegeben, wo genau der Fehler liegt.

              EDIT: und ja, genau so wie du jetzt beschreibst würde es dann aussehen.

              Ich versuche das über Create Task ist das falsch?

              M Offline
              M Offline
              Mico
              schrieb am zuletzt editiert von
              #6

              So nun glaube ich das es geklappt hat ich habe die range verändert und es zeigte grün.

              Danke
              Mico

              Marc BergM 1 Antwort Letzte Antwort
              0
              • M Mico

                So nun glaube ich das es geklappt hat ich habe die range verändert und es zeigte grün.

                Danke
                Mico

                Marc BergM Offline
                Marc BergM Offline
                Marc Berg
                Most Active
                schrieb am zuletzt editiert von
                #7

                @mico sagte in InfluxDB Daten aufarbeiten:

                So nun glaube ich das es geklappt hat ich habe die range verändert und es zeigte grün.

                Ja, die „v.“ Variablen funktionieren im Task nicht.

                NUC10I3+Ubuntu+Docker+ioBroker+influxDB2+Node Red+EMQX+Grafana

                Pi-hole, Traefik, Checkmk, Conbee II+Zigbee2MQTT, ESPSomfy-RTS, LoRaWAN, Arduino, KiCad

                Benutzt das Voting im Beitrag, wenn er euch geholfen hat.

                M 1 Antwort Letzte Antwort
                0
                • Marc BergM Marc Berg

                  @mico sagte in InfluxDB Daten aufarbeiten:

                  So nun glaube ich das es geklappt hat ich habe die range verändert und es zeigte grün.

                  Ja, die „v.“ Variablen funktionieren im Task nicht.

                  M Offline
                  M Offline
                  Mico
                  schrieb am zuletzt editiert von
                  #8

                  Eine Frage noch zur besseren Ordnung der Task
                  jetzt habe ich jeden Raum mit einer Task Run für 0:00 gespeichert ist es auch möglich die Räume in einem Task zu speichern.

                  Ich habe mal das Script für 2 Räume so wie es im Moment bei mir ist.

                  option task = {name: "arbeitszimmerwerte", cron: "0 0 * * *"}
                  
                  from(bucket: "iobroker")
                      |> range(start: -24h)
                      |> filter(
                          fn: (r) =>
                              r["_measurement"] == "zigbee.0.00124b002fabe53f.humidity" or r["_measurement"]
                                  ==
                                  "zigbee.0.00124b002fabe53f.temperature",
                      )
                      |> filter(fn: (r) => r["_field"] == "value")
                      |> aggregateWindow(every: 60m, fn: mean, createEmpty: false)
                      |> pivot(rowKey: ["_time"], columnKey: ["_measurement"], valueColumn: "_value")
                      |> map(
                          fn: (r) =>
                              ({
                                  _time: r._time,
                                  _field: "value",
                                  _measurement: "raumwerte",
                                  temperatur: r["zigbee.0.00124b002fabe53f.temperature"],
                                  humidity: r["zigbee.0.00124b002fabe53f.humidity"],
                                  zimmer: "arbeitszimmer",
                              }),
                      )
                      |> to(
                          bucket: "raumwerte",
                          tagColumns: ["zimmer"],
                          fieldFn: (r) => ({temperatur: r.temperatur, humidity: r.humidity}),
                      )
                  
                  
                  option task = {name: "badwerte", cron: "0 0 * * *"}
                  
                  from(bucket: "iobroker")
                      |> range(start: -24h)
                      |> filter(
                          fn: (r) =>
                              r["_measurement"] == "zigbee.0.00124b002fabe555.humidity" or r["_measurement"]
                                  ==
                                  "zigbee.0.00124b002fabe555.temperature",
                      )
                      |> filter(fn: (r) => r["_field"] == "value")
                      |> aggregateWindow(every: 60m, fn: mean, createEmpty: false)
                      |> pivot(rowKey: ["_time"], columnKey: ["_measurement"], valueColumn: "_value")
                      |> map(
                          fn: (r) =>
                              ({
                                  _time: r._time,
                                  _field: "value",
                                  _measurement: "raumwerte",
                                  temperatur: r["zigbee.0.00124b002fabe555.temperature"],
                                  humidity: r["zigbee.0.00124b002fabe555.humidity"],
                                  zimmer: "badwerte",
                              }),
                      )
                      |> to(
                          bucket: "raumwerte",
                          tagColumns: ["zimmer"],
                          fieldFn: (r) => ({temperatur: r.temperatur, humidity: r.humidity}),
                      )
                  
                  

                  Gruß
                  Mico

                  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

                  808

                  Online

                  32.6k

                  Benutzer

                  82.2k

                  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