Tesla Fleet API: čtení SoC po příjezdu k wallboxu
All checks were successful
CI and deploy / deploy (push) Successful in 58s
CI and deploy / migration-check (push) Successful in 16s

- services/tesla_client.py: access token s cache + ROTACE refresh tokenu do
  ems.tesla_token (env jen seed — Tesla refresh token je jednorázový),
  vehicles → vehicle_data?endpoints=charge_state, 408 (spící auto) = tiché
  přeskočení, výběr vozidla dle VIN / jediného na účtu (VIN se auto-naučí)
- hook _patch_session_from_tesla v _on_ev_arrival: PŘED replanem doplní
  soc_at_connect_pct (+ target z charge_limit_soc) do otevřené session přes
  fn_ev_session_apply_patch (rozšířena o soc_at_connect_pct) — energii si
  odvodí fn_planning_site_context (SQL-first); selhání neblokuje replan
- V086: asset_vehicle.vin, api_type='tesla' pro tesla-my (Model Y, home-01),
  singleton ems.tesla_token; R__095: fn_tesla_token_get/upsert,
  fn_tesla_arrival_context, fn_vehicle_set_vin
- config: TESLA_CLIENT_ID/SECRET/REFRESH_TOKEN (prázdné = vypnuto)
- testy parserů; plná sada beze změny

Aktivace: env do /opt/ems-deploy/.env + recreate backendu (docs/tesla-fleet-api.md §Stav).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Dusan Vojacek
2026-06-11 23:29:24 +02:00
parent 21b3d12955
commit 60176fc7b2
8 changed files with 382 additions and 6 deletions

View File

@@ -80,9 +80,19 @@ curl -s https://fleet-auth.prd.vn.cloud.tesla.com/oauth2/v3/token \
- Pozn.: vehicle_data budí auto (vampire drain) — volat jen při příjezdu
a max 1× za session.
## Stav
## Stav (2026-06-11 večer)
- [x] skript + callback + dokumentace v repu
- [ ] uživatel: spustit setup na serveru + Caddy blok + reload
- [ ] uživatel: developer portál (CLIENT_ID/SECRET) + partner registrace + OAuth
- [ ] EMS: tesla_client.py + hook (čeká na credentials)
- [x] uživatel: doména + Caddy + developer portál (CLIENT_ID/SECRET získány)
- [x] EMS implementace: `services/tesla_client.py` (refresh s rotací do
`ems.tesla_token`, vehicles → vehicle_data charge_state, 408=spící auto),
hook `_patch_session_from_tesla` v telemetry_collector (po příjezdu, před
replanem; selhání neblokuje plán), `fn_tesla_arrival_context`,
`fn_ev_session_apply_patch` + soc_at_connect_pct, VIN auto-learn,
V086 (vin, api_type='tesla' pro tesla-my, tabulka tesla_token)
- [ ] uživatel: partner registrace (§3) + OAuth (§4) → `TESLA_CLIENT_ID`,
`TESLA_CLIENT_SECRET`, `TESLA_REFRESH_TOKEN` do `/opt/ems-deploy/.env`
a `docker compose -f /opt/ems-deploy/docker-compose.yml --env-file
/opt/ems-deploy/.env up -d backend` (recreate kvůli env)
- [ ] ověření: po příjezdu Tesly log `Tesla SoC -> session …` +
`select soc_at_connect_pct, target_soc_pct from ems.ev_session order by id desc limit 1`