ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

TeslaMate + Grafana 双工具组合:4 步搭建自托管特斯拉数据监控与分析中心

2026/8/17 21:44:01 拓冰建站 浏览量
TeslaMate + Grafana 双工具组合:4 步搭建自托管特斯拉数据监控与分析中心 TeslaMate Grafana 双工具组合4 步搭建自托管特斯拉数据监控与分析中心【免费下载链接】teslamateA self-hosted data logger for your Tesla [main maintainerJakobLichterfeld]项目地址: https://gitcode.com/GitHub_Trending/te/teslamate想不想知道你的特斯拉每一度电去了哪里、电池悄悄衰减了多少、哪次充电最划算这套由 TeslaMate数据采集与 Grafana可视化监控组成的双工具方案能在你自己的服务器上搭建一套完整的数据监控与分析中心让所有行车数据沉淀为看得懂、用得上的图表。本文从零开始手把手带你完成部署并把最常见的坑提前替你踩一遍。一、痛点开场车越开越久数据越攒越糊涂你只能干瞪眼先问你一个问题你的特斯拉屏幕上能显示现在还剩多少电但你能回答过去半年我平均每公里花了多少钱吗能说出电池从新车到现在到底衰减了几个百分点吗绝大多数车主都答不上来。车载大屏擅长展示当下的状态却不擅长沉淀历史。等你开了几千公里、充了几百次电之后这些本该很有价值的数据全都散落在记忆里最后只剩一句感觉续航好像变短了。TeslaMate 和 Grafana 这对组合就是为了解决这个数据越攒越多却看不懂的痛点而生的TeslaMate负责记账它以自托管方式持续从特斯拉云端 API 拉取车辆状态、充电记录、行驶轨迹写入自家的 PostgreSQL 数据库全程低调运行尽量不打扰车辆休眠不产生额外的吸血鬼耗电。Grafana负责做报表它把数据库里沉睡的数据变成一张张图表电池健康、充电成本、能耗效率、行驶热力图……你不需要会写代码装好就能看。上图就是 TeslaMate 的网页监控界面地图、电量、充电状态一目了然。简单说一个负责收集一个负责展示。它们各干各的活却配合得严丝合缝。下面我们先把这套系统的流水线看清楚。二、架构总览一图看懂数据是怎么流起来的在动手部署之前强烈建议你先花两分钟在心里建立一张地图否则后面遇到问题会不知道从哪排查。整套系统的数据流是这样跑的特斯拉云端你的车辆数据电量、位置、充电状态等通过特斯拉官方 API 对外提供。TeslaMate以设定好的频率去敲门拉取数据同时在车辆行驶、充电时提高采样频率记录更精细的数据。PostgreSQL所有历史数据被结构化存储下来按cars车辆、drives行驶、positions位置、charges充电等表组织。Grafana直连数据库把数据渲染成 20 多套开箱即用的仪表盘。MQTT 中转可选TeslaMate 还会把实时状态发布到本地 MQTT 消息队列供 Home Assistant、Node-RED 等自动化平台消费。这是数据库的核心实体关系图读懂它你就能明白各张表之间的关联。部署时会拉起4 个容器服务分工如下服务镜像职责默认端口teslamateteslamate/teslamate:latest数据采集与网页管理端4000databasepostgres:18-trixie历史数据存储内部grafanateslamate/grafana:latest数据可视化平台已预装仪表盘3000mosquittoeclipse-mosquitto:2MQTT 消息代理供自动化联动1883值得说明的是官方打包的 Grafana 镜像已经内置了全套仪表盘模板这也是这套方案上手即用的关键——你不用从零去画图表装完就能看到成果。三、快速上手4 步完成部署半小时跑通整个部署只需要一台常开的机器树莓派 4 以上或任意 x86 小主机都行内存建议 2GB 以上以及 Docker 环境。接下来按这 4 步操作即可。第 1 步准备 docker-compose.yml 配置文件新建一个目录在里面创建docker-compose.yml。下面是精简后的核心配置每一行我都加了注释说明作用services: teslamate: image: teslamate/teslamate:latest # 数据采集主程序 restart: always environment: - ENCRYPTION_KEY换成你的随机密钥 # 用于加密特斯拉 API Token必填 - DATABASE_USERteslamate - DATABASE_PASS换成你的数据库密码 - DATABASE_NAMEteslamate - DATABASE_HOSTdatabase - MQTT_HOSTmosquitto # 指向 MQTT 代理服务 ports: - 4000:4000 # 网页管理端入口 volumes: - ./import:/opt/app/import # 存放历史数据导入文件 database: image: postgres:18-trixie # 数据库存所有历史数据 restart: always environment: - POSTGRES_USERteslamate - POSTGRES_PASSWORD换成你的数据库密码 # 与上面保持一致 - POSTGRES_DBteslamate volumes: - teslamate-db:/var/lib/postgresql # 数据卷持久化备份就靠它 grafana: image: teslamate/grafana:latest # 已内置仪表盘模板的可视化端 restart: always environment: - DATABASE_USERteslamate - DATABASE_PASS换成你的数据库密码 - DATABASE_NAMEteslamate - DATABASE_HOSTdatabase ports: - 3000:3000 # Grafana 访问入口 mosquitto: image: eclipse-mosquitto:2 # MQTT 代理供自动化平台订阅 restart: always command: mosquitto -c /mosquitto-no-auth.conf volumes: - mosquitto-conf:/mosquitto/config - mosquitto-data:/mosquitto/data完整版本见项目仓库里的website/docs/installation/docker.md那里还有卷声明等细节建议以官方文档为准。第 2 步替换两处关键密码这一步千万别跳过。配置文件里有两处必须自己改ENCRYPTION_KEY用于加密你登录后拿到的特斯拉 API Token。如果用了弱密钥或默认值Token 有被破解的风险。数据库密码DATABASE_PASS与POSTGRES_PASSWORD必须改成同一个强密码。密码改好后执行下面的命令启动服务。第一次会拉取镜像需要等几分钟docker compose up -d第 3 步登录特斯拉账户开始采集打开浏览器访问http://你的服务器地址:4000用你的特斯拉账号登录。登录成功后TeslaMate 就会开始拉取数据。你可以顺手在网页里把车辆名称、地理围栏比如把家和公司圈出来配置好这些名字后面会出现在仪表盘上。第 4 步打开 Grafana收获第一张图表访问http://你的服务器地址:3000默认账号admin、密码admin首次登录会提示你设置新密码。登录后你会惊喜地发现——仪表盘已经全部就位切换左侧菜单就能浏览总览、电池健康、充电统计等页面。到这里一套完整的特斯拉数据监控与分析中心就上线了。接下来我们看看它到底能帮你解决哪些实际问题。四、核心玩法三个高频场景让数据立刻为你所用装好只是开始重点是用起来。下面三个场景对应三个最常被问到的仪表盘覆盖了现在状态长期健康省钱策略三类需求。场景一总览仪表盘一屏掌握车现在怎么样这是你每天都会打开的第一个页面。顶部的电量仪表Gauge用颜色说话绿色表示电量在健康区间黄色、红色则提示你电量偏低或偏高。中间的时间序列图展示 24 小时内的电量变化一眼就能看出夜里有没有异常掉电。右侧的状态条则记录了车辆在线、睡眠、充电的切换过程如果某天充电没成功这里会留下痕迹。场景二电池健康仪表盘把感觉衰减变成精确数字很多车主最关心的就是电池衰减但这个话题在车机上几乎无法量化。电池健康仪表盘会追踪**额定续航Rated Range**的变化曲线并与新车时的基准对比直接给出已衰减约 7.5%这样的结论同时展示累计充电循环次数、交直流充电占比等数据。我的建议是别被单次波动吓到续航会随气温起伏拉长到几个月看趋势才是正确的打开方式。有了它你就能用数据判断是不是该去服务中心检测了。场景三充电统计与效率仪表盘把钱花在明处这个仪表盘是我个人最喜欢的一个。它会汇总累计充电量、总花费、单公里成本并用地热力图展示你通常什么时间、在哪个位置充电。配合效率仪表盘里的温度 vs 能耗条形图你很快就会发现同样的路程夏天和冬天的每公里成本可能差出一大截而空调怎么开、胎压够不够都会在能耗数字上忠实反映。换句话说你不必再靠感觉猜哪种开法省电翻一翻图表答案自己会浮出来。五、进阶玩法让数据活起来而不只是好看仪表盘解决的是看进阶玩法解决的是动。TeslaMate 的能力上限远不止可视化下面介绍三个扩展方向按需取用。玩法 AMQTT 实时推送让车辆状态变成自动化触发器TeslaMate 会把车辆实时状态发布到本地 MQTT 代理主题格式统一为teslamate/cars/$car_id/...。以下是几个最常用的主题主题示例值含义teslamate/cars/$car_id/statecharging车辆状态在线 / 睡眠 / 充电teslamate/cars/$car_id/battery_level88当前电量百分比teslamate/cars/$car_id/charge_limit_soc90当前设置的充电上限teslamate/cars/$car_id/geofenceHome车辆当前所在的地理围栏名称teslamate/cars/$car_id/charger_power48.9当前充电功率有了这些实时数据你可以用 Node-RED 或 Home Assistant 搭出类似车辆到家且电量低于 30% 时推送 Telegram 提醒并启动充电桩的自动化场景。社区里已经有现成的 Node-RED 流程示例可以参考。上图是基于 MQTT 主题数据搭建的 Node-RED 仪表盘车辆状态被实时可视化展示。玩法 B历史数据迁移从 TeslaFi 无缝搬家如果你之前用过 TeslaFi 这类第三方记录服务不想让历史数据白白丢掉TeslaMate 提供了 CSV 导入功能。步骤很简单先把 TeslaFi 的数据按月导出为 CSV放进上一步挂载的./import目录即容器内的/opt/app/import然后在网页端的导入页面选择文件即可。项目仓库里还有配套的批量导出脚本和完整的导入测试用例迁移过程有据可查。玩法 CSQL 直连数据库问出任何你想要的问题Grafana 里已经内置了大量查询模板但总有些自定义问题是模板覆盖不到的。这时候可以直接用 psql 连上 PostgreSQL比如查看某次充电的完整过程、统计某段时间的充电频次甚至结合地理围栏分析在公司充电的比例。各张表的结构说明可以在项目的priv/repo/migrations/目录下找到配合数据库信息仪表盘你可以快速摸清数据脉络。六、避坑指南新手最容易踩的 5 个坑以下问题在社区提问里反复出现提前了解能帮你省下大量排查时间。Q1部署后收不到任何车辆数据怎么办先检查服务器能否访问外网TeslaMate 需要与tesla.com通信。其次确认容器是否正常启动docker compose ps查看各服务状态再docker compose logs teslamate看日志报错。Q2Grafana 里一片空白/没有数据最常见原因是数据库密码在teslamate和grafana两个服务里配置不一致导致连接被拒。逐一核对DATABASE_PASS和POSTGRES_PASSWORD是否完全相同。Q3发现车辆一直无法进入睡眠耗电变快了TeslaMate 本身设计为尽量不打扰车辆休眠但如果你改动过POLLING_*系列环境变量如把睡眠时的轮询间隔调得太短就会阻止车辆入睡。除非你明确知道自己在做什么否则保持默认值。Q4想从公网访问直接映射 4000 端口可以吗不建议。官方文档明确提醒直连公网可能让你的特斯拉 API Token 暴露在风险中。推荐的做法是搭配 VPNTailscale、ZeroTier或反向代理Traefik、Nginx加固后再对外提供访问。Q5数据越来越多磁盘会不会很快爆掉位置数据是按采样频率持续写入的数据量确实会随时间增长。建议定期备份数据卷docker compose里的teslamate-db卷并关注数据库信息仪表盘里的占用趋势必要时规划存储扩容。七、写在最后让每一次出行都有据可依从感觉续航变短了到电池已衰减 7.5%从这月电费好高到超充与家充的成本差 0.09 美元/度——这套组合的价值在于把模糊的体感替换成清晰的数字。特斯拉开得越久这套系统积累的数据越有价值而这一切都存储在你的服务器上数据主权完全归自己。如果你想进一步了解实现细节或者准备为项目添砖加瓦可以把源码克隆下来研究git clone https://gitcode.com/GitHub_Trending/te/teslamate仓库里除了完整的部署文档website/docs/还有覆盖各模块的测试代码与多语言支持priv/gettext/社区氛围友好无论你是想报一个 bug、提一个功能建议还是翻译一份文档都欢迎参与。最后留一个问题给你等你用这套系统跑满一个月后最想从数据里看到哪个问题的答案把答案记下来那可能就是你下一步优化的起点。【免费下载链接】teslamateA self-hosted data logger for your Tesla [main maintainerJakobLichterfeld]项目地址: https://gitcode.com/GitHub_Trending/te/teslamate创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考