『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 35875|回复: 155

[流程系列] 【node-red】比亚迪汽车通过官方微信API接入HA

  [复制链接]

22

主题

359

帖子

3763

积分

元老级技术达人

积分
3763
金钱
3369
HASS币
100

教程狂人

发表于 2022-10-13 16:01:22 | 显示全部楼层 |阅读模式
本帖最后由 33201 于 2022-10-16 23:20 编辑

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

先来个ui展示
8E1FD597-FC4F-4A67-B56C-CEA613C30657.jpeg
微信图片_20221015173812.png

写在前面
折腾了两天终于搞定了比亚迪汽车的HA接入,目前实现:

1、获取位置信息,并生成可自动发现的device_tracker的设备

55f253ada8d0acb258136f788aa1ad7.jpg

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

f4ac471be8aa084652ba4d8458fd7ae.jpg

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

QQ截图20221012231318.jpg a04930c4a8c41a60f0f547d14a12b0f.jpg

实现步骤
1、下载并导入nodered流
byd_car_flows.json (16.48 KB, 下载次数: 574)
2、抓包获取cookies

关注“比亚迪DiLink”微信公众号,进入后点菜单>远程控制>实时车况,确保可以正常获取到信息

3、修改流内容有两处需要修改,如下图所示
1.jpg

①红框区域 修改为前述抓取的cookies
12.jpg

②红框区域修改为自己的控制密码MD5大写值(如果不需要或者担心安全问题可以忽略该步骤)
3.jpg

③担心安全问题或者不需要控制功能的可以删除或者注释掉响应内容
修改位置为:“生成sensor”节点,类似红框区域的加了注释功能的
4.jpg
附:车况信息对照
{
        "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 //动力电池充电连接
}










评分

参与人数 11金钱 +92 HASS币 +20 收起 理由
864760717 + 2
adxr + 16 高手,这是高手!
goldstep + 12 在下对你的景仰犹如滔滔长江之水,连绵不绝.
13110292131 + 2 墙都不扶,就服楼主!
WuYunBiao + 2 论坛有你更精彩!
l24195656 + 8 膜拜大神!
eeh0627 + 5 高手,这是高手!
+ 20 + 20 高手,这是高手!
eric + 16 论坛有你更精彩!
arthurfsy + 5 感谢楼主分享!
yc0209 + 4 在下对你的景仰犹如滔滔长江之水,连绵不绝.

查看全部评分

回复

使用道具 举报

7

主题

166

帖子

1302

积分

论坛技术达人

积分
1302
金钱
1131
HASS币
60
发表于 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 //动力电池充电连接
}


回复

使用道具 举报

11

主题

271

帖子

2658

积分

金牌会员

Rank: 6Rank: 6

积分
2658
金钱
2377
HASS币
50
发表于 2022-10-13 16:32:51 来自手机 | 显示全部楼层
支持一下
回复

使用道具 举报

7

主题

166

帖子

1302

积分

论坛技术达人

积分
1302
金钱
1131
HASS币
60
发表于 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
回复

使用道具 举报

22

主题

359

帖子

3763

积分

元老级技术达人

积分
3763
金钱
3369
HASS币
100

教程狂人

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

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

使用道具 举报

16

主题

223

帖子

1868

积分

金牌会员

Rank: 6Rank: 6

积分
1868
金钱
1645
HASS币
0
发表于 2022-10-13 17:40:17 | 显示全部楼层
我用你的流,电量百分比好像不能显示,我是纯电车型,我在看看
回复

使用道具 举报

22

主题

359

帖子

3763

积分

元老级技术达人

积分
3763
金钱
3369
HASS币
100

教程狂人

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

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

使用道具 举报

16

主题

223

帖子

1868

积分

金牌会员

Rank: 6Rank: 6

积分
1868
金钱
1645
HASS币
0
发表于 2022-10-13 18:08:46 | 显示全部楼层
33201 发表于 2022-10-13 17:55
公众号那个界面能不能显示?

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

使用道具 举报

3

主题

46

帖子

330

积分

中级会员

Rank: 3Rank: 3

积分
330
金钱
284
HASS币
0
发表于 2022-10-13 22:48:01 | 显示全部楼层
收藏,海豹回来试一试
回复

使用道具 举报

7

主题

166

帖子

1302

积分

论坛技术达人

积分
1302
金钱
1131
HASS币
60
发表于 2022-10-14 00:59:11 | 显示全部楼层
本帖最后由 arthurfsy 于 2022-10-14 01:49 编辑

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

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-21 20:02 , Processed in 2.158025 second(s), 36 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表