From 132d8916b1fa1ae7ebc20ff010f44639f7149ffe Mon Sep 17 00:00:00 2001 From: "m0@nas" Date: Mon, 21 Sep 2026 08:03:45 +0200 Subject: [PATCH] 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 --- doku/datenbank.md | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/doku/datenbank.md b/doku/datenbank.md index 7d33d17..f858e5d 100644 --- a/doku/datenbank.md +++ b/doku/datenbank.md @@ -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 |