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

 找回密码
 立即注册
楼主: deshing

[插件集成] 小米智能门锁2指静脉版接入ha

[复制链接]

24

主题

373

帖子

1515

积分

金牌会员

Rank: 6Rank: 6

积分
1515
金钱
1142
HASS币
0
发表于 2024-11-13 23:28:36 | 显示全部楼层
ms2 发表于 2024-11-7 08:50
我有涂鸦的zigbee锁,一直用的涂鸦网关,能写这种配置文件,然后接入到小米多模网关2里吗? ...

涂鸦锁应该用LocalTuya集成,和小米无关。
回复

使用道具 举报

2

主题

21

帖子

242

积分

中级会员

Rank: 3Rank: 3

积分
242
金钱
221
HASS币
0
 楼主| 发表于 2024-11-14 13:09:40 | 显示全部楼层
wuyoufan 发表于 2024-11-12 18:06
请问小米M20门锁能接入吗

理论说来说,你的门锁支持蓝牙mesh就可以用我的这种方法来接入,不过代码得你自己写和调整
回复

使用道具 举报

2

主题

21

帖子

242

积分

中级会员

Rank: 3Rank: 3

积分
242
金钱
221
HASS币
0
 楼主| 发表于 2024-11-14 13:21:58 | 显示全部楼层
invincible 发表于 2024-11-13 00:47
最近搞了个云米门锁型号viomi-lbt12a,参照大佬的在改,还是能看得懂的,但是发现我这款型号的描述文件里有 ...

我也不懂,不使用这个属性有影响吗?没影响的话直接忽略。应该也可以吧
回复

使用道具 举报

0

主题

22

帖子

138

积分

注册会员

Rank: 2

积分
138
金钱
116
HASS币
0
发表于 2024-11-20 20:55:14 | 显示全部楼层
感谢大佬,已成功将小米智能门锁2接入
回复

使用道具 举报

2

主题

21

帖子

242

积分

中级会员

Rank: 3Rank: 3

积分
242
金钱
221
HASS币
0
 楼主| 发表于 2024-11-20 22:03:43 | 显示全部楼层
flyingfish119 发表于 2024-11-20 20:55
感谢大佬,已成功将小米智能门锁2接入

能够使用吗?方便告诉我一下,你的环境是什么样的?我做个收集,说一下ha版本号,gateway3版本号,米家版本号,锁全称,还有固件的版本号,网关型号,以及固件版本号,谢谢
回复

使用道具 举报

0

主题

22

帖子

138

积分

注册会员

Rank: 2

积分
138
金钱
116
HASS币
0
发表于 2024-11-21 13:14:10 | 显示全部楼层
deshing 发表于 2024-11-20 22:03
能够使用吗?方便告诉我一下,你的环境是什么样的?我做个收集,说一下ha版本号,gateway3版本号,米家版 ...

可以正常使用。HAOS运行在树莓派4B上,按照代码移除了静脉解锁方式,更改了名称,其他没有做变动,电池信息获取的慢一些,昨天弄的时候还没有,今天就有了。版本号如下。
米家版本号:ios端 V9.4.204-build9.4.2.4.835
网关型号:小米智能多模网关2,版本号:V1.0.3_0028
锁型号:小米智能门锁2 (xiaomi.lock.dl02v1)版本号为最新版:2.6.1_0064
门锁信息
门锁信息.png

HAOS版本号
HAOS版本号.png


xiaomi Getaway3版本号
xiaomigetaway3版本号.png



回复

使用道具 举报

2

主题

21

帖子

242

积分

中级会员

Rank: 3Rank: 3

积分
242
金钱
221
HASS币
0
 楼主| 发表于 2024-11-23 13:17:51 | 显示全部楼层
