second version
This commit is contained in:
@@ -5,7 +5,7 @@
|
||||
| Vozidlo | Nabíječka | Max výkon | Řízení | API |
|
||||
|---|---|---|---|---|
|
||||
| Tesla | ev-charger-1 (Teltonika 22kW) | 22 kW | WB proud limit + Tesla API | Zatím nerozhodnuto (Tessie nebo přímé) |
|
||||
| Renault Zoe | ev-charger-2 (Teltonika 22kW) | 22 kW (Zoe max ~7-11kW) | WB proud limit (Zoe respektuje) | Žádné – Zoe jako fixní zátěž při připojení |
|
||||
| Renault Zoe | ev-charger-2 (Teltonika 22kW) | 22 kW (Zoe max 22kW) | WB proud limit (Zoe respektuje) | Žádné – Zoe jako fixní zátěž při připojení |
|
||||
|
||||
---
|
||||
|
||||
@@ -82,7 +82,7 @@ CREATE TABLE ems.asset_vehicle (
|
||||
name TEXT,
|
||||
make TEXT, -- 'Tesla', 'Renault'
|
||||
model TEXT, -- 'Model Y', 'Zoe'
|
||||
battery_capacity_kwh NUMERIC(6,2), -- Tesla ~75, Zoe ~52
|
||||
battery_capacity_kwh NUMERIC(6,2), -- Tesla ~58, Zoe ~22
|
||||
max_charge_power_w INT, -- max přijímaný výkon vozidla
|
||||
default_charger_id INT REFERENCES ems.asset_ev_charger(id),
|
||||
api_type TEXT, -- 'tesla', 'none'
|
||||
@@ -241,6 +241,32 @@ SoC Zoe neznáme přesně – použijeme energii dodanou v session (kumulativní
|
||||
|
||||
---
|
||||
|
||||
## Statistika příjezdů
|
||||
|
||||
### Tabulka `ems.ev_arrival_stats`
|
||||
|
||||
Agregace podle `site_id`, `charger_id`, `day_of_week` (0 = neděle … 6 = sobota) a `arrival_hour` (0–23). Čas příjezdu se počítá v **Europe/Prague**. Unikátní klíč `(site_id, charger_id, day_of_week, arrival_hour)`; sloupec `sample_count` roste s každým zaznamenaným příjezdem.
|
||||
|
||||
Účel: po několika týdnech dat odhadnout typickou hodinu připojení vozidla na danou wallbox — pro notifikace („obvykle přijíždíš kolem 17–18h“) a později jako měkký vstup do plánovače.
|
||||
|
||||
### `ems.fn_update_ev_arrival_stats(site_id, charger_id, vehicle_id, arrived_at)`
|
||||
|
||||
Inkrementuje statistiku pro příslušný bucket (INSERT nebo `ON CONFLICT` +1). Volá se při **detekci nového příjezdu** v `telemetry_collector`: přechod telemetrie z `available` na stav připojení (`preparing`, `charging`, …).
|
||||
|
||||
### `ems.fn_ev_expected_arrival(site_id, charger_id, for_date)`
|
||||
|
||||
Vrátí až **3 řádky**: nejčastější hodiny příjezdu pro den v týdnu odpovídající kalendářnímu datu `for_date` (typicky „zítřek“ v časové zóně lokality z backendu). Filtr `sample_count >= 2`; `confidence_pct` = podíl dané hodiny na součtu vzorků pro stejný `day_of_week` u té nabíječky.
|
||||
|
||||
### API
|
||||
|
||||
`GET /api/v1/sites/{site_id}/ev/arrival-prediction` vrátí pro každou nabíječku (klíč = `asset_ev_charger.code`) pole `tomorrow` s `{ hour, confidence_pct, samples }`. Pokud je na site méně než **5** záznamů v `ev_session` celkem, odpověď má `insufficient_data: true` (predikce se může vracet prázdné nebo řídké).
|
||||
|
||||
### Provozní poznámka
|
||||
|
||||
Historie v `ev_arrival_stats` se **nemaže** — jde o dlouhodobou agregaci. Po **4+ týdnech** reálných příjezdů má smysl UI notifikace a experimentální zapojení do solveru (soft constraint).
|
||||
|
||||
---
|
||||
|
||||
## Seed data – vozidla home-01
|
||||
|
||||
```sql
|
||||
@@ -252,7 +278,7 @@ INSERT INTO ems.asset_vehicle
|
||||
default_target_soc_pct, default_deadline_hour)
|
||||
SELECT
|
||||
s.id, 'tesla-my', 'Tesla Model Y', 'Tesla', 'Model Y',
|
||||
75.0, 11000, -- Tesla Model Y AC max ~11kW
|
||||
58.0, 11000, -- Tesla Model Y AC max ~11kW
|
||||
ch.id, 'none', -- Tesla API fáze 2
|
||||
80, 7
|
||||
FROM ems.site s
|
||||
@@ -265,7 +291,7 @@ INSERT INTO ems.asset_vehicle
|
||||
default_target_soc_pct, default_deadline_hour)
|
||||
SELECT
|
||||
s.id, 'zoe-r135', 'Renault Zoe R135', 'Renault', 'Zoe R135',
|
||||
52.0, 7400, -- Zoe max 7.4kW AC
|
||||
22.0, 22000, -- Zoe max 22kW AC
|
||||
ch.id, 'none',
|
||||
90, 7 -- Zoe: vyšší target SoC (menší baterie, kritičtější)
|
||||
FROM ems.site s
|
||||
|
||||
Reference in New Issue
Block a user