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 - Stromzähler nachbauen

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Grafana - Stromzähler nachbauen

    This topic has been deleted. Only users with topic management privileges can see it.
    • Meister Mopper
      Meister Mopper @Humidor last edited by

      @humidor

      Hier nutze ich meine Smartmeter-Daten, die kommen fortlaufend von meinem Stromzähler.

      87234478-4a4a-48ba-8ad2-df50c3629b99-grafik.png

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

        @meister-mopper welcher Wert kommt da ins Grafana, der pos. Watt-Wert?

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

          @humidor sagte in Grafana - Stromzähler nachbauen:

          @meister-mopper welcher Wert kommt da ins Grafana, der pos. Watt-Wert?

          Jap

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

            @meister-mopper kannst mir bitte den code einstellen, sonst müsste ich ihne mühsam abtipseln 🙂

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

              @humidor

              Hier das json zum importieren, da sind dann auch alle Formatierungen und overrides mit drin:

              {
               "datasource": {
                 "type": "influxdb",
                 "uid": "000000001"
               },
               "description": "",
               "fieldConfig": {
                 "defaults": {
                   "custom": {
                     "lineWidth": 1,
                     "fillOpacity": 80,
                     "gradientMode": "none",
                     "axisPlacement": "auto",
                     "axisLabel": "",
                     "axisColorMode": "text",
                     "axisBorderShow": false,
                     "scaleDistribution": {
                       "type": "linear"
                     },
                     "axisCenteredZero": false,
                     "hideFrom": {
                       "tooltip": false,
                       "viz": false,
                       "legend": false
                     },
                     "thresholdsStyle": {
                       "mode": "off"
                     }
                   },
                   "color": {
                     "mode": "fixed",
                     "fixedColor": "red"
                   },
                   "mappings": [],
                   "thresholds": {
                     "mode": "absolute",
                     "steps": [
                       {
                         "color": "green",
                         "value": null
                       },
                       {
                         "color": "red",
                         "value": 80
                       }
                     ]
                   },
                   "links": [],
                   "min": 0,
                   "unit": "kwatth"
                 },
                 "overrides": [
                   {
                     "matcher": {
                       "id": "byName",
                       "options": "Time"
                     },
                     "properties": [
                       {
                         "id": "unit",
                         "value": "time: D dd"
                       }
                     ]
                   }
                 ]
               },
               "gridPos": {
                 "h": 7,
                 "w": 12,
                 "x": 12,
                 "y": 27
               },
               "hideTimeOverride": true,
               "id": 98,
               "interval": "1d",
               "options": {
                 "orientation": "auto",
                 "xTickLabelRotation": -90,
                 "xTickLabelSpacing": 0,
                 "showValue": "always",
                 "stacking": "none",
                 "groupWidth": 0.7,
                 "barWidth": 0.7,
                 "barRadius": 0,
                 "fullHighlight": false,
                 "tooltip": {
                   "mode": "single",
                   "sort": "none"
                 },
                 "legend": {
                   "showLegend": false,
                   "displayMode": "list",
                   "placement": "bottom",
                   "calcs": []
                 }
               },
               "pluginVersion": "8.5.1",
               "targets": [
                 {
                   "datasource": {
                     "type": "influxdb",
                     "uid": "000000001"
                   },
                   "groupBy": [
                     {
                       "params": [
                         "$__interval"
                       ],
                       "type": "time"
                     },
                     {
                       "params": [
                         "null"
                       ],
                       "type": "fill"
                     }
                   ],
                   "measurement": "0_userdata.0.Energie.PV.Netzbezug",
                   "orderByTime": "ASC",
                   "policy": "default",
                   "query": "import \"timezone\"\r\noption location = timezone.location(name: \"Europe/Berlin\")\r\n\r\nfrom(bucket: \"iobroker\")\r\n  |> range(start: -1mo, stop: v.timeRangeStop)\r\n  |> filter(fn: (r) => r[\"_measurement\"] == \"smartmeter.0.1-0:1_8_0__255.value\" and r[\"_field\"] == \"value\")\r\n  |> difference()\r\n  |> aggregateWindow(every: 1d, fn: sum, timeSrc: \"_start\")",
                   "refId": "A",
                   "resultFormat": "time_series",
                   "select": [
                     [
                       {
                         "params": [
                           "value"
                         ],
                         "type": "field"
                       },
                       {
                         "params": [],
                         "type": "max"
                       }
                     ]
                   ],
                   "tags": []
                 },
                 {
                   "alias": "Direct self-use",
                   "datasource": {
                     "type": "influxdb",
                     "uid": "000000001"
                   },
                   "groupBy": [
                     {
                       "params": [
                         "$__interval"
                       ],
                       "type": "time"
                     },
                     {
                       "params": [
                         "null"
                       ],
                       "type": "fill"
                     }
                   ],
                   "hide": false,
                   "measurement": "kWh",
                   "orderByTime": "ASC",
                   "policy": "default",
                   "refId": "B",
                   "resultFormat": "time_series",
                   "select": [
                     [
                       {
                         "params": [
                           "value"
                         ],
                         "type": "field"
                       },
                       {
                         "params": [],
                         "type": "max"
                       }
                     ]
                   ],
                   "tags": [
                     {
                       "key": "entity_id",
                       "operator": "=",
                       "value": "selfuse_energy_daily"
                     }
                   ]
                 }
               ],
               "timeFrom": "1h",
               "title": "Tagesbezug (Monat)",
               "type": "barchart"
              }
              

              Hier influx

              import "timezone"
              option location = timezone.location(name: "Europe/Berlin")
              
              from(bucket: "iobroker")
                |> range(start: -1mo, stop: v.timeRangeStop)
                |> 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")
              
              Humidor 1 Reply Last reply Reply Quote 1
              • Humidor
                Humidor @Meister Mopper last edited by

                @meister-mopper sagte in Grafana - Stromzähler nachbauen:

                |> difference() |> aggregateWindow(every: 1d, fn: sum, timeSrc: "_start")

                OK, das kapier ich noch nicht
                woher stammt der "Spoiler"? iobroker oder grafana?
                wenn ich deine Influx Text (geändert auf meine Werte) eingebe, kommt mal nix
                Bildschirmfoto 2024-10-14 um 16.56.15.png

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

                  @humidor sagte in Grafana - Stromzähler nachbauen:

                  woher stammt der "Spoiler"? iobroker oder grafana?

                  Das ist das json des dashboard von Grafana und kann in Grafana eingelesen werden.

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

                    @meister-mopper etwas weiter bin ich gekommen, habe dein dashboard eingelesen, darin ein panel geöffnet mit das query eingetragen
                    (ist das richtig ein Panel zu öffnen, das ist auf std. Einstellungen)

                    nun sehe ich diese Information
                    Bildschirmfoto 2024-10-15 um 06.32.50.png
                    Bildschirmfoto 2024-10-15 um 06.33.59.png
                    Bildschirmfoto 2024-10-15 um 06.36.51.png

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

                      Schau mal hier.

                      Damit habe ich es hinbekommen.

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

                        @meister-mopper super, danke, habs soweit kapiert

                        jetzt habe ich ein Problem mit den Daten
                        Alias - aus einem Mqtt Wert wird der aktuelle Wert (Leistung) entnommen
                        Alias - aus einem Mqtt Wert nur der Neg. Wert
                        Alias - aus einem Mqtt Wert nur der Pos. Wert

                        alle werden in die Influx eingetragen

                        wenn ich mir im ioBroker den Verlauf ansehe, sehe ich die jeweiligen Werte zBsp. bezogen auf 1 Tag

                        im Grafana mit der Summen Funktion, kommt dann irgendwas raus, auch Minuswerte??
                        Bildschirmfoto 2024-10-15 um 16.08.40.png

                        Bildschirmfoto 2024-10-15 um 16.08.22.png

                        Bildschirmfoto 2024-10-15 um 16.08.15.png

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

                          @humidor sagte in Grafana - Stromzähler nachbauen:

                          @meister-mopper super, danke, habs soweit kapiert

                          jetzt habe ich ein Problem mit den Daten
                          Alias - aus einem Mqtt Wert wird der aktuelle Wert (Leistung) entnommen
                          Alias - aus einem Mqtt Wert nur der Neg. Wert
                          Alias - aus einem Mqtt Wert nur der Pos. Wert

                          alle werden in die Influx eingetragen

                          wenn ich mir im ioBroker den Verlauf ansehe, sehe ich die jeweiligen Werte zBsp. bezogen auf 1 Tag

                          im Grafana mit der Summen Funktion, kommt dann irgendwas raus, auch Minuswerte??
                          Bildschirmfoto 2024-10-15 um 16.08.40.png

                          Bildschirmfoto 2024-10-15 um 16.08.22.png

                          Bildschirmfoto 2024-10-15 um 16.08.15.png

                          Tatsächlich kann ich nicht nachvollziehen, was du hier sagen möchtest. Meinst mit negativen Werten die Einspeisung?

                          Ich rechne alle Negativdaten in positive Werte um. Mit diesen Daten arbeite ich in Grafana,

                          b2198f49-ea63-41fa-b40d-5972b22a8990-grafik.png

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

                            @meister-mopper mache ich genauso, dh die neg. Werte werden in pos. Werte umgerechnet, es geht mir um die Summen wieviel Bezug bzw. Lieferung stattgefunden hat.
                            Aus pos. Werte wird im Grafana ein Minuswert erzeugt, völliger quatsch. Aber wo liegt der Fehler?

                            du siehst am Graph vom ioBroker die pos. Werte, da müsste im Grafana dann die Summe berechnet werden. Soweit klar, raus kommt aber unsinnige Werte und auch Minus.

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

                              @humidor sagte in Grafana - Stromzähler nachbauen:

                              Aber wo liegt der Fehler?

                              Okay, das sind zwei verschiedene Ausgangslagen und ein Missverständnis.

                              Ich visualisiere bei dem täglichen Verbrauch im letzten Monat sowohl für den Tagesbezug als auch den Tagesverbrauch anwachsende Datenpunkte (Stromzähler und selbst berechneter Verbrauchszähler).

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

                                @meister-mopper hmm

                                range(start: -1mo, stop: v.timeRangeStop)
                                

                                das ist dann das -1mo, wie sage ich ihm von 0:00 - 23:59? also 1 Tag?
                                und das summiert wird, ist aber

                                difference()
                                  |> aggregateWindow(every: 1d, fn: sum, timeSrc: "_start")
                                

                                fn: sum oder nicht?
                                welche Rolle spielt das difference?

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

                                  hätte ev. jemand die richtigen Settings um die den Wert im Grafana zu summieren?

                                  mickemup 1 Reply Last reply Reply Quote 0
                                  • mickemup
                                    mickemup @Humidor last edited by

                                    @humidor
                                    Habe da einiges bei mir gemacht um solche Sachen darzustellen.
                                    Um dir helfen zu können, muss man aber wissen wie (und wie oft du dir Rohdaten loggst.)
                                    Sind es Leistungen oder Zählerstände?

                                    Wenn du Leistungen aufsummieren willst, kommt es darauf an, wie oft du die loggst

                                    difference()
                                      |> aggregateWindow(every: 1d, fn: sum, timeSrc: "_start")
                                    

                                    Das hier macht nur Sinn, wenn du "Zählerstände loggst....

                                    Humidor 1 Reply Last reply Reply Quote 0
                                    • Humidor
                                      Humidor @mickemup last edited by Humidor

                                      @mickemup danke dir!
                                      das sind Werte die per Mqtt einlese
                                      mW ist Mqtt Event gesteuert, dh keine fixe Abfragezeit, der Timestamp könnte da eine Auskunft geben

                                      mickemup 1 Reply Last reply Reply Quote 0
                                      • mickemup
                                        mickemup @Humidor last edited by mickemup

                                        @humidor
                                        OK das heisst es sind Leistungswerte?
                                        Um Energie zu erhalten, muss man das Integrieren.
                                        Das kann man "grob" im Grafana machen.

                                        Die saubere Lösung wurde aber schon hier beschrieben.

                                        @lesiflo hat das im Post von 13.Okt als Blockly aufgezeigt...

                                        Kannst du sagen wie oft die Werte in Influx geloggt werden und loggst du nur Veränderungen oder jeden mqtt Wert?
                                        evtl Printscrren?

                                        Humidor 1 Reply Last reply Reply Quote 0
                                        • Humidor
                                          Humidor @mickemup last edited by

                                          @mickemup Ja, momentane Leistungswerte
                                          das ist was ich aus dem System per Mqtt raus bekomme:
                                          Bildschirmfoto 2024-11-28 um 17.34.43.png
                                          die Werte kommen jede Sekunde

                                          gibt zwar auch die Möglichkeit per Modbus direkt auf den Zähler zu gehen, aber die Register scheinen nicht zu stimmen, da kommen oft utopische Werte rüber.

                                          mickemup 2 Replies Last reply Reply Quote 0
                                          • mickemup
                                            mickemup @Humidor last edited by mickemup

                                            @humidor

                                            Ok probier mal das:

                                            import "date"
                                            import "timezone"
                                            option location = timezone.location(name: "Europe/Madrid")
                                            
                                            from(bucket: "iobroker_YOURBUCKET")
                                              |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
                                              |> filter(fn: (r) => r["_measurement"] == "YOURdatapoint")
                                              |> filter(fn: (r) => r["_field"] == "value")
                                                |> aggregateWindow(every: 1m, fn: mean, timeSrc: "_start")
                                            |> aggregateWindow(every: 1h, fn: mean, timeSrc: "_start")
                                            |> aggregateWindow(every: 1d, fn: sum, timeSrc: "_start")
                                             
                                            

                                            aja und kommen die Daten immer oder nur bei Veränderung
                                            und loggst du immer oder nur bei Veränderung?

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            780
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

                                            5
                                            36
                                            1860
                                            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