fix spravneho prodeje do site
Some checks failed
CI and deploy / migration-check (push) Failing after 12s
CI and deploy / deploy (push) Has been skipped

This commit is contained in:
Dusan Vojacek
2026-05-25 13:44:30 +02:00
parent 2e27c8c5de
commit 18ace46ea9
4 changed files with 66 additions and 15 deletions

View File

@@ -100,7 +100,7 @@ flowchart TD
- kandidáti: profitable ∩ večer ∩ `sell ≥ max_večer 0,05` (úzké pásmo u **absolutní** večerní špičky, ne široké „peakdegrad“ pro push);
- řazení podle **`sell` sestupně**;
- přidávat sloty, dokud `kumulované_Wh ≤` rozpočet (`discharge_slot_buffer`, SoC nad `min_soc`);
- **v27 push fyzika:** při drahém importu `bd + ge_bat ≥ load + ge_bat` a cap `ge_bat ≈ min(export_cap, (max_dischargeload)/2)` — jinak LP drží jen `bd≈load` bez exportu (home-01);
- **v28 push fyzika:** cap `ge_bat ≈ min(export_cap, max_discharge load)` a v push slotech BMS `load + ge_bat ≤ max_discharge` (ne `bd+ge_bat`, které dvojí započítávalo export); odpovídá Deye SELL — load z baterie, zbytek do sítě až po site cap;
- **výsledek:** jeden nejdražší slot → export řádově kW; další drahé sloty **po** prvním push mohou exportovat dle ekonomiky LP.
**Není to** „prodávat jen v jednom jediném nejdražším slotu“ — je to „prodávat **plným výkonem** v **tolika nejdražších večerních** slotech, kolik unese baterie“.
@@ -113,7 +113,7 @@ flowchart TD
| Měkká `peak_export_shortfall` → často ~50 % výkonu v mnoha slotech | Na `evening_push` slotech tvrdý push na cap; shortfall na push vypnutý |
| `grid_setpoint = gi ge` → Deye vidí ~0 W při velkém `ge_bat` | `_dispatch_grid_setpoint_w` z reálného exportu |
**Funkce:** `_evening_battery_export_push_indices`, `_evening_push_discharge_budget_wh`, `_evening_push_battery_export_w`, `_dispatch_grid_setpoint_w` v `planning_engine.py`. Tag: `2026-05-28-evening-peak-full-export-v27`.
**Funkce:** `_evening_battery_export_push_indices`, `_evening_push_discharge_budget_wh`, `_evening_push_battery_export_w`, `_dispatch_grid_setpoint_w` v `planning_engine.py`. Tag: `2026-05-28-evening-peak-full-export-v28`.
### Arbitráž baterie — účtování mezi sloty (povinné čtení)

View File

@@ -5,6 +5,14 @@ Formát: **datum (ISO)** · stručný důvod · soubory · chování / ověřen
---
## 2026-05-28 — večerní export: plný site cap (v28)
**Problém (v27):** Push používal `ge_bat ≤ (max_dischargeload)/2` kvůli LP limitu `bd+ge_bat ≤ BMS` při bilanci `bd≈load+ge_bat` — plán ~8 kW místo až **13,5 kW** (home-01).
**Změna (tag `2026-05-28-evening-peak-full-export-v28`):** Push cap `min(export_cap, max_dischargeload)`; v `evening_push_ts` BMS **`load + ge_bat ≤ max_discharge`** místo `bd+ge_bat`. Deye realtime dál řídí load-first na zařízení.
**Ověření:** `pytest … -k evening_push_export_near_site_cap_home01` · `planner_build_tag` **v28** · `|grid_setpoint_w|`**13,5 kW** při typickém večerním load ~1,8 kW.
## 2026-05-28 — večerní export: oprava home-01 bez prodeje (v27)
**Problém (v26, home-01 run 17010):** Večer baterie vybíjela jen do domu (`export_mode` NONE, `grid_setpoint_w` 0). Dva důvody: (1) `evening_early` (`ge_bat=0`) platilo i **po** nejvyšším sell slotu, takže 1921 h nemohly exportovat; (2) při **drahém importu** (`buy` ≫ ranní `ref_buy`) bilance s `gi≈0` dává `ge_bat≈0` při `bd≈load`, takže tvrdý push na `ge_bat` bez `bd≥load+ge_bat` byl neřešitelný / ignorovaný; **terminal SoC** dále tlumil `z_export`.