156 lines
7.5 KiB
SQL
156 lines
7.5 KiB
SQL
CREATE TABLE `entities` (
|
||
`id` integer,
|
||
`group` text,
|
||
`name` text,
|
||
PRIMARY KEY (`id`)
|
||
);
|
||
CREATE UNIQUE INDEX `entities_group_name` ON `entities`(`group`, `name`);
|
||
|
||
CREATE TABLE `meters` (
|
||
`meter` integer,
|
||
`ts` integer,
|
||
`import` real,
|
||
`export` real
|
||
);
|
||
CREATE UNIQUE INDEX `meters_meter_ts` ON `meters`(`meter`, `ts`);
|
||
|
||
-- entities
|
||
INSERT INTO `entities` VALUES (1, 'home', 'home');
|
||
INSERT INTO `entities` VALUES (2, 'grid', 'grid');
|
||
INSERT INTO `entities` VALUES (3, 'battery', 'battery');
|
||
INSERT INTO `entities` VALUES (4, 'pv', 'solar');
|
||
INSERT INTO `entities` VALUES (5, 'meter', 'Kitchen');
|
||
INSERT INTO `entities` VALUES (6, 'meter', 'Office');
|
||
INSERT INTO `entities` VALUES (7, 'pv', 'pv-east');
|
||
INSERT INTO `entities` VALUES (8, 'pv', 'pv-west');
|
||
INSERT INTO `entities` VALUES (9, 'forecast', 'forecast');
|
||
INSERT INTO `entities` VALUES (10, 'battery', 'battery-2');
|
||
|
||
-- =====================================================================
|
||
-- API test data: 2026-03-24/25 (existing). Used by the JSON-shape tests.
|
||
-- 2026-03-24 22:00, 22:15, 22:30, 22:45 CET (+01:00) → 4 slots
|
||
-- 2026-03-25 00:00, 00:15 CET → 2 slots
|
||
-- =====================================================================
|
||
-- home: import=0.1, export=0 per slot
|
||
INSERT INTO `meters` VALUES (1, 1774386000, 0.1, 0);
|
||
INSERT INTO `meters` VALUES (1, 1774386900, 0.1, 0);
|
||
INSERT INTO `meters` VALUES (1, 1774387800, 0.1, 0);
|
||
INSERT INTO `meters` VALUES (1, 1774388700, 0.1, 0);
|
||
INSERT INTO `meters` VALUES (1, 1774393200, 0.1, 0);
|
||
INSERT INTO `meters` VALUES (1, 1774394100, 0.1, 0);
|
||
|
||
-- grid: import=0.5, export=0.1 per slot (peak 2 kW bidirectional)
|
||
INSERT INTO `meters` VALUES (2, 1774386000, 0.5, 0.1);
|
||
INSERT INTO `meters` VALUES (2, 1774386900, 0.5, 0.1);
|
||
INSERT INTO `meters` VALUES (2, 1774387800, 0.5, 0.1);
|
||
INSERT INTO `meters` VALUES (2, 1774388700, 0.5, 0.1);
|
||
INSERT INTO `meters` VALUES (2, 1774393200, 0.5, 0.1);
|
||
INSERT INTO `meters` VALUES (2, 1774394100, 0.5, 0.1);
|
||
|
||
-- =====================================================================
|
||
-- UI / chart test data: one local Berlin day per case, 12:00-12:45 CEST.
|
||
-- All slots are 15 minutes; energy column is kWh in DB.
|
||
-- =====================================================================
|
||
|
||
-- 2026-04-01 → grid sub-1-kW range. peak 4 W → unit W, symmetric axis.
|
||
-- 0.001 kWh × 4 = 0.004 kW = 4 W. Stored values must survive Wh-rounding
|
||
-- in the backend (db_history.roundEnergy), so we use kWh values ≥ 0.001.
|
||
INSERT INTO `meters` VALUES (2, 1775037600, 0.001, 0.001);
|
||
INSERT INTO `meters` VALUES (2, 1775038500, 0.001, 0.001);
|
||
INSERT INTO `meters` VALUES (2, 1775039400, 0.001, 0.001);
|
||
INSERT INTO `meters` VALUES (2, 1775040300, 0.001, 0.001);
|
||
|
||
-- 2026-04-02 → grid import-only. peak 2 kW. Axis must still be symmetric
|
||
-- because grid is in the hardcoded bidirectional list.
|
||
INSERT INTO `meters` VALUES (2, 1775124000, 0.5, 0);
|
||
INSERT INTO `meters` VALUES (2, 1775124900, 0.5, 0);
|
||
INSERT INTO `meters` VALUES (2, 1775125800, 0.5, 0);
|
||
INSERT INTO `meters` VALUES (2, 1775126700, 0.5, 0);
|
||
|
||
-- 2026-04-03 → battery 2.4 kW peak. niceCeil(2.4) = 3.
|
||
-- Alternating slots: charge / discharge / charge / discharge.
|
||
INSERT INTO `meters` VALUES (3, 1775210400, 0.6, 0);
|
||
INSERT INTO `meters` VALUES (3, 1775211300, 0, 0.5);
|
||
INSERT INTO `meters` VALUES (3, 1775212200, 0.6, 0);
|
||
INSERT INTO `meters` VALUES (3, 1775213100, 0, 0.5);
|
||
|
||
-- 2026-04-04 → battery 4.8 kW peak. niceCeil(4.8) = 6 → integer kW labels.
|
||
INSERT INTO `meters` VALUES (3, 1775296800, 1.2, 0);
|
||
INSERT INTO `meters` VALUES (3, 1775297700, 0, 1.0);
|
||
INSERT INTO `meters` VALUES (3, 1775298600, 1.2, 0);
|
||
INSERT INTO `meters` VALUES (3, 1775299500, 0, 1.0);
|
||
|
||
-- 2026-04-05 → PV unidirectional. peak 1.6 kW.
|
||
INSERT INTO `meters` VALUES (4, 1775383200, 0.4, 0);
|
||
INSERT INTO `meters` VALUES (4, 1775384100, 0.4, 0);
|
||
INSERT INTO `meters` VALUES (4, 1775385000, 0.4, 0);
|
||
INSERT INTO `meters` VALUES (4, 1775385900, 0.4, 0);
|
||
|
||
-- 2026-04-06 → PV all-zero day (cloudy). Rows exist but values are 0.
|
||
-- Regression: chart group must still render.
|
||
INSERT INTO `meters` VALUES (4, 1775469600, 0, 0);
|
||
INSERT INTO `meters` VALUES (4, 1775470500, 0, 0);
|
||
INSERT INTO `meters` VALUES (4, 1775471400, 0, 0);
|
||
INSERT INTO `meters` VALUES (4, 1775472300, 0, 0);
|
||
|
||
-- 2026-04-07 → consumption breakdown. home = 1.0 kWh total; explicit
|
||
-- meters Kitchen 0.4 / Office 0.3; virtual "Others" = home − meters = 0.3.
|
||
INSERT INTO `meters` VALUES (1, 1775556000, 0.25, 0);
|
||
INSERT INTO `meters` VALUES (1, 1775556900, 0.25, 0);
|
||
INSERT INTO `meters` VALUES (1, 1775557800, 0.25, 0);
|
||
INSERT INTO `meters` VALUES (1, 1775558700, 0.25, 0);
|
||
INSERT INTO `meters` VALUES (5, 1775556000, 0.1, 0);
|
||
INSERT INTO `meters` VALUES (5, 1775556900, 0.1, 0);
|
||
INSERT INTO `meters` VALUES (5, 1775557800, 0.1, 0);
|
||
INSERT INTO `meters` VALUES (5, 1775558700, 0.1, 0);
|
||
INSERT INTO `meters` VALUES (6, 1775556000, 0.075, 0);
|
||
INSERT INTO `meters` VALUES (6, 1775556900, 0.075, 0);
|
||
INSERT INTO `meters` VALUES (6, 1775557800, 0.075, 0);
|
||
INSERT INTO `meters` VALUES (6, 1775558700, 0.075, 0);
|
||
|
||
-- 2026-05-02 → multi-entity PV with stacked peak 7.2 kW. Two PV entities
|
||
-- (east + west) plus a forecast overlay. axisPeak comes from the stacked
|
||
-- per-slot sum, niceCeil → 8 → integer kW labels, echarts auto-range.
|
||
INSERT INTO `meters` VALUES (7, 1777687200, 0.05, 0); -- 04:00
|
||
INSERT INTO `meters` VALUES (7, 1777694400, 0.30, 0); -- 06:00
|
||
INSERT INTO `meters` VALUES (7, 1777701600, 0.60, 0); -- 08:00
|
||
INSERT INTO `meters` VALUES (7, 1777708800, 0.80, 0); -- 10:00
|
||
INSERT INTO `meters` VALUES (7, 1777716000, 1.00, 0); -- 12:00
|
||
INSERT INTO `meters` VALUES (7, 1777723200, 0.70, 0); -- 14:00
|
||
INSERT INTO `meters` VALUES (7, 1777730400, 0.30, 0); -- 16:00
|
||
INSERT INTO `meters` VALUES (7, 1777737600, 0.05, 0); -- 18:00
|
||
INSERT INTO `meters` VALUES (8, 1777687200, 0, 0);
|
||
INSERT INTO `meters` VALUES (8, 1777694400, 0.10, 0);
|
||
INSERT INTO `meters` VALUES (8, 1777701600, 0.40, 0);
|
||
INSERT INTO `meters` VALUES (8, 1777708800, 0.60, 0);
|
||
INSERT INTO `meters` VALUES (8, 1777716000, 0.80, 0);
|
||
INSERT INTO `meters` VALUES (8, 1777723200, 1.00, 0);
|
||
INSERT INTO `meters` VALUES (8, 1777730400, 0.80, 0);
|
||
INSERT INTO `meters` VALUES (8, 1777737600, 0.30, 0);
|
||
INSERT INTO `meters` VALUES (9, 1777687200, 0.05, 0);
|
||
INSERT INTO `meters` VALUES (9, 1777694400, 0.40, 0);
|
||
INSERT INTO `meters` VALUES (9, 1777701600, 1.00, 0);
|
||
INSERT INTO `meters` VALUES (9, 1777708800, 1.40, 0);
|
||
INSERT INTO `meters` VALUES (9, 1777716000, 1.80, 0);
|
||
INSERT INTO `meters` VALUES (9, 1777723200, 1.70, 0);
|
||
INSERT INTO `meters` VALUES (9, 1777730400, 1.10, 0);
|
||
INSERT INTO `meters` VALUES (9, 1777737600, 0.35, 0);
|
||
|
||
-- 2026-04-08 → two stacked batteries. Charge 1.2 kW each (stacked 2.4 kW),
|
||
-- discharge 0.8 kW each (stacked -1.6 kW). niceCeil(2.4) = 3.
|
||
INSERT INTO `meters` VALUES (3, 1775642400, 0.3, 0);
|
||
INSERT INTO `meters` VALUES (3, 1775643300, 0, 0.2);
|
||
INSERT INTO `meters` VALUES (3, 1775644200, 0.3, 0);
|
||
INSERT INTO `meters` VALUES (3, 1775645100, 0, 0.2);
|
||
INSERT INTO `meters` VALUES (10, 1775642400, 0.3, 0);
|
||
INSERT INTO `meters` VALUES (10, 1775643300, 0, 0.2);
|
||
INSERT INTO `meters` VALUES (10, 1775644200, 0.3, 0);
|
||
INSERT INTO `meters` VALUES (10, 1775645100, 0, 0.2);
|
||
|
||
-- =====================================================================
|
||
-- Month-aggregation case: 2026-06, three days with battery bidirectional
|
||
-- data. Daily totals ~1.4 / 1.0 kWh → limit rounds to 2 → 1-decimal kWh.
|
||
-- =====================================================================
|
||
INSERT INTO `meters` VALUES (3, 1781517600, 1.4, 1.0);
|
||
INSERT INTO `meters` VALUES (3, 1781604000, 1.4, 1.0);
|
||
INSERT INTO `meters` VALUES (3, 1781690400, 1.4, 1.0);
|