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.
- Cleaned up the remaining stale Tibber naming and documentation references
- Updated compatibility wording and validation checklist for Home Assistant Core 2026.9.1
- Standardized the remaining charge time sensor unit to Home Assistant's official minutes unit
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.
Before treating this as a production-ready install, verify the following in Home Assistant Core 2026.9.1:
- HA Core is running at version 2026.9.1 or newer
- The custom component is installed in
config/custom_components/lexus_status -
pytoyoda>=5.0.0has been resolved by Home Assistant without startup errors - The integration config flow opens and accepts your Lexus Connected Services credentials
- A vehicle is selected from the account and the config entry is created
- The entities are created under the expected device and update cycle
- Manual refresh works via
lexus_status.refresh - No
missing_library,cannot_connect, or auth errors are logged during startup
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.
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 + Lexus refresh logic)
├── manifest.json # HA integration manifest
├── sensor.py # Sensor platform entities
├── strings.json # UI string keys
└── translations/
└── en.json # English translations
MIT