Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Off Topic
    4. Grafana
    5. Grafana Stromauswertung Wochen und Monatsverbrauch

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Grafana Stromauswertung Wochen und Monatsverbrauch

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

      Hallo zusammen.
      Ich würde mit gerne auch ein Grafana Dashboard bauen und habe dazu schon viele Anleitungen gelesen.
      Sehr gut finde ich die Anleitung von EddyD's SmartHome.

      Leider rechnet er bei mir irgendwie nie das Datum korrekt und auch der Verbrauch kann nicht stimmen:

      import "timezone"
      option location = timezone.location(name: "Europe/Berlin")
      
      data = from(bucket: "iobroker")
        |> range(start: -30d )
        |> filter(fn: (r) 
        => r["_measurement"] == "Strom-SH-Wolf-Heizung")
        |> filter(fn: (r) => r["_field"] == "value")
        min = data
        |> min ()
        |> set(key:"_field", value: "data")
        max = data
        |> max ()
        |> set(key:"_field", value: "data")
        union(tables: [min, max])
        |> difference()
      

      Wenn ich -30d einstelle, müsste er doch von heute 30 Tage zurück gehen.
      Im Table View zeigt er mir an: 2023-01-20 06:31:19

      bei -20d = 2023-01-20 06:31:19
      bei -10d = 2023-01-27 06:28:17
      bei -5d = 2023-01-30 06:25:01

      Was mache ich falsch?

      lg
      Bit

      Meister Mopper 1 Reply Last reply Reply Quote 0
      • Meister Mopper
        Meister Mopper @bitwicht last edited by Meister Mopper

        @bitwicht

        Bei mir Stromkosten pro Woche

        import "timezone"
        option location = timezone.location(name: "Europe/Berlin")
        
        from(bucket: "iobroker")
          |> range(start: -1w)
          |> filter(fn: (r) => r["_measurement"] == "smartmeter.0.1-0:1_8_0__255.value" and r["_field"] == "value")
          |> difference()
          |> aggregateWindow(every: 1d, fn: sum, timeSrc: "_start")
          |> map(fn: (r) => ({r with _cost: float(v: r._value) * 0.42}))
        

        Pro Monat:

        import "timezone"
        option location = timezone.location(name: "Europe/Berlin")
        
        from(bucket: "iobroker")
          |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
          |> filter(fn: (r) => r["_measurement"] == "smartmeter.0.1-0:1_8_0__255.value" and r["_field"] == "value")
          |> difference()
          |> aggregateWindow(every: 1mo, fn: sum, timeSrc: "_start")
          |> map(fn: (r) => ({r with _cost: float(v: r._value) * 0.42}))
        

        122bd1e8-1e03-4d73-b08b-3b117421b074-grafik.png

        I NWH R 3 Replies Last reply Reply Quote 0
        • B
          bitwicht last edited by

          @Meister Mopper

          danke, ich habe den Fehler gefunden.

          ich schreibe vom shelly nur den aktuellen "watt" Wert weg und das kann nicht aggregiert werden.
          ich muss den "total" Wert wegschrieben ...

          S 1 Reply Last reply Reply Quote 0
          • S
            sargon33 @bitwicht last edited by

            Ich versuche auch gerade Wochen und Monatswerte meiner PV Erzeugung zu ermitteln. Ich habe einen Wechselrichter der mir den aktuellen Tagesertrag ausgibt den schreibe ich alle 30 Sekunden nach Influx. Ich habe keine Probleme die Tages oder auch den Ertrag von Gestern dazustellen aber wenn ich Wochenwerte ausgeben will scheitere ich. Mein Problem ist hier das ich eben nicht nur eine Wert pro Tag habe sondern alle 30 Sekunden den jeweils erhöhten Wert. Wie kann ich den jeweils höchsten Tageswert über eine Woche oder einen Monat aufsummieren?

            Hier mein aktuelle Querry:

            import "timezone"
            option location = timezone.location(name: "Europe/Berlin")
            
            from(bucket: "edomi")
              |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
              |> filter(fn: (r) =>
                r._measurement == "Außen.Balkon.Balkonsolar.TagesErtrag_aktuell"
              )
            |> aggregateWindow(every: 1w, fn: last,  offset: 4d, timeSrc: "_start")
            |> yield(name: "last") 
            
            Marc Berg 1 Reply Last reply Reply Quote 0
            • Marc Berg
              Marc Berg Most Active @sargon33 last edited by Marc Berg

              @sargon33 sagte in Grafana Stromauswertung Wochen und Monatsverbrauch:

              Wie kann ich den jeweils höchsten Tageswert über eine Woche oder einen Monat aufsummieren?

              Ins Unreine gesprochen: Du musst zuerst die maximalen Tageswerte ermitteln:

              |> aggregateWindow((every: 1d,fn:max,timeSrc: "_start",createEmpty:false))
              

              und danach nochmals die Summe aller Tageswerte berechnen:

              |> aggregateWindow((every: 1w,fn:sum,timeSrc: "_start",createEmpty:false))
              

              Der Range muss muss natürlich entsprechend des Auswertezeitraumes angepasst werden.

              S 1 Reply Last reply Reply Quote 0
              • S
                sargon33 @Marc Berg last edited by

                Hat super funktioniert Danke!

                1 Reply Last reply Reply Quote 0
                • I
                  innug @Meister Mopper last edited by

                  @meister-mopper

                  Ich wollte die Monatsauswertung in mein Dashboard einfügen bekomme aber eine Fehlermeldung.
                  Habe leider weig Plan von Grafana.
                  Was will das Grafana von mir ??? Kann mir bitte jemand helfen?

                  MfG innug

                  Inspect: Panel Title
                  1 queries with total query time of 0 ms
                  Data
                  Stats
                  JSON
                  Error
                  Query
                  error parsing query: found import, expected SELECT, DELETE, SHOW, CREATE, DROP, EXPLAIN, GRANT, REVOKE, ALTER, SET, KILL at line 1, char 1
                  Object
                  message:"InfluxDB Error: error parsing query: found import, expected SELECT, DELETE, SHOW, CREATE, DROP, EXPLAIN, GRANT, REVOKE, ALTER, SET, KILL at line 1, char 1"
                  data:Object
                  error:"error parsing query: found import, expected SELECT, DELETE, SHOW, CREATE, DROP, EXPLAIN, GRANT, REVOKE, ALTER, SET, KILL at line 1, char 1"
                  message:"error parsing query: found import, expected SELECT, DELETE, SHOW, CREATE, DROP, EXPLAIN, GRANT, REVOKE, ALTER, SET, KILL at line 1, char 1"
                  config:Object
                  method:"GET"
                  url:"api/datasources/proxy/uid/SLLck8kRk/query"
                  params:Object
                  data:null
                  precision:"ms"
                  inspect:Object
                  paramSerializer:serializeParams(e){…}
                  headers:Object
                  retry:0
                  hideFromInspector:false

                  Marc Berg 1 Reply Last reply Reply Quote 0
                  • Marc Berg
                    Marc Berg Most Active @innug last edited by

                    @innug sagte in Grafana Stromauswertung Wochen und Monatsverbrauch:

                    @meister-mopper

                    Ich wollte die Monatsauswertung in mein Dashboard einfügen bekomme aber eine Fehlermeldung.
                    Habe leider weig Plan von Grafana.
                    Was will das Grafana von mir ??? Kann mir bitte jemand helfen?

                    Du hast eine InfluxDB 1.x, die mit der "Sprache" InfluxQL angesprochen werden möchte. Die Queries in diesem Thread sind allerding in Flux formuliert, was die Standardsprache einer InfluxDB 2.x ist.

                    I 1 Reply Last reply Reply Quote 0
                    • I
                      innug @Marc Berg last edited by

                      @marc-berg said in Grafana Stromauswertung Wochen und Monatsverbrauch:

                      Du hast eine InfluxDB 1.x, die mit der "Sprache" InfluxQL angesprochen werden möchte. Die Queries in diesem Thread sind allerding in Flux formuliert, was die Standardsprache einer InfluxDB 2.x ist.

                      Aha gut zu wissen. Gibt es so eine Auswertung auch noch für die InfluxDB 1.x ?
                      Oder kann man das irgedwie umprogrammieren? Kann mir da jemand helfen?
                      Fragen über Fragen ...

                      MfG innug

                      R 1 Reply Last reply Reply Quote 0
                      • R
                        Rumpeltec @innug last edited by

                        @innug

                        Du kannst "Flux" auch in DB Version 1.x aktivieren und nutzen. Funktioniert problemlos.

                        https://docs.influxdata.com/influxdb/v1.7/flux/installation/

                        Falls es dir vielleicht weiterhilft, installiere die doch den "Sourceanalytix Adapter" im Iob.
                        Ich logge da ebenfalls nur die Watt Werte und SA macht daraus Tages-, Wochen-, Monats- und Jahreswerte. Diese wandern dann in die InfluxDB und werden durch Grafana optisch einwandfrei dargestellt.

                        z.B hier bereits in der VIS über ein iframe

                        Screenshot 2023-05-08 071343.png

                        I 1 Reply Last reply Reply Quote 0
                        • I
                          innug @Rumpeltec last edited by

                          @rumpeltec said in Grafana Stromauswertung Wochen und Monatsverbrauch:

                          @innug

                          Du kannst "Flux" auch in DB Version 1.x aktivieren und nutzen. Funktioniert problemlos.

                          https://docs.influxdata.com/influxdb/v1.7/flux/installation/

                          Falls es dir vielleicht weiterhilft, installiere die doch den "Sourceanalytix Adapter" im Iob.
                          Ich logge da ebenfalls nur die Watt Werte und SA macht daraus Tages-, Wochen-, Monats- und Jahreswerte. Diese wandern dann in die InfluxDB und werden durch Grafana optisch einwandfrei dargestellt.

                          z.B hier bereits in der VIS über ein iframe

                          Also ich habe keinen Zugriff auf influxdb.conf. Keine Ahnung wie ich da dran kommen soll. IOBroker läuft ja im Docker bei mir.

                          Und den Sourceanalytix Adapter finde ich auch nicht.

                          Kann man nicht irgendwie diese 2.x Abfrage umschreiben das sie mit 1.x funktioniert?
                          Gibt es da vielleicht einen Converter für?

                          MfG innug

                          1 Reply Last reply Reply Quote 0
                          • NWH
                            NWH @Meister Mopper last edited by

                            @meister-mopper
                            Servus
                            Wäre es eventuell möglich die Overrides und die Einstellungen dazu einzublenden bwz. hier zu posten?
                            Irgendwie bekomme ich das leider nicht so hin, warum auch immer🙁
                            Das wäre echt super.

                            Dann hätte ich eine grundsätzliche Frage zum loggen der Datenpunkte.
                            Ist es sinnvoller DP zu loggen, die momentan erzeugt werden(zB. momentan produzierte PV Leistung) oder die Tagesendsumme des DP?
                            So wie ich das verstehe macht das für Grafana einen Unterschied.
                            Oder liege ich da falsch.

                            Meister Mopper 1 Reply Last reply Reply Quote 0
                            • Meister Mopper
                              Meister Mopper @NWH last edited by

                              @nwh sagte in Grafana Stromauswertung Wochen und Monatsverbrauch:

                              Wäre es eventuell möglich die Overrides und die Einstellungen dazu einzublenden bwz. hier zu posten?

                              Das würde aufgrund der Masse an Bildern den Rahmen des Forums sprengen. Die Lösung wird hier gezeigt.

                              @nwh sagte in Grafana Stromauswertung Wochen und Monatsverbrauch:

                              Ist es sinnvoller DP zu loggen, die momentan erzeugt werden(zB. momentan produzierte PV Leistung) oder die Tagesendsumme des DP?

                              Ich nutze beides PV => Tageswert und Hauslast => Differenzwert eines hoch zählenden Datenpunktes.

                              Man kann beides je nach gusto nutzen.

                              NWH 1 Reply Last reply Reply Quote 0
                              • NWH
                                NWH @Meister Mopper last edited by

                                @meister-mopper
                                Das nehme ich zur Hilfe, allerdings komme ich nicht ganz klar damit, dass es so aussieht wie bei Dir.

                                Das heißt also wenn ich einen hoch zählenden Datenpunkt nehme muss ich dann erst die Summe der Woche und danach die Summe des Monat bilden, den sonst bekomme ich nie richtige Werte ist das Richtig?

                                Meister Mopper 1 Reply Last reply Reply Quote 0
                                • Meister Mopper
                                  Meister Mopper @NWH last edited by Meister Mopper

                                  @nwh sagte in Grafana Stromauswertung Wochen und Monatsverbrauch:

                                  Das heißt also wenn ich einen hoch zählenden Datenpunkt nehme muss ich dann erst die Summe der Woche und danach die Summe des Monat bilden, den sonst bekomme ich nie richtige Werte ist das Richtig?

                                  Da braucht es keine Summen, hier der tägliche Wert eines hochzählenden Datenpunktes

                                  import "timezone"
                                  option location = timezone.location(name: "Europe/Berlin")
                                  
                                  from(bucket: "iobroker")
                                    |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
                                    |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Energie.PV.Tagesverbrauch" and r["_field"] == "value")
                                    |> difference()
                                    |> aggregateWindow(every: 1d, fn: sum, timeSrc: "_start")
                                  

                                  Da kannst du natürlich auch den Wert eines Monats anzeigen lassen.

                                  NWH 1 Reply Last reply Reply Quote 0
                                  • NWH
                                    NWH @Meister Mopper last edited by

                                    @meister-mopper
                                    Ginge das auch mit dem DP der PV der den gerade aktuellen produzierten Wert angibt?

                                    Wenn ich zB. die Regenmenge logge welchen Punkt nehme ich da am besten.
                                    Regenmenge heute oder Regenmenge Gesamt.

                                    Was mir noch nicht ganz klar ist der unterschied von "last" uns "sum" da kommen beim gleich DP unterschiedliche Werte heraus. 🙄

                                    Meister Mopper 1 Reply Last reply Reply Quote 0
                                    • Meister Mopper
                                      Meister Mopper @NWH last edited by

                                      @nwh

                                      Last meint den letzten Wert des Tages, wogegen sum die Tagessumme meint.

                                      NWH 1 Reply Last reply Reply Quote 0
                                      • NWH
                                        NWH @Meister Mopper last edited by

                                        @meister-mopper und ich kann mir beiden Werten lat und sum eine Wochen- und Monatsberechnung machen? Da kommen aber je andere Werte heraus. WEnn ich dein Beispiel nehme wäre ds "sum" wenn ich hier 1mo schreibe ist das dann der gleiche Wert wie wenn hier stehen würde last?

                                        NWH 1 Reply Last reply Reply Quote 0
                                        • NWH
                                          NWH @NWH last edited by

                                          @Meister-Mopper
                                          So habe ich es jetzt geschafft.
                                          DP ist aktuelle Power der Steckdose.
                                          Ich zeige die 5 Monate mit dem höchsten Verbrauch an.

                                          Das Datum und die Kosten schaffe ich nicht so darzustellen wie du es gemacht hast.
                                          Bei den Kosten steht bei mir ein "k" dahinter keine Ahnung woher od. warum.
                                          Was ich noch gerne hätte unten TOTAL zu ergänzen.

                                          5c8f31a0-5242-44da-8f04-fb8694e69f01-image.png

                                          Das wäre der Code dazu.

                                          import "timezone"
                                          option location = timezone.location(name: "Europe/Berlin")
                                           
                                          from(bucket: "iobroker")
                                            |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
                                            |> filter(fn: (r) => r["_measurement"] == "StromWM" and r["_field"] == "value")
                                            |> difference()
                                            |> aggregateWindow(every: 1d, fn:max, timeSrc: "_start", createEmpty:false)
                                            |> aggregateWindow(every: 1w, fn:sum, timeSrc: "_start", createEmpty:false)
                                            |> aggregateWindow(every: 1mo, fn:sum, timeSrc: "_start", createEmpty:false)
                                            |> map(fn: (r) => ({r with _cost: float(v: r._value) * 0.42}))
                                            |> top(n: 5, columns: ["_value"])
                                          

                                          Kannst du mir hier even. noch helfen?

                                          Meister Mopper 1 Reply Last reply Reply Quote 0
                                          • Meister Mopper
                                            Meister Mopper @NWH last edited by

                                            @nwh

                                            Darstellungen werden in overrides geändert. Musst mal dort gucken.

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            942
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

                                            14
                                            50
                                            9191
                                            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