33201 发表于 2022-10-13 16:01:22

【node-red】比亚迪汽车通过官方微信API接入HA

本帖最后由 33201 于 2022-10-16 23:20 编辑

20221014更新:
感谢@arthurfsy的反馈,修正了bug,车架号改为自动获取,并更新了车况信息获取方式。
注:目前仅适配的账号下只有一辆BYD车的情况

先来个ui展示



写在前面
折腾了两天终于搞定了比亚迪汽车的HA接入,目前实现:
1、获取位置信息,并生成可自动发现的device_tracker的设备

2、获取实时车况信息,并生成可自动发现的sensor实体

3、控制汽车功能(如果担心安全或者不需要该功能可以删除相应内容和节点)

实现步骤
1、下载并导入nodered流

2、抓包获取cookies
关注“比亚迪DiLink”微信公众号,进入后点菜单>远程控制>实时车况,确保可以正常获取到信息
3、修改流内容有两处需要修改,如下图所示


①红框区域 修改为前述抓取的cookies
②红框区域修改为自己的控制密码MD5大写值(如果不需要或者担心安全问题可以忽略该步骤)
③担心安全问题或者不需要控制功能的可以删除或者注释掉响应内容修改位置为:“生成sensor”节点,类似红框区域的加了注释功能的附:车况信息对照{
      "zdl": 0, //
      "zyl": 0, //遮阳帘?状态,0:关闭
      "time": 1665631770, //车况数据最后更新时间
      "cmzq": 0, //车门左前状态,0:关闭
      "cmyq": 0, //车门右前状态,0:关闭
      "cmzh": 0, //车门左后状态,0:关闭
      "cmyh": 0, //车门右后状态,0:关闭
      "hbx": 0, //后备箱状态,0:关闭
      "forwardCanopy": 0, //前舱盖状态
      "cczq": 1, //车窗左前
      "cczh": 1, //车窗左后
      "ccyq": 1, //车窗右前
      "ccyh": 1, //车窗右后
      "tianc": 1, //天窗
      "dydw": 1, //电源档位 1:OFF档;3:ON档
      "zczt": 2, //整车状态 1:正常状态;2:防盗
      "xh": 534, //总续航
      "oilXh": 531, //燃油续航
      "evXh": 3, //电池续航
      "nh": "-2.2+10.7", //最近50公里平均能耗
      "ljnh": "(8.2度+5.8升)/百公里", //累计能耗
      "ljnhEn": "(8.2kW·h+5.8L)/100km", //累计能耗-英文
      "gl": -999, //功率
      "zlc": 52781, //总里程
      "soc": 10, //电量剩余%
      "soo": 100, //油量剩余%
      "ok": 0, //OK指示灯 0:熄灭;1:点亮
      "ltylzq": 0, //轮胎压力左前状态,0:正常
      "ltylyq": 0, //轮胎压力右前状态,0:正常
      "ltylzh": 0, //轮胎压力左后状态,0:正常
      "ltylyh": 0, //轮胎压力又后状态,0:正常
      "ltylzzq": 218, //轮胎压力值-左前
      "ltylzyq": 223, //轮胎压力值-右前
      "ltylzzh": 219, //轮胎压力值-左后
      "ltylzyh": 227, //轮胎压力值-右后
      "cdzt": 15, //充电状态
      "cdxs": -1, //充电小时
      "cdfz": -1, //充电分钟
      "speed": 0, // 车速
      "fdjgz": 0, // 发动机
      "zczdxt": 0, //
      "dzzcxt": 0, // 制动系统
      "abs": 0, //ABS系统,0:正常,-1:该车无数据
      "srs": 0, //SRS系统,0:正常,-1:该车无数据
      "ltkslq": 0, //轮胎快速漏气检测
      "tyxt": 0, //胎压系统,0:正常,-1:该车无数据
      "esp": 0, //电子车身稳定系统,0:正常,-1:该车无数据
      "eps": 0, //转向系统?,0:正常,-1:该车无数据
      "zxxt": 0, //转向系统?,0:正常,-1:该车无数据
      "svs": 0, //故障指示灯
      "ins": 0, //汽车仪表盘
      "lqywd": 0, //冷却液温度状态
      "lqwdz": -1, //冷却液温度数值
      "jyyl": 0, //机油压力,0:正常,-1:该车无数据
      "cdxt": 0, //低压供电系统
      "dldc": 0, //动力电池,0:正常,-1:该车无数据
      "dlxt": 0, //动力系统,0:正常,-1:该车无数据
      "dlms": 2, //动力模式,0:混合动力 1:纯电模式
      "dldccdlj": 0 //动力电池充电连接
}









arthurfsy 发表于 2022-10-13 16:29:00

本帖最后由 arthurfsy 于 2022-10-14 19:47 编辑

