🚘 TeslaMate & Grafana 数据采集与可视化实践
本文是 “Tesla 数据接入全流程” 系列第二篇,聚焦 TeslaMate 自托管数据采集系统的工作原理、部署方案与 Grafana 可视化展示。
阅读完本文,你将能独立搭建一个完整的特斯拉数据记录平台,实现车辆数据的自动采集、存储、分析与展示。
📚 目录
- 📝 前言
- 🏗 一、TeslaMate 整体架构
- 🔄 二、核心工作流程
- 2.1 API 连接与认证
- 2.2 数据采集机制
- 2.3 数据处理与存储
- 2.4 实时数据发布
- ✨ 三、主要功能特性
- ⚙ 四、部署与扩展
- 🖼️ 五、部分效果展示
- 🛡 六、技术优势
- 📌 七、总结与下一步
📝 前言
在第一篇中,我们用 Flask 跑通了 Tesla OAuth2 + PKCE 登录流程,获得了可直接调用 API 的 Access Token。
本篇,我们将把关注点转向一个功能更强大的开源项目 —— TeslaMate,它能帮你自动采集、存储并可视化车辆数据,而且可以本地部署、数据完全自控。
项目地址: https://github.com/teslamate-org/teslamate
🏗 一、TeslaMate 整体架构
TeslaMate 是一款基于 Elixir/Phoenix 框架开发的 自托管 Tesla 数据记录系统,核心技术栈如下:
- 💻 后端:Elixir / Phoenix
- 🗄 数据库:PostgreSQL(存储所有车辆数据)
- 📈 可视化:Grafana(数据展示与分析)
- 📡 消息队列:内置 MQTT Broker(实时数据推送)
架构关系图示意:
🔄 二、核心工作流程
2.1 API 连接与认证 🔑
- TeslaMate 通过 Tesla API 与车辆建立连接
- 用户需要在 TeslaMate 界面中输入 Tesla Token 信息完成身份验证
- 注意:Tesla 正在升级 API 授权方式(需应用专用密钥),未来对开源项目会有一定挑战
2.2 数据采集机制 📡
- 智能轮询:根据车辆状态动态调整采集频率
- 睡眠管理:避免频繁唤醒车辆,减少“吸血鬼电耗”
- 采集数据类型:
- 行驶数据
- 充电记录
- 位置信息
- 电池状态
- 能耗统计
2.3 数据处理与存储 💾
- 所有原始数据存入 PostgreSQL
- 自动地理反向解析(GPS → 地址)
- 支持 地理围栏(自定义位置标记)
2.4 实时数据发布 🚀
- 内置 MQTT Broker,推送近实时数据流
- 可与 Home Assistant、Node-Red、Telegram 等联动
- 能与智能家居系统实现联动控制(例如回家自动开车库门)
✨ 三、主要功能特性
- 📍 高精度行程记录(速度、能耗、海拔变化等)
- 🔋 充电成本追踪(支持电价集成)
- 🚗 多车辆支持(一个账户可管理多辆 Tesla)
- 📥 历史数据导入(支持 TeslaFi / TeslaApiscraper)
⚙ 四、部署与扩展
-
Docker 部署 🐳
官方提供 Docker Compose 配置,一条命令即可运行:services: teslamate: # image: teslamate/teslamate:latest # 官方版 image: ccr.ccs.tencentyun.com/dhuar/teslamate:latest # 国内汉化版 restart: always environment: - ENCRYPTION_KEY=secretkey - DATABASE_USER=teslamate - DATABASE_PASS=teslamate - DATABASE_NAME=teslamate - DATABASE_HOST=database - MQTT_HOST=mosquitto ports: - 4000:4000 # 我建议调试完直接隐藏掉对外开放端口 volumes: - ./import:/opt/app/import cap_drop: - all networks: - tesla-network depends_on: - database - mosquitto database: # image: postgres:17 # 官方版 image: ccr.ccs.tencentyun.com/dhuar/postgres:17 restart: always environment: - POSTGRES_USER=teslamate - POSTGRES_PASSWORD=teslamate - POSTGRES_DB=teslamate volumes: - teslamate-db:/var/lib/postgresql/data networks: - tesla-network grafana: # image: teslamate/grafana:latest # 官方版 image: ccr.ccs.tencentyun.com/dhuar/grafana:latest restart: always environment: - DATABASE_USER=teslamate - DATABASE_PASS=teslamate - DATABASE_NAME=teslamate - DATABASE_HOST=database ports: - 3000:3000 # Grafana 对外端口 volumes: - teslamate-grafana-data:/var/lib/grafana networks: - tesla-network depends_on: - database mosquitto: # image: eclipse-mosquitto:2 # 官方版 image: ccr.ccs.tencentyun.com/dhuar/eclipse-mosquitto:2 restart: always command: mosquitto -c /mosquitto-no-auth.conf volumes: - mosquitto-conf:/mosquitto/config - mosquitto-data:/mosquitto/data networks: - tesla-network volumes: teslamate-db: teslamate-grafana-data: mosquitto-conf: mosquitto-data: networks: tesla-network: driver: bridge
-
API 扩展
社区有 TeslaMateApi 项目,提供 REST API 获取 JSON 格式数据 -
第三方集成
支持 Octopus Agile、Tibber、aWATTar 等能源价格同步
🖼️ 五、部分效果展示
🛡 六、技术优势
- ⚡ 高并发:Elixir Actor 模型轻松管理多车辆数据采集
- 🔄 容错机制:内置重试与错误恢复
- 💤 低功耗:睡眠策略减少电池额外消耗
- ⏱ 实时性:MQTT 实现秒级数据推送
📌 七、总结与下一步
TeslaMate 的理念是 在不影响车辆正常使用的前提下,最大化数据价值。
通过 TeslaMate + Grafana,你可以获得全面、可视化、实时的车辆运行档案。
评论区