diff --git a/deploy/tesla/setup_tesla_domain.sh b/deploy/tesla/setup_tesla_domain.sh index 607b0c4..e718e7f 100755 --- a/deploy/tesla/setup_tesla_domain.sh +++ b/deploy/tesla/setup_tesla_domain.sh @@ -54,6 +54,11 @@ ems.vojacek.eu { } # Jednorázový OAuth callback (statická stránka zobrazí ?code=) + # POZOR: redirect URI registrovaná v Tesla dev portálu je /t-auth. + handle /t-auth* { + rewrite * /tesla/callback.html + file_server + } handle /tesla/callback* { file_server } diff --git a/docs/tesla-fleet-api.md b/docs/tesla-fleet-api.md index f110dc4..8ec072b 100644 --- a/docs/tesla-fleet-api.md +++ b/docs/tesla-fleet-api.md @@ -1,5 +1,10 @@ # Tesla Fleet API — napojení EMS (čtení SoC vozidla) +> **REDIRECT URI registrovaná v dev portálu: `https://ems.vojacek.eu/t-auth`** +> (musí se znak po znaku shodovat v authorize URL, v token výměně i v portálu). +> Stránka s kódem se servíruje na /t-auth (Caddy rewrite); kód jde vždy +> zkopírovat i z adresního řádku (`?code=...`). + Cíl: po příjezdu EV přečíst skutečné SoC → `ev_session.energy_needed_wh` přesně místo defaultu. Doména `ems.vojacek.eu` slouží JEN jako veřejná vizitka pro Tesla (cert + public key + jednorázový OAuth callback) — EMS @@ -14,14 +19,14 @@ bash /opt/ems-deploy/app/deploy/tesla/setup_tesla_domain.sh Veřejné je pouze: - `https://ems.vojacek.eu/.well-known/appspecific/com.tesla.3p.public-key.pem` -- `https://ems.vojacek.eu/tesla/callback` (statická stránka zobrazí `?code=`) +- `https://ems.vojacek.eu/t-auth` (statická stránka zobrazí `?code=`) - vše ostatní → 404; certifikát řeší Caddy (Let's Encrypt) automaticky. ## 2. Tesla developer portál (developer.tesla.com) Vytvořit aplikaci: - **Allowed Origin:** `https://ems.vojacek.eu` -- **Allowed Redirect URI:** `https://ems.vojacek.eu/tesla/callback` +- **Allowed Redirect URI:** `https://ems.vojacek.eu/t-auth` - **Scopes:** `openid offline_access vehicle_device_data` (čtení SoC stačí; `vehicle_charging_cmds` až kdybychom chtěli vozidlu poroučet my — teď řídí wallbox, ne auto) @@ -49,7 +54,7 @@ curl -s -X POST https://fleet-api.prd.eu.vn.cloud.tesla.com/api/1/partner_accoun ``` https://fleet-auth.prd.vn.cloud.tesla.com/oauth2/v3/authorize? response_type=code&client_id=$CLIENT_ID& - redirect_uri=https://ems.vojacek.eu/tesla/callback& + redirect_uri=https://ems.vojacek.eu/t-auth& scope=openid%20offline_access%20vehicle_device_data&state=ems ``` Přihlásíš se Tesla účtem → redirect na callback stránku → zkopíruješ `code` → @@ -59,7 +64,7 @@ výměna za tokeny: curl -s https://fleet-auth.prd.vn.cloud.tesla.com/oauth2/v3/token \ -d grant_type=authorization_code -d client_id=$CLIENT_ID \ -d client_secret=$CLIENT_SECRET -d code=$CODE \ - -d redirect_uri=https://ems.vojacek.eu/tesla/callback + -d redirect_uri=https://ems.vojacek.eu/t-auth # → access_token (krátký) + refresh_token (ULOŽIT — viz krok 5) ```