蔚来车辆看板 — macOS 菜单栏应用。自动拉取车辆 RVS 状态、服务订单与每日签到,在本地展示电量、续航、换电记录与行驶路径。
| 模块 | 说明 |
|---|---|
| 菜单栏 | 常驻显示电量 / 续航等,可自定义字段 |
| 车辆看板 | 26 张可拖拽、可隐藏的卡片,覆盖 RVS 主要状态块 |
| 服务订单 | 换电、充电、维保等历史与统计 |
| 每日签到 | 独立 API,每天 9:00 拉取一次 |
| 行驶路径 | 按天汇总 GPS 采样并绘制地图轨迹 |
| 历史趋势 | 电量、续航、里程折线图 |
电池 · 充电详情 · 车门 · 车窗 · 轮胎 · 软件/GPS · 特殊模式 · 车辆信息 · 行驶/泊车 · 座椅加热 · 连接状态 · 温度/空调 · 维保 · 灯光 · 钥匙 · 特殊状态 · 行程分享 · 近车控制 · 换电订单 · 低压电瓶 · 设备 · 充电订单 · 远程操作 · 离车换电 · 储物箱 · 冰箱
每张车辆卡片右上角有 { } 按钮,可查看该卡片对应的 RVS 原始 JSON。
订单概览 · 换电统计 · 常用换电站 · 全部订单(可折叠表格)
| 数据 | 策略 |
|---|---|
| 车辆 | 行驶中 / 白天 09:00–17:00 / 夜间 17:01–08:59 三档间隔,可配置 |
| 换电 | 独立定时,默认 60 分钟 |
| 签到 | 每天 9:00 一次;9 点后首次打开软件补拉,当天不重复 |
- macOS(Apple Silicon 或 Intel)
- Node.js 20+
- npm
git clone https://github.com/real3841/NIO-Dash.git
cd NIO-Dash
npm install
npm run electron:dev首次启动打开 数据同步,填入车辆 / 换电 / 签到 API 配置后保存,再点「刷新车辆 / 刷新换电」。
npm run electron:pack产物:
| 路径 | 说明 |
|---|---|
release/mac-arm64/蔚来车辆看板.app |
双击即可运行 |
DMG 安装镜像:
npm run electron:pack:dmg首次打开若被 Gatekeeper 拦截:系统设置 → 隐私与安全性 → 仍要打开。
npm install
cp deploy/.env.example deploy/.env
# 编辑 deploy/.env
npm run fetch:serve # 定时拉取 + 本地 API
npm run dev # 另开终端:Vite 前端应用内 数据同步 面板可图形化编辑;也可直接改配置文件。
| 场景 | 配置文件 | 数据目录 |
|---|---|---|
开发 electron:dev |
~/Library/Application Support/nio-mac/config.env |
~/Library/Application Support/nio-mac/data/ |
打包 .app |
~/Library/Application Support/蔚来车辆看板/config.env |
~/Library/Application Support/蔚来车辆看板/data/ |
参考模板:deploy/.env.example
本看板通过重放蔚来 App 自己的请求来认证,不单独实现登录。因此需要先在手机上抓一次包,把 App 发出的真实 URL 和 Token 填进配置。
在手机与网络之间架设中间人代理,任选其一即可:
mitmproxy · Reqable · Charles · Surge · Quantumult X …
在手机上安装并信任代理工具的 CA 证书(否则 HTTPS 无法解密)。
- 打开蔚来 App
- 进入车辆页,下拉刷新一次
- 在代理记录中找到这条请求:
GET https://icar.nio.com/api/2/rvs/vehicle/<vehicle_id>/status?...
| 填入看板 | 从哪里取 |
|---|---|
| 车辆 API URL | 整条请求 URL:从 https://…/status? 一直到末尾的 …&sign=…,全部复制 |
| Authorization Token | 请求头 Authorization: Bearer … 中 Bearer 后面的部分(或整段 Bearer … 均可) |
在应用内打开 数据同步 → 车辆 API 配置 → 编辑,分别粘贴到 NIO_VEHICLE_API_URL 与 NIO_VEHICLE_ACCESS_TOKEN,保存后点「刷新车辆」。
sign/timestamp会过期。拉取失败时,重新在 App 里刷新车辆页,再抓一条新 URL 替换即可。
换电、签到等接口同理:在 App 里触发对应操作,在代理里找到 gateway-front-external.nio.com 下的请求,复制完整 URL 与 Authorization 头。
将抓包得到的 URL 与 Token 填入:
| 变量 | 说明 |
|---|---|
NIO_VEHICLE_API_URL |
完整 GET URL |
NIO_VEHICLE_ACCESS_TOKEN |
Authorization Token |
NIO_VEHICLE_POLL_DRIVING_SEC |
行驶中间隔(秒,默认 900) |
NIO_VEHICLE_POLL_DAY_SEC |
白天间隔(秒,默认 1800) |
NIO_VEHICLE_POLL_NIGHT_SEC |
夜间间隔(秒,默认 3600) |
sign 过期后需重新抓包并替换 URL。拉取脚本会将 RVS 响应归一化为 data.status 结构。
| 变量 | 说明 |
|---|---|
NIO_CHANGE_API_URL |
完整 URL(POST,含 Query Params) |
NIO_CHANGE_ACCESS_TOKEN |
Authorization Token |
NIO_CHANGE_POLL_INTERVAL |
拉取间隔(秒,默认 3600) |
| 变量 | 说明 |
|---|---|
NIO_CHECKIN_API_URL |
GET 签到接口 URL |
NIO_CHECKIN_ACCESS_TOKEN |
Token(可留空,沿用车辆 Token) |
连接状态卡片显示 checked_in(今日是否签到)与 continuous_days(连续签到天数)。
| 变量 | 说明 |
|---|---|
NIO_TRAY_DISPLAY |
逗号分隔:soc range actual_range vehicle_state mileage orders |
| 操作 | 说明 |
|---|---|
| 拖拽排序 | 卡片右上角 ⠿ |
| 隐藏卡片 | 卡片右上角眼睛图标 |
| 查看 RVS JSON | 车辆卡片右上角 { } |
| 批量管理 | 数据同步 → 卡片管理(默认折叠) |
| 恢复默认 | 卡片管理内「恢复默认」 |
布局保存在 card-layout.json(与 config.env 同目录),并备份到浏览器 localStorage。
| 文件 | 内容 |
|---|---|
vehicle.json |
最新车辆状态 |
change.json |
服务 / 换电订单 |
checkin.json |
签到状态 |
history.json |
位置与电量历史(最多 2000 条) |
last-fetch.json |
车辆拉取元信息 |
last-fetch-change.json |
换电拉取元信息 |
last-fetch-checkin.json |
签到拉取元信息(含 run_day) |
card-layout.json |
卡片排序与隐藏状态 |
- 车况采样时间:界面显示的
sample_time来自蔚来 API,表示车端上报时刻 - 历史记录:每次成功拉取车辆后,按
soc_status.sample_time去重写入history.json - 页面刷新:看板定时重读本地 JSON;后台按行驶/白天/夜间策略调 API
├── electron/ # Electron 主进程、菜单栏、托盘
├── src/ # React 前端
│ ├── components/ # 看板、设置、拖拽网格
│ ├── hooks/ # 卡片布局
│ └── lib/ # RVS 归一化、签到、存储、配置
├── scripts/ # 拉取服务、签到调度、本地 API、打包
├── deploy/ # Docker / NAS 部署示例、.env 模板
└── release/ # 打包输出(不提交 Git)
| 命令 | 说明 |
|---|---|
npm run electron:dev |
构建并启动 Electron |
npm run electron:pack |
打包 .app |
npm run electron:pack:dmg |
打包 DMG |
npm run build |
仅构建前端 |
npm run fetch |
手动拉取车辆 + 换电 |
npm run fetch:watch |
CLI 后台定时拉取 |
npm run serve:api |
仅 API 服务 |
- 26 张车辆状态卡片,支持拖拽、隐藏、RVS JSON 查看
- 服务订单卡片与可折叠订单表格
- 签到 API:每天 9:00 拉取,9 点后首开补拉
- 卡片管理 / 菜单栏设置 / API 配置三列布局,默认折叠
- RVS 响应自动归一化,兼容新接口字段布局
- 移除未使用的
VehicleMap、AlertPanel组件
- 初始版本:菜单栏、车辆看板、换电订单、Electron 打包
本项目为个人学习与交流用途,与蔚来(NIO)官方无关。请使用自己的账号 Token,勿将 config.env 或含 Token 的文件上传到公开仓库。
MIT