Doku: Rollup-Job mit Pfad und Betriebsarten nachgetragen

Liegt in ~/Backup-scripts/solarlog-rollup.sh. Dazu die Eigenschaften der
Rohdaten, die man beim Rechnen kennen muss (Momentanleistungen, gemischte
Einheiten und Vorzeichen).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-21 08:03:45 +02:00
co-authored by Claude Opus 5
parent 93ec545aaa
commit 132d8916b1
+26 -1
View File
@@ -134,6 +134,31 @@ Wichtig beim Auswerten:
Verbindung zur OpenDTU verliert: Senken sind dann vollständig gemessen, die
Erzeugung nicht — ohne die Korrektur wird der Direktverbrauch negativ.
### Der Rollup-Job
`~/Backup-scripts/solarlog-rollup.sh` (Schema dazu:
`solarlog-rollup.sql`) hat drei Betriebsarten:
| Aufruf | Was er tut |
|---|---|
| `fill [--from … --to …]` | Stunden- und Tageswerte fortschreiben. Idempotent (`INSERT … ON DUPLICATE KEY UPDATE`), darf jederzeit wiederholt werden |
| `thin [--dry-run] [--months 12]` | Rohdaten älter als zwölf Monate ausdünnen — **nur**, wenn für den Monat ein Aggregat vorliegt. Vorher wird der betroffene Zeitraum monatsweise nach `/volume1/docker/solarLog_history` weggesichert |
| `status` | zeigt, bis wohin aggregiert und ab wann ausgedünnt ist |
Ausgedünnt werden `EnergyFlow`, `Heater` und `weatherStation`; das Zielraster
beträgt 15 Minuten. Was man beim Rechnen auf den Rohdaten wissen muss, steht
ausführlich im Kopf der SQL-Datei — die wichtigsten Punkte:
* **Alles sind Momentanleistungen**, gemittelt über rund fünf Minuten. kWh
entstehen nur durch Integration über die Zeit, nie durch Mittelwerte über
Zeilen.
* **Die Einheiten sind gemischt:** die Wallbox-Spalten liefern Kilowatt, alle
übrigen Leistungsspalten Watt.
* **Die Vorzeichen sind es auch:** `totalConsumption` negativ = Hausverbrauch,
`battP` negativ = Laden, und `PL*_OG` kommt negativ, während `PL*_EG` und
`PL*_UG` positiv sind.
* Messlücken über 15 Minuten zählen nicht als durchgehende Leistung.
Die Preistabellen tragen **einen Stichtag und kein Enddatum**; das Ende holt
sich die Auswertung mit `LEAD()` beim nächsten Eintrag. Weil ein Stichtag ein
Datum ist, kann ein Tag nie zwei Tarife haben — die Verdichtung auf Tage
@@ -166,7 +191,7 @@ Oberfläche Geräte über den Server statt direkt.
| Aufgabe | Wer | Takt |
|---|---|---|
| Rohdaten ausdünnen, Stundenarchiv und Tageswerte fortschreiben | Rollup-Job auf der NAS (`solarlog-rollup.sh`) | nachts |
| Rohdaten ausdünnen, Stundenarchiv und Tageswerte fortschreiben | `~/Backup-scripts/solarlog-rollup.sh` (läuft als root im MariaDB-Container) | nachts |
| `automation_log` aufräumen | Runner selbst | täglich, 30 Tage Aufbewahrung |
| `calendar_days` füllen | `fetch_calendar.py` | jährlich per Cron |
| Datenbanksicherung | `backupDB.sh` | per Cron |