|
楼主 |
发表于 2025-1-15 18:40:39
|
显示全部楼层
本帖最后由 yuanxiaoshuai_ 于 2025-1-15 18:43 编辑
目前我通过路由器抓包获取了一下信息
智能门锁 IP 地址:192.168.31.28
与服务器 116.63.54.175 的通信信息:
源端口:包括 51727、51997、57987、58404、63220 等。
目标端口:19777。
与服务器 139.196.46.216 的通信信息:
源端口:包括 51728、51998 等。
目标端口:8083。
端口重要性:
在多次开锁操作的数据包中,19777 和 8083 端口持续进行数据传输,我推测可能是开锁请求端口。
开锁请求数据的重要标识部分:
在不同开锁方式的数据包中,“fa fa 00 2b”(如 Frame 3563、Frame 21832 等)、“fa fa 00 35”(如 Frame 3659、Frame 21871 等)等字节序列频繁出现,具有一定稳定性。
推测 “fa fa 00 2b” 及类似序列是开锁请求指令的头部标识
我的思路是通过路由器端口转发,通过 Node-RED 接入 Home Assistant 平台,使 Home Assistant 平台能够获取智能门锁的开锁信息以此完成自动化
从 Node-RED 的节点库中拖出 TCP In 节点到工作区。
对与 116.63.54.175 通信的 19777 端口:
将端口设置为 19777,将协议选择为 TCP
对与139.196.46.216 通信的 8083 端口:
将 端口 设置为 8083,将 协议选择为 TCP
拖出 Function 节点,将其连接到其中一个 TCP In 节点
在代码编辑区域输入以下 JavaScript 代码:
javascript
msg.payload = msg.payload.toString('utf8');
if (msg.payload.includes('fa fa 00 2b') || msg.payload.includes('fa fa 00 35')) {
msg.payload = {
rawData: msg.payload,
detectedPattern: msg.payload.includes('fa fa 00 2b')? 'fa fa 00 2b' : 'fa fa 00 35',
eventType: 'lock_open'
};
} else {
return null;
}
return msg;
最后通过action 节点来实现手机ha推送解锁通知和完成相关自动化
大佬 这种方式可行吗 |
|