找回密码
 立即注册

微信扫码登录

搜索
查看: 186|回复: 3

[进阶教程] 将叮叮智能的门锁记录接入homeassistant(mosquitto和node-red)

[复制链接]

1

主题

3

回帖

23

积分

新手上路

积分
23
金钱
19
HASS币
0
发表于 前天 14:11 | 显示全部楼层 |阅读模式
本帖最后由 enjor 于 2025-10-2 14:23 编辑



    装修公司随便装了一个叮叮智能的门锁,在网上没有找到相关的插件能接入home assistant,发现这个东西有自己的小程序,虽然小程序不能远程开锁、关锁,但好歹有开关锁的记录,就自己试了试。
本人也是刚接触ha的小白,只是抛砖引玉,希望各位大佬轻喷,能够搓一个插件出来。
环境需求
eclipse mosquitto(最为mqtt服务器)、node-red(编程器)
我的部署环境:用部署在飞牛os上面的homeassistant、eclipse mosquitto、node-red(三个都是docker)

具体步骤、思路如下:

1. 观察叮叮智能小程序
这个小程序的登陆功能无需输入密码,而是直接登陆了微信用户,如果我的叮叮智能app里面没有绑定微信,那连数据都没有。以此推测这个小程序没有密码登陆的功能,那就只有token登陆了,这样的登陆方式,估计他的token可能就是不变的,这样对这个小程序抓包获取token,就能够请求参数了。

2. 能够返回的参数
image.png


                               
登录/注册后可看大图
主要就是开关锁的记录了。

3. 尝试抓包
打开抓包软件(我用的Reqable),在以下页面点击登陆按钮
image.png
image.png

                               
登录/注册后可看大图

                               
登录/注册后可看大图
抓到了这些东西,看到黄色光标上面的那一条,就找到了开锁和关索的记录。在请求头中,也获取了token
image.png

                               
登录/注册后可看大图
3.1. 分析包和回参
黄色光标上面那一条右键添加到API里进行调试,最终发现参数中的uid就是门锁的uid
image.png

                               
登录/注册后可看大图

请求之后,研究回参

image.png

                               
登录/注册后可看大图

                               
登录/注册后可看大图

发现了事件的时间跟小程序列表里的第一条一样,那就对了。type是事件类别、event_user_id就是用户几,img就是图片的网址(需要base64解密)

ps:type的对应关系可以通过小程序解包来找,这里就不细说了,太麻烦。我复制出来,如下:


typeList:[{type:0,name:"活动报警"},{type:1,name:"门铃呼叫"},{type:4,name:"电量报警"},{type:6,name:"门锁报警"},{type:20,name:"离线通知"}


3.2. info里应该有跟多的信息,一看就是base64加密,解密看看。

                               
登录/注册后可看大图
image.png
还有一个event_type,解包后发现对应关系如下:

(h="/images/[email protected]",v=0):h=t.base64_decode(a[c].img),"00"==D.content&&(l="指纹开锁",d="指纹开锁",""==a[c].img||null==a[c].img?(h="/images/[email protected]",v=0):h=t.base64_decode(a[c].img)),"01"==D.content&&(l="密码开锁",d="密码开锁",""==a[c].img||null==a[c].img?(h="/images/[email protected]",v=0):h=t.base64_decode(a[c].img)),"02"==D.content&&(l="卡开锁",d="卡开锁",""==a[c].img||null==a[c].img?(h="/images/[email protected]",v=0):h=t.base64_decode(a[c].img)),"03"==D.content&&(l="遥控开锁",d="遥控开锁",""==a[c].img||null==a[c].img?(h="/images/[email protected]",v=0):h=t.base64_decode(a[c].img)),"04"==D.content&&(l="钥匙开锁",d="钥匙开锁",""==a[c].img||null==a[c].img?(h="/images/[email protected]",v=0):h=t.base64_decode(a[c].img)),"05"==D.content&&(l="虹膜解锁",d="虹膜解锁",""==a[c].img||null==a[c].img?(h="/images/[email protected]",v=0):h=t.base64_decode(a[c].img)),"06"==D.content&&(l="手掌解锁",d="手掌解锁",""==a[c].img||null==a[c].img?(h="/images/[email protected]",v=0):h=t.base64_decode(a[c].img)),"07"==D.content&&(l="指静脉开锁",d="指静脉开锁"),"08"==D.content&&(l="人脸开锁",d="人脸开锁",""==a[c].img||null==a[c].img?(h="/images/[email protected]",v=0):h=t.base64_decode(a[c].img)),"09"==D.content&&(l="远程开锁",d="远程开锁",""==a[c].img||null==a[c].img?(h="/images/[email protected]",v=0):h=t.base64_decode(a[c].img)),"0A"==D.content&&(l="门内开锁",d="门内开锁",""!=a[c].img&&null!=a[c].img||

4. 构建node-red

image.png

flows.zip (3.05 KB, 下载次数: 0)

4.1. 请求智能门锁节点
image.png
换成你自己的token和uid,其他的都不用更改。

4.2. mqttout节点
image.png
服务端改成你自己的eclipse mosquitto地址


回复

使用道具 举报

1

主题

3

回帖

23

积分

新手上路

积分
23
金钱
19
HASS币
0
 楼主| 发表于 前天 14:15 | 显示全部楼层
本帖最后由 enjor 于 2025-10-2 14:20 编辑

5.接入homeassistant
在home-assistant/config里的configuration.yaml最下面,添加以下内容:

                               
登录/注册后可看大图

这一部分我是小白,不太会写
就可以在实体里,找到这三个了。

                               
登录/注册后可看大图

最终呈现效果

                               
登录/注册后可看大图

这里的照片我是随便贴了一张,有兴趣的大佬可以换成小程序里自带的图片。
其他的功能,因为小程序就没有什么功能,就只能这样了。
献丑。


回复

使用道具 举报

11

主题

357

回帖

2573

积分

金牌会员

盐城智能大神

积分
2573
金钱
2205
HASS币
10
QQ
发表于 前天 17:46 | 显示全部楼层
可惜啊 门换掉了 锁现在是摩根的了
回复

使用道具 举报

6

主题

64

回帖

785

积分

高级会员

积分
785
金钱
715
HASS币
0
发表于 前天 17:57 | 显示全部楼层
论坛就缺少这种愿意分享细节的高手
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-4 04:06 , Processed in 0.055808 second(s), 12 queries , MemCached On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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