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>
52 lines
2.8 KiB
SQL
52 lines
2.8 KiB
SQL
-- 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;
|