找回密码
 立即注册
查看: 144|回复: 3

[技术探讨] 最新比亚迪接入HA

[复制链接]
qcby 手机认证

0

主题

13

回帖

71

积分

注册会员

积分
71
金钱
58
HASS币
0
发表于 4 天前 | 显示全部楼层 |阅读模式
本帖最后由 qcby 于 2025-6-12 18:35 编辑

f5b53027-741f-4ff4-ab98-cfbb4bfb9324.png

5d711fce-5841-4204-b11d-59af40ae5382.png

可以实时自动抓取车机数据,并自动广播。可以用之前的node-red流程 ,只需要把生成组件 前面的代码去掉,然后替换成以下的流节点,就可以正常获取车机信息了
[{"id":"027947ecfdd7a328","type":"inject","z":"8dd364ff59dec1bf","name":"定时执行","props":[{"p":"payloada","v":"","vt":"date"},{"p":"topic","vt":"str"}],"repeat":"60","crontab":"","once":true,"onceDelay":0.1,"topic":"BYD_CAR_GPS","x":110,"y":240,"wires":[["9e06e16cf2632b4f"]]},{"id":"eb8237449b6c0d4c","type":"http request","z":"8dd364ff59dec1bf","name":"获取车机数据","method":"GET","ret":"txt","paytoqs":"ignore","url":"http://10.10.10.14:8889/bydck?sign=qcbybydck","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":460,"y":200,"wires":[["34cbbd47594326b4"]],"info":"自行修改接口地址"},{"id":"9e06e16cf2632b4f","type":"function","z":"8dd364ff59dec1bf","name":"配置协议头","func":"// 初始化 headers 对象\nmsg.headers = {};\n\n// 设置 User-Agent\nmsg.headers['User-Agent'] = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36";\nmsg.headers['Content-Type'] = "application/json; charset=utf-8",\nmsg.rejectUnauthorized = false; // 忽略 SSL 证书错误\n// 返回消息对象\nreturn msg;\n","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":270,"y":240,"wires":[["eb8237449b6c0d4c","8e36b11509f10bcf"]]},{"id":"9e1eeeafdf674a7d","type":"function","z":"8dd364ff59dec1bf","name":"坐标转换","func":"//定义一些常量\nvar x_PI = 3.14159265358979324 * 3000.0 / 180.0;\nvar PI = 3.1415926535897932384626;\nvar a = 6378245.0;\nvar ee = 0.00669342162296594323;\n\n/**\n* 百度坐标系 (BD-09) 与 火星坐标系 (GCJ-02)的转换\n* 即 百度 转 谷歌、高德\n* @param bd_lon\n* @param bd_lat\n* @returns {*[]}\n*/\nfunction bd09togcj02(bd_lon, bd_lat) {\n   var x_pi = 3.14159265358979324 * 3000.0 / 180.0;\n   var x = bd_lon - 0.0065;\n   var y = bd_lat - 0.006;\n   var z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_pi);\n   var theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * x_pi);\n   var gg_lng = z * Math.cos(theta);\n   var gg_lat = z * Math.sin(theta);\n   return [gg_lng, gg_lat]\n}\n\n/**\n* 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换\n* 即谷歌、高德 转 百度\n* @param lng\n* @param lat\n* @returns {*[]}\n*/\nfunction gcj02tobd09(lng, lat) {\n   var z = Math.sqrt(lng * lng + lat * lat) + 0.00002 * Math.sin(lat * x_PI);\n   var theta = Math.atan2(lat, lng) + 0.000003 * Math.cos(lng * x_PI);\n   var bd_lng = z * Math.cos(theta) + 0.0065;\n   var bd_lat = z * Math.sin(theta) + 0.006;\n   return [bd_lng, bd_lat]\n}\n\n/**\n* WGS84转GCj02/谷歌、高德\n* @param lng\n* @param lat\n* @returns {*[]}\n*/\nfunction wgs84togcj02(lng, lat) {\n   if (out_of_china(lng, lat)) {\n       return [lng, lat]\n   }\n   else {\n       var dlat = transformlat(lng - 105.0, lat - 35.0);\n       var dlng = transformlng(lng - 105.0, lat - 35.0);\n       var radlat = lat / 180.0 * PI;\n       var magic = Math.sin(radlat);\n       magic = 1 - ee * magic * magic;\n       var sqrtmagic = Math.sqrt(magic);\n       dlat = (dlat * 180.0) / ((a * (1 - ee)) / (magic * sqrtmagic) * PI);\n       dlng = (dlng * 180.0) / (a / sqrtmagic * Math.cos(radlat) * PI);\n       var mglat = lat + dlat;\n       var mglng = lng + dlng;\n       return [mglng, mglat]\n   }\n}\n\n/**\n* GCJ02/谷歌、高德 转换为 WGS84 gcj02towgs84\n* @param lng\n* @param lat\n* @returns {*[]}\n*/\nfunction gcj02towgs84(lat, lng) {\n   if (out_of_china(lng, lat)) {\n       return [lat, lng]\n   }\n   else {\n       var dlat = transformlat(lng - 105.0, lat - 35.0);\n       var dlng = transformlng(lng - 105.0, lat - 35.0);\n       var radlat = lat / 180.0 * PI;\n       var magic = Math.sin(radlat);\n       magic = 1 - ee * magic * magic;\n       var sqrtmagic = Math.sqrt(magic);\n       dlat = (dlat * 180.0) / ((a * (1 - ee)) / (magic * sqrtmagic) * PI);\n       dlng = (dlng * 180.0) / (a / sqrtmagic * Math.cos(radlat) * PI);\n       var mglat = lat + dlat;\n       var mglng = lng + dlng;\n       return [lat * 2 - mglat, lng * 2 - mglng]\n   }\n}\n\nfunction transformlat(lng, lat) {\n   var ret = -100.0 + 2.0 * lng + 3.0 * lat + 0.2 * lat * lat + 0.1 * lng * lat + 0.2 * Math.sqrt(Math.abs(lng));\n   ret += (20.0 * Math.sin(6.0 * lng * PI) + 20.0 * Math.sin(2.0 * lng * PI)) * 2.0 / 3.0;\n   ret += (20.0 * Math.sin(lat * PI) + 40.0 * Math.sin(lat / 3.0 * PI)) * 2.0 / 3.0;\n   ret += (160.0 * Math.sin(lat / 12.0 * PI) + 320 * Math.sin(lat * PI / 30.0)) * 2.0 / 3.0;\n   return ret\n}\n\nfunction transformlng(lng, lat) {\n   var ret = 300.0 + lng + 2.0 * lat + 0.1 * lng * lng + 0.1 * lng * lat + 0.1 * Math.sqrt(Math.abs(lng));\n   ret += (20.0 * Math.sin(6.0 * lng * PI) + 20.0 * Math.sin(2.0 * lng * PI)) * 2.0 / 3.0;\n   ret += (20.0 * Math.sin(lng * PI) + 40.0 * Math.sin(lng / 3.0 * PI)) * 2.0 / 3.0;\n   ret += (150.0 * Math.sin(lng / 12.0 * PI) + 300.0 * Math.sin(lng / 30.0 * PI)) * 2.0 / 3.0;\n   return ret\n}\n\n/**\n* 判断是否在国内,不在国内则不做偏移\n* @param lng\n* @param lat\n* @returns {boolean}\n*/\nfunction out_of_china(lng, lat) {\n   return (lng < 72.004 || lng > 137.8347) || ((lat < 0.8293 || lat > 55.8271) || false)\n}\n/**    \nlet lng = msg.payload.data.longitude / 1000000\nlet lat = msg.payload.data.latitude / 1000000\nmsg.payload = {"domain":"device_tracker","service":"see","data":{"dev_id" : "car", "gps": gcj02towgs84(lat, lng) }} \n*/\nconst payloadObj = typeof msg.payload === 'string' ? JSON.parse(msg.payload) : msg.payload;\nlet lng = payloadObj.data.longitude / 1000000;\nlet lat = payloadObj.data.latitude / 1000000;\n\nmsg.payload = {\n  "domain": "device_tracker",\n  "service": "see",\n  "data": {\n    "dev_id": "car",\n    "gps": gcj02towgs84(lat,lng ),\n    "gps_accuracy": 5  // 可选:GPS 精度(单位:米)\n  }\n};\nreturn msg;\n","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":640,"y":280,"wires":[["a26977c99eee6ecd"]]},{"id":"8e36b11509f10bcf","type":"http request","z":"8dd364ff59dec1bf","name":"获取车辆位置","method":"GET","ret":"txt","paytoqs":"ignore","url":"http://10.10.10.14:8889/bydck?sign=cxwz","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":460,"y":280,"wires":[["9e1eeeafdf674a7d"]]},{"id":"34cbbd47594326b4","type":"function","z":"8dd364ff59dec1bf","name":"JSON处理","func":"msg.payload = typeof msg.payload === 'string' ? JSON.parse(msg.payload) : msg.payload;\n\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":630,"y":200,"wires":[["be2714b13d376afd","aa2f275f115a3d49"]]}]


当然解锁上电 开空调什么的都是可以的,exe成功运作的情况下 有提供http接口(具体看exe日志窗文本),你只需要稍微用nr简单的几个节点就可以实现自动化 锁车、开空调等~

下载地址
https://qcby.lanzouu.com/idXn32ynbbcj
回复

使用道具 举报

22

主题

213

回帖

1736

积分

金牌会员

积分
1736
金钱
1501
HASS币
10
发表于 7 小时前 | 显示全部楼层
node-red 本质, 也是在发送一些网络请求, 如POST/GET,  请求参数的加密,  响应体的解密,
回复

使用道具 举报

22

主题

125

回帖

1826

积分

金牌会员

积分
1826
金钱
1679
HASS币
0
发表于 昨天 22:37 | 显示全部楼层
支持支持
可惜我是吉利
回复

使用道具 举报

qcby 手机认证

0

主题

13

回帖

71

积分

注册会员

积分
71
金钱
58
HASS币
0
 楼主| 发表于 昨天 18:55 | 显示全部楼层

v1.0.7 a750d008-bc14-42be-aba9-8c7d57dffe40.png
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian ( 晋ICP备17001384号-1 )

GMT+8, 2025-6-13 17:55 , Processed in 1.261860 second(s), 28 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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