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

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.5k

InfluxDB Daten aufarbeiten

Scheduled Pinned Locked Moved Skripten / Logik
8 Posts 2 Posters 453 Views 2 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.
  • M Offline
    M Offline
    Mico
    wrote on last edited by
    #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 Reply Last reply
    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
      wrote on last edited by 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 Reply Last reply
      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
        wrote on last edited by
        #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 Reply Last reply
        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
          wrote on last edited by 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 Reply Last reply
          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
            wrote on last edited by
            #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 Reply Last reply
            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
              wrote on last edited by
              #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 Reply Last reply
              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
                wrote on last edited by
                #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 Reply Last reply
                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
                  wrote on last edited by
                  #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 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

                  540

                  Online

                  32.7k

                  Users

                  82.4k

                  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