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

标题: 智能门锁-优智云家连接ha [打印本页]

作者: 恐别倾城    时间: 2023-12-28 13:52
标题: 智能门锁-优智云家连接ha
本帖最后由 恐别倾城 于 2024-2-4 16:07 编辑

家里的门锁是用的优智云家的解决方案,参考了这位大佬(https://bbs.hassbian.com/thread-18879-1-1.html)的连接ha方案,发现不是很实用。该大佬的方案需要更改node-red的websockt模块,比较麻烦不适合小白,索性自己写了一个模块。
可以在node-red里搜索  node-red-contrib-smart-door  直接安装。
这个节点主要是用来连接优智云家的websockt接口
[attach]55796[/attach]
我已经把完整的flow写好了,有兴趣的可以试用一下[attach]55795[/attach]
导入之后只需要修改  触发登录  节点里面的用户名、密码、clientId即可,如何获取clientId可以参考这位大佬(https://bbs.hassbian.com/thread-18879-1-1.html)的文章
# 2024.2.4
1、更新1.0.4版本
支持通过ws连接发送信息(可用于 解锁)
接受参数参考 处理解锁数据 节点

2、更新示例flow
增加 设置全局变量处理解锁数据 节点,用于解锁
[attach]55795[/attach]



作者: flashbj    时间: 2023-12-28 14:15
建议吧json文件放上,上面的代码复制后,导入报错
作者: 恐别倾城    时间: 2023-12-28 14:18
flashbj 发表于 2023-12-28 14:15
建议吧json文件放上,上面的代码复制后,导入报错

已经上传了
作者: yx262514    时间: 2023-12-28 14:18
这个怎么判断开锁人是谁呢?可以具体分享一下吗?
作者: 恐别倾城    时间: 2023-12-28 14:20
yx262514 发表于 2023-12-28 14:18
这个怎么判断开锁人是谁呢?可以具体分享一下吗?

节点会输出username、id字段,username是你在门锁上设置的用户名称,id是用户id
作者: yx262514    时间: 2023-12-28 14:21
可以加您个联系方式具体了解一下吗?
作者: 恐别倾城    时间: 2023-12-28 14:23
yx262514 发表于 2023-12-28 14:21
可以加您个联系方式具体了解一下吗?

有什么问题你可以直接跟帖问,这样也可以帮助到有同样问题的人
作者: sauron    时间: 2023-12-28 14:26
太好了,不用再每次升级nr后改文件了
作者: yx262514    时间: 2023-12-28 14:30
可以留个联系方式吗2363291419

作者: flashbj    时间: 2023-12-28 14:31
确实方便,我修改一下我原来的流程
作者: yx262514    时间: 2023-12-28 14:32
按照您的代码,出现了错误
作者: 恐别倾城    时间: 2023-12-28 14:33
yx262514 发表于 2023-12-28 14:32
按照您的代码,出现了错误

看下主贴,使用我分享的文件解压以后导入,平台上传代码有点问题
作者: yx262514    时间: 2023-12-28 14:50
之前按照大佬的教程已经替换了nr文件不影响吧
作者: yx262514    时间: 2023-12-28 15:01
账号密码都输入对了,不知道为什么还是显示登录失败

作者: 恐别倾城    时间: 2023-12-28 15:10
yx262514 发表于 2023-12-28 15:01
账号密码都输入对了,不知道为什么还是显示登录失败

clientId有没有填写正确?
作者: lichao622    时间: 2023-12-28 15:13
大佬,这个直接安装导入后,填写优智云家的账号密码和clientid就可以用啦吧。不用再像之前替换什么文件了吧。
作者: 恐别倾城    时间: 2023-12-28 15:14
lichao622 发表于 2023-12-28 15:13
大佬,这个直接安装导入后,填写优智云家的账号密码和clientid就可以用啦吧。不用再像之前替换什么文件了吧 ...

是的,不需要替换文件
作者: lichao622    时间: 2023-12-28 15:24
恐别倾城 发表于 2023-12-28 15:14
是的,不需要替换文件

太棒了!这两天就在找这个接入方法,同样的,大佬想请教下,我还有个门锁,是通过一款叫叮叮智能的软件接入,这个能用同样的办法试试吗。
作者: 恐别倾城    时间: 2023-12-28 15:28
lichao622 发表于 2023-12-28 15:24
太棒了!这两天就在找这个接入方法,同样的,大佬想请教下,我还有个门锁,是通过一款叫叮叮智能的软件接 ...

这个不是很清楚,如果链接是指向优智云家的h5.kiwik.cn这个地址的,就可以使用,如果不是就用不了
作者: lichao622    时间: 2023-12-28 15:34
我看了下 是指向这个的。https://chniot.lancens.com
作者: zuobianfy    时间: 2023-12-28 16:21
只是改用户名和密码。其他的要改吗?

作者: 恐别倾城    时间: 2023-12-28 16:22
zuobianfy 发表于 2023-12-28 16:21
只是改用户名和密码。其他的要改吗?

还有clientId需要改成你自己的
作者: liaozhihong    时间: 2023-12-28 16:41
不如教教我们怎么写这个插件呢,把写这个插件的方法说一声,哈哈
作者: 恐别倾城    时间: 2023-12-28 16:47
liaozhihong 发表于 2023-12-28 16:41
不如教教我们怎么写这个插件呢,把写这个插件的方法说一声,哈哈

https://nodered.17coding.net/docs/creating-nodes/官方文档写的比较清晰,可以看下

作者: li2244578    时间: 2023-12-28 17:42
高手.. 我改成你的
作者: flashbj    时间: 2023-12-29 08:51
[attach]54678[/attach]
我导入了你的流程,指纹开锁,获取不到指纹ID,时间也显示出不出来,did显示undefined,是什么情况呢

作者: 恐别倾城    时间: 2023-12-29 09:38
本帖最后由 恐别倾城 于 2024-1-6 21:56 编辑
flashbj 发表于 2023-12-29 08:51
我导入了你的流程,指纹开锁,获取不到指纹ID,时间也显示出不出来,did显示undefined,是什么情况呢
...

抱歉,应该是[attach]54679[/attach]这个节点数据处理有点问题
双击修改为以下代码
  1. const { name, data, did, created_at } = msg.payload?.payload || {};
  2. const { lock_user, image_url } = data || {};

  3. const actionMaps = {
  4.     REMOTE_UNLOCK:"门铃",
  5.     UNLOCKED:"开锁",
  6.     LOCK_FINGERPRINT_FRONZEN:"验证失败",
  7.     LOCKED:"上锁"
  8. }
  9. msg.payload = {
  10.     action: actionMaps[name] || name,
  11.     did,
  12.     image_url: image_url || "",
  13.     time: formatTime(created_at)
  14. }

  15. if (name == 'UNLOCKED'){
  16.     //开锁
  17.     const { type, id, alias } = lock_user;
  18.     const maps = {
  19.         0:'门内',
  20.         1:'指纹',
  21.         2:'密码',
  22.         5:'微信',
  23.         6:'人脸'
  24.     }
  25.     msg.payload.type = maps[type]
  26.     msg.payload.user = id
  27.     msg.payload.username = alias
  28. } else if (name == 'LOCKED'){
  29.     //上锁
  30. } else if (name == 'REMOTE_UNLOCK') {
  31.     //请求远程开锁(门铃)
  32. } else if (name == 'LOCK_FINGERPRINT_FRONZEN') {
  33.     //开锁失败
  34. }else{
  35.     msg.payload = {}
  36.     return msg
  37. }


  38. function formatTime(isoString) {
  39.     const date = new Date(isoString);
  40.     const year = date.getFullYear();
  41.     const month = (date.getMonth() + 1).toString().padStart(2, '0');
  42.     const day = date.getDate().toString().padStart(2, '0');
  43.     const hours = date.getHours().toString().padStart(2, '0');
  44.     const minutes = date.getMinutes().toString().padStart(2, '0');
  45.     const seconds = date.getSeconds().toString().padStart(2, '0');

  46.     return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
  47. }


  48. return msg;
复制代码

如果还是不行,尝试直接从  实时情况  中获取数据





作者: flashbj    时间: 2023-12-29 10:30
恐别倾城 发表于 2023-12-29 09:38
抱歉,应该是这个节点数据处理有点问题
将这个节点的代码更改为
或双击修改为以下代码

好的,我已经修改了,今天再测试一下
作者: lqianlong    时间: 2023-12-31 11:39
有离家的方案吗?  我这个门没有以上锁的消息。

作者: li2244578    时间: 2023-12-31 13:13
lqianlong 发表于 2023-12-31 11:39
有离家的方案吗?  我这个门没有以上锁的消息。

出门后按上锁按键.前面部有个锁头标致的.试试看

作者: z1717332    时间: 2024-1-1 13:46
有没叮叮智能  方案的
作者: jasona3    时间: 2024-1-2 14:41
flashbj 发表于 2023-12-29 10:30
好的,我已经修改了,今天再测试一下

能分享下你改好的流吗?谢谢!
作者: flashbj    时间: 2024-1-2 15:27
jasona3 发表于 2024-1-2 14:41
能分享下你改好的流吗?谢谢!

流程还在改,还没改完
作者: xiaokun566    时间: 2024-1-3 08:30
谢谢大佬

作者: KevinYAN    时间: 2024-1-4 20:53
神啊,你是怎么想到自己写一个节点的。我为此困扰了很久很久。
作者: 恐别倾城    时间: 2024-1-5 11:21
KevinYAN 发表于 2024-1-4 20:53
神啊,你是怎么想到自己写一个节点的。我为此困扰了很久很久。

没有合适的轮子,就要自己造轮子,哈哈
作者: li2244578    时间: 2024-1-6 10:57
恐别倾城 发表于 2024-1-5 11:21
没有合适的轮子,就要自己造轮子,哈哈

能写就是好...我就是不会写
作者: 阿斯蒂芬    时间: 2024-1-6 14:48
恐别倾城 发表于 2023-12-29 09:38
抱歉,应该是这个节点数据处理有点问题
将这个节点的代码更改为
或双击修改为以下代码

不对,这样写payload.type、payload.user、payload.username都没了
作者: 恐别倾城    时间: 2024-1-6 21:58
阿斯蒂芬 发表于 2024-1-6 14:48
不对,这样写payload.type、payload.user、payload.username都没了

你说的对,真是丢人,哈哈
作者: KevinYAN    时间: 2024-1-7 19:13
yx262514 发表于 2023-12-28 14:18
这个怎么判断开锁人是谁呢?可以具体分享一下吗?

从节点的payload.payload里就能看到。
作者: flashbj    时间: 2024-1-8 10:24
根据楼主写的流程,结合我之前的优智云家的控制逻辑,我修改了一版,测试了几天,功能正常。

因能力有限,用了很多switch节点做判断,各位有需要的可以参考,流程图在下面,请大佬轻喷
[attach]55016[/attach]

作者: yx262514    时间: 2024-1-10 08:39
flashbj 发表于 2024-1-8 10:24
根据楼主写的流程,结合我之前的优智云家的控制逻辑,我修改了一版,测试了几天,功能正常。

因能力有限, ...

可以分享一下json吗
作者: jasona3    时间: 2024-1-11 14:38
yx262514 发表于 2024-1-10 08:39
可以分享一下json吗

同求。
还想要这两个流。
人脸识别与车库门(车牌识别)

作者: flashbj    时间: 2024-1-11 18:01
yx262514 发表于 2024-1-10 08:39
可以分享一下json吗

[attach]55120[/attach]
需要修改用户名、密码、ID

作者: flashbj    时间: 2024-1-12 10:24
jasona3 发表于 2024-1-11 14:38
同求。
还想要这两个流。
人脸识别与车库门(车牌识别)

优智云家的json已分享,人脸识别和车牌识别你也想要?

作者: 南风知我意    时间: 2024-1-15 02:05
flashbj 发表于 2024-1-8 10:24
根据楼主写的流程,结合我之前的优智云家的控制逻辑,我修改了一版,测试了几天,功能正常。

因能力有限, ...

我导入这个方案后,在小爱tts后加一个debug看调试信息也能收到那些unlock,id啊什么的,但是小爱音箱就是不出声音,加一个inject也能戳响小爱音箱说话,请问这是什么原因呢?
作者: 阿斯蒂芬    时间: 2024-1-15 09:54
这个长时间运行,一次消息实时情况节点会收到三次,希望优化一下
作者: flashbj    时间: 2024-1-15 11:17
阿斯蒂芬 发表于 2024-1-15 09:54
这个长时间运行,一次消息实时情况节点会收到三次,希望优化一下

是的,我也发现这个问题了,一开门小爱同学TTS播报,会重复两三次
作者: 恐别倾城    时间: 2024-1-15 11:21
flashbj 发表于 2024-1-15 11:17
是的,我也发现这个问题了,一开门小爱同学TTS播报,会重复两三次

我还在找出现问题的原因,暂时的解决方案是在判断类型后添加一个delay节点,来做一下防抖[attach]55239[/attach]

作者: 恐别倾城    时间: 2024-1-15 11:22
阿斯蒂芬 发表于 2024-1-15 09:54
这个长时间运行,一次消息实时情况节点会收到三次,希望优化一下

我发现这个问题了,有可能是同时存在多个websocket连接导致的,还在复现问题,暂时先加个delay节点做下防抖吧
作者: 阿斯蒂芬    时间: 2024-1-15 12:46
恐别倾城 发表于 2024-1-15 11:22
我发现这个问题了,有可能是同时存在多个websocket连接导致的,还在复现问题,暂时先加个delay节点做下防 ...

好的,把触发登录调快点就容易复现些
作者: lqianlong    时间: 2024-1-15 16:27
li2244578 发表于 2023-12-31 13:13
出门后按上锁按键.前面部有个锁头标致的.试试看

我家这锁外面好像没有上锁键
作者: 恐别倾城    时间: 2024-1-15 16:37
阿斯蒂芬 发表于 2024-1-15 12:46
好的,把触发登录调快点就容易复现些

已修复,node-red里更新一下节点
作者: 恐别倾城    时间: 2024-1-15 16:37
flashbj 发表于 2024-1-15 11:17
是的,我也发现这个问题了,一开门小爱同学TTS播报,会重复两三次

已修复,node-red里更新一下节点
作者: flashbj    时间: 2024-1-15 16:58
恐别倾城 发表于 2024-1-15 16:37
已修复,node-red里更新一下节点

好的,我再测试几天试试

作者: 阿斯蒂芬    时间: 2024-1-16 12:18
恐别倾城 发表于 2024-1-15 16:37
已修复,node-red里更新一下节点

好的,更新试试
作者: li2244578    时间: 2024-1-16 12:49
lqianlong 发表于 2024-1-15 16:27
我家这锁外面好像没有上锁键

一般来说都有个画成 锁头
作者: 阿abc    时间: 2024-1-16 13:27
学习
vvvvvvv
作者: jasona3    时间: 2024-1-16 17:01
flashbj 发表于 2024-1-12 10:24
优智云家的json已分享,人脸识别和车牌识别你也想要?

嗯,能帮分享下吗?谢谢!
作者: flashbj    时间: 2024-1-16 18:01
jasona3 发表于 2024-1-16 17:01
嗯,能帮分享下吗?谢谢!

https://bbs.hassbian.com/thread-22719-1-1.html这是车牌识别的,人脸识别我近期会出个教程
作者: recoco    时间: 2024-1-21 18:22
感谢大佬。这个门锁是什么品牌的?哪位兄弟推荐一款?谢谢!
作者: li2244578    时间: 2024-1-21 20:00
recoco 发表于 2024-1-21 18:22
感谢大佬。这个门锁是什么品牌的?哪位兄弟推荐一款?谢谢!

这个你要问卖家了.
有些所带把手检测 关锁 开锁
有些锁带远程视频可视
你问卖家就是了
作者: zhufengwan    时间: 2024-1-23 15:13
兄弟,不太会写node-red模块,我也是按照之前大佬的教程通过改websocket节点实现的,并且我还用httprequest和websocketin实现了按门铃以后的远程开锁,主要有两个请求,应该是可以封装成一个类似live 的模块吧!
第一步:获取开锁token

  1. msg.url = "https://h5.kiwik.cn/restapi/users/抓包获取/mfa/tokens";

  2. msg.headers = {
  3.     'Content-Type': 'application/json',
  4.     'X-Kiwik-Client-Id': '抓包获取'
  5. };

  6. msg.payload = {
  7.     'auth_type': 'secure_password',
  8.     'credential': '远程开锁密码'
  9. }

  10. return msg;
复制代码


第二步:通过httprequest返回access_token,组装下面的请求体


  1. // 获取上一步http请求返回的远程 Token
  2. let accessToken = msg.payload.access_token;

  3. // 这个就是远程开锁的websocket请求体
  4. msg = {
  5.     "header": {
  6.         "namespace": "Iot.Device",
  7.         "name": "Ctrl",
  8.         "messageId": 通过uuid方法生成,
  9.         "payloadVersion": 1,
  10.         "secureToken": accessToken
  11.     },
  12.     "payload": {
  13.         "did": "门锁did",
  14.         "verify": true,
  15.         "data": "抓包获取"
  16.     }
  17. }
  18. return msg;
复制代码

之前慢慢调试,踩了好多坑,才调通的,主要是不会写node-red模块,期待大佬给加进去
作者: zhufengwan    时间: 2024-1-23 15:20
zhufengwan 发表于 2024-1-23 15:13
兄弟,不太会写node-red模块,我也是按照之前大佬的教程通过改websocket节点实现的,并且我还用httprequest ...

封装好的模块应该是一个触发式的,自己通过实际情况在合适的时间,通过合适的方法去触发,就能实现远程开门了,毕竟远程开门的操作还是有风险的
作者: tianya2002    时间: 2024-2-2 20:43
已成功接入,感谢大佬分享!
作者: csl0524    时间: 2024-2-3 15:27
本帖最后由 csl0524 于 2024-2-4 09:56 编辑

之前一直用替换法使用,也实现了远程开锁的功能,非常方便,前天手残升级了nodered再也搞不好了,非常希望楼主能够添加开锁功能,非常需要,感谢
我把之前能用的远程开锁的流注入到实时情况节点中不但开不了锁,该节点还会连接断开
本质上,发送心跳消息和发送开锁信息是一样的,但是发送开锁信息就是会导致连接断开

作者: 恐别倾城    时间: 2024-2-4 16:07
csl0524 发表于 2024-2-3 15:27
之前一直用替换法使用,也实现了远程开锁的功能,非常方便,前天手残升级了nodered再也搞不好了,非常希望 ...

更新了
作者: 恐别倾城    时间: 2024-2-4 16:08
zhufengwan 发表于 2024-1-23 15:13
兄弟,不太会写node-red模块,我也是按照之前大佬的教程通过改websocket节点实现的,并且我还用httprequest ...

已更新
作者: csl0524    时间: 2024-2-4 19:29
恐别倾城 发表于 2024-2-4 16:07
更新了

感谢更新,其实在你前一版本刚好已经实现了远程开锁功能了,现在又更新到了1.04版本,但是开锁应该要输入开锁密码的在你提供的流中没有看到,我把自己已经可以用的流发出来给大家看下,并把流程图贴出来供参考[attach]55798[/attach]
[attach]55797[/attach]



作者: 恐别倾城    时间: 2024-2-4 19:56
csl0524 发表于 2024-2-4 19:29
感谢更新,其实在你前一版本刚好已经实现了远程开锁功能了,现在又更新到了1.04版本,但是开锁应该要输入 ...

我家的锁没有远程开锁功能,所以我只是提供了一个可以用来开锁的途径,具体还是要你们自己测试下
作者: csl0524    时间: 2024-2-5 08:56
恐别倾城 发表于 2024-2-4 19:56
我家的锁没有远程开锁功能,所以我只是提供了一个可以用来开锁的途径,具体还是要你们自己测试下 ...

关于远程开锁再报告一个问题,当执行远程开锁之后由于实时情况这个节点每30秒会发送心跳包,导致开锁的动作也是每30秒执行一次,这样就太危险了,我的变通方法是执行开锁后延时2秒再执行一次登陆操作,暂时可以避免这个现象,希望下一版能改进
作者: 恐别倾城    时间: 2024-2-5 09:14
csl0524 发表于 2024-2-5 08:56
关于远程开锁再报告一个问题,当执行远程开锁之后由于实时情况这个节点每30秒会发送心跳包,导致开锁的动 ...

我测试并没有发现这个问题,心跳数据和开锁数据是分开的,能看下你的流吗
作者: csl0524    时间: 2024-2-5 10:22
恐别倾城 发表于 2024-2-5 09:14
我测试并没有发现这个问题,心跳数据和开锁数据是分开的,能看下你的流吗 ...

[attach]55815[/attach]

当红框中的为pingmsg时开锁才能成功,这会导致遵循心跳包的30秒间隔重复开锁,如果红框中换成你提供的范例中的payload时开锁好像不成功

作者: zhufengwan    时间: 2024-2-5 12:40
恐别倾城 发表于 2024-2-4 16:08
已更新

感谢更新,今天回家了测试下
作者: 恐别倾城    时间: 2024-2-5 13:05
csl0524 发表于 2024-2-5 10:22
当红框中的为pingmsg时开锁才能成功,这会导致遵循心跳包的30秒间隔重复开锁,如果红框中换成你提供的 ...

更新以后支持传入自定义数据,而不是修改pingMsg,可以看下我给的流的例子
作者: zhufengwan    时间: 2024-2-5 13:05
恐别倾城 发表于 2024-2-4 16:08
已更新

还没测试,不过看了一下大佬代码, 应该是把我的流程里面的开锁节点直接换成你的live节点,加个custom参数应该就可以完美适配了,回家搞一搞
作者: csl0524    时间: 2024-2-5 14:51
恐别倾城 发表于 2024-2-5 13:05
更新以后支持传入自定义数据,而不是修改pingMsg,可以看下我给的流的例子 ...

你的例子中开锁的代码中没有msg.url 、msg.token这两个参数的?不用的吗?但是不带这两参数“实时情况”就断开了。

[attach]55817[/attach]

改成payload也是会断开连接,只有pingmsg才是可以发送成功的。由于你的锁没有开锁功能,可能开锁的过程和你的测试环境不同的,开锁是要用开锁密码请求另外一个网址得到一个开锁token的,并不是用登陆时获取的token的,而在你的例子代码中用的是登陆的token所以可以发送,可能是这个原因吧?

作者: 恐别倾城    时间: 2024-2-5 16:23
本帖最后由 恐别倾城 于 2024-2-5 16:25 编辑
csl0524 发表于 2024-2-5 14:51
你的例子中开锁的代码中没有msg.url 、msg.token这两个参数的?不用的吗?但是不带这两参数“实时情况” ...

你的函数是错误的,这样写函数会导致ws连接重置
[attach]55819[/attach]msg.url 、msg.token这两个参数是不需要传的,因为连接已经建立

作者: csl0524    时间: 2024-2-5 16:40
恐别倾城 发表于 2024-2-5 16:23
你的函数是错误的,这样写函数会导致ws连接重置
msg.url 、msg.token这两个参数是不需要传的,因为连接已 ...

搞定了,感谢指导
作者: zhufengwan    时间: 2024-2-6 01:00
已经测试过了,完美搞定
  1. // 开锁参数多加一个custom,内容随意就可以了,实际参数放到payload里面
  2. msg.custom = true
  3. msg.payload = {
  4.     "header": {
  5.         "namespace": "Iot.Device",
  6.         "name": "Ctrl",
  7.         "messageId": guid(),
  8.         "payloadVersion": 1,
  9.         "secureToken": accessToken
  10.     },
  11.     "payload": {
  12.         "did": "XXXXXXX",
  13.         "verify": true,
  14.         "data": "XXXXXXXXXX"
  15.     }
  16. }
复制代码

作者: yx262514    时间: 2024-2-21 17:09
大佬,请问一下您这个有没有根据不同的指纹判断是谁回家的json
作者: a5234338    时间: 2024-2-22 00:58
本帖最后由 a5234338 于 2024-2-22 01:00 编辑

2月4号之后理解锁数据 节点和设置全局变量节点里头的参数是不是要自己抓包?有方法吗,不知道是不是我没注意没看到 谁可以提醒一下嘛 感谢
作者: a5234338    时间: 2024-2-22 01:10
zhufengwan 发表于 2024-2-6 01:00
已经测试过了,完美搞定

"did"和"data"是要自己抓包吗?文中有提及吗?方便提示一下不,感谢!
作者: 恐别倾城    时间: 2024-2-22 11:20
a5234338 发表于 2024-2-22 00:58
2月4号之后处理解锁数据 节点和设置全局变量节点里头的参数是不是要自己抓包?有方法吗,不知道是不是我没 ...

如果你不需要解锁功能的话,可以把这两个节点删了。如果需要解锁功能的话,需要自己抓包
作者: a5234338    时间: 2024-2-22 12:31
恐别倾城 发表于 2024-2-22 11:20
如果你不需要解锁功能的话,可以把这两个节点删了。如果需要解锁功能的话,需要自己抓包 ...

需要开锁功能。node-red照抄你的已连接成功,门铃,开锁,在右侧调试窗口都可以看到相应的数据。通过优智云家远程开锁,调试窗口也能正常输出数据,里头有一个’did‘,不知道是不是这个里头的‘did'。如果是的话,另一个参数’data‘怎么抓包呢?抓包的步骤可以提示一下吗?我手机上有Stream。或者像获取‘clientId’一样在浏览器F12里头可以找到吗?请求大佬指点,感谢感谢!!
作者: a5234338    时间: 2024-2-22 12:40
zhufengwan 发表于 2024-2-6 01:00
已经测试过了,完美搞定

“did”和“data”数据在哪儿抓的,有经验分享吗?另外在平台上远程开锁是需要输入一个6位数的密码,这里不用吗?
作者: a5234338    时间: 2024-2-22 12:41
csl0524 发表于 2024-2-5 16:40
搞定了,感谢指导

远程开锁成功了吗?“did”和“data”数据在哪儿抓的,有经验分享不
作者: 恐别倾城    时间: 2024-2-22 14:18
a5234338 发表于 2024-2-22 12:31
需要开锁功能。node-red照抄你的已连接成功,门铃,开锁,在右侧调试窗口都可以看到相应的数据。通过优智 ...

我的锁没有远程开锁功能,我猜应该是从websocket接口里抓的数据
进入h5.kiwik.cn这个网页,选择你的门锁,然后点击F12 - 网络,选择WS,里面应该有一条请求,没有就刷新一下看,然后点击远程解锁,应该会多出一条数据,那个数据就是开锁用的请求数据[attach]56133[/attach]

作者: csl0524    时间: 2024-2-22 16:22
a5234338 发表于 2024-2-22 12:41
远程开锁成功了吗?“did”和“data”数据在哪儿抓的,有经验分享不

你的问题信息太少无法具体回答,开锁需要配置如下开锁信息:
[attach]56134[/attach]
再向https://h5.kiwik.cn/restapi/users/XXXXXXXX/mfa/tokens这个网址请求得到开锁所需的token

作者: yx262514    时间: 2024-2-22 17:17
大佬,能不能完善一下判断是哪个指纹id开锁的json
作者: a5234338    时间: 2024-2-22 19:02
恐别倾城 发表于 2024-2-22 14:18
我的锁没有远程开锁功能,我猜应该是从websocket接口里抓的数据
进入h5.kiwik.cn这个网页,选择你的门锁 ...

非常感谢博主热情回答。按照你所述方法抓到2条ws数据包,私信发你,有空的话可以帮我看一下吗?‘did’能搜到,不确定对不对,待测试。‘data’数据我是真没找到。
作者: csl0524    时间: 2024-2-22 20:01
yx262514 发表于 2024-2-22 17:17
大佬,能不能完善一下判断是哪个指纹id开锁的json

在楼主开发的的节点后面加一个switch节点监测msg.payload.payload.data.lock_user.alias就好了

[attach]56138[/attach]

作者: a5234338    时间: 2024-2-22 21:35
csl0524 发表于 2024-2-22 16:22
你的问题信息太少无法具体回答,开锁需要配置如下开锁信息:

再向https://h5.kiwik.cn/restapi/users/XX ...
  1. https://h5.kiwik.cn/restapi/users/XXXXXXXX/mfa/tokens
复制代码
请问这个里头的“ XXXXXXXX”放在哪个节点的哪个参数里头?你不是用的楼主的”流“吗?看截图不太一样
作者: a5234338    时间: 2024-2-22 21:39
csl0524 发表于 2024-2-22 16:22
你的问题信息太少无法具体回答,开锁需要配置如下开锁信息:

再向https://h5.kiwik.cn/restapi/users/XX ...

可以分享一下你的流文件吗?方便我对照来看。感谢感谢!
作者: csl0524    时间: 2024-2-22 22:07
a5234338 发表于 2024-2-22 21:35
请问这个里头的“ XXXXXXXX”放在哪个节点的哪个参数里头?你不是用的楼主的”流“吗?看截图不太一样 ...

[attach]56139[/attach]

作者: zhufengwan    时间: 2024-2-23 00:38
a5234338 发表于 2024-2-22 12:40
“did”和“data”数据在哪儿抓的,有经验分享吗?另外在平台上远程开锁是需要输入一个6位数的密码,这里 ...

这个是在电脑登录优智云家,然后开f12 抓websocket的包,然后开锁以后就能找到,然后需要自己分析下前后顺序,其中有一个是输入你的6位密码,这个帖子之前我有一个评论把需要的请求都发了一下,当时是希望楼主加开锁功能,当时都已经分析完了,只是不太会写node-red插件
作者: zhufengwan    时间: 2024-2-23 00:39
a5234338 发表于 2024-2-22 12:40
“did”和“data”数据在哪儿抓的,有经验分享吗?另外在平台上远程开锁是需要输入一个6位数的密码,这里 ...
  1. msg.url = "https://h5.kiwik.cn/restapi/users/xxxxx/mfa/tokens";

  2. msg.headers = {
  3.     'Content-Type': 'application/json',
  4.     'X-Kiwik-Client-Id': 'xxxxxxxx'
  5. };

  6. msg.payload = {
  7.     'auth_type': 'secure_password',
  8.     'credential': '6位密码'
  9. }

  10. return msg;
复制代码

作者: yx262514    时间: 2024-2-23 09:28
csl0524 发表于 2024-2-22 20:01
在楼主开发的的节点后面加一个switch节点监测msg.payload.payload.data.lock_user.alias就好了

我试过了,我获取到的消息都是did,没有具体的人的id
作者: a5234338    时间: 2024-2-23 10:12
zhufengwan 发表于 2024-2-23 00:39

这段代码是哪个节点里头呀 方便分享一下你整个flow吗?你是用的楼主的flow作为基础,修改加入开锁功能的吗?我想对照你的flow方便学习。我小白是照抄楼主的flow,他提到的“触发登陆”里头3个参数我按照他在文中的指导抓到数据并且填入连接成功了。方便的话请你分享你的flow与我研究学习下,感谢!!
作者: 续梦    时间: 2024-2-23 11:09
支持高手





欢迎光临 『瀚思彼岸』» 智能家居技术论坛 (https://bbs.hassbian.com/) Powered by Discuz! X3.5