Teslemetry
The Teslemetry integrationIntegrations connect and integrate Home Assistant with your devices, services, and more. [Learn more] exposes various commands and sensors from the Tesla vehicles and energy sites connected to a Teslemetry subscription.
Prerequisites
You must have a Teslemetry account with active subscription.
The virtual key is Teslemetry’s public key, installed in your vehicle through the Tesla app. It is required for fleet telemetry (live streaming) and signed vehicle commands. Since nearly all vehicles support both, nearly all customers need it: if your vehicle supports the virtual key, install it as a standard setup step. Vehicles without virtual-key support are the exception. They still work with Teslemetry at reduced capability—data by polling instead of streaming, and commands unsigned where Tesla permits.
Configuration
To add the Teslemetry hub to your Home Assistant instance, use this My button:
Manual configuration steps
If the above My button doesn’t work, you can also perform the following steps manually:
-
Browse to your Home Assistant instance.
-
In the bottom right corner, select the
Add Integration button. -
From the list, select Teslemetry.
-
Follow the instructions on screen to complete the setup.
Bluetooth vehicle control
By default, Teslemetry sends every vehicle command through the cloud. If Home Assistant has access to a Bluetooth adapter, you can pair a vehicle over Bluetooth so its commands are sent directly to the car over a local connection, with an automatic fallback to the cloud when the local connection isn’t available.
Requirements
- A Bluetooth adapter available to Home Assistant, such as a built-in adapter or a Bluetooth proxy.
- The vehicle must be within Bluetooth range of that adapter while you set up pairing.
- The vehicle must support Tesla’s vehicle command protocol. Vehicles that don’t, such as certain pre-2021 Model S and Model X vehicles, are not listed when you add a local vehicle.
Setting up Bluetooth control
Bluetooth control is opt-in and set up per vehicle. You add each vehicle you want to control locally from the Teslemetry integration.
- Go to Settings > Devices & services and select the Teslemetry integration.
- Select Add local vehicle.
- Choose the account vehicle you want to control over Bluetooth, then select Submit.
- Home Assistant looks for the vehicle over Bluetooth. Make sure the vehicle is within range and that fewer than three phone keys are nearby, then continue.
- If the vehicle doesn’t have Home Assistant’s Bluetooth key on its key list yet, Home Assistant asks you to add it. Select Submit, then tap your key card on the center console card reader within about 30 seconds. The vehicle’s touchscreen shows a prompt while it waits for the card. If the card isn’t tapped in time, select Submit again and tap it sooner.
You only need to do this once per vehicle. If Home Assistant’s key is later removed from the vehicle’s key list, the next time you add the vehicle, Home Assistant asks you to tap a key card again.
When the vehicle is within Bluetooth range, its commands use the local connection first, with an automatic fallback to the cloud when needed. This can make commands like locking, unlocking, or flashing the lights feel noticeably faster. When the vehicle is away, its commands use the cloud, and it switches back to Bluetooth on its own when it returns.
Bluetooth connectivity sensors
Each vehicle paired for Bluetooth control gets two diagnostic binary sensors. Vehicles without Bluetooth control don’t have them.
- Bluetooth: On when a Home Assistant Bluetooth adapter can currently see the vehicle, meaning the car is in range and reachable over Bluetooth. It does not mean Home Assistant is connected to the vehicle. It only listens for the vehicle’s Bluetooth broadcasts, so it never connects to or wakes the car. When the vehicle leaves range, it can take up to about 195 seconds for its broadcasts to be considered stale, plus up to 300 seconds for Home Assistant’s next check, before this sensor turns off.
- Bluetooth session: On while Home Assistant has an open Bluetooth connection to the vehicle. A connection is only held while a command is being sent, so this sensor is off most of the time. It is disabled by default.
Removing Bluetooth control
Removing the Teslemetry integration, or the pairing for a single vehicle, stops Home Assistant from routing that vehicle’s commands over Bluetooth and forgets the stored Bluetooth address. It does not revoke Home Assistant’s virtual key from the vehicle itself. That key stays authorized on the car until you remove it there.
To fully revoke Home Assistant’s access:
- Sit in the vehicle, and on the touchscreen, select Controls > Locks.
- In the list of keys, find the one that was added when you set up Bluetooth control for Home Assistant, and select its trash icon.
- When prompted, confirm the removal by tapping an authenticated key card or key fob against the center console card reader.
If you use other apps that also connect to the vehicle over a virtual key, they’ll appear in the same list, so make sure you remove the correct one.
Local Powerwall control
By default, Teslemetry sends energy site commands through the cloud. If your energy site includes a Powerwall 2 or Powerwall 3, you can pair Home Assistant with your Powerwall so it can send commands directly over your local network. Local commands are faster. Home Assistant automatically falls back to the cloud whenever the local connection isn’t available, so your existing cloud-based energy entities keep working.
Requirements
- A Powerwall 2 or Powerwall 3 that’s reachable on your local network.
Setting up local control
Local control is optional and you add it per energy site. Only sites with a Powerwall can be added, so sites with only a wall connector or solar panels aren’t offered.
To pair your Powerwall or Backup Gateway:
- Go to Settings > Devices & services and select the Teslemetry integration.
- Select Add local energy site.
- Under Energy site, choose the site whose Powerwall you want to control over your local network, then continue.
- On the Approve the local access key step, flick the On/Off switch on your primary Powerwall off and back on to approve Home Assistant’s access, then continue. You only need to do this once.
- On the Connect to your Powerwall system step, confirm the local network address that Home Assistant discovered, or edit it if needed, and enter your Powerwall’s Wi-Fi password in the Password field. Only the last 5 characters are needed - find them on the QR label behind the front cover of your Powerwall 3, or behind the Backup Gateway door on Powerwall 2.
Once paired, Home Assistant stores your Powerwall’s address and password and sends energy commands to it directly, falling back to the cloud automatically whenever your Powerwall can’t be reached.
A paired energy site also gets extra entities that are only available from your Powerwall over your local network, such as Grid OK and Contactor closed. They are marked Local in the energy site entity table. Each one is only created when your Powerwall reports its value, and it becomes unavailable while your Powerwall can’t be reached. If your Powerwall can’t be reached when Home Assistant starts, these entities are still created and stay unavailable, then update on their own once your Powerwall responds, with no reload needed.
A paired energy site can also be charged or discharged at a set power for a set time with the Dispatch battery power action, and returned to its normal operation early with the Resume battery operation action. These actions are sent directly to your Powerwall, so they only work while it can be reached on your local network.
A paired energy site also gets the voltage and current of each solar string connected to your primary Powerwall 3, such as PV string A voltage and PV string A current. Like the other Local entities, each one is only created when your Powerwall reports its value.
Removing the Teslemetry integration doesn’t revoke the access key from your Powerwall system, so other apps or integrations using the same key keep working.
Entities
These are the entities available in the Teslemetry integration. Not all entities are enabled by default, and not all values are always available.
Entities in the device tracker platform specifically require the Vehicle location scope, and will appear unavailable otherwise.
The Charge on solar switch and Charge on solar lower limit number are part of a Labs preview feature and only appear once you enable it, as described in Charge on solar below.
The Enable keep accessory power and Disable keep accessory power buttons are only created for vehicles on firmware 2025.38 or newer.
Vehicles
The Bluetooth column marks entities whose commands can control the vehicle over Bluetooth when it’s paired and within range of a Home Assistant Bluetooth adapter. See Bluetooth vehicle control for setup and requirements.
Only vehicle controls send commands over Bluetooth. While a paired vehicle that streams its data is within Bluetooth range, the states it broadcasts over Bluetooth also update the Lock, the four door binary sensors, the Charge port door, Frunk, and Trunk covers, the Cybertruck tonneau cover, and the Shift state sensor, alongside Teslemetry’s data stream. Every other state, and all state for a vehicle that polls, comes through Teslemetry’s cloud connection or data stream, even for an entity marked Yes. The exceptions are the Bluetooth connectivity sensors, which come from Home Assistant’s own Bluetooth adapters. When the vehicle is out of Bluetooth range, its commands use the cloud, and individual commands the local connection can’t complete fall back to the cloud automatically. Energy site and Wall Connector entities are not controlled over vehicle Bluetooth.
| Domain | Name | Enabled | Data | Bluetooth |
|---|---|---|---|---|
| Binary sensor | Automatic blind spot camera | No | Streaming | No |
| Binary sensor | Automatic emergency braking off | No | Streaming | No |
| Binary sensor | Battery heater | No | Both | No |
| Binary sensor | Blind spot collision warning chime | No | Streaming | No |
| Binary sensor | Bluetooth | Yes | Bluetooth | No |
| Binary sensor | Bluetooth session | No | Bluetooth | No |
| Binary sensor | BMS full charge | No | Streaming | No |
| Binary sensor | Brake pedal | No | Streaming | No |
| Binary sensor | Cabin overheat protection actively cooling | No | Polling | No |
| Binary sensor | Cellular | Yes | Streaming | No |
| Binary sensor | Charge cable | Yes | Both | No |
| Binary sensor | Charge enable request | No | Streaming | No |
| Binary sensor | Charge port cold weather mode | No | Streaming | No |
| Binary sensor | Charger has multiple phases | No | Both | No |
| Binary sensor | Dashcam | No | Polling | No |
| Binary sensor | DC DC | No | Streaming | No |
| Binary sensor | Defrost for preconditioning | No | Streaming | No |
| Binary sensor | Drive rail | No | Streaming | No |
| Binary sensor | Driver seat belt warning | No | Streaming | No |
| Binary sensor | Driver seat occupied | No | Streaming | No |
| Binary sensor | Emergency lane departure avoidance | No | Streaming | No |
| Binary sensor | Europe vehicle | No | Streaming | No |
| Binary sensor | Fast charger present | No | Streaming | No |
| Binary sensor | Front driver door | Yes | Both | No |
| Binary sensor | Front driver window | Yes | Both | No |
| Binary sensor | Front passenger door | Yes | Both | No |
| Binary sensor | Front passenger window | Yes | Both | No |
| Binary sensor | GPS state | No | Streaming | No |
| Binary sensor | Guest mode enabled | No | Streaming | No |
| Binary sensor | Hazard lights | No | Streaming | No |
| Binary sensor | High beams | No | Streaming | No |
| Binary sensor | Homelink nearby | No | Streaming | No |
| Binary sensor | HVAC auto mode | No | Streaming | No |
| Binary sensor | High voltage interlock loop fault | No | Streaming | No |
| Binary sensor | Located at favorite | Yes | Streaming | No |
| Binary sensor | Located at home | Yes | Streaming | No |
| Binary sensor | Located at work | Yes | Streaming | No |
| Binary sensor | Offroad lightbar | No | Streaming | No |
| Binary sensor | Pin to drive enabled | No | Streaming | No |
| Binary sensor | Preconditioning enabled | No | Both | No |
| Binary sensor | Preconditioning | No | Polling | No |
| Binary sensor | Rear display HVAC | No | Streaming | No |
| Binary sensor | Rear driver door | Yes | Both | No |
| Binary sensor | Rear driver window | Yes | Both | No |
| Binary sensor | Rear passenger door | Yes | Both | No |
| Binary sensor | Rear passenger window | Yes | Both | No |
| Binary sensor | Remote start | No | Streaming | No |
| Binary sensor | Right hand drive | No | Streaming | No |
| Binary sensor | Scheduled charging pending | No | Both | No |
| Binary sensor | Seat vent enabled | No | Streaming | No |
| Binary sensor | Service mode | No | Streaming | No |
| Binary sensor | Speed limited | No | Streaming | No |
| Binary sensor | Status | Yes | Both | No |
| Binary sensor | Supercharger session trip planner | No | Streaming | No |
| Binary sensor | Tire pressure warning front left | No | Polling | No |
| Binary sensor | Tire pressure warning front right | No | Polling | No |
| Binary sensor | Tire pressure warning rear left | No | Polling | No |
| Binary sensor | Tire pressure warning rear right | No | Polling | No |
| Binary sensor | Trip charging | No | Polling | No |
| Binary sensor | User present | Yes | Polling | No |
| Binary sensor | Wi-Fi | Yes | Streaming | No |
| Binary sensor | Wiper heat | No | Streaming | No |
| Button | Disable keep accessory power | Yes | — | Yes |
| Button | Enable keep accessory power | Yes | — | Yes |
| Button | Flash lights | Yes | — | Yes |
| Button | HomeLink | Yes | — | Yes |
| Button | Honk horn | Yes | — | Yes |
| Button | Keyless driving | Yes | — | Yes |
| Button | Play fart | Yes | — | Yes |
| Button | Wake | Yes | — | Yes |
| Climate | Cabin overheat protection | Yes | Both | Yes |
| Climate | Climate | Yes | Both | Yes |
| Cover | Charge port door | Yes | Both | Yes |
| Cover | Frunk | Yes | Both | Yes |
| Cover | Sunroof | No | Polling | Yes |
| Cover | Trunk | Yes | Both | Yes |
| Cover | Vent windows | Yes | Both | Yes |
| Device tracker | Location | Yes | Both | No |
| Device tracker | Origin | No | Streaming | No |
| Device tracker | Route | Yes | Both | No |
| Lock | Charge cable lock | Yes | Both | Yes |
| Lock | Lock | Yes | Both | Yes |
| Lock | Speed limit | Yes | Both | Yes |
| Media player | Media player | Yes | Both | Yes |
| Number | Charge current | Yes | Both | Yes |
| Number | Charge limit | Yes | Both | Yes |
| Number | Charge on solar lower limit | Yes | Both | No |
| Select | Seat cooler front left | Yes | Both | Yes |
| Select | Seat cooler front right | Yes | Both | Yes |
| Select | Seat heater front left | Yes | Both | Yes |
| Select | Seat heater front right | Yes | Both | Yes |
| Select | Seat heater rear center | No | Both | Yes |
| Select | Seat heater rear left | No | Both | Yes |
| Select | Seat heater rear right | No | Both | Yes |
| Select | Seat heater third row left | No | Polling | Yes |
| Select | Seat heater third row right | No | Polling | Yes |
| Select | Steering wheel heater | Yes | Both | Yes |
| Sensor | Battery level | Yes | Both | No |
| Sensor | Battery range | Yes | Polling | No |
| Sensor | BMS state | No | Streaming | No |
| Sensor | Brake pedal position | No | Streaming | No |
| Sensor | Brick voltage max | No | Streaming | No |
| Sensor | Brick voltage min | No | Streaming | No |
| Sensor | Charge cable | No | Both | No |
| Sensor | Charge energy added | Yes | Both | No |
| Sensor | Charge rate | Yes | Polling | No |
| Sensor | Charger current | Yes | Both | No |
| Sensor | Charger power | Yes | Both | No |
| Sensor | Charger voltage | Yes | Both | No |
| Sensor | Charging | Yes | Both | No |
| Sensor | Cruise follow distance | No | Streaming | No |
| Sensor | Cruise set speed | No | Streaming | No |
| Sensor | Current speed limit | No | Streaming | No |
| Sensor | DC charging energy in | No | Streaming | No |
| Sensor | DC charging power | No | Streaming | No |
| Sensor | Destination | No | Both | No |
| Sensor | Distance to arrival | Yes | Both | No |
| Sensor | Driver temperature setting | No | Polling | No |
| Sensor | Estimate battery range | No | Both | No |
| Sensor | Exterior color | No | Both | No |
| Sensor | Fast charger type | No | Both | No |
| Sensor | Front drive inverter axle speed | No | Streaming | No |
| Sensor | Front drive inverter battery voltage | No | Streaming | No |
| Sensor | Front drive inverter heatsink temperature | No | Streaming | No |
| Sensor | Front drive inverter motor current | No | Streaming | No |
| Sensor | Front drive inverter state | No | Streaming | No |
| Sensor | Front drive inverter temperature | No | Streaming | No |
| Sensor | Front drive unit actual torque | No | Streaming | No |
| Sensor | Front drive unit stator temperature | No | Streaming | No |
| Sensor | HVAC power state | No | Streaming | No |
| Sensor | Ideal battery range | No | Both | No |
| Sensor | Inside temperature | Yes | Both | No |
| Sensor | Left temperature request | No | Streaming | No |
| Sensor | Lifetime energy gained regen | No | No | |
| Sensor | Miles since reset | No | No | |
| Sensor | Odometer | No | Both | No |
| Sensor | Outside temperature | Yes | Both | No |
| Sensor | Passenger temperature setting | No | Polling | No |
| Sensor | Power | No | Polling | No |
| Sensor | Rear drive inverter axle speed | No | Streaming | No |
| Sensor | Rear drive inverter battery voltage | No | Streaming | No |
| Sensor | Rear drive inverter heatsink temperature | No | Streaming | No |
| Sensor | Rear drive inverter motor current | No | Streaming | No |
| Sensor | Rear drive inverter state | No | Streaming | No |
| Sensor | Rear drive inverter temperature | No | Streaming | No |
| Sensor | Rear drive unit actual torque | No | Streaming | No |
| Sensor | Rear drive unit stator temperature | No | Streaming | No |
| Sensor | Rear left drive inverter axle speed | No | Streaming | No |
| Sensor | Rear left drive inverter battery voltage | No | Streaming | No |
| Sensor | Rear left drive inverter heatsink temperature | No | Streaming | No |
| Sensor | Rear left drive inverter motor current | No | Streaming | No |
| Sensor | Rear left drive inverter state | No | Streaming | No |
| Sensor | Rear left drive inverter temperature | No | Streaming | No |
| Sensor | Rear left drive unit actual torque | No | Streaming | No |
| Sensor | Rear left drive unit stator temperature | No | Streaming | No |
| Sensor | Rear right drive inverter axle speed | No | Streaming | No |
| Sensor | Rear right drive inverter battery voltage | No | Streaming | No |
| Sensor | Rear right drive inverter heatsink temperature | No | Streaming | No |
| Sensor | Rear right drive inverter motor current | No | Streaming | No |
| Sensor | Rear right drive inverter state | No | Streaming | No |
| Sensor | Rear right drive inverter temperature | No | Streaming | No |
| Sensor | Rear right drive unit actual torque | No | Streaming | No |
| Sensor | Rear right drive unit stator temperature | No | Streaming | No |
| Sensor | Right temperature request | No | Streaming | No |
| Sensor | Roof color | No | Both | No |
| Sensor | Scheduled charging mode | No | Streaming | No |
| Sensor | Scheduled charging start time | No | Both | No |
| Sensor | Scheduled departure time | No | Both | No |
| Sensor | Secondary drive unit torque command | No | Streaming | No |
| Sensor | Self-driving miles since reset | No | No | |
| Sensor | Sentry mode | Yes | Streaming | No |
| Sensor | Shift state | No | Both | No |
| Sensor | Speed | No | Both | No |
| Sensor | State of charge at arrival | No | Both | No |
| Sensor | Time at arrival | Yes | Both | No |
| Sensor | Time at full charge | Yes | Both | No |
| Sensor | Time to arrival | Yes | Both | No |
| Sensor | Time to full charge | Yes | Both | No |
| Sensor | Tire pressure front left | No | Both | No |
| Sensor | Tire pressure front right | No | Both | No |
| Sensor | Tire pressure last measured front left | No | Both | No |
| Sensor | Tire pressure last measured front right | No | Both | No |
| Sensor | Tire pressure last measured rear left | No | Both | No |
| Sensor | Tire pressure last measured rear right | No | Both | No |
| Sensor | Tire pressure rear left | No | Both | No |
| Sensor | Tire pressure rear right | No | Both | No |
| Sensor | Traffic delay | No | Both | No |
| Sensor | Usable Battery level | No | Both | No |
| Sensor | Drive unit torque command | No | Streaming | No |
| Switch | Auto seat climate left | Yes | Both | Yes |
| Switch | Auto seat climate right | Yes | Both | Yes |
| Switch | Auto steering wheel heater | Yes | Both | Yes |
| Switch | Charge | Yes | Both | Yes |
| Switch | Charge on solar | Yes | Both | No |
| Switch | Defrost | Yes | Both | Yes |
| Switch | Guest mode | Yes | Streaming | Yes |
| Switch | Sentry mode | Yes | Both | Yes |
| Switch | Valet mode | Yes | Both | Yes |
| Update | Update | Yes | Both | Yes |
Energy sites
| Domain | Name | Enabled | Data |
|---|---|---|---|
| Binary sensor | Backup capable | Yes | Polling |
| Binary sensor | Contactor closed | Yes | Local |
| Binary sensor | ESCAN firmware updating | Yes | Local |
| Binary sensor | Grid OK | Yes | Local |
| Binary sensor | Grid services active | Yes | Polling |
| Binary sensor | Grid services enabled | Yes | Polling |
| Binary sensor | Grid status | Yes | Polling |
| Binary sensor | Microgrid OK | Yes | Local |
| Binary sensor | PW3CAN firmware updating | Yes | Local |
| Binary sensor | Site manager running | Yes | Local |
| Binary sensor | Site running | Yes | Local |
| Binary sensor | Storm watch active | Yes | Polling |
| Calendar | Buy tariff | Yes | Polling |
| Calendar | Sell tariff | Yes | Polling |
| Number | Backup reserve | Yes | Polling |
| Number | Off grid reserve | Yes | Polling |
| Select | Allow export | Yes | Polling |
| Select | Operation mode | Yes | Polling |
| Sensor | Battery power | Yes | Polling |
| Sensor | Consumer imported from battery | No | Polling |
| Sensor | Consumer imported from generator | No | Polling |
| Sensor | Consumer imported from grid | No | Polling |
| Sensor | Consumer imported from solar | No | Polling |
| Sensor | Generator exported | Yes | Polling |
| Sensor | Generator power | No | Polling |
| Sensor | Grid exported | Yes | Polling |
| Sensor | Grid exported from battery | No | Polling |
| Sensor | Grid exported from generator | No | Polling |
| Sensor | Grid exported from solar | No | Polling |
| Sensor | Grid imported | No | Polling |
| Sensor | Grid power | Yes | Polling |
| Sensor | Grid services exported | No | Polling |
| Sensor | Grid services imported | No | Polling |
| Sensor | Grid services power | Yes | Polling |
| Sensor | Home usage | Yes | Polling |
| Sensor | Island status | Yes | Polling |
| Sensor | Load power | Yes | Polling |
| Sensor | Percentage charged | Yes | Polling |
| Sensor | PV string A current | Yes | Local |
| Sensor | PV string A voltage | Yes | Local |
| Sensor | PV string B current | Yes | Local |
| Sensor | PV string B voltage | Yes | Local |
| Sensor | PV string C current | Yes | Local |
| Sensor | PV string C voltage | Yes | Local |
| Sensor | PV string D current | Yes | Local |
| Sensor | PV string D voltage | Yes | Local |
| Sensor | PV string E current | Yes | Local |
| Sensor | PV string E voltage | Yes | Local |
| Sensor | PV string F current | Yes | Local |
| Sensor | PV string F voltage | Yes | Local |
| Sensor | Solar exported | No | Polling |
| Sensor | Solar generated | Yes | Polling |
| Sensor | Solar power | Yes | Polling |
| Sensor | Version | Yes | Polling |
| Sensor | VPP backup reserve | Yes | Polling |
| Switch | Allow charging from grid | Yes | Polling |
| Switch | Storm watch | Yes | Polling |
Wall connector
| Domain | Name | Enabled | Data |
|---|---|---|---|
| Sensor | Energy delivered | Yes | Streaming |
| Sensor | Fault state | No | Polling |
| Sensor | Power | Yes | Polling |
| Sensor | State | Yes | Polling |
| Sensor | Vehicle | Yes | Polling |
Metadata
| Domain | Name | Enabled | Data |
|---|---|---|---|
| Sensor | Teslemetry credits | Yes | Streaming |
List of actions
The Teslemetry integrationIntegrations connect and integrate Home Assistant with your devices, services, and more. [Learn more] provides the following actions. Each link below opens a dedicated page with examples, parameters, and a step-by-step UI walkthrough.
-
Add charge schedule (
teslemetry.add_charge_schedule) Adds or modifies a charging schedule for the vehicle. -
Add precondition schedule (
teslemetry.add_precondition_schedule) Adds or modifies a preconditioning schedule for the vehicle. -
Dispatch battery power (
teslemetry.dispatch_battery_power) Charges or discharges the Powerwall at a set power for a set time over the local gateway connection. -
Navigate to coordinates (
teslemetry.navigation_gps_request) Sets the vehicle’s navigation to a specific latitude and longitude. -
Remove charge schedule (
teslemetry.remove_charge_schedule) Removes a charging schedule from the vehicle. -
Remove precondition schedule (
teslemetry.remove_precondition_schedule) Removes a preconditioning schedule from the vehicle. -
Resume battery operation (
teslemetry.resume_battery_operation) Ends a battery power dispatch early and returns the Powerwall to its normal operation. -
Set scheduled charging (
teslemetry.set_scheduled_charging) Sets a time at which the vehicle should start charging. -
Set scheduled departure (
teslemetry.set_scheduled_departure) Sets a departure time so the vehicle schedules charging and preconditioning. -
Set speed limit (
teslemetry.speed_limit) Turns the vehicle’s speed limit on or off. -
Time of use settings (
teslemetry.time_of_use) Updates the time of use settings for a Tesla energy site. -
Set valet mode (
teslemetry.valet_mode) Turns valet mode on or off for the vehicle.
For an overview of every action across all integrations, see the actions reference.
Charge on solar
Requires the Charge on solar Labs preview feature. Enable it at Settings > System > Labs.
Charge on solar lets your Tesla vehicle keep charging while your home has excess solar power, and pause again once that excess runs out. Enabling the Charge on solar Labs preview feature adds two entities to each vehicle when your Teslemetry account has granted the Vehicle commands scope:
- A Charge on solar switch to turn the mode on or off.
- A Charge on solar lower limit number for the battery percentage the vehicle keeps charging to even without solar, so it doesn’t sit too low.
There’s no separate upper limit entity for charge on solar. It reuses the vehicle’s existing Charge limit number as the upper bound, so the lower limit can never be set above it. If you lower the charge limit below the current lower limit, the lower limit follows it down on the next update from the vehicle.
If you disable the Labs preview feature, or the Vehicle commands scope is no longer granted, both entities are removed until they become available again.
Energy dashboard
The Tesla Fleet API only provides power data for Powerwall and Solar products. This means they cannot be used on the energy dashboard directly.
Energy flows can be calculated from Battery power and Grid power sensors using a Template Sensor to separate the positive and negative values into positive import and export values.
The Load power, Solar power, and the templated sensors can then use a Riemann Sum to convert their instant power (kW) values into cumulative energy values (kWh),
which then can be used within the energy dashboard.
Data updates
Teslemetry delivers data by streaming or polling, depending on the product. The Data column in the entity tables above shows how each entity is updated:
- Streaming: the value arrives over the live stream in real time.
- Polling: the value comes from Teslemetry’s cached vehicle data.
- Both: the value can arrive by streaming or polling, depending on the vehicle and its configuration.
- Local: the value is polled directly from your Powerwall over your local network. These entities only exist for energy sites paired for local Powerwall control.
- — (em dash): the entity does not report data. Buttons send commands, so they have no data source.
Vehicle data
Most vehicles stream their data to Home Assistant in real time. Streaming has no per-update cost, and the integration sets it up and manages it for you. These vehicles do not get entities parked as Polling in the tables above, as that would incur an ongoing command credit cost.
Legacy vehicles (certain pre-2021 Model S & Model X vehicles) that do not support streaming get all entities except those marked as Streaming in the tables above. Teslemetry handles the polling of this data in the cloud as part of your subscription, roughly every 15 minutes, or roughly every 90 seconds if the vehicle qualifies for a polling discount from Tesla.
The integration does not wake a sleeping vehicle to fetch data. Updates pause until the vehicle wakes up on its own or you interact with it.
Energy site data
Energy site live status, site information, tariffs, and energy history arrive through the Teslemetry data stream. If you’ve paired a Powerwall for local control, Home Assistant also reads its live values directly over your local network every 5 seconds, and its backup reserve and operation mode every 30 seconds. Whenever your Powerwall can’t be reached, Home Assistant uses the cloud values instead. Entity availability still follows the Teslemetry data stream.
For an energy site paired for local Powerwall control, the local status entities marked Local, such as Grid OK, are polled from your Powerwall’s status every 10 seconds. The solar string entities, such as PV string A voltage, are polled from your Powerwall every 30 seconds.
The Energy delivered sensor of each Wall Connector is the energy it delivered on the current day, in the site’s time zone. Teslemetry streams it while a Wall Connector at the site is charging, and once more after charging stops. A charging session counts on the day it started, so a session that continues past midnight adds to the previous day.
Known limitations
- Vehicle Sleep: The integration will not actively wake a vehicle to fetch data. However, sending commands (such as locking, unlocking, or climate control) will wake the vehicle.
- Rate Limits: While Teslemetry handles upstream rate limiting with Tesla, excessive polling or command usage from aggressive automations may encounter temporary API limits.
- Virtual Key: See Prerequisites for when a virtual key is needed. To set one up, follow the instructions on the Teslemetry Console.
- Charge on solar assumed state: Tesla’s API doesn’t currently report charge on solar’s status back from the vehicle, so the Charge on solar switch and its lower limit number show the state of the last command you sent rather than confirmed feedback from the vehicle.
Troubleshooting
Invalid tokens
If your Teslemetry authentication token becomes invalid or expires, Home Assistant will prompt you to re-authenticate. This typically involves signing in again via the integration’s configuration flow.
Timeouts
Timeouts can occur due to connection issues between Home Assistant, Teslemetry, Tesla, or the vehicle itself (e.g., the vehicle is in an area with poor cellular reception). These are often temporary. If timeouts persist, please contact [email protected].
Examples
Common use cases
- Solar Charging: Automate your vehicle’s charging current or state based on excess solar production to maximize renewable energy usage.
- Smart Preconditioning: Use calendar events or time-based triggers to precondition your vehicle’s cabin temperature before you depart.
- Automatic Garage Door: Automatically open your garage door when you approach your home while navigating.
Automations
Automate charging based on solar production
automation:
- alias: "Charge Tesla from Solar"
trigger:
- trigger: numeric_state
entity_id: sensor.home_solar_power
above: 3000
actions:
- action: switch.turn_on
target:
entity_id: switch.my_tesla_charge
- action: number.set_value
target:
entity_id: number.my_tesla_charge_current
data:
value: 16
Precondition vehicle before calendar events
automation:
- alias: "Precondition for Work"
trigger:
- trigger: calendar
event: start
offset: "-00:15:00"
entity_id: calendar.work
actions:
- action: climate.turn_on
target:
entity_id: climate.my_tesla_climate
Blueprints
Open Garage Door based on Navigation
Uses the distance to arrival sensor to accurately know when you’re close to a specific location (such as your home), and open a garage door, or other cover entity. Requires you to be navigating to your intended destination, even if you don’t need the directions.
blueprint:
name: Teslemetry Garage Door Opener
author: Brett Adams
description: Opens a garage door when your Tesla is approaching
domain: automation
input:
distance_to_arrival_entity:
name: Distance to arrival entity
selector:
entity:
filter:
- integration: teslemetry
domain: sensor
device_class: distance
distance_to_arrival:
name: Distance to arrival value to trigger open
selector:
number:
min: 0
max: 100
step: any
mode: box
route_entity:
name: Route entity
selector:
entity:
filter:
- integration: teslemetry
domain: device_tracker
route_zone:
name: Route destination
selector:
entity:
filter:
- domain: zone
cover_entity:
name: Garage door entity
selector:
entity:
filter:
- domain: cover
trigger:
- trigger: numeric_state
entity_id:
- !input distance_to_arrival_entity
below: !input distance_to_arrival
above: 0
condition:
- condition: zone.in_zone
target:
entity_id: !input route_entity
options:
zone: !input route_zone
actions:
- action: cover.open_cover
target:
entity_id: !input cover_entity
mode: restart