内容提要
本文介绍自托管特斯拉数据记录器TeslaMate,可分析充电、续航、里程等数据。它用Elixir编写,数据存于Postgres,通过Grafana可视化,并经MQTT集成。文章讲解用Docker Compose搭建、反向代理配置HTTPS、获取特斯拉令牌及更新卸载方法,还解答耗电等常见问题。
延伸解读
部署前的关键准备
文章建议使用非大陆服务器,如腾讯云轻量应用服务器(选非大陆地区)、Racknerd美国西部或莱卡云香港/美国CN2 GIA。系统推荐Debian 11或Ubuntu,需安装Docker和Docker Compose。非必需但建议准备域名并解析,可选安装Nginx Proxy Manager或宝塔面板。服务器配置1核1G即可。
安全配置要点
部署时需修改docker-compose.yml中的ENCRYPTION_KEY、DATABASE_PASS和POSTGRES_PASSWORD,密码等号后不能有空格。通过Nginx Proxy Manager反向代理时,务必开启Websockets Support,否则首次登录输入令牌会一直转圈。建议为网页添加HTTP Basic Auth,防止未授权访问。
数据记录与耗电说明
TeslaMate使用官方streaming API,不会无故唤醒车辆导致额外耗电。但若同时使用其他数据记录器(如TeslaFi),可能因其他记录器保持车辆唤醒而影响睡眠。对于MCU1车辆(2018年3月前生产的Model S/X),需在车机设置中开启节能、关闭始终连接和车舱过热保护,以便车辆在15分钟后进入睡眠。
更新与卸载方法
更新TeslaMate时,进入安装目录执行docker-compose pull和docker-compose up -d,然后运行docker image prune清理旧镜像。卸载时先docker-compose down停止容器,再删除安装目录即可完全清理。注意不要使用docker-compose stop,因为up -d会自动停止并重建容器。
Q&A
TeslaMate 是什么?它主要能做什么?
TeslaMate 是一个自托管的特斯拉数据记录器,可以全面分析特斯拉充电、续航、行驶里程等数据。它使用 Elixir 编写,数据存储在 Postgres 数据库中,通过 Grafana 进行可视化和数据分析,并将车辆数据发布到本地 MQTT 代理。
搭建 TeslaMate 需要哪些环境准备?
需要一台服务器(建议非大陆、线路较好的机器,1核1G即可),系统推荐 Debian 11 或 Ubuntu,安装好 Docker 和 Docker-compose。非必需但建议准备域名并解析到服务器,可选安装 Nginx Proxy Manager 或宝塔面板用于反向代理。
如何用 Docker Compose 部署 TeslaMate?
创建安装目录 /root/data/docker_data/teslamate,编写 docker-compose.yml 文件,包含 teslamate、database(Postgres)、grafana、mosquitto 四个服务。注意修改 ENCRYPTION_KEY、DATABASE_PASS 和 POSTGRES_PASSWORD 为安全值。然后运行 docker-compose up -d 启动。
如何为 TeslaMate 配置 HTTPS 和反向代理?
可以使用 Nginx Proxy Manager 或宝塔面板进行反向代理。以 NPM 为例,添加代理主机,填写域名、服务器 IP 和端口(4000 和 3000),务必开启 Websockets Support,否则登录时会一直转圈。宝塔面板则新建纯静态站点,修改 Nginx 配置添加 proxy_pass 等指令。
如何获取特斯拉的令牌(Token)?
首次登录 TeslaMate 后需要令牌和刷新令牌。可以下载对应的 App(Mac 可在 App Store 下载,Windows/Linux 可从 GitHub 下载 tesla_auth),登录特斯拉账号后获取。具体可参考官方文档:https://docs.teslamate.org/docs/faq/#how-to-generate-your-own-tokens。
TeslaMate 会不会频繁唤醒车机导致耗电增加?
不会。TeslaMate 使用官方 streaming API,不会无故唤醒车辆或增加耗电,可以放心使用。
为什么 Grafana 中没有显示消耗值?
特斯拉 API 没有返回行程的消耗值,TeslaMate 会根据记录的充电数据估算消耗。首次估算需要至少两次充电会话,且每次充电需超过 10 分钟且电量状态少于 95%。每次未来的充电会话都会提高估算准确性,并追溯应用到所有数据。
如何更新或卸载 TeslaMate?
更新:进入安装目录,运行 docker-compose pull 和 docker-compose up -d,然后 docker image prune 清理旧镜像。卸载:进入安装目录,运行 docker-compose down,然后删除整个目录 rm -rf /root/data/docker_data/teslamate。