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

 找回密码
 立即注册
查看: 6263|回复: 30

[教程系列] 优智云家门锁通过接入node red实现门铃监控

[复制链接]

12

主题

85

帖子

746

积分

高级会员

Rank: 4

积分
746
金钱
661
HASS币
10
发表于 2023-8-22 23:10:03 | 显示全部楼层 |阅读模式
本帖最后由 KevinYAN 于 2024-1-24 21:16 编辑

首先非常感谢大佬们写的帖子,给了我非常大的帮助:
优智云家远程开锁实现 - 『Node-RED』综合讨论区 - 『瀚思彼岸』» 智能家居技术论坛 - Powered by Discuz! (hassbian.com)
优智云家指纹锁接入HA的心得 - 『Node-RED』综合讨论区 - 『瀚思彼岸』» 智能家居技术论坛 - Powered by Discuz! (hassbian.com)



大佬们发了好几个优智云家接入node的帖子,苦于自己是vmdk文件直接安装的虚拟机,又不想搞好几个docker配置起来麻烦。 于是就在加载项里安装了node red 。

大佬们的方案都是docke替换js文件,实现ws数据的实时同步。使用vmdk文件装的虚机,是找不到替换路径的。经过不断的分析https://go.kiwik.cn/网站数据,终于发现了其网页显示数据来源地址为:
接口图.png 接口数据.png
根据跟踪到的接口地址https://go.kiwik.cn/api/devices/ ... ?page=1&per_page=15,只需要在传入token就可以获取到15条消息。 下边我的案例中每次获取一条,并记录上一条的时间,比较后得到是否是新消息。然后进行后续流程处理。
流程.png
这里我用最简单的http请求,频繁获取列表,比较发送时间,获取到最新消息。



