Tesla Fleet API: čtení SoC po příjezdu k wallboxu
- 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:
25
db/migration/V086__vehicle_vin_tesla_token.sql
Normal file
25
db/migration/V086__vehicle_vin_tesla_token.sql
Normal file
@@ -0,0 +1,25 @@
|
||||
-- Tesla Fleet API: VIN na vozidle, aktivace api_type pro Model Y (home-01),
|
||||
-- singleton tabulka tokenů (refresh token Tesla ROTUJE při každém použití —
|
||||
-- nelze ho držet jen v .env, runtime hodnota žije zde; .env je jen seed).
|
||||
|
||||
alter table ems.asset_vehicle
|
||||
add column if not exists vin text;
|
||||
|
||||
comment on column ems.asset_vehicle.vin is
|
||||
'VIN pro párování s vozidlem v API výrobce (Tesla Fleet). NULL = doplní se automaticky při prvním úspěšném čtení (jediné vozidlo na účtu), jinak nutno vyplnit ručně.';
|
||||
|
||||
update ems.asset_vehicle
|
||||
set api_type = 'tesla'
|
||||
where code = 'tesla-my'
|
||||
and site_id = (select id from ems.site where code = 'home-01');
|
||||
|
||||
create table if not exists ems.tesla_token (
|
||||
id int primary key default 1 check (id = 1),
|
||||
refresh_token text not null,
|
||||
access_token text,
|
||||
access_expires_at timestamptz,
|
||||
updated_at timestamptz not null default now()
|
||||
);
|
||||
|
||||
comment on table ems.tesla_token is
|
||||
'Singleton: aktuální Tesla Fleet API tokeny. Seed refresh tokenu z env TESLA_REFRESH_TOKEN při prvním použití; rotace ukládá fn_tesla_token_upsert.';
|
||||
Reference in New Issue
Block a user