> 📌 **项目地址**:[teslamate-org/teslamate](https://github.com/teslamate-org/teslamate) | ⭐ 8,191 颗星 | 🔧 Elixir | 📜 未标注

## 为什么自己动手

特斯拉官方 App 能看基本数据,但你要查电池衰减曲线、每趟电耗对比、或者按家/公司筛选行程——这些做不到。云服务比如 TeslaFi,每年 $50+,还得把账号交给第三方。如果你手头有台 24 小时开机的设备(树莓派、NAS、旧笔记本),自己搭一个更踏实:数据都存在本地的 PostgreSQL,Grafana 画图表,想怎么查就怎么查。

TeslaMate 有 8191 个 GitHub Star,用的是 Elixir 语言。整套东西跑在 Docker 上,对硬件要求不高。我试过在 1GB 内存的树莓派 3B 上也能启动,但 Grafana 查询仪表盘很卡,翻页要等好几秒。换了台 2GB 的旧 NUC 之后,一直稳定跑了大半年。

## 架构:四个组件,分工清楚

TeslaMate 由四个容器组成:

– **Elixir 主程序**:负责轮询 Tesla API,拿回车辆状态,写入数据库。Elixir 的并发能力不错,多辆车同时轮询也不卡。它有一个休眠策略,车子停着不动的时候自动降低请求频率,不会把车唤醒——所以不会增加“吸血鬼耗电”。
– **PostgreSQL**:存所有原始数据。行驶、充电、位置、电量等。你可以直接写 SQL 做深度分析,比如算某个月的总充电费用。
– **Grafana**:预置了十几个仪表盘(电池健康、充电统计、驾驶详情等)。你也可以自己拖面板查 SQL,自由度很大。
– **MQTT Broker**:把车辆状态(比如电量、位置、是否在充电)发布到本地 MQTT 主题。Home Assistant、Node-RED、Telegram 机器人直接订阅,就能做自动化。

这套架构的好处是,每个组件都可以单独扩展或替换。比如你已经有自己的 MQTT Broker,可以把 TeslaMate 的 MQTT 配置指向它,不用再起新的。

## 部署:三分钟上线,但必须从官方源

官方推荐用 Docker Compose。我做了一遍,流程很简单:

1. 创建目录,下载官方的 `docker-compose.yml` 和 `.env` 模板(从 `github.com/teslamate-org/teslamate` 仓库获取)。
2. 编辑 `.env`:填特斯拉账号邮箱和密码(注意:授权走 OAuth,密码不会明文存到 TeslaMate),设置 MQTT 和 Grafana 的管理员密码。
3. 执行 `docker compose up -d`,等待镜像下载完成。

启动后浏览器访问 `http://你的IP:4000`,用特斯拉账号 OAuth 授权就行了。我用的旧 NUC,从零到看到数据大概花了 8 分钟。

**关键提醒**:README 开头用红色框写了 Security Warning,强调只能从官方源获取 TeslaMate。有人在 App Store 和网站上用 TeslaMate 名字搞仿冒应用,偷账号凭证。认准两个官方地址:
– 仓库:`github.com/teslamate-org/teslamate`
– 文档:`docs.teslamate.org`

## 功能亮点:不只是记录数据

### 高精度驾驶记录
每次启动到停车,速度、功率、海拔、路径都记。Grafana 的 Drive Details 仪表盘能看到单趟的速度曲线和能耗折线。我每周会看一眼,看看哪次急加速太多导致电耗过高。

### 自动地址解析
不需要手动标注每次充电地点。系统通过反向地理编码自动加地址名称。比如“超充 – 商场地下二层”这样的名字,一目了然。

### 地理围栏
自定义家、公司、商场等区域。行程会自动归类。我设了家和公司,每天通勤电耗自动统计,月末能算出上下班花了多少度电。

### 充电成本跟踪
在 `.env` 里配置电价后,每次充电的花费自动算好。支持不同时段电价(比如峰谷电价)。还支持从 TeslaFi 和 tesla-apiscraper 导入历史数据。

### 主题模式
亮色/暗色/跟随系统。没什么大用,但看着舒服。

## Grafana 仪表盘:哪些最实用

README 列出了十几个仪表盘,官方文档里有截图预览。我日常用最多的几个:

– **Battery Health**:电池容量衰减曲线。能看出当前最大可用容量和出厂比下降了多少。我跑了两年,掉了大约 5%。
– **Charges (Energy added / used)**:每次充电的电量和费用列表。配合地理围栏,能看到家里充电和超充的花费对比。
– **Charge Details**:单次充电的电压、温度、功率曲线。可以用来看超充桩的功率是否被限制。
– **Drive Details**:单趟驾驶的速度、海拔、能耗折线。我用来分析高速 vs 市区电耗差异。
– **Efficiency**:净能耗 vs 总能耗,包括空调、哨兵模式等额外消耗。夏天开空调哨兵,总能耗比净能耗高 20% 以上,这个面板能直接看出来。

如果预置的不够用,直接在 Grafana 里拖 SQL 面板查 PostgreSQL。比如“计算过去一个月每天的平均速度”这种需求,写个 SELECT AVG(speed) … GROUP BY date 就行。

## 和其他方案对比

| 维度 | TeslaMate | TeslaFi | tesla-apiscraper |
|—|—|—|—|
| 服务器归属 | 自己 | 第三方云 | 自己 |
| 数据隐私 | 高,不出本地网络 | 低,账号密码和车数据都在云上 | 中,无可视化 |
| 界面 | Grafana(可自定义) | 固定 Web 界面 | 无,需自己搭 |
| 费用 | 免费(电费忽略) | 年费约 $54(按季度或年) | 免费 |
| 集成方式 | MQTT 直接对接 HA/Node-RED | 提供 API,但需要自己开发 | 无 |
| 多车支持 | 一个账号下多辆车自动显示 | 同样支持 | 需要单独配置 |

对我来说,MQTT 是最实用的特性。我写了个简单自动化:当充电完成(MQTT 消息 `teslamate/car/1/charging_status` 变成 `complete`)时,通过智能插座切断充电枪电源,防止过充。如果接 Home Assistant,还能实现“离家自动开启哨兵模式”“回家前预开空调”——这些全靠本地 MQTT,不需要连外网。

## 需要注意的事

– **API 限流**:Tesla API 有频率限制。TeslaMate 的休眠策略让车尽快进入睡眠,实测半年没触发过限流。如果你轮询太频繁(比如自己改了配置),可能会被临时封 IP,不过睡一觉就能恢复。
– **硬件要求**:官方建议至少 2GB 内存。我试过 1GB 的树莓派,Grafana 能启动但查仪表盘会卡。旧 NUC 或低功耗 x86 机器(2GB 以上)比较稳。数据库目录建议放在 SSD 上,机械硬盘在大量数据写入时会有明显延迟。
– **许可证**:MIT。你可以改代码甚至商用,但不要用原项目名发布,以免和官方混淆。

最后再重复一次:不要从任何非官方渠道获取安装包或手机 App。GitHub 仓库和官方文档是唯一可信来源。

这篇文章对你有帮助吗?

发表回复