feat(ev): event-driven replan i na odjezd EV (ne jen příjezd)
Odjezd auta (≠available → available) teď spouští okamžitý rolling replan + export, symetricky k příjezdu — místo čekání na */15 tick. Řeší stale plán spočítaný těsně před odjezdem, který držel fantomovou EV alokaci (~4–11 kW do už odjetého auta). Session už zavřela fn_ev_session_transition synchronně v poll smyčce, takže replan vidí 'žádná session' a alokaci shodí. Replan i pozorování jízdy každý ve vlastním try+conn (pád solveru ani spící auto se navzájem neshodí). +2 regresní testy, +docs (changelog, ev-charging). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -225,6 +225,25 @@ Modbus registr stavu konektoru (status):
|
||||
|
||||
Polling každou minutu z `telemetry_ev_charger.status`.
|
||||
|
||||
### Event-driven replan na příjezd i odjezd
|
||||
|
||||
Přechod stavu konektoru (`fn_ev_session_transition` v poll smyčce otevře/zavře
|
||||
`ev_session` **synchronně**) spustí fire-and-forget hook v `telemetry_collector`,
|
||||
který **okamžitě přeplánuje** místo čekání na `*/15` rolling tick:
|
||||
|
||||
- **Příjezd** (`available` → ≠`available`) → `_on_ev_arrival`: WB hold 0 A → (Tesla)
|
||||
SoC do session → `run_rolling_replan(triggered_by="ev_arrival:<code>")` → export →
|
||||
Discord. Auto se začne nabíjet hned, ne až za ≤15 min.
|
||||
- **Odjezd** (≠`available` → `available`) → `_on_ev_departure`: session už zavřená
|
||||
(transition běžel první) → `run_rolling_replan(triggered_by="ev_departure:<code>")`
|
||||
→ export shodí **fantomovou EV alokaci** posledního planu (spočítaného ještě s autem)
|
||||
a uvolní přebytek do sítě/baterie; pak best-effort pozorování jízdy (odometr+SoC).
|
||||
|
||||
Bez tohoto by plán spočítaný těsně před odjezdem držel EV load až do dalšího ticku
|
||||
(≤15 min „o krok pozadu"); fyzicky neškodné (Deye přebytek vstřebá proti CT, export
|
||||
hlídá reg 143), ale interní účtování planu bylo stale. Replan je v samostatném `try` +
|
||||
vlastní conn, takže pád solveru ani spící auto (Tesla 408) jeden druhého neshodí.
|
||||
|
||||
### Tesla API (fáze 2)
|
||||
|
||||
Přes Tessie nebo přímé Tesla API:
|
||||
|
||||
Reference in New Issue
Block a user