15 KiB
EMS – konsolidovaný seznam TODO
Shrnutí otevřených bodů z docs/06-open-questions.md, checklistů v modulech a komentářů TODO / TBD / [ ] v repozitáři. Duplicitní témata jsou sloučena; u uvedených řádků jde o stav k poslední synchronizaci se soubory.
Role „kdo řeší“: majitel = vlastník/provoz objektu a smluvní údaje; programátor = vývoj EMS; Loxone programátor = konfigurace Miniserveru a integrace v Loxone.
Vyřešeno
| Popis |
|---|
Zelený bonus: přesunuto na asset_pv_array (green_bonus_*), výpočet fn_green_bonus_revenue(), audit_filler (fn_fill_audit_interval) počítá bonus z výroby pole; legacy sloupce odstraněny ze site_market_config (V018). |
Rozšířený horizont plánování 96h (fáze 3a+3b+3c): tabulky market_price_stats, tuv_usage_stats, funkce fn_update_market_price_stats, fn_update_tuv_usage_stats, fn_get_predicted_price (V022 + R__018_fn_extended_planning.sql), joby 14:45 / 00:45. Aktualizace 2026-04: ve solveru už není 96h ani váhy 1,0/0,7/0,4 — horizont je dynamický jen z OTE (fn_planning_horizon_end, fn_last_effective_ote v R__074), terminal SoC v LP; predikce zůstává pro statistiky / budoucí fáze. |
Import OTE – robustní provoz: timeouty + retry/backoff v price_importer.py, detailní error kódy v API, fallback D+1 → dnešek, scheduler importů 13:30 / 13:15+13:45+14:15+14:45 / 14:00 / 00:05 (lifespan.py). |
Fail-safe bez OTE dat (legacy): runtime guard v control_exporter.py při is_predicted_price; u plánů jen z OTE by flag neměl nastat. Historicky: zákaz exportu v predikovaných slotech ve solveru. |
Forecast provoz: refresh každé 2 hodiny (:05), konfigurovatelný Open-Meteo horizont (OPEN_METEO_FORECAST_DAYS, default 7, clamp 2..16), endpoint pro UI vrací latest-run bez duplicit slotů. |
Telemetry – výroba FVE: Registry 672/673/667 jsou signed W; pv_power_w = max(0,pv1)+max(0,pv2)+max(0,gen) (dashboard); sloupce pv1/pv2/gen ukládají signed pro audit. |
Ekonomika baterie: snížení reserve_soc_percent na 10 % a degradation_cost_czk_kwh na 0.1500 (migrace V026__battery_economics_tuning.sql), úpravy objective pro ekonomicky konzistentnější nabíjení/vybíjení. |
Planning UI operátor akce: trvale viditelné akce import/forecast/init plan, volba data OTE (dnes/zítra), zobrazení pv_scarcity_factor ve stavu plánu. |
PV delta profil – cutoff historie: minimální začátek učení delty je 2026-04-12 (Europe/Prague) (UTC 2026-04-11T22:00:00Z); cutoff je zafixovaný v db/routines/R__078_fn_pv_forecast_delta_profile.sql (ignoruje starší data i při širším p_data_from). |
Fáze 3d – rozšířený horizont (zbývá)
| Popis | Kde | Kdo |
|---|---|---|
| EV v rozšířeném horizontu (pravděpodobnost příjezdu, dlouhé deadline) – závisí na Tesla API / rozšíření modelu (dříve „deadline přes 96h“). | docs/04-modules/planning-extended-horizon.md |
programátor |
| Korekce predikce cen počasím – potřeba 3+ měsíce korelačních dat. | stejný modul | programátor |
Blokující – nutné před prvním reálným provozem
Věci bez kterých nelze bezpečně napojit fyzická zařízení, spustit smysluplný forecast nebo dokončit kritická rozhodnutí před implementací řízení.
| Popis | Kde | Kdo |
|---|---|---|
Doplnit GPS (latitude, longitude) pro lokalitu home-01 – vstup Open-Meteo. |
db/migration/V003__seed_site_home01.sql ř. 11–17 (INSERT + komentáře TODO); docs/06-open-questions.md ř. 15–16 |
majitel (souřadnice) → programátor (úprava seedu/SQL) |
| Doplnit skutečné IP Waveshare (Deye), obou Teltonika WB, Samsung TČ a Loxone; ověřit Modbus Unit ID u zařízení. | db/migration/V003__seed_site_home01.sql ř. 27–30, 33–36, 39–41, 44–46, 49–52 (TODO komentáře); docs/04-modules/telemetry.md ř. 215 (ověření Unit ID) |
majitel / instalatér (síť) → programátor (seed nebo site_endpoint v DB) |
| Doplnit azimut a sklon FVE polí A a B pro přesný výpočet predikce. | db/migration/V003__seed_site_home01.sql ř. 125–132, 140–146; docs/06-open-questions.md ř. 13–14; docs/04-modules/forecast.md ř. 16–17 (tabulka TBD), 177 |
majitel / projektant FVE → programátor |
Doplnit model TČ, jmenovitý topný výkon (W), COP rated, objem zásobníku TUV, odkaz na čidlo TUV v seedu (asset_heat_pump má povinné numerické sloupce – bez platných hodnot nelze konzistentně plánovat / migrovat). |
db/migration/V003__seed_site_home01.sql ř. 182–200 |
majitel (datasheet) → programátor |
| Rozhodnout Teltonika: OCPP 1.6 vs REST API před implementací EV řízení a sběru. | docs/06-open-questions.md ř. 9–10; docs/04-modules/consumption.md ř. 184 |
majitel + programátor |
Doplnit přesné Modbus registry (čtení i zápis) pro Deye, Teltonika, Samsung – bez mapy registrů nejde napsat funkční telemetry_collector / control_exporter. |
docs/04-modules/telemetry.md ř. 63, 76–105 (tabulky TBD), 212–214; docs/04-modules/heat-pump.md ř. 79–85, 102; docs/04-modules/control.md ř. 249–251; pseudokód TBD_*_REGISTER ř. 166–171, 192–197; docs/loxone-integration.md ř. 259–261 |
majitel dodá PDF/šablony → programátor; část ověření s Loxone programátor |
| Ověřit Modbus registr Output Power Limit (curtailment pole A) na Deye SUN-20K. | docs/04-modules/planning.md ř. 422 |
programátor (+ dokumentace od majitele) |
Doplnit skutečnou sazbu zeleného bonusu do asset_pv_array.green_bonus_czk_kwh pro pv-b (aktuální placeholder: 7.135 Kč/kWh – ověřit ze smlouvy s EG.D). |
db/migration/V017__green_bonus.sql (seed pv-b) |
majitel (smlouva) → programátor |
Doplnit green_bonus_meter_code (EAN zeleného elektroměru) pro pv-b v asset_pv_array. |
db/migration/V017__green_bonus.sql / přímá úprava DB |
majitel → programátor |
Nastavit DISCORD_WEBHOOK_URL pro produkční alerty (Modbus mismatch, vyčerpaná verifikace času 62–64, přepnutí provozního režimu včetně SELF_SUSTAIN z mismatch, API, vypršení valid_until). |
.env / backend/app/config.py |
majitel → programátor |
Cut-off přepínač pro mikroinvertory (druhá instalace) – napojit logiku na ems.cutoff_switch_log a řízení. |
docs/04-modules/modbus-command-journal.md |
programátor |
Fáze 1 – základní provoz
Potřebné pro reálný, stabilní provoz; lze část EMS otestovat bez nich (např. jen DB, část solveru).
| Popis | Kde | Kdo |
|---|---|---|
| Kurz EUR/CZK: fixní env vs denní stahování (ČNB) – ovlivní import cen. | docs/06-open-questions.md ř. 11–12; docs/04-modules/market-prices.md ř. 126; docs/04-modules/consumption.md (související ekonomika) |
majitel + programátor |
| TUV výkon: měřitelný příkon vs jen ON/OFF – dopad na baseline a plánování. | docs/06-open-questions.md ř. 21–22 |
majitel + programátor |
| Pole B (ongrid) v auditu: sledovat neřízenou výrobu vs ignorovat. | docs/06-open-questions.md ř. 23–24; docs/04-modules/forecast.md ř. 179 |
majitel + programátor |
| Filtrovat aktivní nabíječky dle session při zápisu setpointů (místo všech schedulable). | docs/04-modules/control.md ř. 153–155 (komentář TODO v pseudokódu) |
programátor |
| Dohodnout Loxone Virtual Input názvy a vytvořit je v projektu (soulad s HTTP exportem). | docs/04-modules/control.md ř. 222–232, 252 |
Loxone programátor + programátor |
| Strategie rozdělení výkonu mezi 2 nabíječky; chování při selhání zápisu jednoho zařízení (rollback?). | docs/04-modules/control.md ř. 253–254 |
majitel + programátor |
| Ověřit Watchdog / Timer bloky v konkrétní verzi Loxone Config. | docs/loxone-integration.md ř. 258 |
Loxone programátor |
| Deye work mode hodnoty (Self-Consumption, Grid-Charge, Backup) pro SELF_SUSTAIN / přepínání. | docs/loxone-integration.md ř. 259; docs/04-modules/operating-modes.md ř. 130 |
programátor + dokumentace majitele |
| Dohodnout zdroj SoC pro SELF_SUSTAIN v Loxone (čtení ze střídače vs pevný práh). | docs/loxone-integration.md ř. 262 |
majitel + Loxone programátor |
| Přístup k logu přepnutí watchdogu pro EMS po restartu. | docs/loxone-integration.md ř. 263 |
Loxone programátor + programátor |
| Implementace Loxone watchdog dle integračního dokumentu. | docs/04-modules/operating-modes.md ř. 131; celý docs/loxone-integration.md |
Loxone programátor + programátor |
| Post-processing min_run/min_stop TČ po výstupu LP (krátké ON/OFF). | docs/04-modules/planning.md ř. 419 |
programátor |
EV: přesnější než agregát – sladit s ev1_setpoint_w / ev2_setpoint_w v DB a solveru. |
docs/04-modules/planning.md ř. 421 |
programátor |
| Test solveru na reálných datech (výkon pro 36h / 144 slotů). | docs/04-modules/planning.md ř. 423 |
programátor |
Optimalizace čtení Deye – jeden blok read_holding_registers. |
docs/04-modules/telemetry.md ř. 216 |
programátor |
| Ověřit min_run_duration / min_stop_duration TČ z dokumentace Samsung. | docs/04-modules/heat-pump.md ř. 104 |
programátor |
| Doplnit objem zásobníku TUV pro výpočet doby ohřevu (nad rámec seedu). | docs/04-modules/heat-pump.md ř. 107 |
majitel → programátor |
| TUV čidlo v Loxone pro přesnější řízení / baseline. | docs/04-modules/consumption.md ř. 185 |
Loxone programátor + programátor |
| Bazální spotřeba: zpřesnit odečítání výkonu TČ/TUV (ON/OFF × čas vs pevný výkon). | docs/04-modules/consumption.md ř. 186 |
majitel + programátor |
| PostgREST autentizace (JWT, RLS, …) před produkcí. | docs/06-open-questions.md ř. 25–26 |
majitel + programátor |
| Zálohování PostgreSQL (pg_dump cron, replikace, …). | docs/06-open-questions.md ř. 27–28 |
majitel + programátor |
| OTE: poznámka k sell vs buy raw u jiných zdrojů než OTE. | docs/04-modules/market-prices.md ř. 128 |
programátor |
| Ověřit Zoe max AC výkon (7.4 kW vs podmínky instalace). | docs/04-modules/ev-charging.md ř. 281 |
majitel + programátor |
Deye řízení – rozšíření
| Popis | Kde | Kdo |
|---|---|---|
Reg. 145 (solar sell) z politiky: při no_export / BLOCK_EXPORT (a obdobně) zapisovat 145 = 0, aby šlo tvrdě zakázat přetok řiditelného FVE na Deye (asset_pv_array.controllable = true); dnes exporter vždy 1. Vazba na instalaci: docs/04-modules/operating-modes.md (ZERO a reg. 145). |
exporter_monolith.write_inverter_setpoints (+ vstupy z InverterConfig / site_grid_connection) |
programátor |
Testy reg. 145 vůči journalu (ems.modbus_command): očekávaná hodnota při zákazu exportu vs. běžný provoz. |
backend/tests/; docs/04-modules/modbus-command-journal.md |
programátor |
| Dvě FVE pole: UI / provozní poznámka, že 145 = 0 neomezuje pv-b (ongrid); celkový export lokality může z pole B dál „unikat“. | docs/04-modules/operating-modes.md; planning.md (pv_a / pv_b) |
majitel + programátor |
BA81: přepínat „MI export to Grid cutoff“ pro GEN port při BLOCK_EXPORT přes reg 179 bits0–1 (masked RMW) pod feature flagem asset_inverter.deye_gen_microinverter_cutoff_enabled. |
exporter_monolith.write_inverter_setpoints; docs/04-modules/modbus-registers.md |
programátor |
Fáze 2 – rozšíření
| Popis | Kde | Kdo |
|---|---|---|
| Tesla API: Tessie vs přímé API. | docs/04-modules/ev-charging.md ř. 280 |
majitel + programátor |
| UI pro deadline a target SoC před odjezdem. | docs/04-modules/ev-charging.md ř. 283 |
programátor |
| Notifikace při nesplnitelném deadline nabíjení. | docs/04-modules/ev-charging.md ř. 284; docs/04-modules/operating-modes.md (sekce Otevřené body – stale heartbeat) |
programátor |
| Ověřit round-trip účinnost baterie a odhad SoC Zoe z energie session na reálných datech. | docs/04-modules/ev-charging.md ř. 282, 285 |
programátor |
| Kalibrace COP modelu TČ na 4–6 týdnů historie. | docs/04-modules/heat-pump.md ř. 105 |
programátor |
| pvlib vs jednoduchý model FVE; Solcast jako alternativa k Open-Meteo. | docs/04-modules/forecast.md ř. 178, 180; docs/06-open-questions.md ř. 34 |
programátor |
| Intraday OTE ceny. | docs/06-open-questions.md ř. 35; docs/04-modules/market-prices.md ř. 127 |
programátor |
| Sezónní korekce predikce spotřeby. | docs/06-open-questions.md ř. 36; docs/04-modules/consumption.md ř. 187 |
programátor |
| Více lokalit – UI a správa. | docs/06-open-questions.md ř. 33 |
programátor |
| Mobile / PWA notifikace. | docs/06-open-questions.md ř. 37 |
programátor |
| Reporting k dodavateli elektřiny. | docs/06-open-questions.md ř. 38 |
majitel + programátor |
Architektonická rozhodnutí čekající na odpověď
Otázky vyžadující rozhodnutí majitele systému (případně ve spolupráci s integrátory).
| Popis | Kde | Kdo |
|---|---|---|
| Teltonika OCPP vs REST (vliv na provoz, údržbu, bezpečnost). | docs/06-open-questions.md ř. 9–10 |
majitel + programátor |
| EUR/CZK strategie (fix vs API). | docs/06-open-questions.md ř. 11–12; docs/04-modules/market-prices.md ř. 126 |
majitel + programátor |
| TUV měření vs aproximace ON/OFF. | docs/06-open-questions.md ř. 21–22 |
majitel + programátor |
| Audit a plán: jak nakládat s výrobou pole B a zeleným bonusem v reportingu. | docs/06-open-questions.md ř. 23–24; docs/04-modules/forecast.md ř. 179 |
majitel + programátor |
| PostgREST / API bezpečnost pro produkci. | docs/06-open-questions.md ř. 25–26 |
majitel + programátor |
| Zálohy a DR PostgreSQL. | docs/06-open-questions.md ř. 27–28 |
majitel + programátor |
| Přímý Modbus TCP k TČ vs řízení přes Loxone jako prostředníka. | docs/04-modules/heat-pump.md ř. 106 |
majitel + Loxone programátor + programátor |
| pvlib vs jednoduchý solární model – investice do přesnosti. | docs/04-modules/forecast.md ř. 178 |
majitel + programátor |
| Rollback / částečný selhání zápisu setpointů napříč zařízeními. | docs/04-modules/control.md ř. 254 |
majitel + programátor |
| SoC zdroj a prahy pro autonomní režimy v Loxone. | docs/loxone-integration.md ř. 262 |
majitel + Loxone programátor |
Poznámka k údržbě
Po vyřešení položky ji aktualizuj v původním souboru (smaž nebo přeškrtni [ ] / TODO) a zde v 05-todo.md položku odstraň nebo přesuň do changelogu, ať zůstane jeden zdroj pravdy.