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

 找回密码
 立即注册
查看: 1389|回复: 7

[经验分享] Aqara D100 门锁 接入

[复制链接]

3

主题

135

帖子

2019

积分

金牌会员

Rank: 6Rank: 6

积分
2019
金钱
1884
HASS币
0
发表于 2024-5-30 10:20:23 | 显示全部楼层 |阅读模式
本帖最后由 zfgjy2005 于 2024-5-30 10:18 编辑

这两天看到有人询问  Aqara D100 门锁接入HA,就发个把我的接入过程分享一下。有需要自取,有建议欢迎探讨。

一、网关及门锁使用情况
这个门锁是通过蓝牙连接的,我的网关是小米多模1代,后来加了多模2代,也是支持的。因为是蓝牙连接,现在在米家app里面看,1代和2代网关下面都可以看到这个子设备。
顺便说下,这个门锁用了大概3年,挺好的,没出现过连接不上的问题,电池也耐用,一年大概充电1-2次,一次大概半天就好了,关键买的时候还便宜,印象中是几百块。
我是指纹开锁,老人是nfc开锁,有时候拿东西不方便用指纹或者nfc,喊手机或者手表siri开锁也可以(门锁接入HA以后,接入了HomeKit)。家里没有siri设备,不用担心其他人门外喊siri开锁。
关于自动化:目前设置了2个。一个是室内开门就开外面楼道灯,一个是室外开门就开家里过道灯2分钟(方便入户放东西、放外套到过道的外衣衣柜)。


二、接入过程
我是通过 xiaomi gateway3 集成添加的门锁,添加后这个设备会生成3个实体,Action 、 Contact、Battery。
Contact好像没啥用,Battery电池就不说了。下面重点说Action。
Action 状态有 lock 、door、空。开门时就会短暂为 door, 然后关闭时候为lock。
这里有2个bug,一个是直接通过Action状态的door无法判断是室内开门还是室外开门,第二个是每次door或者lock状态后,会跟一个 空 状态。所以平时看到的Action这个实体的状态大部分时间是 空。挺不友好的。
那下面就来稍微修改下。方法很多,我讲我常用的2个办法。


方法1. node red
没用HA之前,我就使用了node red,所以习惯有啥就拿它来用。
在node red 添加一个  events:state 节点,entity填入 门锁Action 这个实体就行,注意别填错了,还有门锁state、command等。然后可以勾选连接时输出,这样开始就有第一次状态输出,不用等开关门。
观察这个节点输出的debug信息,发现 msg.data.new_state.attributes.message 会输出门锁的信息。
信息有:Lock、Unlock inside the door、Door is open、Unlock outside the door、Timeout is not closed这样门锁的几个状态信息就有了。
另外从msg.data.new_state.attributes.key_id 可以显示开门人的id信息,msg.data.new_state.attributes.method 可以显示开门方式,指纹还是nfc卡什么的。
这个就可以把有用信息抽出来,用一个function节点,节点代码如下:顺便就把状态信息翻译一下,然后图标也根据状态来变化一下。

msg.payload = {
    "message": msg.data.new_state.attributes.message,
    "key_id": msg.data.new_state.attributes.key_id,
    "method": msg.data.new_state.attributes.method
}
msg.data = ""

if (msg.payload.message == 'Lock') {
    msg.payload.message = '门已关',
    flow.set("door_icon", "mdi:door-closed-lock");
}
if (msg.payload.message == 'Unlock inside the door') {
    msg.payload.message = '室内开门'
    flow.set("door_icon", "mdi:door-open");
}
if (msg.payload.message == 'Door is open') {
    msg.payload.message = '门已开'
    flow.set("door_icon", "mdi:door-open");
}
if (msg.payload.message == 'Unlock outside the door') {
    msg.payload.message = '室外开门'
    flow.set("door_icon", "mdi:door-open");
}
if (msg.payload.message == 'Timeout is not closed') {
    msg.payload.message = '门未关'
    flow.set("door_icon", "mdi:door-open");
}
return msg;