综合了一下,如果有问题再修改
{
      "zdl": 0, //
      "zyl": 0, //遮阳帘?状态,0:关闭
      "time": 1665631770, //车况数据最后更新时间
      "cmzq": 0, //车门左前状态,0:关闭
      "cmyq": 0, //车门右前状态,0:关闭
      "cmzh": 0, //车门左后状态,0:关闭
      "cmyh": 0, //车门右后状态,0:关闭
      "hbx": 0, //后备箱状态,0:关闭
      "forwardCanopy": 0, //前舱盖状态
      "cczq": 1, //车窗左前
      "cczh": 1, //车窗左后
      "ccyq": 1, //车窗右前
      "ccyh": 1, //车窗右后
      "tianc": 1, //天窗
      "dydw": 1, //电源档位 1:OFF档;3:ON档
      "zczt": 2, //整车状态 1:正常状态;2:防盗
      "xh": 534, //总续航
      "oilXh": 531, //燃油续航
      "evXh": 3, //电池续航
      "nh": "-2.2+10.7", //最近50公里平均能耗
      "ljnh": "(8.2度+5.8升)/百公里", //累计能耗
      "ljnhEn": "(8.2kW·h+5.8L)/100km", //累计能耗-英文
      "gl": -999, //功率
      "zlc": 52781, //总里程
      "soc": 10, //电量剩余%
      "soo": 100, //油量剩余%
      "ok": 0, //OK指示灯 0:熄灭;1:点亮
      "ltylzq": 0, //轮胎压力左前状态,0:正常
      "ltylyq": 0, //轮胎压力右前状态,0:正常
      "ltylzh": 0, //轮胎压力左后状态,0:正常
      "ltylyh": 0, //轮胎压力又后状态,0:正常
      "ltylzzq": 218, //轮胎压力值-左前
      "ltylzyq": 223, //轮胎压力值-右前
      "ltylzzh": 219, //轮胎压力值-左后
      "ltylzyh": 227, //轮胎压力值-右后
      "cdzt": 15, //充电状态
      "cdxs": -1, //充电小时
      "cdfz": -1, //充电分钟
      "speed": 0, // 车速
      "fdjgz": 0, // 发动机
      "zczdxt": 0, //
      "dzzcxt": 0, // 制动系统
      "abs": 0, //ABS系统,0:正常,-1:该车无数据
      "srs": 0, //SRS系统,0:正常,-1:该车无数据
      "ltkslq": 0, //轮胎快速漏气检测
      "tyxt": 0, //胎压系统,0:正常,-1:该车无数据
      "esp": 0, //电子车身稳定系统,0:正常,-1:该车无数据
      "eps": 0, //转向系统?,0:正常,-1:该车无数据
      "zxxt": 0, //转向系统?,0:正常,-1:该车无数据
      "svs": 0, //故障指示灯
      "ins": 0, //汽车仪表盘
      "lqywd": 0, //冷却液温度状态
      "lqwdz": -1, //冷却液温度数值
      "jyyl": 0, //机油压力,0:正常,-1:该车无数据
      "cdxt": 0, //低压供电系统
      "dldc": 0, //动力电池,0:正常,-1:该车无数据
      "dlxt": 0, //动力系统,0:正常,-1:该车无数据
      "dlms": 2, //动力模式,0:混合动力 1:纯电模式
      "dldccdlj": 0 //动力电池充电连接
}

秋雨轩 发表于 2022-10-13 16:32:51

支持一下

arthurfsy 发表于 2022-10-13 16:53:33

本帖最后由 arthurfsy 于 2022-11-23 15:19 编辑

大佬,你的获取定位这个地方有bug:
msg.url的车架号你写成固定是自己的了,需要动态取值,下面代码是我改成自己的才能获取数据


const apiConfig = {
    "cookies": "我的cookies",
    "caridentifier": "我的车架号"
}
global.set("bydApiConfig", apiConfig);
msg.url = `https://bydcloud.byd.com/wechat/location?caridentifier=我的车架号&timeStamp=${Math.floor(Date.now())}&random=&longitude=0&latitude=0`
msg.headers={"cookie":apiConfig.cookies}
return msg

33201 发表于 2022-10-13 17:04:36

arthurfsy 发表于 2022-10-13 16:53
大佬,你的获取定位这个地方有bug:
msg.url的车架号你写成固定是自己的了,需要动态取值,下面代码是我改 ...

忘记改了这块,头晕脑胀的,已经更新了附件了,你改成自己的就不用更新了

mengyu 发表于 2022-10-13 17:40:17

我用你的流,电量百分比好像不能显示,我是纯电车型,我在看看

33201 发表于 2022-10-13 17:55:40

mengyu 发表于 2022-10-13 17:40
我用你的流,电量百分比好像不能显示,我是纯电车型,我在看看

公众号那个界面能不能显示?

mengyu 发表于 2022-10-13 18:08:46

33201 发表于 2022-10-13 17:55
公众号那个界面能不能显示?

我自己抓的包是没问题的。

michaelxkh 发表于 2022-10-13 22:48:01

收藏,海豹回来试一试

arthurfsy 发表于 2022-10-14 00:59:11

本帖最后由 arthurfsy 于 2022-10-14 01:49 编辑

自己摸索配置mqtt后自动发现设备了附上一个转换32位大写加密的网站:
MD5在线加密-MD5在线32位16位加密-MD5在线加密工具 (jsons.cn)

页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 【node-red】比亚迪汽车通过官方微信API接入HA