一个现代化的 Tesla 数据可视化面板,连接 TeslaMate 数据库,采用赛博朋克风格设计。
🌟 在线体验 (Demo)
- 前端访问:https://tsl.deaglepc.cn/
- 后端 API:https://tsldemo.deaglepc.cn (自动在前端填充。用于演示的假数据)
| 🏠 主页 | 🛣️ 驾驶记录 | ⚡ 充电记录 |
|---|---|---|
![]() |
![]() |
![]() |
| 🛣️ 驾驶详情 | ⚡ 充电详情 | ⚙️ 设置 |
![]() |
![]() |
![]() |
- 实时状态 - 电池电量、续航里程、车辆位置、当前状态
- 车型图片 - 自动根据车型和外观颜色显示 Tesla 官方配置器图片
- 翻转卡片 - 点击查看详细信息(VIN、型号、颜色、软件版本)
- 位置地图 - 显示车辆当前位置和地址
- 充电状态 - 实时显示充电电压、功率
- 概览统计 - 总里程、能效统计、温度信息
- SOC 历史 - 电池电量变化曲线,支持自定义日期范围
- 活动时间线 - 可视化显示行驶、充电、在线、离线状态时间线
- 充电记录列表 - 所有充电历史,支持筛选和排序
- 充电详情 - 充电曲线图表(电量、功率)、充电时长、能量统计
- 费用计算 - 显示充电费用(如 TeslaMate 已配置)
- 位置信息 - 充电位置地图
- 驾驶记录列表 - 所有驾驶历史,支持筛选和排序
- 驾驶详情 - 速度/功率曲线、海拔变化、驾驶时长、能耗统计
- 胎压监测 - 实时显示四轮胎压数据
- 温度信息 - 车内外温度记录
- 轨迹地图 - 支持高德地图和 OpenStreetMap 两种地图源
- 中国坐标纠偏 - 高德地图自动处理 GCJ-02 坐标偏移
- 5套主题配色 - 赛博朋克、特斯拉、暗夜、科技蓝、极光
- 自动主题色 - 从背景图片提取主色调自动生成主题
- 自定义背景 - 上传、裁剪、更换背景图片
- 卡片透明度 - 自由调整卡片透明度
- 多语言 - 支持中文/英文切换
- 单位切换 - 公制/英制单位切换
- 地图源切换 - 高德地图(中国推荐)/ OpenStreetMap
- API 连接配置 - 配置后端地址和 API Key
- 高德地图 Key - 配置高德地图 API Key
- 背景图片管理 - 上传、裁剪、删除背景图片
- 多阶段构建 - 前后端独立构建,优化镜像体积
- 环境变量配置 - 所有配置通过环境变量注入,无需修改代码
- 健康检查 - 内置容器健康检查,确保服务可用
- 无需数据库 - 无需连接 TeslaMate 即可运行完整 UI
- 开发调试 - 内置模拟数据,支持前端开发和 UI 预览
- 在线演示 - 用于 Demo 站点展示
- 访问统计 - 支持集成 Umami 进行页面访问统计
- 运行时配置 - 通过环境变量配置,Docker 中无需重新构建即可启用
- 自部署/云端 - 同时支持 Umami Cloud 和自部署实例
本面板已完整支持 PWA,提供媲美原生 App 的沉浸式体验:
- 秒开体验 - 支持核心资源的本地离线缓存
- 桌面/主屏幕安装 - 在桌面系统(Chrome/Edge)或移动端(iOS/Android 主屏幕)可一键“安装到设备”
- 原生沉浸感 - 隐藏浏览器状态栏与导航条,在 iOS 下呈现全屏无边框的赛博朋克深邃体验
💡 最佳实践:建议不要在浏览器内直接高频使用。请在你的手机浏览器(如 Safari)底部点击“分享” -> “添加到主屏幕”,或在电脑端浏览器的地址栏右侧点击“安装应用”图标,将其以独立 App 的形式运行以获得完美体验。
- Go 1.21+ - 后端语言
- Gin - Web 框架
- sqlx - 数据库操作
- PostgreSQL - TeslaMate 数据库(只读)
- React 18 - UI 框架
- TypeScript - 类型安全
- Vite - 构建工具
- Tailwind CSS - 样式框架
- ECharts - 数据可视化
- Zustand - 状态管理
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Tesla API │────▶│ TeslaMate │────▶│ PostgreSQL │
└─────────────────┘ └─────────────────┘ └────────┬────────┘
│
│ 只读访问
▼
┌─────────────────┐
│ CyberUI 后端 │
└────────┬────────┘
│
│ API
▼
┌─────────────────┐
│ CyberUI 前端 │
└─────────────────┘
TeslaMate CyberUI 是一个独立的可视化面板,它:
- 🔗 只读访问 TeslaMate 的 PostgreSQL 数据库
- 📊 不修改任何 TeslaMate 数据
- 🚀 独立部署,不影响 TeslaMate 运行
- 🔄 实时读取 TeslaMate 记录的数据
TeslaMate 自带 Grafana 仪表盘,但:
- Grafana 更偏向数据分析,不够直观
- CyberUI 提供更现代化的移动端友好界面
- 独立部署,可作为 TeslaMate 的补充视图
- 已运行 TeslaMate - 确保 TeslaMate 正常运行并记录数据
- Docker & Docker Compose - 推荐使用 Docker 部署
- 高德地图 API Key (可选) - 用于驾驶轨迹地图
CyberUI 需要访问 TeslaMate 的 PostgreSQL 数据库。你需要确保:
如果你的 TeslaMate 使用 Docker 部署,确保数据库端口可访问:
# TeslaMate 的 docker-compose.yml 示例
services:
database:
image: postgres:15
# 暴露端口或使用外部网络
ports:
- "5432:5432" # 可选:暴露给主机访问将 CyberUI 加入 TeslaMate 的网络:
# CyberUI 的 docker-compose.yml
services:
backend:
networks:
- teslamate_default # TeslaMate 的网络
networks:
teslamate_default:
external: true最简单的方式是通过环境变量连接:
# 创建 .env 文件
TESLAMATE_DB_HOST=your-teslamate-db-host
TESLAMATE_DB_PORT=5432
TESLAMATE_DB_USER=teslamate
TESLAMATE_DB_PASSWORD=your-password
TESLAMATE_DB_NAME=teslamate# 1. 克隆项目
git clone https://github.com/DeaglePC/TeslamateCyberUI.git
cd TeslamateCyberUI
# 2. 创建配置文件(根据实际情况修改)
cp .env.example .env
# 编辑 .env,填入 TeslaMate 数据库连接信息等配置
# vi .env
# 3. 启动服务
docker compose up -d
# 4. 查看日志
docker compose logs -f
# 5. 访问应用
# http://localhost:8080如果本地没有 TeslaMate 数据库,可以开启 Mock 数据模式进行前端开发和 UI 预览:
# 后端
cd backend
go mod download
# 临时启用 Mock 数据环境变量
export CYBERUI_MOCK_DATA=true
go run cmd/server/main.go
# 前端 (新终端窗口)
cd frontend
npm install
npm run dev# 后端
cd backend
go mod download
# 通过 .env / 环境变量 / configs/config.yaml 配置好真实数据库连接
go run cmd/server/main.go
# 前端 (新终端窗口)
cd frontend
npm install
npm run dev| 变量名 | 说明 | 默认值 | 必填 |
|---|---|---|---|
TESLAMATE_DB_HOST |
TeslaMate 数据库地址 | - | ✅ |
TESLAMATE_DB_PORT |
数据库端口 | 5432 |
|
TESLAMATE_DB_USER |
数据库用户名 | - | ✅ |
TESLAMATE_DB_PASSWORD |
数据库密码 | - | ✅ |
TESLAMATE_DB_NAME |
数据库名称 | teslamate |
|
TESLAMATE_DB_SSLMODE |
SSL 模式 | disable |
| 变量名 | 说明 | 默认值 |
|---|---|---|
CYBERUI_PORT |
前端网页访问端口 | 8080 |
CYBERUI_API_PORT |
后端 API 暴露端口(用于调试) | 8899 |
CYBERUI_SERVER_MODE |
运行模式(debug / release) |
release |
LOG_LEVEL |
日志级别(debug / info / warn / error) |
info |
TZ |
时区 | Asia/Shanghai |
| 变量名 | 说明 | 默认值 |
|---|---|---|
VITE_API_BASE_URL |
前端默认 API 地址(构建时生效) | 空 |
CYBERUI_API_KEY |
API 认证密钥(留空则不启用认证) | 空 |
| 变量名 | 说明 | 默认值 |
|---|---|---|
UMAMI_WEBSITE_ID |
Umami Website ID(留空则不启用) | 空 |
UMAMI_SCRIPT_URL |
Umami 脚本地址 | https://cloud.umami.is/script.js |
| 变量名 | 说明 | 默认值 |
|---|---|---|
CYBERUI_MOCK_DATA |
启用 Mock 数据模式(true / false) |
false |
- 访问 高德开放平台
- 创建应用,选择「Web端 (JS API)」类型
- 获取 Key 后在设置页面填入
⚠️ 重要:必须选择「Web端 (JS API)」类型,不能使用「Web服务」类型。
| 功能 | 说明 |
|---|---|
| 车辆图片 | 根据车型和颜色自动匹配 Tesla 官方图片 |
| 电量显示 | 电池图标 + 百分比,低于 20% 变红 |
| 状态信息 | 当前状态(行驶/充电/在线/离线/休眠) |
| 位置地图 | 当前车辆位置,显示地址 |
| 统计卡片 | 续航、里程、软件版本、温度 |
| SOC 图表 | 电池电量变化曲线 |
| 时间线 | 状态变化时间线可视化 |
| 功能 | 说明 |
|---|---|
| 列表筛选 | 按时间范围筛选充电记录 |
| 充电详情 | 电量曲线、功率曲线 |
| 充电统计 | 充电时长、能量、费用 |
| 位置地图 | 充电位置显示 |
| 功能 | 说明 |
|---|---|
| 列表筛选 | 按时间范围筛选驾驶记录 |
| 驾驶详情 | 速度曲线、功率曲线、海拔变化 |
| 轨迹地图 | 高德/OpenStreetMap 双地图源 |
| 驾驶统计 | 距离、时长、平均能耗 |
| 主题 | 配色风格 |
|---|---|
| 赛博朋克 | 蓝紫霓虹,默认主题 |
| 特斯拉 | 红黑配色,致敬官方 |
| 暗夜 | 深蓝紫色,低调优雅 |
| 科技蓝 | 清新蓝色科技感 |
| 极光 | 绿紫渐变,梦幻唯美 |
| 自动主题 | 从背景图提取颜色自动生成 |
TeslamateCyberUI/
├── backend/ # Go 后端
│ ├── cmd/server/ # 应用入口
│ ├── internal/
│ │ ├── config/ # 配置管理
│ │ ├── handler/ # HTTP 处理器
│ │ ├── model/ # 数据模型
│ │ └── repository/ # 数据仓储
│ └── configs/ # 配置文件
├── frontend/ # React 前端
│ ├── src/
│ │ ├── components/ # 组件
│ │ ├── pages/ # 页面
│ │ ├── services/ # API 服务
│ │ ├── store/ # 状态管理
│ │ └── utils/ # 工具函数
│ └── public/
├── docker-compose.yml
└── README.md
GET /api/v1/cars # 车辆列表
GET /api/v1/cars/:id/status # 车辆状态
GET /api/v1/cars/:id/charges # 充电记录
GET /api/v1/cars/:id/drives # 驾驶记录
GET /api/v1/charges/:id # 充电详情
GET /api/v1/charges/:id/stats # 充电统计
GET /api/v1/drives/:id # 驾驶详情
GET /api/v1/drives/:id/positions # 驾驶轨迹
GET /api/v1/cars/:id/stats/overview # 概览统计
GET /api/v1/cars/:id/stats/soc # SOC 历史
GET /api/v1/cars/:id/stats/timeline # 状态时间线
GET /health # 健康检查
- 检查数据库地址和端口是否正确
- 确认数据库用户有访问权限
- 如果使用 Docker,检查网络配置
- 确认使用的是「Web端 (JS API)」类型的 Key
- 检查 Key 是否正确配置
- 如果出现
USERKEY_PLAT_NOMATCH错误,说明 Key 类型不对
数据来自 TeslaMate,刷新频率取决于 TeslaMate 的设置。CyberUI 每 30 秒自动刷新一次。
不可以。CyberUI 只读取数据,不会修改任何 TeslaMate 数据。
MIT License
- TeslaMate - 优秀的 Tesla 数据记录工具
- Gin - Go Web 框架
- React - UI 框架
- Tailwind CSS - CSS 框架
- ECharts - 数据可视化库






