TeslaMate 完整部署教程:五分钟搭建特斯拉数据监控中心
【免费下载链接】teslamateA self-hosted data logger for your Tesla 🚘 [main maintainer=@JakobLichterfeld]项目地址: https://gitcode.com/GitHub_Trending/te/teslamate
月底翻账单发现电费比上个月多了两百块,却说不出到底哪一次充电最贵;或者你想知道某次长途驾驶真实耗了多少电,只能凭感觉回忆。TeslaMate 是一个自托管的特斯拉数据记录器:它持续采集车辆的驾驶与充电数据,存入 PostgreSQL,再用 Grafana 可视化。一次 TeslaMate 部署,在你家里的 NAS 或任何一台常开的 Linux 机器上只需要五分钟。
① 架构一张图:先看懂它怎么跑
整条数据链路一句话能说清:
- 采集:teslamate 容器(Elixir 编写)通过特斯拉官方 API 流式订阅 + 轮询,秒级跟踪位置、电量、充电、车门等状态;
- 存储:Postgres 把一切持久化,drives、positions、charges 等表按时间累积;
- 展示:Grafana 容器自带 20 多块预配置面板,Overview、Drive Details、Charging Stats 开箱即用;
- 通知:Mosquitto MQTT 代理实时发布车辆数据,可接 Home Assistant、Node-RED 等。
| 项目 | 最低要求 |
|---|---|
| CPU | 2 核 |
| 内存 | 2GB(1GB 能装,官方建议 2GB) |
| 存储 | 约 20GB 可用(长期数据积累) |
| 系统 | 常开设备 + Docker + Compose v2(x86_64 / ARM64 均可) |
| 网络 | 可访问 tesla.com(大陆车辆改用 tesla.cn,见下文) |
② 五分钟跑起来:最小可用部署
第一步,生成两个密钥。一个是 API 令牌的加密密钥,丢了旧令牌就解不开,所以要用强随机值;另一个是数据库密码:
openssl rand -base64 32 # 作为 ENCRYPTION_KEY openssl rand -base64 16 # 作为数据库密码第二步,写docker-compose.yml。它定义了 teslamate、database、grafana、mosquitto 四个容器,关键点是容器之间用服务名(database、mosquitto)而不是 IP 互联:
services: teslamate: image: teslamate/teslamate:latest environment: - ENCRYPTION_KEY=${ENCRYPTION_KEY} - DATABASE_USER=teslamate - DATABASE_PASS=${DATABASE_PASSWORD} - DATABASE_NAME=teslamate - DATABASE_HOST=database - MQTT_HOST=mosquitto ports: - "4000:4000" database: image: postgres:18-trixie environment: - POSTGRES_USER=teslamate - POSTGRES_PASSWORD=${DATABASE_PASSWORD} - POSTGRES_DB=teslamate volumes: - teslamate-db:/var/lib/postgresql完整文件参考 website/docs/installation/docker.md,里面还差 grafana(对外 3000 端口)、mosquitto 两个服务以及顶层 volumes 声明,照抄即可。
第三步,启动并验证。这一步别急,等个十秒再看日志:
docker compose up -d docker compose logs -f teslamate日志出现开始连接车辆的记录后,打开http://你的IP:4000。TeslaMate 不能自己注册令牌(特斯拉的授权流程变太快),需要先用 tesla_auth 之类的第三方工具生成 access token 和 refresh token,在登录页填入,车辆数据流就接上了。Grafana 在:3000打开,首次登录 admin/admin,进手第一件事是改密码。
③ 功能地图:它到底能帮你算什么
驾驶行为
- Drive Details 面板:每次驾驶的轨迹、速度、海拔、功率,回答"那趟路我到底开多快、爬坡花了多少电";
- Efficiency 面板:净/毛能耗随时间变化,回答"冬天能耗是不是真的高了、高了多少";
- Mileage 面板:累计里程与按日统计,方便盯保养周期。
充电成本
- Charges 面板:每次充进多少电、用了多少电,回答"这次充电值不值";
- Charging Stats 面板:单次充电成本统计,支持按地点设置电价,月底的账单疑问能定位到具体某一次;
- Vampire Drain 面板:停放时的电池流失,回答"车在家停两天白烧了多少电"。
远程监控
- States 面板:车何时在线、何时睡着、何时在充电,排查"数据怎么断了"就看它;
- Geofences:自定义"家""公司"等地点,既是"按地点算充电成本"的基础,也方便触发自动化。
④ 避坑清单:部署后最常踩的 5 个坑
坑一:记录突然停了,日志出现认证错误
现象:数据正常录了几天后突然断流。原因:特斯拉令牌有有效期,access 和 refresh token 都会过期。修复:用 tesla_auth 重新生成一对令牌,登录页重新填入即可,已录数据不受影响。先确认原因:
docker compose logs -f teslamate坑二:大陆用户拉不到数据
现象:日志里对 tesla.com 的请求超时。原因:默认指向海外域名,大陆车辆应走 tesla.cn 域名。修复:给 teslamate 服务加一个环境变量:
- TESLA_API_HOST=https://owner-api.vn.cloud.tesla.cn完整变量表见 website/docs/configuration/environment_variables.md。
坑三:容器反复重启,内存不够
现象:database 或 teslamate 容器起不来、一直重启。原因:官方最低要求 1GB 内存,512MB 的小主机连 Postgres 迁移都跑不完。修复:把主机或同机其他容器挪开,腾出至少 2GB 后重新拉起:
docker compose up -d坑四:停放期间数据"缺"了十几分钟
现象:States 面板显示白天停放有一段空白。原因:轮询模式下,车闲置 3 分钟后 TeslaMate 会挂起轮询、让车尽快睡觉,这 15 分钟内的活动天然采不到——这是"不额外唤醒车辆耗电"和"数据完整"之间的取舍。修复:确认流式连接是否稳定,稳定时缺口的概率会小很多:
docker compose logs teslamate | grep -i stream坑五:升级 latest 起不来了
现象:pull到最新版后服务起不来。原因:大版本之间可能要求按顺序做数据库迁移,跳版本会卡住。修复:升级前先备份,失败就把镜像 tag 改回之前可用的版本号再启动:
docker compose exec -T database pg_dump -U teslamate teslamate > ./teslamate.bck docker compose pull && docker compose up -d⑤ 玩出花样:进阶玩法与二次开发
玩法一:Home Assistant 自动发现 + 到家提醒。新版支持 HA 的 MQTT 设备发现,不用再手工维护几百行传感器 YAML,两个环境变量就够:
environment: - MQTT_HOME_ASSISTANT_DISCOVERY=true - MQTT_HOME_ASSISTANT_DISCOVERY_URL=http://<你的IP>:4000/启用后电量、充电状态、门窗传感器会自己出现在 HA 里;再串一个 Node-RED 流程,"充电完成 → 发一条消息到手机"十分钟就能搭好(官方文档带现成的 Telegram 示例流程)。可用 topic 全量清单在 website/docs/integrations/mqtt.md。
玩法二:自己的年度能耗报告。内置的 20 多块面板 JSON 全部开放在 grafana/dashboards/ 目录,可以直接改,也可以绕过面板直接在 Postgres 里写查询:
SELECT date_trunc('month', start_date) AS month, round(sum(energy_used)::numeric, 1) AS used_kwh FROM charges WHERE start_date >= now() - interval '1 year' GROUP BY 1 ORDER BY 1;把结果丢进自建 Grafana 面板,就是你要的年度能耗报告。积累几个月后打开 Visited 面板,一整年的驾驶轨迹会画成一张地图,这大概是这套系统最有成就感的画面。
⑥ 运维备忘:更新、备份与数据安全
每秒都在往 Postgres 里写数据,这个卷是你唯一的"硬资产",升级前务必先备份:
# 备份(可加 crontab;-T 参数是必须的) docker compose exec -T database pg_dump -U teslamate teslamate > ./teslamate.bck # 升级 docker compose pull && docker compose up -d再提醒一句:4000(Web)和 3000(Grafana)两个端口默认只绑内网。要远程访问就走 VPN / Tailscale 或加反代,别把登录页直接暴露公网——那里面存着你的特斯拉令牌。
⑦ 写在最后
TeslaMate 把车变成了一份持续累积的数据资产:驾驶、充电、休眠状态全都有据可查,而部署成本只是一个 compose 文件。按第二节的五分钟流程先把数据接上,一周后你的 Grafana 会开始回答那些"凭感觉"回答不了的问题。更多环境变量、导入历史数据、NixOS 安装的细节,去官方文档 docs.teslamate.org 和开源社区里找。
【免费下载链接】teslamateA self-hosted data logger for your Tesla 🚘 [main maintainer=@JakobLichterfeld]项目地址: https://gitcode.com/GitHub_Trending/te/teslamate
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考