V098: týdenní požadavky EV (ev_weekly_requirement) + fn_ev_session_defaults
Tabulka ems.ev_weekly_requirement (dow 0=pondělí..6, target_soc_pct,
deadline_hour Europe/Prague, enabled; unique per vozidlo+den) se seedem
tesla-my pondělí 07:00 → 90 %. Nová ems.fn_ev_session_defaults(vehicle,
arrival) → jsonb {target_soc_pct, deadline, source}: kaskáda týdenní
požadavek (výskyt do 48 h) → forecast z ev_usage_stats
(target_soc_forecast_enabled, chování V089 beze změny) → defaulty vozidla
(deadline = příští výskyt default_deadline_hour). fn_ev_session_transition
ji volá při založení session (SQL-first, Python beze změny); comment
funkce sjednocen na styl bez parametrů.
Docs: ev-charging.md sekce Týdenní požadavky + kaskáda, CLAUDE.md seznam fn.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -327,8 +327,9 @@ avg/stddev kWh, km, hodina prvního odjezdu.
|
||||
|
||||
**Použití:** `fn_ev_next_departure` (příští typický odjezd: DOW s ≥4 vzorky
|
||||
a ≥3 km) + `fn_ev_required_soc` (P80 spotřeby dne + 10 p.b., clamp
|
||||
[`min_target_soc_pct`, 100]) → `fn_ev_session_transition` při příjezdu
|
||||
(fallback defaulty; ruční patch `fn_ev_session_apply_patch` vždy vyhrává).
|
||||
[`min_target_soc_pct`, 100]) — od V098 zapojeno jako 2. stupeň kaskády
|
||||
`fn_ev_session_defaults` (viz níže); ruční patch `fn_ev_session_apply_patch`
|
||||
vždy vyhrává.
|
||||
|
||||
**Aktivace per vozidlo** (po ~měsíci dat):
|
||||
`update ems.asset_vehicle set target_soc_forecast_enabled = true where code = 'tesla-my';`
|
||||
@@ -336,6 +337,34 @@ a ≥3 km) + `fn_ev_required_soc` (P80 spotřeby dne + 10 p.b., clamp
|
||||
Tesla napojení (SoC při příjezdu → `soc_at_connect_pct`): `docs/tesla-fleet-api.md`.
|
||||
Registry wallboxu: `docs/04-modules/modbus-registers-teltocharge.md`.
|
||||
|
||||
## Týdenní požadavky + fn_ev_session_defaults (2026-06-12)
|
||||
|
||||
Explicitní týdenní rytmus „v pondělí v 7:00 chci 90 %" bez čekání na
|
||||
naučený forecast: tabulka **`ems.ev_weekly_requirement`** (V098) —
|
||||
max 1 řádek na (vozidlo, den): `dow` (**0 = pondělí .. 6 = neděle**, ISO
|
||||
pořadí — POZOR, jiné než postgres `extract(dow)` v `ev_usage_stats`),
|
||||
`target_soc_pct`, `deadline_hour` (Europe/Prague), `enabled`.
|
||||
Seed: tesla-my (home-01) pondělí 07:00 → 90 %.
|
||||
|
||||
Defaulty nové session dává **`ems.fn_ev_session_defaults(vehicle_id,
|
||||
arrival)`** (R__099) → jsonb `{target_soc_pct, deadline, source}`, kaskáda:
|
||||
|
||||
1. **weekly** — nejbližší budoucí výskyt enabled řádku
|
||||
`ev_weekly_requirement` do **48 h** od příjezdu (deadline = den `dow`
|
||||
v `deadline_hour`, Europe/Prague). Páteční příjezd tedy pondělní
|
||||
požadavek NEvyzvedne (>48 h) — nedělní večer už ano; dřívější nabití
|
||||
na pondělí zajistí levné víkendové sloty samy (v2 + oportunismus),
|
||||
explicitně jde vybrat „pondělí ráno 7:00" v Discordu.
|
||||
2. **forecast** — `fn_ev_next_departure` + `fn_ev_required_soc`, jen při
|
||||
`asset_vehicle.target_soc_forecast_enabled` (chování V089 beze změny).
|
||||
3. **default** — `default_target_soc_pct`; deadline = příští výskyt
|
||||
`default_deadline_hour` (Europe/Prague; dnešní, pokud je ještě před ní).
|
||||
|
||||
Volá ji `fn_ev_session_transition` při založení session (SQL-first; Python
|
||||
nic nepřepočítává). Ruční přepis (Discord selecty / UI →
|
||||
`fn_ev_session_apply_patch`) má vždy přednost — defaulty se aplikují jen
|
||||
při vzniku session.
|
||||
|
||||
## Discord notifikace po příjezdu (2026-06-12, dev)
|
||||
|
||||
Po detekci příjezdu + Tesla SoC + replanu odejde na site webhook souhrn:
|
||||
|
||||
Reference in New Issue
Block a user