NEWS
Gelöst - Grafana Strom Summen in Zusammenspiel mit PVAnlage
-
Hallo zusammen,
ich weiss, ein altes Thema, aber ich bekomme es leider nicht hin. Hab schon ein paar Tage gesucht aber nicht das Ultimative gefunden.
Vielleicht sind meine Daten auch ungeeignetRahmenbedingungen
Hier läuft eine PV Anlage, kein Speicher, Tages-Gesamterzeugung in IOBroker/Influx
Ich lese den Stromzähler mit dem Volkszähler aus und schieben einen Teil der Daten via json query nach IOBroker.
Ich war doof und habe die Zählerstände nicht gesammelt (weder Bezug noch Lieferung), aber die historischen Daten liegen in einer MySQL so das ich zu Not die als Datenquelle nehmen könnte
Nach IOBroker gehen Gesamt_Verbrauch, Solarerzeugung und Stromfluss (positv oder negativ), die Daten werden alle 2s gespeichert (nach Influx nur bei Änderung bzw alle 60s/300s)Die meisten Beispiele die ich gefunden habe (z.B. https://www.smarthome-tricks.de/grafana/5-2-grafana-dashboard-fuer-den-stromzaehler/) ermitteln den Tages/ Wochen/ Monatswert über die Differenz des Zählerstandes im Zeitraum (die non_negative_difference Formel).
Ich habe aber dummerweise die Zählerstände vom Volkszähler nicht nach ioBroker geschoben und damit auch nicht nach Influx/Grafana.
Am Ende des Tages wären die Zählerstände aber auch ggf gar nicht korrekt, da dort der Eigenverbrauch ja verschwinden würde...Eigentlich bin ich also auf der Suche nach mehreren Grafana Abfragen -
-
Ich brauche den echten Verbrauch in einem Zeitraum (aktuell natürlich = Gesamt_Verbrauch), aber wie rechne ich da eine Summe über Zeitraum x aus wenn ich nicht weiss wieviele Datenpunkte ich am Ende habe?
-
Dann würde ich natürlich gerne wissen wieviel Solarstrom ich verbrauche bzw wieviel Kaufstrom, d.h. wie setzt sich der Gesamt_Verbrauch zusammen..
Das ist schon schwieriger, weil es ja Bedingungen enthält...
-Wenn SolarStrom >= Gesamt_Verbrauch dann alles Solar,
-wenn SolarStrom >0 & SolarStrom <GesamtVerbrauch dann Solaranteil entsprechend usw
-ggf auch statt dessen über den Stromfluss; wenn positiv wird Strom gekauft, wenn negativ geliefert.
Das kann sich ja dank Wolken etc ständig ändern, so das hier eine sehr grobe Summierung (1h, 1d) am Ende furchtbar ungenau wird, d.h. eigentlich muss man das in möglichst kleinen Scheiben rechnen und dann zu 1h/1d Werten aggregieren
Das Ganze sollte dann am Ende natürlich auf Stunden/Tage/Monats/Jahres Ebene aggregierbar sein
Idealerweise würde ich natürlich nicht bei 0 anfangen wollen, d.h. jetzt SourceAnalytix oder ein Skript zu nehmen wäre doof weil ich dann ja meine historischen Daten nicht nutzen kann, d.h. eine Grafana Lösung wäre schön...
Aber je mehr ich darüber nachdenken schwieriger erscheint es mir...Gibt es schon jemanden der in einer ähnlichen Konstellation eine Lösung mit Grafana gefunden hat?
Mit https://community.grafana.com/t/grafana-7-3-4-some-questions-visualizing-daily-usage-power-consumption/41194
kann ich zu mindestens Tagessummen ermitteln, z.B. den Tages-Gesamt-Verbrauch, aber mehr auch nicht...
Die Watt basierte Berechnung hier https://community.grafana.com/t/daily-power-consumption-from-watts/16196/31 habe ich nicht ans laufen bekommen -
-
Ich habe eine Lösung gefunden... ich erläutere sie hier, falls jemand ein ähnliches Problem hat oder zu mindestens Teile davon gebrauchen kann (export und reimport).
Ich habe es partout nicht hinbekommen, in Grafana die notwendige Aufteilung des Stromflusses in Lieferung & Bezug (negativ/positiv) durchzuführen, weder mit Transforms noch Expressions.
Daher habe ich dann einfach in meinem Javascript Adapter, der die Daten aus dem Volkszähler ausliest, eine Aufteilung eingebaut:
// aktueller_stromfluss aufteilen >0 Bezug, <0 Lieferung // Kann positiv sein - strombezug (= Gesamtbezug > Solarerzeugung) // Kann negativ sein - stromlieferung (= Solar > Gesamtbezug ) // Kann 0 sein - stromlieferung (= Solar = Gesamtbezug ) if (wert1 > 0 ) { wert1lief=0; wert1bezug=wert1; } else { if (wert1 < 0 ) { wert1lief=Math.abs(wert1) ; wert1bezug=0; } else // (wert1 == 0 ) { wert1lief=0 ; wert1bezug=0; } }
Damit werden jetzt 3 Werte nach Influx geschrieben - Stromfluss, Lieferung (absolut) und Bezug - das ermöglicht die Summierung neuer Daten.
Für die alten Daten habe ich dann die Stromflussdaten nach CSV exportiert
influx -username admin -password 'myPW' -database 'iobroker' -execute 'select * from "javascript.0.Volkszaehler.AKTUELLER_STROMFLUSS"' -format csv > stromfluss.csv
und diese Daten dann mit Hilfe eines kleinen Perlskripts (angehängtmod_csv.pl ) aufgeteilt und in ein importfähiges Format gebracht.
Dann mitinflux -username admin -password 'mypw' -database 'iobroker' -import -path=AKTUELLER_Bezug.csv
die beiden Dateien importieren und fertig.
Ich habe erst in ioBroker das Speichern der neuen Werte aktiviert und dann exportiert/importiert, damit waren die Measurements schon da (weil ich keine Ahnung habe ob der import Measurements anlegt oder nicht [oder ob man das überhaupt muss]).Zu guter Letzt habe ich dann einen Grafana Workspace angelegt der Gesamtverbrauch, Solarerzeugung und Lieferung/Bezug enthält und jeweils folgende Formel enthält
SELECT SUM("power"::float) / 60.0 FROM ( SELECT mean("value") AS power FROM "javascript.0.Volkszaehler.AKTUELLER_Bezug" WHERE $timeFilter GROUP BY time(1m) tz('Europe/Berlin') ) GROUP BY time(24h)
Über den unteren group by wird die Aggregation gesteuert, in diesem Fall Tageswerte, funktioniert aber auch mit Stunden (1h) oder Monatsähnlichen Werten (30d). Leider gehen 1mo/1y in der aktuellen Grafana/Infuxversion(1.8) nicht...
(Hier die flux version welche dann mit Monaten und Jahren umgehen kann... -> https://community.influxdata.com/t/multiple-aggregation-windows-for-power-aggregation/25292)