Tesla Fleet

Tesla Fleet 集成可通过 Tesla Fleet API 让你控制 Tesla 车辆和能源站点。

先决条件

你需要配置开发者凭据并托管公钥文件,Home Assistant 才能与你的 Tesla 账户通信。

Warning

此集成当前不支持中国区。

Tesla 开发者应用

创建 Tesla 开发者应用,将 Home Assistant 连接到 Tesla Fleet API。

  1. 创建开发者应用:

  2. 填写应用信息:

    • 应用名称:用于标识该应用
    • 描述:简要说明你的集成用途
    • Usage Purpose:说明 API 使用目的(例如 Home Assistant
  3. 配置客户端信息:

    • OAuth Grant Type:选择 Authorization Code and Machine-to-Machine
    • Allowed Origin URL(s):填写你的域名 URL,例如 https://yourdomain.com/
    • Allowed Redirect URI:填写 https://my.home-assistant.io/redirect/oauth
    • Allowed Returned URL(s):留空(非必填)
  4. 选择所需 API scope:

    • Vehicle Information(车辆必需)
    • Vehicle Location(推荐)
    • Vehicle Commands(推荐)
    • Energy Product Information(能源产品必需)
    • Energy Product Settings(推荐)
  5. 设置计费(可选):

    • Tesla 为个人使用提供每月 10 美元额度
    • 你可以稍后再补充计费信息
  6. 保存凭据:

    • 创建应用后,前往 View Details > Credentials & APIs
    • 记录 Client IDClient Secret,配置 Home Assistant 时会用到
配置

此集成可通过 UI 配置。前往 设置 > 设备与服务 添加。

  1. 添加应用凭据

    • 输入 Tesla 开发者应用中的 Client ID 和 Client Secret
    • 如果你已配置且仅配置了一个 Tesla Fleet application credential,将跳过此步骤
  2. 使用 Tesla 账户认证:

    • 你将被重定向到 Tesla 登录页
    • 输入 Tesla 账户凭据
    • 在授权页选择 Select All,然后选择 Allow,授予之前选择的所有 scope
  3. 跳回 Home Assistant:

    • 确认你要 Link account to Home Assistant
  4. 输入域名

    • 输入你计划托管公钥的域名
    • 该域名应与 origin 域名相同或为其子域名,并且必须使用有效的 SSL 证书
  5. 注册公钥

    • 将显示出的公钥上传到你在步骤 4 输入的域名路径:.well-known/appspecific/com.tesla.3p.public-key.pem
  6. 安装虚拟钥匙

    • 使用手机扫描二维码,或输入地址,在 Tesla App 中将公钥安装到你的车辆
    • 该步骤需要对每辆车重复执行,2021 年前生产的 Model S 和 Model X 除外

使用 NGINX app 托管(可选)

  1. 创建 NGINX 配置:

    echo 'location /.well-known/appspecific/com.tesla.3p.public-key.pem {
    root /share/tesla;
    }' > /share/nginx_proxy_default_tesla.conf
  2. 将设置流程中显示的公钥复制到 /share/tesla

  3. 配置 NGINX app:

    • 前往 Settings > Apps > NGINX Home Assistant SSL proxy > Configuration
    • customize.activefalse 改为 true
    • config.default 保持默认值 nginx_proxy_default*.conf
  4. 重启 NGINX app,并确认可通过以下地址访问公钥: https://yourdomain.com/.well-known/appspecific/com.tesla.3p.public-key.pem

数据更新

当车辆处于唤醒状态时,此集成会每 10 分钟 polls 一次。这个频率可让多数用户保持在 Tesla 每月 10 美元额度内,你可以在 Tesla Developer Dashboard 监控用量。能源产品 API 免费。

如果你需要不同的轮询间隔,可以定义自定义轮询间隔

指令签名

部分车辆(包括 2023 年末以来生产的所有车辆)要求使用私钥对车辆指令签名。如果需要签名但密钥未正确配置,所有车辆实体动作都会失败并报错。

你必须访问 https://tesla.com/_ak/YOUR_DOMAIN 并按 Tesla App 指引,将公钥添加到每辆需要签名的车辆上。 如果你使用 iPhone,可能需要使用 Safari 打开该页面完成配置。

更多信息请参阅 Tesla Fleet API vehicle commands documentation

生成自己的密钥对

此集成会自动在 config/tesla_fleet.key 生成私钥。你也可以在配置集成前替换为自己的密钥(例如来自另一个 Home Assistant 实例的密钥)。如需自行生成密钥对,请参考 Tesla 文档

实体

以下是 Tesla Fleet 集成可提供的实体。并非所有实体默认启用,也并非所有数值始终可用。

车辆

