Files
adminandClaude Opus 5 5ed3a0796e 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>
2026-09-15 16:16:08 +02:00

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;