本帖最后由 deshing 于 2024-11-23 13:23 编辑
flyingfish119 发表于 2024-11-21 13:14
可以正常使用。HAOS运行在树莓派4B上,按照代码移除了静脉解锁方式,更改了名称,其他没有做变动,电池信 ...
谢谢
你能发一下代码吗?你的不是指静脉版,可能有人需要。
回复

使用道具 举报

0

主题

22

帖子

138

积分

注册会员

Rank: 2

积分
138
金钱
116
HASS币
0
发表于 2024-11-23 14:55:45 | 显示全部楼层
deshing 发表于 2024-11-23 13:17
谢谢
你能发一下代码吗?你的不是指静脉版,可能有人需要。
from custom_components.xiaomi_gateway3.core.devices import *

DEVICES = [{

    # 门锁参数资料 https://home.miot-spec.com/spec/xiaomi.lock.b03
    # 参考其它的门锁 6017: ["Xiaomi", "Face Recognition Smart Door Lock", "XMZNMS09LM", "lumi.lock.mcn002"] 
    # https://github.com/AlexxIT/XiaomiGateway3/blob/master/custom_components/xiaomi_gateway3/core/devices.py
    # https://home.miot-spec.com/spec/lumi.lock.mcn002

    14731: ["Xiaomi", "Xiaomi Smart Door Lock 2", "xiaomi.lock.dl02v1"],

    "spec": [
         # action sensors 传感器
        BaseConv("action", "sensor"),
        
        # battery 电池
        BaseConv("battery", "sensor", mi="4.p.1003"),

        # The door lock status 门开/关状态
        MapConv("lock", "binary_sensor", mi="3.p.1021", map={
            1: False,
            2: True, 
            17: False, 
            33: False, 
            49: False,
            18: True, 
            34: False, 
            50: False}),

         # Door status 门状态
        MapConv("door", "sensor", mi="3.p.1021", map={
            1: "Locked",
            2: "Unlocked",
            3: "Door_Closed_Properly_After_Left_Ajar",
            4: "Door_Was_Ajar",
            5: "Leaving_The_Door_Open_Timed_Out",
            6: "Door_Not_Closed_Well",
            17: "Locked",
            33: "Locked",
            49: "Locked",
            18: "Unlocked",
            34: "Unlocked",
            50: "Unlocked",
            19: "Door_Closed_Properly_After_Left_Ajar",
            35: "Door_Closely_Properly_After_Left_Ajar",
            51: "Door_Closed_Properly_After_Left_Ajar",
            20: "Door_Was_Ajar",
            36: "Door_Was_Ajar",
            52: "Door_Was_Ajar",
            21: "Leaving_The_Door_Open_Timed_Out",
            37: "Leaving_The_Door_Open_Timed_Out",
            53: "Leaving_The_Door_Open_Timed_Out",
            22: "Door_Not_Closed_Well",
            38: "Door_Not_Closed_Well",
            54: "Door_Not_Closed_Well"}),

        # Operation Method 开锁方式
        MapConv("Operation_Method", "sensor", mi="2.e.1020.p.2", map = {
            1: "Smart_Device",          # Mobile Phone: 智能设备解锁
            2: "Biometric",             # Finger Print: 生物识别(指纹)
            3: "PIN/Password",          # PassWord: 密码认证
            4: "Contactless",           # NFC: 非接触式认证
            5: "Physical_Key",          # Lock Key: 物理钥匙
            6: "OTP",                   # One Time Password: 一次性密码
            7: "Cyclic_Code",           # Periodic Password: 周期性密码
            8: "Emergency_Override",    # Coerce: 强制开锁机制(紧急情况下)
            9: "Interior_Unlock",       # Button Unlock Inside: 内部按钮解锁
            }),
            #10: "Vein_Recognition" Finger Vein: 指静脉识别

         # Operation ID 开锁ID
        BaseConv("Operation_ID", "sensor", mi="2.e.1020.p.3"),

        ConstConv("action", mi="2.e.1007", value="error"),
        BaseConv("error_id", mi="2.e.1007.p.1"),
        MapConv("abnormal_condition", mi="2.e.1007.p.1", map={
            1: "Frequent_Unlocking_Failed_By_Multiple_Methods",
            2: "Door_Lock_Was_Damaged",
            3: "Door_Lock_Was_Reset",
            4: "Door_Lock_Batteries_Are_Low",
            5: "Door_Lock_Batteries_Are_Nearly_Depleted",
            6: "Unlock_From_Inside_After_Leaving_Home",
            7: "Door_Was_Ajar",
            9: "Leaving_The_Door_Open_Timed_Out",
            10: "Door_Closed_Properly_After_Left_Ajar",
            11: "The_Door_Is_Not_Closed_Well",
            12: "Unlock_Exception"}),
        BaseConv("timestamp", mi="2.e.1007.p.4"),

        # lock action 门锁执行动作
        MapConv("Lock Action", "sensor", mi="2.e.1020.p.6", map={
            1: "Lock",
            2: "Unlock",
            3: "Locked_From_Inside",
            4: "Released_Lock_From_Inside",
            5: "Enabled_Child_Lock",
            6: "Disabled_Child_Lock",
            7: "Enable_The_Away_From_Home_Mode",
            8: "Disable_The_Away_From_Home_Mode",
            9: "Close_The_Door",
            10: "Enabled_Child_Lock_And_From_Inside",
            11: "Disabled_Child_Lock_And_From_Inside"}),
        
        # Operation Position 哪里开门
        MapConv("position", "sensor", mi="2.e.1020.p.5", map={1: "Indoor", 2: "OutDoor"}),
        
        # doorbell action 门铃
        BaseConv("doorbell", "sensor"),
               
                #BaseConv("doorbell", mi="5.e.1006.p.1"), 这条代码我也不知道咋整
                #doorbell 实体ha是个一串数字很正常,因为我想不到啥好办法,直接获取了按门铃的时间戳。
                #时间戳每次的按门铃时间都不一样,保证不重复,实体数据就有刷新
        #ConstConv("action3", mi="5.e.1006", value="doorbell"),
        BaseConv("doorbell", mi="5.e.1006.p.1"),
    ],
}] + DEVICES
和你给出的案例基本没有差别
回复

