Tabellen byd und byd_zellen fuer den BYD-Speicher

Verlauf aus gatherBYDData.py (SolarManager): alle 5 Minuten Kennwerte,
alle 15 Minuten alle Zellspannungen und Temperaturen als JSON.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-15 16:16:08 +02:00
co-authored by Claude Opus 5
parent fcd0b92785
commit 5ed3a0796e
2 changed files with 52 additions and 0 deletions
+1
View File
@@ -468,6 +468,7 @@ erDiagram
| `Heater`, `puffertemp`, `wasser`, `zisterne`, `windrad`, `kiga_windrad` | Heizung, Speicher, Wasser, Windrad | `solarManager.py` | | `Heater`, `puffertemp`, `wasser`, `zisterne`, `windrad`, `kiga_windrad` | Heizung, Speicher, Wasser, Windrad | `solarManager.py` |
| `skoda`, `skoda_raw` | Fahrzeugzustand im Verlauf | `gatherSkodaData.py` | | `skoda`, `skoda_raw` | Fahrzeugzustand im Verlauf | `gatherSkodaData.py` |
| `skoda_ladepunkte` | Wallbox-Verlauf während einer Ladung, im Minutentakt, wird nicht ausgedünnt (`solarLog_skoda_ladepunkte.sql`) | `gatherSkodaData.py`; ältere Ladungen `skoda_ladepunkte_nachtragen.py` | | `skoda_ladepunkte` | Wallbox-Verlauf während einer Ladung, im Minutentakt, wird nicht ausgedünnt (`solarLog_skoda_ladepunkte.sql`) | `gatherSkodaData.py`; ältere Ladungen `skoda_ladepunkte_nachtragen.py` |
| `byd`, `byd_zellen` | BYD-Speicher direkt aus der BMU: Ladestand, SOH, Temperaturen, Spreizung, Zähler alle 5 Minuten; alle 128 Zellspannungen und 64 Temperaturen alle 15 Minuten (`solarLog_byd.sql`) | `gatherBYDData.py` |
| `weatherStation`, `weatherHours`, `weatherDays`, `daylight`, `simPower` | Wetter, Sonnenzeiten, Ertragsprognose | Wetterbrücke, Open-Meteo, Prognose | | `weatherStation`, `weatherHours`, `weatherDays`, `daylight`, `simPower` | Wetter, Sonnenzeiten, Ertragsprognose | Wetterbrücke, Open-Meteo, Prognose |
| `gridCosts`, `gasCosts`, `fuelCosts` | Preiszeitreihen (Stichtag, kein Enddatum) | Einstellungsseite (`costs.php`) | | `gridCosts`, `gasCosts`, `fuelCosts` | Preiszeitreihen (Stichtag, kein Enddatum) | Einstellungsseite (`costs.php`) |
+51
View File
@@ -0,0 +1,51 @@
-- Verlauf der BYD Battery-Box HVM, direkt aus der BMU.
--
-- EnergyFlow haelt vom Speicher nur, was der Gen24 weiss: Ladestand, Leistung,
-- Spannung, Strom. Die Werte darunter - Zellen, Temperaturfuehler, Gesundheit,
-- Gesamtzaehler - liest gatherBYDData.py (SolarManager) von der BMU unter
-- 192.168.16.254:8080 und schreibt sie hier fest.
--
-- byd: alle 5 Minuten eine Zeile, knapp 290 am Tag. Traegt, wie sich SOH,
-- Spreizung und Temperaturen ueber Monate und Jahre entwickeln - deshalb wird
-- die Tabelle nicht ausgeduennt.
--
-- byd_zellen: alle 15 Minuten alle 128 Zellspannungen und 64 Temperaturen als
-- JSON, rund 1 kB je Zeile, knapp 35 MB im Jahr. Einzelne Spalten je Zelle
-- waeren 192 Spalten fuer Werte, die nie einzeln abgefragt, sondern immer als
-- Satz gezeichnet werden.
--
-- Zellen sind durchgezaehlt: Modul m (1..8) hat die Zellen 16*(m-1)+1 bis
-- 16*m und die Fuehler 8*(m-1)+1 bis 8*m.
CREATE TABLE IF NOT EXISTS `byd` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`datetime` datetime NOT NULL COMMENT 'Ortszeit',
`soc` decimal(4,1) NOT NULL COMMENT '% laut BMU',
`soh` decimal(4,1) NOT NULL COMMENT 'Gesundheit in %',
`spannung` decimal(5,1) NOT NULL COMMENT 'V am Batterieausgang',
`strom` decimal(5,1) NOT NULL COMMENT 'A, positiv = laden',
`leistung` int(11) NOT NULL COMMENT 'W, positiv = laden',
`t_min` tinyint(4) NOT NULL COMMENT 'kaeltester Fuehler, degC',
`t_max` tinyint(4) NOT NULL COMMENT 'waermster Fuehler, degC',
`zelle_min` smallint(5) unsigned NOT NULL COMMENT 'niedrigste Zelle, mV',
`zelle_max` smallint(5) unsigned NOT NULL COMMENT 'hoechste Zelle, mV',
`zelle_min_nr` tinyint(3) unsigned NOT NULL COMMENT '1..128',
`zelle_max_nr` tinyint(3) unsigned NOT NULL COMMENT '1..128',
`spreizung` smallint(5) unsigned NOT NULL COMMENT 'zelle_max - zelle_min, mV',
`ausgleich` tinyint(3) unsigned NOT NULL COMMENT 'Zellen, die gerade ausgeglichen werden',
`fehler` smallint(5) unsigned NOT NULL COMMENT 'Fehlerbits der BMU, 0 = keiner',
`geladen_kwh` decimal(9,1) NOT NULL COMMENT 'Gesamtzaehler seit Inbetriebnahme',
`entladen_kwh` decimal(9,1) NOT NULL,
PRIMARY KEY (`id`),
KEY `datetime` (`datetime`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
CREATE TABLE IF NOT EXISTS `byd_zellen` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`datetime` datetime NOT NULL COMMENT 'Ortszeit',
`zellen` varchar(1200) NOT NULL COMMENT 'JSON, mV je Zelle, 16 je Modul',
`temperaturen` varchar(400) NOT NULL COMMENT 'JSON, degC je Fuehler, 8 je Modul',
`ausgleich` char(32) NOT NULL COMMENT 'Ausgleichsbits roh als Hex, Bitlage unbestaetigt',
PRIMARY KEY (`id`),
KEY `datetime` (`datetime`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;