侧边栏壁纸
  • 累计撰写 119 篇文章
  • 累计创建 19 个标签
  • 累计收到 2 条评论

目 录CONTENT

文章目录

🚗 Tesla 数据接入全流程(二):👀 TeslaMate & Grafana 采集数据并展示

zero
2025-05-12 / 0 评论 / 0 点赞 / 0 阅读 / 7459 字
温馨提示:
本文最后更新于 2025-08-13,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

🚘 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(实时数据推送)

架构关系图示意:

Tesla 数据接入全流程(二)-图片一.png


🔄 二、核心工作流程

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 等能源价格同步


🖼️ 五、部分效果展示

Tesla 数据接入全流程(二)-图片五.png

Tesla 数据接入全流程(二)-图片八.png
Tesla 数据接入全流程(二)-图片七.png
Tesla 数据接入全流程(二)-图片六.png
Tesla 数据接入全流程(二)-图片九.png
Tesla 数据接入全流程(二)-图片三.png
Tesla 数据接入全流程(二)-图片四.png
Tesla 数据接入全流程(二)-图片二.png

🛡 六、技术优势

  • 高并发:Elixir Actor 模型轻松管理多车辆数据采集
  • 🔄 容错机制:内置重试与错误恢复
  • 💤 低功耗:睡眠策略减少电池额外消耗
  • 实时性:MQTT 实现秒级数据推送

📌 七、总结与下一步

TeslaMate 的理念是 在不影响车辆正常使用的前提下,最大化数据价值
通过 TeslaMate + Grafana,你可以获得全面、可视化、实时的车辆运行档案。

0

评论区