A custom Lovelace card for Tesla vehicles in Home Assistant. Supports the official Tesla Fleet integration, the alandtse/tesla custom integration, and fully custom entity mapping for MQTT or any other integration. Control your Tesla directly from your dashboard with a clean, app-style interface.
| Landing | Charging | Doors Open |
|---|---|---|
![]() |
![]() |
![]() |
| Controls | Climate | Charger |
|---|---|---|
![]() |
![]() |
![]() |
No helper entities required. Menu state is managed entirely inside the card.
No card dependencies required. Single self-contained JS file.
Help us grow the image library — submit your car's screenshots via the Image Uploader (beta).
Or manually: open HACS, click Frontend > +, search for Tesla Card, and install.
dist/tesla-card.js from this repository/config/www/tesla-card.js on your HA instanceURL: /local/tesla-card.js
Type: JavaScript moduleAdd the card to your dashboard via the UI editor, or paste into the YAML editor:
type: custom:tesla-card
car_name: my_tesla
| Option | Required | Default | Description |
|---|---|---|---|
car_name |
Yes* | -- | Entity prefix for your car (e.g. my_tesla for sensor.my_tesla_battery_level) |
integration |
No | fleet |
fleet — Official Tesla Fleet integration · custom — alandtse/tesla integration · entities — Manual entity mapping |
entity_overrides |
No | -- | Map of entity keys to custom entity IDs (used with integration: entities) |
car_model |
No | 3 |
Model number: 3, Y, S, or X |
car_color |
No | red_multi_coat |
Colour ID matching the image folder name |
image_path |
No | /hacsfiles/homeassistant-fe-tesla |
Base path where car images are stored |
name |
No | (car_name) | Display name shown at the top of the card |
show_speed |
No | true |
Show the Parked / speed status column |
type: custom:tesla-card
car_name: my_tesla
integration: fleet
car_model: "3"
car_color: red_multi_coat
name: My Tesla
show_speed: true
The card includes a built-in GUI editor. Click the pencil icon on the card in the Lovelace UI to configure all options without writing YAML.
If your entities don't follow the standard Tesla Fleet or alandtse naming convention (e.g. you use MQTT, a third-party bridge, or have renamed entities), select Custom Entities as the integration and map each entity individually using the visual editor:

Or configure via YAML:
type: custom:tesla-card
car_name: my_tesla
integration: entities
entity_overrides:
BATTERY_LEVEL: sensor.my_battery
BATTERY_RANGE: sensor.my_range
CLIMATE: climate.my_hvac
DOOR_LOCK: lock.my_front_door
Only override the entities you need; the rest will be skipped.
Note: Custom entity mapping is an advanced, untested feature. It should work with any HA entity that follows standard domain conventions (lock, climate, cover, switch, sensor, etc.) but has not been validated against all third-party integrations. Please report any issues.
* car_name is optional when using integration: entities.
All entity IDs are derived from your car_name value automatically. The card maps to the correct entity names based on the integration setting.
Tesla Fleet (official) entities
| Entity | Used for |
|---|---|
sensor.{car_name}_battery_level |
Battery percentage |
sensor.{car_name}_battery_range |
Remaining range |
sensor.{car_name}_charging |
Charging state label |
sensor.{car_name}_charge_rate |
Current charge rate |
sensor.{car_name}_inside_temperature |
Cabin temperature |
lock.{car_name}_lock |
Door lock/unlock |
climate.{car_name}_climate |
HVAC on/off, target temperature, camp/dog mode presets |
cover.{car_name}_charge_port_door |
Open/close charge port |
cover.{car_name}_froot |
Open frunk |
cover.{car_name}_boot |
Open/close trunk |
cover.{car_name}_vent_windows |
Vent/close windows |
number.{car_name}_charge_limit |
Charge limit slider |
number.{car_name}_charge_current |
Charging amps slider |
switch.{car_name}_sentry_mode |
Sentry mode toggle |
switch.{car_name}_defrost |
Defrost toggle |
climate.{car_name}_cabin_overheat_protection |
Cabin overheat protection |
select.{car_name}_seat_heater_front_left |
Left seat heat level |
select.{car_name}_seat_heater_front_right |
Right seat heat level |
button.{car_name}_honk_horn |
Honk horn |
button.{car_name}_flash_lights |
Flash lights |
button.{car_name}_keyless_driving |
Remote start |
button.{car_name}_wake |
Force data update |
Tesla Custom (alandtse) entities
| Entity | Used for |
|---|---|
sensor.{car_name}_battery |
Battery percentage |
sensor.{car_name}_battery_range |
Remaining range |
sensor.{car_name}_charging_state |
Charging state label |
sensor.{car_name}_charge_rate |
Current charge rate |
sensor.{car_name}_temperature_inside |
Cabin temperature |
lock.{car_name}_doors |
Door lock/unlock |
climate.{car_name}_hvac_climate_system |
HVAC on/off, target temperature |
button.{car_name}_charge_port_open |
Open charge port |
button.{car_name}_charge_port_close |
Close charge port |
button.{car_name}_frunk |
Open frunk |
button.{car_name}_trunk |
Open/close trunk |
cover.{car_name}_windows |
Vent/close windows |
number.{car_name}_charge_limit |
Charge limit slider |
number.{car_name}_charging_amps |
Charging amps slider |
switch.{car_name}_sentry_mode |
Sentry mode toggle |
switch.{car_name}_defrost |
Defrost toggle |
select.{car_name}_cabin_overheat_protection |
Cabin overheat protection |
select.{car_name}_heated_seat_left |
Left seat heat level |
select.{car_name}_heated_seat_right |
Right seat heat level |
button.{car_name}_horn |
Honk horn |
button.{car_name}_flash_lights |
Flash lights |
button.{car_name}_remote_start |
Remote start |
button.{car_name}_force_data_update |
Force data update |
Not all entities need to exist — the card silently skips any that are unavailable.
All contributions are welcome:
images/models/{model}/{variant}/{colour}/| Contributor | Submission |
|---|---|
| David Shaw | Model 3 2017–2023 — Red Multi-Coat |
| @ccarcione | Model 3 2017–2023 — Deep Blue Metallic |
| @ccarcione | Model Y 2020–2024 — Deep Blue Metallic |
# Install dev dependencies
npm install
# Build dist/tesla-card.js
npm run build
# Watch for changes (with inline sourcemaps)
npm run watch
# Run tests
npm test
# Run tests in watch mode
npm run test:watch
Source files are in src/. The compiled output is dist/tesla-card.js. Tests are in tests/.
$ claude mcp add homeassistant-fe-tesla \
-- python -m otcore.mcp_server <graph>