有了这个信息,可以直接在后面接自动化,也可以生成一个新的门锁实体,然后在HA里面做自动化,下面就随你玩了。实体信息参考下图:
微信截图_20240530100209.png


方法2:HA,template
有些人不用node red,直接HA也是可以的。
开始说xiaomi gateway3 生成的Action 状态看不到有用信息,但是在详细属性里面是可以的。如下图,我们需要Message、Method、Key ID。
微信截图_20240530100625.png


这样就可以用template 模版,代码如下:

sensor:
  - platform: template
    sensors:
      sensor_lock_new:
        friendly_name: "Lock_new"
        value_template: "{{ state_attr('sensor.xxxxxx_action', 'message') }}"
        attribute_templates:
          Key_ID: "{{ state_attr('sensor.xxxxxx_action', 'Key_ID) }}"

          Method: "{{ state_attr('sensor.xxxxxx_action', 'id') }}"

如果只需要Message,可以在配置——设备——辅助元素,添加template,这样是图形界面,直接生效。


有了template sensor,后面再HA里面根据需要设置自动化。


完了,有点啰嗦




评分

参与人数 2金钱 +10 收起 理由
edison0519 + 5 高手,这是高手!
dickman138 + 5

查看全部评分

回复

使用道具 举报

0

主题

608

帖子

2516

积分

金牌会员

Rank: 6Rank: 6

积分
2516
金钱
1908
HASS币
0
发表于 2024-5-30 10:39:12 | 显示全部楼层
挺厉害的,感谢分享
回复

使用道具 举报

0

主题

7

帖子

168

积分

注册会员

Rank: 2

积分
168
金钱
161
HASS币
0
发表于 2024-5-30 10:51:45 | 显示全部楼层
兄弟给力啊
回复

使用道具 举报

15

主题

406

帖子

2728

积分

金牌会员

Rank: 6Rank: 6

积分
2728
金钱
2322
HASS币
0
发表于 2024-5-30 11:21:26 | 显示全部楼层
雖然我用不到  但就是需要有你這樣熱心的人  讓有需要的人可以快速上手  
回复

使用道具 举报

12

主题

434

帖子

2340

积分

金牌会员

Rank: 6Rank: 6

积分
2340
金钱
1906
HASS币
0
发表于 2024-5-30 11:43:28 | 显示全部楼层
两个都没的玩,gateway3 接入过几天就不行,米家app里也是一样,过几天就不推送开门关门消息
homekit添加后删除就添加不了,要恢复出厂,指纹太多不想恢复
回复

使用道具 举报

2

主题

7

帖子

80

积分

注册会员

Rank: 2

积分
80
金钱
73
HASS币
0
发表于 2024-5-31 13:14:39 | 显示全部楼层
這兩天應該就是我發問. 買了這把門鎖已經一年多還未能順利加入home kit, 實行自動化, 很有挫敗感.
非常感謝zfgjy2005你無私的資訊, 十分感動, 下班後會抽空研究, 謝謝你
回复

使用道具 举报

0

主题

1

帖子

14

积分

新手上路

Rank: 1

积分
14
金钱
13
HASS币
0
发表于 2024-11-1 12:50:15 来自手机 | 显示全部楼层
請問複製您的語法輸入後顯示語法錯誤該怎麼修正?
回复

使用道具 举报

3

主题

135

帖子

2019

积分

金牌会员

Rank: 6Rank: 6

积分
2019
金钱
1884
HASS币
0
 楼主| 发表于 2024-11-2 23:18:20 | 显示全部楼层
Masusu0705 发表于 2024-11-1 12:50
請問複製您的語法輸入後顯示語法錯誤該怎麼修正?

把你复制的内容发过来看下,然后提示的错误也发一下。
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-22 23:58 , Processed in 0.106277 second(s), 32 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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