本帖最后由 yezivv 于 2025-7-5 23:03 编辑
将一汽大众ID.4 CROZZ接入Home Assistant,通过抓包分析一汽大众APP获取数据,利用Node-RED和MQTT实现了车辆状态信息、以及预约空调的接入。
一、实现功能只测试了电车(油车接口可能不同),手机APP4.0版本及以上,实现了以下功能: 车辆实时位置 电量、续航里程 车门关闭状态、锁定状态 充电状态 预约空调等
二、准备工作安装Node-RED和MQTT
确保你的Home Assistant已经安装并配置好Node-RED和MQTT插件。 申请高德地图Web服务API
需要在高德开放平台申请用于Web服务的key,用于车辆位置信息的直接展示。 一汽大众App账号
由于一汽大众App不支持多终端登录,建议使用家人的账号注册App,并通过授权的方式共享车辆控制权限。(目前我已经切换为我个人的账号了,因为发现接入ha之后,我几乎不打开一汽的APP了。) 我在nodered中设置了每天8点执行一次登录操作,登录成功后,会返回一个accessToken,后续请求都需要携带这个accessToken。之后每半小时获取一次车辆状态信息。这样设置就算手机APP使用主账号账号密码的方式登录过,也可以保证nodered在第二天能够正常获取数据。
三、接入步骤 1. 抓包获取关键数据通过抓包工具(如Stream等)获取一汽大众APP的数据,抓包前先退出登录并且关闭APP。然后打开抓包工具开始抓包,选择账号密码方式登录,登录成功后就可以停止抓包了。在抓包工具中查看数据,注意这个域名:oneapp-api.faw-vw.com。 主要信息来自于以下请求,节点“设置参数”需要的信息都会在这条数据中获得:
2. Node-RED配置在Node-RED中导入我分享的流文件(见下文); 修改nodered流中的“设置参数”节点,填写你的账号密码、请求头部信息(如Did、User-Agent); 填写获取门窗灯状态、获取充电状态、获取车辆位置三个节点中,你车辆的vin码; 填写“车辆位置”节点中的高德api key; ID.月度报告只有主账号可以获取,如使用授权账号请删除相关节点。
3. Home Assistant配置 configuration.yaml中添加:
# MQTT 配置
mqtt: !include mqtt.yaml
四、注意事项
五、Node-RED流和mqtt.yaml文件
更新就放在这吧
2025年5月19日更新:优化了一下nodered流代码,增加了device.tracker,将原车获取的经纬度转换为GPS坐标系 ,可以追踪车辆经纬度在地图显示了。UI界面改了一下觉得现在更合适。
2025年6月13日更新:继续优化nodered流代码,需要修改的节点更少。增加ID.月度报告、增加预约空调相关设置。
未来认证方式不变,应该不会再更新了,也没啥可更新的了。这车本来用户也不多~
flows mqtt.rar
(9.49 KB, 下载次数: 8)
六、贴几张图 以下是实现过程中的一些截图,供大家参考:
|