Files
ems/docs/05-todo.md

15 KiB
Raw Blame History

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 kalibrace per site: cutoff a parametry učení jsou v ems.site_pv_forecast_calibration (seed výchozí delta_learn_min_ts = UTC 2026-04-11T22:00:00Z); R__078 / fn_fill_forecast_accuracy respektují learning_eligible a škrcení.

Budoucí vylepšení (PV kalibrace)

Popis Kde Kdo
Telemetry collector čte Deye reg 145 (solar sell) a 179 (bits01 MI cut-off) do is_export_limited / pv_derating_flags. Volitelné rozšíření API o korigovaný výkon per pv_array_id v grafu. backend/services/telemetry_collector.py programátor

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 ř. 1117 (INSERT + komentáře TODO); docs/06-open-questions.md ř. 1516 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 ř. 2730, 3336, 3941, 4446, 4952 (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 ř. 125132, 140146; docs/06-open-questions.md ř. 1314; docs/04-modules/forecast.md ř. 1617 (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 ř. 182200 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 ř. 910; 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, 76105 (tabulky TBD), 212214; docs/04-modules/heat-pump.md ř. 7985, 102; docs/04-modules/control.md ř. 249251; pseudokód TBD_*_REGISTER ř. 166171, 192197; docs/loxone-integration.md ř. 259261 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 6264, 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 ř. 1112; 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 ř. 2122 majitel + programátor
Pole B (ongrid) v auditu: sledovat neřízenou výrobu vs ignorovat. docs/06-open-questions.md ř. 2324; 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 ř. 153155 (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 ř. 222232, 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 ř. 253254 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 ř. 2526 majitel + programátor
Zálohování PostgreSQL (pg_dump cron, replikace, …). docs/06-open-questions.md ř. 2728 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 bits01 (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 46 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 ř. 910 majitel + programátor
EUR/CZK strategie (fix vs API). docs/06-open-questions.md ř. 1112; docs/04-modules/market-prices.md ř. 126 majitel + programátor
TUV měření vs aproximace ON/OFF. docs/06-open-questions.md ř. 2122 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 ř. 2324; docs/04-modules/forecast.md ř. 179 majitel + programátor
PostgREST / API bezpečnost pro produkci. docs/06-open-questions.md ř. 2526 majitel + programátor
Zálohy a DR PostgreSQL. docs/06-open-questions.md ř. 2728 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.