Bluetooth Commands

Send selected commands over Bluetooth only, never through the cloud

Teslemetry Bluetooth Commands is a separate Home Assistant integration that adds command entities that only use Bluetooth. If the vehicle can't be reached over Bluetooth, the command fails with an error. It is never sent to the cloud.

Why it exists

When a vehicle is paired over Bluetooth, the Teslemetry integration sends each command over Bluetooth first and falls back to the cloud automatically when Bluetooth fails. That is the right default for most people, because the command still gets through.

Some people want certain commands to stay local and never be routed through the cloud. A single "Bluetooth only" setting in the Teslemetry integration would apply to every command, so you couldn't keep some commands local and still let the others use the cloud. Instead, this integration adds its own Bluetooth-only entities next to the existing ones. Use them where a command must stay local, and keep using the Teslemetry entities everywhere else.

Your existing Teslemetry entities don't change, and all vehicle data still comes from the Teslemetry integration.

Requirements

  • Home Assistant 2026.10.0 or newer.
  • The Teslemetry integration, set up and loaded, with the vehicle paired over Bluetooth. In the Teslemetry integration, select Add local vehicle and follow the steps to add Home Assistant's key to the car.
  • A Bluetooth adapter or ESPHome Bluetooth proxy in range of the vehicle.

This integration doesn't pair the vehicle, create a key or open a Bluetooth connection of its own. It reuses the Teslemetry integration's pairing, key and Bluetooth connection. If the Teslemetry integration can't start, this integration adds no entities until it does.

Installation

The integration is installed with HACS. Until it is listed in the HACS default store, add it as a custom repository (category: Integration):

Install with HACS
  1. Download Teslemetry Bluetooth Commands in HACS, then restart Home Assistant.
  2. Go to Settings > Devices & services > Add integration and add Teslemetry Bluetooth Commands.

One entry covers every Teslemetry account and every vehicle paired over Bluetooth.

Entities

The entities are added to each Bluetooth-paired vehicle's existing Teslemetry device. Only the first five are enabled by default. Enable the others in the entity settings.

Many entities are added only where the Teslemetry integration has its own entity for the same command, so the list you see depends on your car.

Enabled by default

EntityType
Wake (Bluetooth)Button
Start charging (Bluetooth)Button
Stop charging (Bluetooth)Button
Charge limit (Bluetooth)Number, 50-100 %
Charging amps (Bluetooth)Number, 0 A to the car's maximum

Disabled by default

GroupEntitiesType
LocksLock, UnlockButtons
MediaPlay/pause, Next track, Previous trackButtons
MediaVolumeNumber
VehicleFlash lights, Honk horn, Play fart, Homelink, Keyless driving, Install updateButtons
WindowsVent windows, Close windowsButtons
TrunksOpen frunk, Open/close trunkButtons
Charge portOpen charge port door, Close charge port doorButtons
SunroofVent sunroof, Close sunroofButtons
TonneauOpen tonneau, Close tonneau, Stop tonneauButtons
ModesSentry mode, Valet mode, Guest mode, each with an on and an off buttonButtons
ClimateClimate on, Climate offButtons
ClimateBioweapon defense on, Bioweapon defense offButtons
ClimateDefrost, Auto seat climate left, Auto seat climate right, Auto steering wheel heater, each with an on and an off buttonButtons
ClimateTarget temperature, 15-28 °C in 0.5 stepsNumber
ClimateClimate keeper mode: Off, Keep, Dog, CampSelect
ClimateCabin overheat protection: Off, On, Fan onlySelect
ClimateCabin overheat protection temperature: Low, Medium, HighSelect
SeatsSeat heater front left, front right, rear left, rear center, rear right, third row left, third row right: Off, Low, Medium, HighSelects
SeatsSeat cooler front left, front right: Off, Low, Medium, HighSelects
Steering wheelSteering wheel heater: Off, Low, HighSelect

All entity names end with "(Bluetooth)".

Some groups are limited to cars that support them:

  • Sunroof entities need a Teslemetry sunroof cover. Tonneau entities need a Teslemetry tonneau cover.
  • Guest mode entities are added only for vehicles Teslemetry streams.
  • Bioweapon defense entities are added only for cars whose climate Teslemetry polls.
  • Cabin overheat protection temperature is added only for cars that support it.
  • Rear and third-row seat heaters and the seat coolers are added only on cars that have them.

Two commands are only partly available over Bluetooth:

  • Sunroof: there is no Stop button, because the car doesn't accept that command over Bluetooth. Use Vent or Close.
  • Tonneau: it has its own Open, Close and Stop buttons rather than a cover entity.

Behavior

  • The entities are available only while the vehicle is in Bluetooth range. Range is checked every 10 seconds and again before each command.
  • The entities only send commands and show no vehicle state. The numbers and selects always show unknown; the current value, charging state and lock state stay on the Teslemetry entities. Switches become separate on and off buttons for the same reason.
  • The maximum of the charge limit and charging amps numbers follows the car's own maximum from the Teslemetry integration's data. Until that value is known, the maximum is 100 % and 48 A. Target temperature follows the car's available range the same way.
  • Wake sends only the Bluetooth wake signal and never wakes the car through the cloud. The car can take a few more seconds to answer other commands after it wakes.
  • Setting a seat heater, seat cooler or steering wheel heater above Off first turns climate on if Teslemetry's data shows it is off, as Teslemetry's own selects do.
  • Lock and Unlock are buttons rather than a lock entity, so voice assistants won't ask for a confirmation or code. Only enable them if you accept that.

Failures

A Bluetooth-only command never falls back to the cloud. Instead it fails with one of these errors, which will stop an automation unless you add continue_on_error: true or handle it:

  • Not in Bluetooth range: the car isn't reachable over Bluetooth, so the command isn't sent.
  • Bluetooth failure: for example the car is busy, no Bluetooth proxy connection slot is free, or the connection times out. The command may have reached the car before the failure, so check the car's state in Teslemetry before trying again.
  • Command refused: the car received the command and refused it, for example because no charging cable is connected.

If you'd rather a command always get through, use the Teslemetry integration's own entities, which fall back to the cloud.

The source code and issue tracker are on GitHub.