When setting up the Bosch EasyControl integration via the Cloud / Bosch Account option in HA, the final step asks you to paste a callback URL.
Getting that URL manually (opening the auth link, logging in, copying from the "Cannot open page" error screen) is unreliable — some browsers don't show it clearly.
Use the helper script instead:
./run_playwright_ha.shIt opens a browser, you log in once, and it prints the callback URL:
============================================================
Paste this into Home Assistant:
com.bosch.tt.dashtt.pointt://app/login?code=ABC123...
============================================================
Copy that URL, paste it into the HA config flow field. The code is NOT consumed by the script — it stays valid for HA to use.
First-time setup (once only, on the machine running this script):
uv run --with playwright python -m playwright install chromiumTo test the full OAuth flow end-to-end (exchange code, test API paths):
./run_playwright.shThis does everything: captures the callback, exchanges the code, and tests the API. Don't use this before pasting into HA — it consumes the authorization code.
If the Playwright script breaks (e.g. Bosch changed their login page):
uv run --with aiohttp python test_pointtapi_oauth.pyThis prints the auth URL for you to open manually, then asks you to paste the callback URL back.
.env— device serial (gitignored); credentials are entered in the browser- The Bosch login page detects automation —
playwright-stealthis used to work around this