流程代码发出,欢迎大家指点。
[{"id":"870a59f17b143e39","type":"http request","z":"777bbd6ded297de7","g":"fce0e56f84e56149","name":"get mess","method":"GET","ret":"obj","paytoqs":"ignore","url":"","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[{"keyType":"other","keyValue":"Authorization","valueType":"msg","valueValue":"payload"}],"x":380,"y":1260,"wires":[["7acbb7d90a61a0c3"]]},{"id":"79e7f9ee53777794","type":"inject","z":"777bbd6ded297de7","g":"fce0e56f84e56149","name":"触发","props":[{"p":"url","v":"https://go.kiwik.cn/api/devices/2A23FF01EF40/events?page=1&per_page=1","vt":"str"},{"p":"payload"}],"repeat":"3","crontab":"","once":true,"onceDelay":0.1,"topic":"","payload":"wstoken","payloadType":"global","x":250,"y":1260,"wires":[["870a59f17b143e39"]]},{"id":"89755d41ecd16f8f","type":"http request","z":"777bbd6ded297de7","g":"fce0e56f84e56149","name":"get token","method":"POST","ret":"obj","paytoqs":"ignore","url":"https://h5.kiwik.cn/restapi/auth/tokens","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":380,"y":1180,"wires":[["d670da1229569ddc"]]},{"id":"1ec06510a599c5b2","type":"inject","z":"777bbd6ded297de7","g":"fce0e56f84e56149","name":"触发","props":[{"p":"payload"},{"p":"headers","v":"{"X-Kiwik-Client-Id":"替换client-id"}","vt":"json"}],"repeat":"7200","crontab":"","once":true,"onceDelay":"2","topic":"","payload":"{"identifier":"+86替换手机号","credential":"替换密码","auth_type":"password"}","payloadType":"json","x":240,"y":1180,"wires":[["89755d41ecd16f8f"]]},{"id":"d670da1229569ddc","type":"function","z":"777bbd6ded297de7","g":"fce0e56f84e56149","name":"发布","func":"var wstoken = "Bearer " + msg.payload.access_token\nglobal.set("wstoken", wstoken);\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":510,"y":1180,"wires":[[]]},{"id":"7acbb7d90a61a0c3","type":"split","z":"777bbd6ded297de7","g":"fce0e56f84e56149","name":"split","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":true,"addname":"payload","x":510,"y":1260,"wires":[["82d09579ad37b587"]]},{"id":"82d09579ad37b587","type":"function","z":"777bbd6ded297de7","g":"fce0e56f84e56149","name":"判新","func":"\nvar before_mess_time = global.get("last_lock_mess_time") || msg.payload.created_at\nif (before_mess_time != msg.payload.created_at){\n    global.set("last_lock_mess_time", msg.payload.created_at);\n    return msg;\n}","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":630,"y":1260,"wires":[["b0132703beaa8f71"]]},{"id":"b0132703beaa8f71","type":"switch","z":"777bbd6ded297de7","g":"fce0e56f84e56149","name":"","property":"payload.name","propertyType":"msg","rules":[{"t":"eq","v":"UNLOCKED","vt":"str"},{"t":"eq","v":"REMOTE_UNLOCK","vt":"str"},{"t":"else"}],"checkall":"true","repair":false,"outputs":3,"x":770,"y":1260,"wires":[["e5f194774cab88c0"],["442a87f0dcbf557a"],[]]},{"id":"e5f194774cab88c0","type":"function","z":"777bbd6ded297de7","g":"fce0e56f84e56149","name":"Txa Tkf","func":"msg.payload = "欢迎" +msg.payload.data.lock_user.alias +"回家.";\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":940,"y":1220,"wires":[["57416698aaaba705"]]},{"id":"57416698aaaba705","type":"link out","z":"777bbd6ded297de7","g":"fce0e56f84e56149","name":"link out 83","mode":"link","links":["0766e19cc29bf18e","d746ba0c8e810306"],"x":1045,"y":1220,"wires":[]},{"id":"442a87f0dcbf557a","type":"function","z":"777bbd6ded297de7","g":"fce0e56f84e56149","name":"Txa Tkf","func":"msg.image_uri = msg.payload.data.image.uri\nmsg.payload = "主人好:有人在敲门,门口照片已发送您微信,请关注哦.";\nreturn msg;\n\n\n\n\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":940,"y":1260,"wires":[["582789f91c10f06d"]]},{"id":"582789f91c10f06d","type":"link out","z":"777bbd6ded297de7","g":"fce0e56f84e56149","name":"link out 84","mode":"link","links":["0766e19cc29bf18e","70e81b14c0c9e13d","d746ba0c8e810306"],"x":1045,"y":1260,"wires":[]}]




补充:
网页版优智云家地址:
https://go.kiwik.cn/app/woa/login

登陆后按F12调试,然后刷新页面,在右边根据图示,变可以跟踪到核心需要的X-KiwiK-Client-id.  将自己的用户名密码和这个id替换到流程中第一个触发里即可。
获取x-kiwik-client-id.png



最终效果:
当有人按门铃时,我的微信收到两条消息,一条文本,和一张图片。  同时,我的小爱音箱也自动播报第一条文本消息。
效果.png




请阅读这部分内容:
2024年1月24最新更新:
前段时间看到本论坛如下文章:
https://bbs.hassbian.com/thread-23795-1-1.html
该流程作者自己编写了一个节点,比上文更加简约,功能更加齐全。建议大家参考该文进行自己的部署,故本例中大家提到的导入错误问题我这里不会更新,请周知。






评分

参与人数 3金钱 +30 HASS币 +10 收起 理由
li2244578 + 5 论坛有你更精彩!
isw866 + 5 墙都不扶,就服楼主!
+ 20 + 10 论坛有你更精彩!

查看全部评分

回复

使用道具 举报

123

主题

4664

帖子

1万

积分

管理员

囧死

Rank: 9Rank: 9Rank: 9

积分
16442
金钱
11693
HASS币
45
发表于 2023-8-23 08:57:55 | 显示全部楼层
厉害了楼主,感谢分享!
回复

使用道具 举报

23

主题

330

帖子

1402

积分

金牌会员

Rank: 6Rank: 6

积分
1402
金钱
1072
HASS币
10
发表于 2023-8-23 10:33:28 | 显示全部楼层
如果别人不按门铃呢,只是在前面晃悠
回复

使用道具 举报

3

主题

63

帖子

606

积分

高级会员

Rank: 4

积分
606
金钱
543
HASS币
0
发表于 2023-8-23 11:08:44 | 显示全部楼层
这个无敌了。。这两天搞的头大了,替换了文件,主机重启文件没了。。终于有大佬搞出这个了
回复

使用道具 举报

3

主题

164

帖子

1558

积分

金牌会员

Rank: 6Rank: 6

积分
1558
金钱
1394
HASS币
10
发表于 2023-8-23 14:27:43 | 显示全部楼层
kkk123 发表于 2023-8-23 10:33
如果别人不按门铃呢,只是在前面晃悠

我记得锁上面可以设置多少秒后还有人自动抓拍的
回复

使用道具 举报

12

主题

85

帖子

746

积分

高级会员

Rank: 4

积分
746
金钱
661
HASS币
10
 楼主| 发表于 2023-8-23 14:45:08 | 显示全部楼层
kkk123 发表于 2023-8-23 10:33
如果别人不按门铃呢,只是在前面晃悠

目前看,这个接口只获取到开门和门铃信息,和那个网页信息一致。是不如wss里过来的数据丰富。 如果哪个大佬能实现wss的动态url就方便很多了。
不过这两个,要求不高的话勉强够用。
回复

使用道具 举报

12

主题

85

帖子

746

积分

高级会员

Rank: 4

积分
746
金钱
661
HASS币
10
 楼主| 发表于 2023-8-23 14:50:31 | 显示全部楼层
li2244578 发表于 2023-8-23 14:27
我记得锁上面可以设置多少秒后还有人自动抓拍的

我门锁设置的,抓拍的图片数据貌似没有在公众号和网页显示。也就没法跟踪到了。
回复

使用道具 举报

3

主题

63

帖子

606

积分

高级会员

Rank: 4

积分
606
金钱
543
HASS币
0
发表于 2023-8-23 21:03:30 | 显示全部楼层
大佬,导入后报error: "invalid_token"怎么回事
回复

使用道具 举报

12

主题

85

帖子

746

积分

高级会员

Rank: 4

积分
746
金钱
661
HASS币
10
 楼主| 发表于 2023-8-23 21:47:56 | 显示全部楼层
isw866 发表于 2023-8-23 21:03
大佬,导入后报error: "invalid_token"怎么回事

第一行的触发节点里,要替换自己的信息。 然后手动点下触发获取token 。 第二行流程是直接调取第一行产生的token.
回复

使用道具 举报

3

主题

63

帖子

606

积分

高级会员

Rank: 4

积分
606
金钱
543
HASS币
0
发表于 2023-8-24 00:22:18 | 显示全部楼层
KevinYAN 发表于 2023-8-23 21:47
第一行的触发节点里,要替换自己的信息。 然后手动点下触发获取token 。 第二行流程是直接调取第一行产生 ...

换成自己信息了。第一行可以获取到toke,第二行报这个错误,不知道怎么回事,删减了几个节点搞好了
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-12-22 22:13 , Processed in 0.057868 second(s), 35 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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