A Home Assistant custom component that reads battery status from a Lexus UX300e (or any other Toyota/Lexus EV on the EU platform) via Lexus Connected Services and exposes it as Home Assistant sensor entities.
Lexus Connected Services API ──► Home Assistant sensors
(battery, range, charging)
The integration authenticates against Toyota / Lexus Connected Services and reads:
- Battery state of charge (%)
- Estimated electric range (km)
- Charging status
- Remaining charge time (min)
- Timestamp of the last successful data fetch
Data can be fetched automatically on a configurable interval or on demand via an automation or the Home Assistant service call lexus_status.refresh.
| Requirement | Notes |
|---|---|
| Home Assistant ≥ 2024.1 | Core integration APIs used |
| Lexus Connected Services account | EU accounts only — same credentials as the MyLexus / Lexus Link app |
| Lexus UX300e (or other Toyota/Lexus EV on the EU platform) | Must have a connected-services subscription |
- Open HACS → Integrations → ⋮ → Custom repositories.
- Add
https://github.com/WickedGhost/lexus_statuswith category Integration. - Search for HA Lexus Status and install it.
- Restart Home Assistant.
- Copy the
custom_components/lexus_statusfolder into your HAconfig/custom_components/directory. - Restart Home Assistant.
Go to Settings → Devices & Services → Add Integration and search for HA Lexus Status.
The setup wizard walks you through up to four steps:
| Step | What you enter |
|---|---|
| 1 | Lexus email and password |
| 2 | Select your vehicle (skipped if you only have one) |
| 3 | Update mode — Periodic or Manual |
| 4 | Polling interval in minutes (5 – 240, default 30) — only shown when Periodic is selected |
The integration polls Lexus Connected Services every N minutes (configurable, default 30). Useful when you want the sensors to stay current without any extra automation work.
No automatic polling. The sensors only update when you explicitly call the lexus_status.refresh service. Use this when you want full control over when the car is woken up, for example only after you know the car has been driven or plugged in.
# Example automation: refresh whenever the car is plugged in
automation:
trigger:
- platform: state
entity_id: sensor.lexus_ux300e_charging_status
to: "charging"
action:
- service: lexus_status.refreshImmediately fetches the latest status from Lexus Connected Services for all configured vehicles, regardless of the configured update mode.
| Field | Value |
|---|---|
| Service | lexus_status.refresh |
| Target | (none — applies to all configured vehicles) |
| Entity | Description |
|---|---|
sensor.<name>_battery_level |
State of charge in % |
sensor.<name>_electric_range |
Remaining electric range in km |
sensor.<name>_charging_status |
Raw charging status string from the Lexus API (e.g. charging, connected, disconnected) |
sensor.<name>_remaining_charge_time |
Minutes until fully charged |
sensor.<name>_last_synced_from_lexus |
Timestamp of the last successful data fetch from the Lexus API |
The battery_level sensor also exposes vin and last_lexus_update as extra state attributes.
After setup you can change the update mode and polling interval via Settings → Devices & Services → HA Lexus Status → Configure.
-
cannot_connectduring setup – Check that your Lexus credentials work in the MyLexus mobile app and that your HA instance has internet access. -
missing_library– Make surepytoyoda>=5.0.0is listed in the integration manifest and that HA has installed it (check HA logs on startup). -
EU accounts only –
pytoyodaonly supports Toyota Connected Europe. North American / Asian Toyota/Lexus accounts are not supported. -
Battery level not updating – The Lexus Connected Services API only refreshes the car's data when the car is awake (ignition on, or actively charging). Values can be stale for parked vehicles. In Manual mode, call
lexus_status.refreshafter you know the car is awake. -
cannot_connectduring setup – Check that your Lexus credentials work in the MyLexus mobile app and that your HA instance has internet access. -
missing_library– Make surepytoyoda>=5.0.0is listed in the integration manifest and that HA has installed it (check HA logs on startup). -
EU accounts only –
pytoyodaonly supports Toyota Connected Europe. North American / Asian Toyota/Lexus accounts are not supported. -
Tibber sync always
Failed– Check the HA logs for the exact GraphQL error. Ensure the vehicle ID is correct (run{ viewer { homes { electricVehicles { id name } } } }in the Tibber Explorer to find it). -
Battery level not updating – The Lexus Connected Services API only refreshes the car's data when the car is awake (ignition on, or actively charging). Values can be stale for parked vehicles.
custom_components/lexus_status/
├── __init__.py # Integration setup / teardown
├── config_flow.py # Multi-step UI configuration
├── const.py # Domain constants and options
├── coordinator.py # DataUpdateCoordinator (polling + Tibber push)
├── manifest.json # HA integration manifest
├── sensor.py # Sensor platform entities
├── strings.json # UI string keys
└── translations/
└── en.json # English translations
MIT