使用道具 举报

1

主题

29

帖子

160

积分

注册会员

Rank: 2

积分
160
金钱
131
HASS币
0
发表于 2024-11-25 11:31:02 | 显示全部楼层
本帖最后由 瓢泼大雨 于 2024-11-25 20:39 编辑

更新:在论坛里找到了相关帖子,已经看明白了

---------
老哥你好,因为我这有个 M30 Pro 门锁, 正打算编写它的转换器,想请教一下关于 mi 取值的问题。请问
MapConv("position", "sensor", mi="2.e.1020.p.5",
中的 1020 是如何得到的?我理解是 SSID 为 2, PIID 为 5, 但是 1020 不知道是怎么来的。另外 e 和 p 又分别代表什么呢?
这块我没有找到比较详细的文档。只是看到
Each converter has:

    Converter(<attribute name>, <hass domain>, <mi name>)

- attribute - required, entity or attribute name in Hass
- domain - optional, hass entity type (`sensor`, `switch`, `binary_sensor`...)
- mi - optional, item name in:
   - Lumi spec `mi="8.0.2012"`
   - MIoT spec `mi="2.p.1"` or `mi="2.e.1"` or `mi="3.e.1012.p.1"`
   - MiBeacon spec `mi=4100`
非常感谢!
回复

使用道具 举报

7

主题

89

帖子

783

积分

高级会员

Rank: 4

积分
783
金钱
694
HASS币
0
发表于 2024-11-30 23:37:12 | 显示全部楼层
文件xiaomi_gateway3.py具体放那个位置啊?
xiaomi_gateway3.rar是要用你这个吗?
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2025-3-7 08:48 , Processed in 0.191095 second(s), 32 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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