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 mit
influx -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)