如何将 Tesla 连接到 Home Assistant 而不会在夜间耗尽电池
一段时间前,官方 Tesla 集成悄然从标准 Home Assistant 发行版中消失了。原因很平常:制造商再次调整了身份验证方式,API 出现故障,在当前状态下维护官方连接器对 HA 核心团队来说成本过高。用户面临一个选择:要么仅通过手机管理车辆,要么拼凑各种变通方案。
幸运的是,社区很快接手了这个项目。alandtse/tesla 仓库以旧的官方代码为基础,重新设计了身份验证逻辑,成为电动汽车车主和 Powerwall 家用电池用户的主要自定义集成方案。
为什么要将电动汽车纳入智能家居
Tesla 有一个方便的官方应用,看起来似乎没必要。为什么还要费心设置智能家居服务器呢?
主要原因是跨不同系统的自动化。你可以将驾驶室预热与卧室闹钟联动,当车辆接近时自动打开车库门,或者严格在非高峰电价时段开始充电。
该集成在 Home Assistant 中创建了数十个实体。以下是用户通常使用的四个领域:
- 气候和舒适控制。启动空调、设置精确温度、启用座椅和方向盘加热、激活露营模式或宠物模式。
- 车身和锁控制。打开后备箱、前备箱或充电口盖,关闭车窗并锁门。
- 遥测数据监控。胎压、充电水平、预计充电完成时间、车内和车外温度、当前坐标。
- 家庭能源。如果你有 Tesla 太阳能电池板或 Powerwall 电池,集成会收集电网电力流向、家庭用电量和当前储备的数据。
主要困境:待机耗电与实时数据
Tesla 车辆在闲置时会进入休眠状态,以节省牵引电池和 12V 辅助电池的电量。如果你每分钟向车辆发送 HTTP 请求,车载计算机根本不会进入休眠模式。在这种"活动"状态下持续 24 小时,电池很容易无缘无故地损失 2-4% 的容量。社区巧妙地将这种现象称为待机耗电(vampire drain)。
集成开发者谨慎地处理了这个问题:
默认轮询间隔设置为 660 秒(11 分钟)。这个时长并非随意选择:大多数车型需要 11 到 15 分钟的安静才能进入深度休眠。当集成轮询 Tesla 服务器时,它首先检查状态。如果车辆处于休眠状态,数据请求会被取消,车辆继续安静地休眠。
如果你需要在出发前立即获取数据,可以使用自动化唤醒车辆。例如,在上班前 10 分钟发送一个无害的中控锁闭锁命令。车辆会唤醒、执行命令,同时更新 Home Assistant 中的所有传感器。
对于已经在运行 TeslaMate 的用户,有一个特别的功能:集成可以直接从本地 MQTT broker 拉取最新的遥测数据,而无需向云端发送额外请求。
配置细节和 Tesla Fleet API
设置需要一些努力。你无法输入熟悉的用户名和密码:Tesla 需要刷新令牌(refresh token)。你可以通过 Android、iOS 的第三方工具或 Chromium 浏览器的专用扩展程序获取。
第二个复杂问题更新一些。Tesla 关闭了大多数车辆的旧 Owner API,并将控制权转移到了新的 Fleet API,该 API 使用端到端加密命令。通过云端读取遥测数据仍然很简单,但发送控制信号(打开后备箱、启用加热)现在需要一个单独的代理服务器。
在 Home Assistant 生态系统中,这个任务由 Tesla HTTP Proxy 插件处理。你需要配置 DuckDNS、Nginx 和证书,以便来自服务器的指令能够被正确地用密钥签名并被 Tesla 服务器接受。项目 wiki 中的说明很详细,但基本的网络管理技能肯定会派上用场。
如何安装组件
最快的安装方式是通过 HACS:
- 打开 HACS,进入集成部分,添加自定义仓库
https://github.com/alandtse/tesla。 - 下载组件并重启 Home Assistant 服务器。
- 进入"设置" -> "设备和服务",点击"添加集成",找到 Tesla Custom Integration。
- 粘贴预先生成的令牌,必要时指定本地代理地址。
值得安装吗
如果你有一辆 Tesla 并且已经部署了 Home Assistant,实际上没有其他替代方案。该仓库由社区积极维护,能够快速响应 Tesla 云的变化,并且谨慎处理车辆电池。
项目在初始授权和代理设置阶段需要一些耐心。但一旦你将智能家居场景与气候控制和电动汽车充电关联起来,你就不会再想回到通过官方应用手动管理了。
相关项目