提车三个月,行驶快1W公里,已经年底了,最近事情没有那么多。此篇介绍下关于TeslaMate的搭建。
TeslaMate 是一个开源的 Tesla 车主数据日志记录和分析平台。它可以帮助 Tesla 车主收集和可视化车辆的详细数据,包括行驶轨迹、充电记录、能耗统计、状态监控等。
项目地址 https://github.com/teslamate-org/teslamate
以下是 TeslaMate 的主要特点和功能:
技术架构
- TeslaMate: 核心应用程序,用于连接 Tesla API 和采集数据。
- PostgreSQL: 用于存储所有的车辆数据。
- Grafana: 提供仪表盘界面,用于展示数据。
- Mosquitto: 用于处理实时消息的 MQTT 代理。
主要功能
- 实时数据采集:
- 自动连接 Tesla API,从车辆中获取数据,包括位置、速度、电池状态等。
- 支持车辆实时状态跟踪,如行驶状态、充电状态、睡眠状态等。
- 数据存储和可视化:
- 使用 PostgreSQL 数据库存储车辆的历史数据。
- 通过 Grafana 提供图形化的仪表盘,展示充电记录、行驶路线、能耗分析等详细信息。
- 行程跟踪:
- 记录每次行程的起始和结束地点、行驶距离、耗电量以及效率。
- 可生成详细的地图路径。
- 充电监控:
- 记录每次充电的起止时间、充电量、费用估算等数据。
- 可分析家用充电站和公共充电站的使用情况。
- 多语言支持:
- TeslaMate 支持多种语言界面,可以满足不同语言用户的需求。
- 数据隐私:
- 车辆数据存储在本地服务器,用户拥有对数据的完全控制权。
界面预览
首页
Grafana前端统计概览
电池健康
充电记录
固件升级次数
行驶地点最多的地方
停车休眠耗电状态
车辆状态
永久行驶路径
搭建方法
- 安装NGINX用来反代TeslaMate
- 安装Docker与Docker-compose
- 创建安装目录与项目文件夹
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按照自己的喜好填入密码
- 启动服务
- 先启动一下,让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
- 令牌设定
-
如果所有容器都启动成功,在浏览器输入你主机的IP:4000如图,会看到这个TeslaMate的界面
-
申请令牌key
- 到App Store搜索下载Auth for Tesla
- 下载完打开app选择中国区China然后登录你的Tesla账号,会自动生成刷新令牌与访问令牌,将两个key填入TeslMate,刷新令牌填下面,访问令牌填上面,点击登录以后就能看到车辆的信息了
- 到App Store搜索下载Auth for Tesla
- 进入Grafana可视化页面ip:3000,第一次进入用户名密码都是admin,需要修改用户名密码,改语言为中文,主题其他等等,可以按照自己喜好自己设定
- 如果发现TeslaMate右上角没有控制台,在TeslaMate设置里面填入TeslaMate与Grafana的url地址
- 为了安全尽可能不要将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;
- 在浏览器输入https://tesla.yanyi.love 就可以进入Grafana的统计界面了
以上就是整个搭建流程,其他相关组件如(NGINX,Docker,Docker-compose)自己想办法安装。