特斯拉可视化面板TeslaMate搭建

严懿 425 2024-12-30

提车三个月,行驶快1W公里,已经年底了,最近事情没有那么多。此篇介绍下关于TeslaMate的搭建。

TeslaMate 是一个开源的 Tesla 车主数据日志记录和分析平台。它可以帮助 Tesla 车主收集和可视化车辆的详细数据,包括行驶轨迹、充电记录、能耗统计、状态监控等。
项目地址 https://github.com/teslamate-org/teslamate

以下是 TeslaMate 的主要特点和功能:

技术架构

  1. TeslaMate: 核心应用程序,用于连接 Tesla API 和采集数据。
  2. PostgreSQL: 用于存储所有的车辆数据。
  3. Grafana: 提供仪表盘界面,用于展示数据。
  4. Mosquitto: 用于处理实时消息的 MQTT 代理。

主要功能

  1. 实时数据采集:
  • 自动连接 Tesla API,从车辆中获取数据,包括位置、速度、电池状态等。
  • 支持车辆实时状态跟踪,如行驶状态、充电状态、睡眠状态等。
  1. 数据存储和可视化:
  • 使用 PostgreSQL 数据库存储车辆的历史数据。
  • 通过 Grafana 提供图形化的仪表盘,展示充电记录、行驶路线、能耗分析等详细信息。
  1. 行程跟踪:
  • 记录每次行程的起始和结束地点、行驶距离、耗电量以及效率。
  • 可生成详细的地图路径。
  1. 充电监控:
  • 记录每次充电的起止时间、充电量、费用估算等数据。
  • 可分析家用充电站和公共充电站的使用情况。
  1. 多语言支持:
  • TeslaMate 支持多种语言界面,可以满足不同语言用户的需求。
  1. 数据隐私:
  • 车辆数据存储在本地服务器,用户拥有对数据的完全控制权。

界面预览

首页

image

Grafana前端统计概览

shouye

电池健康

image-1735535700994

充电记录

image-1735535754720

固件升级次数

image-1735535783606

行驶地点最多的地方

image-1735535932273

停车休眠耗电状态

image-1735536042575

车辆状态

image-1735536121499

永久行驶路径

image-1735536402049

搭建方法

  1. 安装NGINX用来反代TeslaMate
  2. 安装Docker与Docker-compose
  3. 创建安装目录与项目文件夹
  mkdir -p /data/docker_data/teslamate   创建项目文件夹
  cd /data/docker_data/teslamate         进入这个目录
  vi docker-compose.yml                  创建docker-compose.yml文件
  • 将下面的内容粘贴到docker-compose.yml里面,保存退出
version: "3"

services:
  teslamate:
    image: teslamate/teslamate:latest
    restart: always
    environment:
      - ENCRYPTION_KEY=xxxxxxxxxxxxxxxxxxxxxxx #用一个安全的密钥来加密你的特斯拉API令牌
      - DATABASE_USER=teslamate
      - DATABASE_PASS=xxxxxxx #请输入您的安全数据库密码!
      - DATABASE_NAME=teslamate
      - DATABASE_HOST=database
      - MQTT_HOST=mosquitto
      - TZ=Asia/Shanghai
    ports:
      - 4000:4000
    volumes:
      - ./import:/opt/app/import
    cap_drop:
      - all

  database:
    image: postgres:15
    restart: always
    environment:
      - POSTGRES_USER=teslamate
      - POSTGRES_PASSWORD=xxxxxxx #请输入您的安全数据库密码!
      - POSTGRES_DB=teslamate
    volumes:
      - ./teslamate-db:/var/lib/postgresql/data

  grafana:
    image: teslamate/grafana:latest
    restart: always
    environment:
      - DATABASE_USER=teslamate
      - DATABASE_PASS=xxxxxxx #请输入您的安全数据库密码!
      - DATABASE_NAME=teslamate
      - DATABASE_HOST=database
    ports:
      - 3000:3000
    volumes:
      - ./teslamate-grafana-data:/var/lib/grafana

  mosquitto:
    image: eclipse-mosquitto:2
    restart: always
    command: mosquitto -c /mosquitto-no-auth.conf
    # ports:
    #   - 1883:1883
    volumes:
      - ./mosquitto-conf:/mosquitto/config
      - ./mosquitto-data:/mosquitto/data

volumes:
  teslamate-grafana-data:
  • ENCRYPTION_KEY可以通过 openssl rand -base64 32 这条命令生成
  • DATABASE_PASS以及POSTGRES_PASSWORD按照自己的喜好填入密码
  1. 启动服务
  • 先启动一下,让Docker将(import mosquitto-conf mosquitto-data teslamate-db teslamate-grafana-data)这五个个目录自动创建完成,命令如下
docker-compose up -d 
  • 停止容器并删除,将teslamate-grafana-data赋予777权限,之所以要做这个操作是因为不给777权限就报错。然后在重新启动一次,命令如下
docker-compose down
chmod 777 teslamate-grafana-data
docker-compose up -d 
  1. 令牌设定
  • 如果所有容器都启动成功,在浏览器输入你主机的IP:4000如图,会看到这个TeslaMate的界面
    image-1735538855923

  • 申请令牌key

    1. 到App Store搜索下载Auth for Tesla
      202f407391468a8665b75227676c91d
    2. 下载完打开app选择中国区China然后登录你的Tesla账号,会自动生成刷新令牌与访问令牌,将两个key填入TeslMate,刷新令牌填下面,访问令牌填上面,点击登录以后就能看到车辆的信息了
      aa26e4c451b50e3472f4f973e5837c3
      image-1735539626039
  1. 进入Grafana可视化页面ip:3000,第一次进入用户名密码都是admin,需要修改用户名密码,改语言为中文,主题其他等等,可以按照自己喜好自己设定
  2. 如果发现TeslaMate右上角没有控制台,在TeslaMate设置里面填入TeslaMate与Grafana的url地址
    image-1735541183479
  3. 为了安全尽可能不要将3000(Grafana)4000(TeslaMate)两个端口暴露出来,使用nginx来反向代理这个服务,nginx配置如下
server {
   listen 80;
   server_name tesla.yanyi.love;
   autoindex_localtime on;
   return 307 https://$server_name$request_uri;

}

server {
        listen 443 ssl http2;
        server_name tesla.yanyi.love;
        #client_max_body_size 24m;
        ssl_certificate /etc/nginx/ssl/yanyi.love.cer;
        ssl_certificate_key /etc/nginx/ssl/yanyi.love.key;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#
        ssl_prefer_server_ciphers on;
       
       location / {
	  		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	  		proxy_set_header X-Forwarded-Proto $scheme;
	  		proxy_set_header Host $http_host;
	 	    proxy_set_header X-Real-IP $remote_addr;
	 		proxy_set_header Range $http_range;
	  		proxy_set_header If-Range $http_if_range;
	  		proxy_redirect off;
	 		proxy_pass http://127.0.0.1:3000;
	}



#log
        access_log  /var/log/nginx/tesla.access.log;
        error_log   /var/log/nginx/tesla.error.log;

  1. 在浏览器输入https://tesla.yanyi.love 就可以进入Grafana的统计界面了
    image-1735605951617

以上就是整个搭建流程,其他相关组件如(NGINX,Docker,Docker-compose)自己想办法安装。