DomainNameEnabled
Binary sensorBattery heaterNo
Binary sensorCabin overheat protection actively coolingNo
Binary sensorCharge cableYes
Binary sensorCharger has multiple phasesNo
Binary sensorDashcamNo
Binary sensorFront driver doorYes
Binary sensorFront driver windowYes
Binary sensorFront passenger doorYes
Binary sensorFront passenger windowYes
Binary sensorPreconditioning enabledNo
Binary sensorPreconditioningNo
Binary sensorRear driver doorYes
Binary sensorRear driver windowYes
Binary sensorRear passenger doorYes
Binary sensorRear passenger windowYes
Binary sensorScheduled charging pendingNo
Binary sensorStatusYes
Binary sensorTire pressure warning front leftNo
Binary sensorTire pressure warning front rightNo
Binary sensorTire pressure warning rear leftNo
Binary sensorTire pressure warning rear rightNo
Binary sensorTrip chargingNo
Binary sensorUser presentYes
ButtonFlash lightsYes
ButtonHomeLinkYes
ButtonHonk hornYes
ButtonKeyless drivingYes
ButtonPlay fartYes
ButtonWakeYes
ClimateCabin overheat protectionNo
ClimateClimateYes
CoverCharge port doorYes
CoverFrunkYes
CoverSunroofNo
CoverTrunkYes
CoverVent windowsYes
Device trackerLocationYes
Device trackerRouteYes
LockCharge cable lockYes
LockLockYes
Media playerMedia playerYes
NumberCharge currentYes
NumberCharge limitYes
SelectSeat heater front leftYes
SelectSeat heater front rightYes
SelectSeat heater rear centerNo
SelectSeat heater rear leftNo
SelectSeat heater rear rightNo
SelectSeat heater third row leftNo
SelectSeat heater third row rightNo
SelectSteering wheel heaterYes
SensorBattery levelYes
SensorBattery rangeYes
SensorCharge cableNo
SensorCharge energy addedYes
SensorCharge rateYes
SensorCharger currentYes
SensorCharger powerYes
SensorCharger voltageYes
SensorChargingYes
SensorDistance to arrivalYes
SensorDriver temperature settingNo
SensorEstimate battery rangeNo
SensorFast charger typeNo
SensorIdeal battery rangeNo
SensorInside temperatureYes
SensorOdometerNo
SensorOutside temperatureYes
SensorPassenger temperature settingNo
SensorPowerNo
SensorShift stateNo
SensorSpeedNo
SensorState of charge at arrivalNo
SensorTime to arrivalYes
SensorTime to full chargeYes
SensorTire pressure front leftNo
SensorTire pressure front rightNo
SensorTire pressure rear leftNo
SensorTire pressure rear rightNo
SensorTraffic delayNo
SensorUsable battery levelNo
SwitchAuto seat climate leftYes
SwitchAuto seat climate rightYes
SwitchAuto steering wheel heaterYes
SwitchChargeYes
SwitchDefrostYes
SwitchSentry modeYes
UpdateUpdateYes

能源站点

DomainNameEnabled
Binary sensorBackup capableYes
Binary sensorGrid services activeYes
Binary sensorGrid services enabledYes
Binary sensorStorm watch activeYes
NumberBackup reserveYes
NumberOff grid reserveYes
SelectAllow exportYes
SelectOperation modeYes
SensorBattery powerYes
SensorConsumer imported from batteryNo
SensorConsumer imported from generatorNo
SensorConsumer imported from gridNo
SensorConsumer imported from solarNo
SensorEnergy leftYes
SensorGenerator exportedYes
SensorGenerator powerNo
SensorGrid exportedYes
SensorGrid exported from batteryNo
SensorGrid exported from generatorNo
SensorGrid exported from solarNo
SensorGrid importedNo
SensorGrid powerYes
SensorGrid services exportedNo
SensorGrid services importedNo
SensorGrid services powerYes
SensorHome usageYes
SensorIsland statusYes
SensorLoad powerYes
SensorPercentage chargedYes
SensorSolar exportedNo
SensorSolar generatedYes
SensorSolar powerYes
SensorTotal pack energyNo
SensorVersionYes
SensorVPP backup reserveYes
SwitchAllow charging from gridYes
SwitchStorm watchYes

壁挂充电器

DomainNameEnabled
SensorFault stateNo
SensorPowerYes
SensorStateYes
SensorVehicleYes

车辆休眠

持续 API 轮询会阻止多数 2021 年前生产的 Model S 和 Model X 进入休眠。此集成会在这些车辆无活动后自动停止轮询 15 分钟。你可以调用 homeassistant.update_entity 动作强制轮询,这会重置计时器。

Note

除上述车型外,其他车型通常不会出现无法休眠的问题。

删除集成

To remove an integration instance from Home Assistant

  1. Go to Settings > Devices & services and select the integration card.
  2. From the list of devices, select the integration instance you want to remove.
  3. Next to the entry, select the three-dot menu. Then, select Delete.

故障排除

  • 设置报错:确认你的公钥可通过正确 URL 访问,并已完成所有 Tesla 注册步骤
  • 命令失败:确认 tesla_fleet.key 存在于 Home Assistant 配置目录,并通过 https://tesla.com/_ak/YOUR_DOMAIN 将公钥添加到车辆
  • 集成停止工作:在 Settings > Devices & services > Tesla Fleet 使用重新配置选项
  • Access to this resource is not authorized:检查 Tesla Developer Dashboard 用量是否超限,并在需要时补充计费信息。在部分国家,Fart(远程 boombox)命令因法律限制也会触发该错误

如果你的凭据有问题,可以在 Application Credentials 界面删除这些凭据。