al-one / hass-xiaomi-miot

Automatic integrate all Xiaomi devices to HomeAssistant via miot-spec, support Wi-Fi, BLE, ZigBee devices. 小米米家智能家居设备接入Hass集成
https://miot-spec.com
Apache License 2.0
4.64k stars 664 forks source link

鹿客V5 Max智能门锁状态无变化 #1308

Open xinanzai opened 1 year ago

xinanzai commented 1 year ago

Device model / 设备型号

loock.lock.fcl201

Component version / 插件版本

0.7.12

HA core version / HA版本

2023.8.3

Integrated mode / 集成方式

Automatic (自动模式)

The problem / 问题详情

鹿客v5max智能门锁可识别到一些属性,但缺少从门外以指纹、人脸等方式开门的设备事件,缺少门内开门事件,开关门目前的设备状态无任何更新,也无法从设备属性状态判断开关门事件,门锁固件版本:2.1.9_1056.1056,米家内可正常设置开关门自动化

Entity attributes / 实体属性

sensor.loock_fcl201_559c_lock

model: loock.lock.fcl201 lan_ip: 192.168.50.175 mac_address: 27:EE:FF:8F:55:9C entity_class: MiotSensorEntity home_room: 876213520的家 客厅 miot_type: urn:miot-spec-v2:device:lock:0000A038:loock-fcl201:1 state_property: operation_method auto_screen_on-11-1: true screen_on_duration-11-2: 15 record_someone_pass-11-3: true record_someone_stay-11-4: true stay_duration-11-5: 5 glimmer_full_color-11-6: true eco_wakeup_duration-11-7: 1 real_view_start_time-11-8: 00:00 real_view_end_time-11-9: 00:00 ver_wifi_detail-11-10: 2.1.9_1056 ver_lock_detail-11-11: 1.0.7.2-2.0.7.2-31.1.9.1-11.13.20.1-1.0.8.0-3.0.0.0 ver_camera_detail-11-12: 1.0.0-1.5.6-1.5.6-1.5.6-1.5.6-1.5.6 ver_fw_camera-11-13: 1.5.6-1.5.6 lcd_show_mode-11-14: 4 battery_update_time-11-15: 1694353827 device_status-11-16: true device_waring-11-17: true device_waring_time-11-18: 60 device_waring_type-11-19: 1 battery-10.battery_level: 71 detection_sensitivity-8-3: 2 motion_detection_start_time-8-4: 00:00 motion_detection_end_time-8-5: 00:00 video_doorbell.on: true video_doorbell.status: 1 video_doorbell.night_shot: 0 video_doorbell.wdr_mode: true video_doorbell.eco: false video_doorbell.ringtone: 1 image_distortion_correction-7-8: true battery_level: 90 battery.charging_state: 3 door.door_state: 16 state_updater: cloud fingerprint_id: fingerprint_result: wet door_state: stuck armed_state: false lock_action: unknown lock_method: automatic lock_key: lock_key_id: 0 lock_fault: none lock_data: timestamp: 1970-01-01T08:00:00+08:00 sub_entities: battery-4.battery_level-1003, battery-4.charging_state-1034, battery-10.battery_level-1, door_state, lock_action, lock_key_id, timestamp, armed_state operation_method: automatic friendly_name: Lockin Smart Lock V5 MAX Lock Operation Method supported_features: 0

Home Assistant Logs / 系统日志

Lockin Smart Lock V5 MAX(loock.lock.fcl201): camera events is empty. {'result': 'ok', 'retriable': False, 'code': 0, 'data': {'thirdPartPlayUnits': [], 'nextTime': 1693803197000, 'isContinue': True}, 'description': '成功', 'ts': 1694407998214} 12:57:17 – (WARNING) Xiaomi Miot Auto (自定义集成) - 消息首次出现在 12:17:18,显示了 41 次 MI AI Speaker (2nd Gen)(xiaomi.wifispeaker.l15a): Set miot property Content(none) failed: property not found 12:37:25 – (WARNING) Xiaomi Miot Auto (自定义集成)

kid0809 commented 1 year ago

同样的问题,传感器实体状态不会改变

hsy5571615 commented 1 year ago

同样遇到此问题,看来对智能锁的适配还不是很好

hongyedba commented 11 months ago

同样问题,关注中

meteoral commented 10 months ago

同样问题+1

dx0G commented 10 months ago

同样问题,关注中

lolseru commented 8 months ago

同样问题+1

xjn9854262 commented 8 months ago

同样问题

hongyedba commented 8 months ago

目前通过修改 Gateway 3 插件接入了。

image
dx0G commented 8 months ago

目前通过修改 Gateway 3 插件接入了。

image

求教怎么接入

hongyedba commented 7 months ago

目前通过修改 Gateway 3 插件接入了。

image

求教怎么接入

修改 /config/custom_components/xiaomi_gateway3/core/converters/devices.py 文件,增加以下转换,就可以通过 Gateway 3 插件来识别 V5Max 的门锁状态了。

{
    # https://home.miot-spec.com/spec/loock.lock.fcl201
    9877: ["Loock", "Loock Smart Lock V5 Max", "XFCL201"],
    "spec": [
        MiBeacon,  # backward support old firmwares

        # sensor action
        EventConv("action", "sensor", mi="2.e.1020"),
        Converter("key_id", mi="2.p.4"),
        MapConv("method", "sensor", mi="2.p.2", map={
            1: "mobile", 2: "fingerprint", 3: "password", 4: "nfc", 5: "face", 6: "Finger Vein", 
            7: "Palm Print", 8: "key", 9: "one_time_password", 10: "periodic_password", 
            11: "Homekit", 12: "coerce", 13: "Two Step Verification", 14: "Turntable", 
            15: "manual", 16: "auto"
        }),
        MapConv("lock_action", "sensor", mi="2.p.3", map={
            1: "lock", 2: "unlock", 3: "lock_outside", 4: "lock_inside",
            5: "unlock_inside", 6: "enable_child_lock", 7: "disable_child_lock",
            8: "enable_away", 9: "disable_away"
        }),
        MapConv("door_state", "sensor", mi="3.p.1021", map={
            16: 'Locked',
            20: 'Locked',
            24: 'Locked',
            28: 'Locked',
            32: 'Unlocked',
            36: 'Unlocked',
            40: 'Unlocked',
            44: 'Unlocked',
            48: 'Leaving The Door Open Timed Out',
            52: 'Leaving The Door Open Timed Out',
            56: 'Leaving The Door Open Timed Out',
            60: 'Leaving The Door Open Timed Out',
            64: 'Door Was Ajar',
            68: 'Door Was Ajar',
            72: 'Door Was Ajar',
            76: 'Door Was Ajar'
        }),
        MapConv("abnormal_type", "sensor", mi="2.p.6", map={
            1: "Frequent Unlocking Failed By Multiple Methods", 
            2: "Frequent Unlocking Failed By Password", 
            3: "Frequent Unlocking Failed By Fingerprint", 
            4: "Frequent Unlocking Failed By NFC", 
            5: "Frequent Unlocking Failed By Face", 
            6: "Frequent Unlocking Failed By Palmprint", 
            7: "Frequent Unlocking Failed By Finger Vein", 
            8: "Frequent Unlocking Failed By Key", 
            9: "Door Lock Was Damaged", 
            10: "Locked Unsuccessfully", 
            11: "Unlock From Inside After Leaving Home", 
            12: "Door Lock Was Reset", 
            13: "Foreign Object Detected In The Keyhole", 
            14: "Key Was Not Removed", 
            15: "Door Lock Fingerprint Sensor Error", 
            16: "Door Lock Mechanical Failure", 
            17: "Door Lock Main Part Failure", 
            18: "The Lithium Battery Temperature Is Too High", 
            19: "Large Batteries Are Low", 
            20: "Small Batteries Are Low", 
            21: "Large And Small Batteries Are Low", 
            22: "Large And Small Deplete", 
            23: "Leaving The Door Open Timed Out", 
            24: "Door Was Ajar", 
            25: "Door Was Opened Forcefully", 
            26: "Small Batteries Are Nearly Depleted", 
            27: "Small Batteries Are Nearly Depleted And Large Batteries Low", 
            28: "Large Batteries Are Nearly Depleted", 
            29: "Large Batteries Are Nearly Depleted And Small Batteries Low", 
            30: "Large Batteries Are Removed", 
            31: "Large Batteries Are Inserted", 
            32: "Small Batteries Are Removed", 
            33: "Small Batteries Are Inserted", 
            34: "Battery Low The Cat Eye Function And The Door Screen Are Suspended", 
            35: "Ultrasonic Sensitivity Decreased"
        }),
        MapConv("position", "sensor", mi="2.p.1", map={
            1: "indoor", 2: "outdoor", 3: "not tell indoor or outdoor"
        }),
        Converter("lock_timestamp", "sensor", mi="2.p.5"),  # lock timestamp

        # doorbell
        EventConv("action", mi="5.e.1006", value="doorbell"),
        Converter("doorbell_timestamp", "sensor", mi="5.p.1"),  # doorbell timestamp

        # battery sensor
        Converter("battery", "sensor", mi="4.p.1003"),
        Converter("changing", "sensor", mi="4.p.1034"),
    ],
    "ttl": "25h"
}
meteoral commented 7 months ago

目前通过修改 Gateway 3 插件接入了。

image

求教怎么接入

修改 /config/custom_components/xiaomi_gateway3/core/converters/devices.py 文件,增加以下转换,就可以通过 Gateway 3 插件来识别 V5Max 的门锁状态了。

{
    # https://home.miot-spec.com/spec/loock.lock.fcl201
    9877: ["Loock", "Loock Smart Lock V5 Max", "XFCL201"],
    "spec": [
        MiBeacon,  # backward support old firmwares

        # sensor action
        EventConv("action", "sensor", mi="2.e.1020"),
        Converter("key_id", mi="2.p.4"),
        MapConv("method", "sensor", mi="2.p.2", map={
            1: "mobile", 2: "fingerprint", 3: "password", 4: "nfc", 5: "face", 6: "Finger Vein", 
            7: "Palm Print", 8: "key", 9: "one_time_password", 10: "periodic_password", 
            11: "Homekit", 12: "coerce", 13: "Two Step Verification", 14: "Turntable", 
            15: "manual", 16: "auto"
        }),
        MapConv("lock_action", "sensor", mi="2.p.3", map={
            1: "lock", 2: "unlock", 3: "lock_outside", 4: "lock_inside",
            5: "unlock_inside", 6: "enable_child_lock", 7: "disable_child_lock",
            8: "enable_away", 9: "disable_away"
        }),
        MapConv("door_state", "sensor", mi="3.p.1021", map={
            16: 'Locked',
            20: 'Locked',
            24: 'Locked',
            28: 'Locked',
            32: 'Unlocked',
            36: 'Unlocked',
            40: 'Unlocked',
            44: 'Unlocked',
            48: 'Leaving The Door Open Timed Out',
            52: 'Leaving The Door Open Timed Out',
            56: 'Leaving The Door Open Timed Out',
            60: 'Leaving The Door Open Timed Out',
            64: 'Door Was Ajar',
            68: 'Door Was Ajar',
            72: 'Door Was Ajar',
            76: 'Door Was Ajar'
        }),
        MapConv("abnormal_type", "sensor", mi="2.p.6", map={
            1: "Frequent Unlocking Failed By Multiple Methods", 
            2: "Frequent Unlocking Failed By Password", 
            3: "Frequent Unlocking Failed By Fingerprint", 
            4: "Frequent Unlocking Failed By NFC", 
            5: "Frequent Unlocking Failed By Face", 
            6: "Frequent Unlocking Failed By Palmprint", 
            7: "Frequent Unlocking Failed By Finger Vein", 
            8: "Frequent Unlocking Failed By Key", 
            9: "Door Lock Was Damaged", 
            10: "Locked Unsuccessfully", 
            11: "Unlock From Inside After Leaving Home", 
            12: "Door Lock Was Reset", 
            13: "Foreign Object Detected In The Keyhole", 
            14: "Key Was Not Removed", 
            15: "Door Lock Fingerprint Sensor Error", 
            16: "Door Lock Mechanical Failure", 
            17: "Door Lock Main Part Failure", 
            18: "The Lithium Battery Temperature Is Too High", 
            19: "Large Batteries Are Low", 
            20: "Small Batteries Are Low", 
            21: "Large And Small Batteries Are Low", 
            22: "Large And Small Deplete", 
            23: "Leaving The Door Open Timed Out", 
            24: "Door Was Ajar", 
            25: "Door Was Opened Forcefully", 
            26: "Small Batteries Are Nearly Depleted", 
            27: "Small Batteries Are Nearly Depleted And Large Batteries Low", 
            28: "Large Batteries Are Nearly Depleted", 
            29: "Large Batteries Are Nearly Depleted And Small Batteries Low", 
            30: "Large Batteries Are Removed", 
            31: "Large Batteries Are Inserted", 
            32: "Small Batteries Are Removed", 
            33: "Small Batteries Are Inserted", 
            34: "Battery Low The Cat Eye Function And The Door Screen Are Suspended", 
            35: "Ultrasonic Sensitivity Decreased"
        }),
        MapConv("position", "sensor", mi="2.p.1", map={
            1: "indoor", 2: "outdoor", 3: "not tell indoor or outdoor"
        }),
        Converter("lock_timestamp", "sensor", mi="2.p.5"),  # lock timestamp

        # doorbell
        EventConv("action", mi="5.e.1006", value="doorbell"),
        Converter("doorbell_timestamp", "sensor", mi="5.p.1"),  # doorbell timestamp

        # battery sensor
        Converter("battery", "sensor", mi="4.p.1003"),
        Converter("changing", "sensor", mi="4.p.1034"),
    ],
    "ttl": "25h"
}

感谢提供了一个新的思路,不过新版本转换文件不在这里定义了,是在 /config/xiaomi_gateway3.py 这里新建转换文件。 并且新版本也没有了Converter和EventConv了,需要修改下

kuko7 commented 6 months ago

老哥,我想问下V5 Air可以接入HA实现这些功能吗?因为我看Air走的是小度平台,那会不会对联动的功能有影响啊?

hongyedba commented 6 months ago

老哥,我想问下V5 Air可以接入HA实现这些功能吗?因为我看Air走的是小度平台,那会不会对联动的功能有影响啊?

小度估计不行吧, https://home.miot-spec.com 这个里面查不到的,可能都不太好搞了。

lccox commented 6 months ago

目前通过修改 Gateway 3 插件接入了。

image

求教怎么接入

修改 /config/custom_components/xiaomi_gateway3/core/converters/devices.py 文件,增加以下转换,就可以通过 Gateway 3 插件来识别 V5Max 的门锁状态了。

{
    # https://home.miot-spec.com/spec/loock.lock.fcl201
    9877: ["Loock", "Loock Smart Lock V5 Max", "XFCL201"],
    "spec": [
        MiBeacon,  # backward support old firmwares

        # sensor action
        EventConv("action", "sensor", mi="2.e.1020"),
        Converter("key_id", mi="2.p.4"),
        MapConv("method", "sensor", mi="2.p.2", map={
            1: "mobile", 2: "fingerprint", 3: "password", 4: "nfc", 5: "face", 6: "Finger Vein", 
            7: "Palm Print", 8: "key", 9: "one_time_password", 10: "periodic_password", 
            11: "Homekit", 12: "coerce", 13: "Two Step Verification", 14: "Turntable", 
            15: "manual", 16: "auto"
        }),
        MapConv("lock_action", "sensor", mi="2.p.3", map={
            1: "lock", 2: "unlock", 3: "lock_outside", 4: "lock_inside",
            5: "unlock_inside", 6: "enable_child_lock", 7: "disable_child_lock",
            8: "enable_away", 9: "disable_away"
        }),
        MapConv("door_state", "sensor", mi="3.p.1021", map={
            16: 'Locked',
            20: 'Locked',
            24: 'Locked',
            28: 'Locked',
            32: 'Unlocked',
            36: 'Unlocked',
            40: 'Unlocked',
            44: 'Unlocked',
            48: 'Leaving The Door Open Timed Out',
            52: 'Leaving The Door Open Timed Out',
            56: 'Leaving The Door Open Timed Out',
            60: 'Leaving The Door Open Timed Out',
            64: 'Door Was Ajar',
            68: 'Door Was Ajar',
            72: 'Door Was Ajar',
            76: 'Door Was Ajar'
        }),
        MapConv("abnormal_type", "sensor", mi="2.p.6", map={
            1: "Frequent Unlocking Failed By Multiple Methods", 
            2: "Frequent Unlocking Failed By Password", 
            3: "Frequent Unlocking Failed By Fingerprint", 
            4: "Frequent Unlocking Failed By NFC", 
            5: "Frequent Unlocking Failed By Face", 
            6: "Frequent Unlocking Failed By Palmprint", 
            7: "Frequent Unlocking Failed By Finger Vein", 
            8: "Frequent Unlocking Failed By Key", 
            9: "Door Lock Was Damaged", 
            10: "Locked Unsuccessfully", 
            11: "Unlock From Inside After Leaving Home", 
            12: "Door Lock Was Reset", 
            13: "Foreign Object Detected In The Keyhole", 
            14: "Key Was Not Removed", 
            15: "Door Lock Fingerprint Sensor Error", 
            16: "Door Lock Mechanical Failure", 
            17: "Door Lock Main Part Failure", 
            18: "The Lithium Battery Temperature Is Too High", 
            19: "Large Batteries Are Low", 
            20: "Small Batteries Are Low", 
            21: "Large And Small Batteries Are Low", 
            22: "Large And Small Deplete", 
            23: "Leaving The Door Open Timed Out", 
            24: "Door Was Ajar", 
            25: "Door Was Opened Forcefully", 
            26: "Small Batteries Are Nearly Depleted", 
            27: "Small Batteries Are Nearly Depleted And Large Batteries Low", 
            28: "Large Batteries Are Nearly Depleted", 
            29: "Large Batteries Are Nearly Depleted And Small Batteries Low", 
            30: "Large Batteries Are Removed", 
            31: "Large Batteries Are Inserted", 
            32: "Small Batteries Are Removed", 
            33: "Small Batteries Are Inserted", 
            34: "Battery Low The Cat Eye Function And The Door Screen Are Suspended", 
            35: "Ultrasonic Sensitivity Decreased"
        }),
        MapConv("position", "sensor", mi="2.p.1", map={
            1: "indoor", 2: "outdoor", 3: "not tell indoor or outdoor"
        }),
        Converter("lock_timestamp", "sensor", mi="2.p.5"),  # lock timestamp

        # doorbell
        EventConv("action", mi="5.e.1006", value="doorbell"),
        Converter("doorbell_timestamp", "sensor", mi="5.p.1"),  # doorbell timestamp

        # battery sensor
        Converter("battery", "sensor", mi="4.p.1003"),
        Converter("changing", "sensor", mi="4.p.1034"),
    ],
    "ttl": "25h"
}

感谢提供了一个新的思路,不过新版本转换文件不在这里定义了,是在 /config/xiaomi_gateway3.py 这里新建转换文件。 并且新版本也没有了Converter和EventConv了,需要修改下

您好 我想请问现在不能通过miot auto接入了吗? 如果通过gw3的话,最新的更改代码有吗?

cwt0490 commented 5 months ago

我修改的新代码,试试看

from custom_components.xiaomi_gateway3.core.devices import *

DEVICES = [{
    9877: ["Loock", "Loock Smart Lock V5 Max", "FCL201"],
    "spec": [
        BaseConv("action", "sensor"),
        BaseConv("key_id", mi="2.e.1020.p.4"),
        MapConv("method", "sensor", mi="2.e.1020.p.2", map={
            1: "mobile", 2: "fingerprint", 3: "password", 4: "nfc", 5: "face", 6: "Finger Vein", 
            7: "Palm Print", 8: "key", 9: "one_time_password", 10: "periodic_password", 
            11: "Homekit", 12: "coerce", 13: "Two Step Verification", 14: "Turntable", 
            15: "manual", 16: "auto"
        }),
        MapConv("lock_action", "sensor", mi="2.e.1020.p.3", map={
            1: "lock", 2: "unlock", 3: "lock_outside", 4: "lock_inside",
            5: "unlock_inside", 6: "enable_child_lock", 7: "disable_child_lock",
            8: "enable_away", 9: "disable_away"
        }),
        MapConv("door_state", "sensor", mi="3.p.1021", map={
            16: 'Locked',
            20: 'Locked',
            24: 'Locked',
            28: 'Locked',
            32: 'Unlocked',
            36: 'Unlocked',
            40: 'Unlocked',
            44: 'Unlocked',
            48: 'Leaving The Door Open Timed Out',
            52: 'Leaving The Door Open Timed Out',
            56: 'Leaving The Door Open Timed Out',
            60: 'Leaving The Door Open Timed Out',
            64: 'Door Was Ajar',
            68: 'Door Was Ajar',
            72: 'Door Was Ajar',
            76: 'Door Was Ajar'
        }),
        MapConv("abnormal_type", "sensor", mi="2.e.1020.p.6", map={
            1: "Frequent Unlocking Failed By Multiple Methods", 
            2: "Frequent Unlocking Failed By Password", 
            3: "Frequent Unlocking Failed By Fingerprint", 
            4: "Frequent Unlocking Failed By NFC", 
            5: "Frequent Unlocking Failed By Face", 
            6: "Frequent Unlocking Failed By Palmprint", 
            7: "Frequent Unlocking Failed By Finger Vein", 
            8: "Frequent Unlocking Failed By Key", 
            9: "Door Lock Was Damaged", 
            10: "Locked Unsuccessfully", 
            11: "Unlock From Inside After Leaving Home", 
            12: "Door Lock Was Reset", 
            13: "Foreign Object Detected In The Keyhole", 
            14: "Key Was Not Removed", 
            15: "Door Lock Fingerprint Sensor Error", 
            16: "Door Lock Mechanical Failure", 
            17: "Door Lock Main Part Failure", 
            18: "The Lithium Battery Temperature Is Too High", 
            19: "Large Batteries Are Low", 
            20: "Small Batteries Are Low", 
            21: "Large And Small Batteries Are Low", 
            22: "Large And Small Deplete", 
            23: "Leaving The Door Open Timed Out", 
            24: "Door Was Ajar", 
            25: "Door Was Opened Forcefully", 
            26: "Small Batteries Are Nearly Depleted", 
            27: "Small Batteries Are Nearly Depleted And Large Batteries Low", 
            28: "Large Batteries Are Nearly Depleted", 
            29: "Large Batteries Are Nearly Depleted And Small Batteries Low", 
            30: "Large Batteries Are Removed", 
            31: "Large Batteries Are Inserted", 
            32: "Small Batteries Are Removed", 
            33: "Small Batteries Are Inserted", 
            34: "Battery Low The Cat Eye Function And The Door Screen Are Suspended", 
            35: "Ultrasonic Sensitivity Decreased"
        }),
        MapConv("position", "sensor", mi="2.e.1020.p.1", map={
            1: "indoor", 2: "outdoor", 3: "not tell indoor or outdoor"
        }),
        BaseConv("lock_timestamp", "sensor", mi="2.e.1020.p.5"),  # lock timestamp

        # doorbell
        ConstConv("action", mi="5.e.1006", value="doorbell"),
        BaseConv("doorbell_timestamp", "sensor", mi="5.e.1006.p.1"),  # doorbell timestamp

        # battery sensor
        BaseConv("battery", "sensor", mi="4.p.1003"),
        BaseConv("changing", "sensor", mi="4.p.1034"),
    ],
}] + DEVICES
GavinIves commented 2 months ago

目前开关门依然不更新状态 door_state永远是locked @kid0809

sliverlin commented 2 months ago

更新後都變成不可用了,請教該如何解決~~ 以下是我的代碼


from custom_components.xiaomi_gateway3.core.devices import *

DEVICES = [{
    12655: ["Loock", "Loock Smart Lock V5 Max", "XFCL201"],
    "spec": [
        BaseConv("action", "sensor"),
        BaseConv("key_id", mi="2.e.1020.p.4"),
        MapConv("method", "sensor", mi="2.e.1020.p.2", map={
            1: "mobile", 2: "fingerprint", 3: "password", 4: "nfc", 5: "face", 6: "Finger Vein", 
            7: "Palm Print", 8: "key", 9: "one_time_password", 10: "periodic_password", 
            11: "Homekit", 12: "coerce", 13: "Two Step Verification", 14: "Turntable", 
            15: "manual", 16: "auto"
        }),
        MapConv("lock_action", "sensor", mi="2.e.1020.p.3", map={
            1: "lock", 2: "unlock", 3: "lock_outside", 4: "lock_inside",
            5: "unlock_inside", 6: "enable_child_lock", 7: "disable_child_lock",
            8: "enable_away", 9: "disable_away"
        }),
        MapConv("door_state", "sensor", mi="3.p.1021", map={
            16: 'Locked',
            20: 'Locked',
            24: 'Locked',
            28: 'Locked',
            32: 'Unlocked',
            36: 'Unlocked',
            40: 'Unlocked',
            44: 'Unlocked',
            48: 'Leaving The Door Open Timed Out',
            52: 'Leaving The Door Open Timed Out',
            56: 'Leaving The Door Open Timed Out',
            60: 'Leaving The Door Open Timed Out',
            64: 'Door Was Ajar',
            68: 'Door Was Ajar',
            72: 'Door Was Ajar',
            76: 'Door Was Ajar'
        }),
        MapConv("abnormal_type", "sensor", mi="2.e.1020.p.6", map={
            1: "Frequent Unlocking Failed By Multiple Methods", 
            2: "Frequent Unlocking Failed By Password", 
            3: "Frequent Unlocking Failed By Fingerprint", 
            4: "Frequent Unlocking Failed By NFC", 
            5: "Frequent Unlocking Failed By Face", 
            6: "Frequent Unlocking Failed By Palmprint", 
            7: "Frequent Unlocking Failed By Finger Vein", 
            8: "Frequent Unlocking Failed By Key", 
            9: "Door Lock Was Damaged", 
            10: "Locked Unsuccessfully", 
            11: "Unlock From Inside After Leaving Home", 
            12: "Door Lock Was Reset", 
            13: "Foreign Object Detected In The Keyhole", 
            14: "Key Was Not Removed", 
            15: "Door Lock Fingerprint Sensor Error", 
            16: "Door Lock Mechanical Failure", 
            17: "Door Lock Main Part Failure", 
            18: "The Lithium Battery Temperature Is Too High", 
            19: "Large Batteries Are Low", 
            20: "Small Batteries Are Low", 
            21: "Large And Small Batteries Are Low", 
            22: "Large And Small Deplete", 
            23: "Leaving The Door Open Timed Out", 
            24: "Door Was Ajar", 
            25: "Door Was Opened Forcefully", 
            26: "Small Batteries Are Nearly Depleted", 
            27: "Small Batteries Are Nearly Depleted And Large Batteries Low", 
            28: "Large Batteries Are Nearly Depleted", 
            29: "Large Batteries Are Nearly Depleted And Small Batteries Low", 
            30: "Large Batteries Are Removed", 
            31: "Large Batteries Are Inserted", 
            32: "Small Batteries Are Removed", 
            33: "Small Batteries Are Inserted", 
            34: "Battery Low The Cat Eye Function And The Door Screen Are Suspended", 
            35: "Ultrasonic Sensitivity Decreased"
        }),
        MapConv("position", "sensor", mi="2.e.1020.p.1", map={
            1: "indoor", 2: "outdoor", 3: "not tell indoor or outdoor"
        }),
        BaseConv("lock_timestamp", "sensor", mi="2.e.1020.p.5"),  # lock timestamp

        # doorbell
        ConstConv("action", mi="5.e.1006", value="doorbell"),
        BaseConv("doorbell_timestamp", "sensor", mi="5.e.1006.p.1"),  # doorbell timestamp

        # battery sensor
        BaseConv("battery", "sensor", mi="4.p.1003"),
        BaseConv("changing", "sensor", mi="4.p.1034"),
    ],
}] + DEVICES
cwt0490 commented 2 months ago

Update xiaomi_gateway3 in HACS

meteoral commented 2 months ago

add V5 MAX support in Xiaomi_Gateway3 https://github.com/AlexxIT/XiaomiGateway3/pull/1452 waiting for the next update.

meteoral commented 2 months ago

更新後都變成不可用了,請教該如何解決~~ 以下是我的代碼


from custom_components.xiaomi_gateway3.core.devices import *

DEVICES = [{
    12655: ["Loock", "Loock Smart Lock V5 Max", "XFCL201"],
    "spec": [
        BaseConv("action", "sensor"),
        BaseConv("key_id", mi="2.e.1020.p.4"),
        MapConv("method", "sensor", mi="2.e.1020.p.2", map={
            1: "mobile", 2: "fingerprint", 3: "password", 4: "nfc", 5: "face", 6: "Finger Vein", 
            7: "Palm Print", 8: "key", 9: "one_time_password", 10: "periodic_password", 
            11: "Homekit", 12: "coerce", 13: "Two Step Verification", 14: "Turntable", 
            15: "manual", 16: "auto"
        }),
        MapConv("lock_action", "sensor", mi="2.e.1020.p.3", map={
            1: "lock", 2: "unlock", 3: "lock_outside", 4: "lock_inside",
            5: "unlock_inside", 6: "enable_child_lock", 7: "disable_child_lock",
            8: "enable_away", 9: "disable_away"
        }),
        MapConv("door_state", "sensor", mi="3.p.1021", map={
            16: 'Locked',
            20: 'Locked',
            24: 'Locked',
            28: 'Locked',
            32: 'Unlocked',
            36: 'Unlocked',
            40: 'Unlocked',
            44: 'Unlocked',
            48: 'Leaving The Door Open Timed Out',
            52: 'Leaving The Door Open Timed Out',
            56: 'Leaving The Door Open Timed Out',
            60: 'Leaving The Door Open Timed Out',
            64: 'Door Was Ajar',
            68: 'Door Was Ajar',
            72: 'Door Was Ajar',
            76: 'Door Was Ajar'
        }),
        MapConv("abnormal_type", "sensor", mi="2.e.1020.p.6", map={
            1: "Frequent Unlocking Failed By Multiple Methods", 
            2: "Frequent Unlocking Failed By Password", 
            3: "Frequent Unlocking Failed By Fingerprint", 
            4: "Frequent Unlocking Failed By NFC", 
            5: "Frequent Unlocking Failed By Face", 
            6: "Frequent Unlocking Failed By Palmprint", 
            7: "Frequent Unlocking Failed By Finger Vein", 
            8: "Frequent Unlocking Failed By Key", 
            9: "Door Lock Was Damaged", 
            10: "Locked Unsuccessfully", 
            11: "Unlock From Inside After Leaving Home", 
            12: "Door Lock Was Reset", 
            13: "Foreign Object Detected In The Keyhole", 
            14: "Key Was Not Removed", 
            15: "Door Lock Fingerprint Sensor Error", 
            16: "Door Lock Mechanical Failure", 
            17: "Door Lock Main Part Failure", 
            18: "The Lithium Battery Temperature Is Too High", 
            19: "Large Batteries Are Low", 
            20: "Small Batteries Are Low", 
            21: "Large And Small Batteries Are Low", 
            22: "Large And Small Deplete", 
            23: "Leaving The Door Open Timed Out", 
            24: "Door Was Ajar", 
            25: "Door Was Opened Forcefully", 
            26: "Small Batteries Are Nearly Depleted", 
            27: "Small Batteries Are Nearly Depleted And Large Batteries Low", 
            28: "Large Batteries Are Nearly Depleted", 
            29: "Large Batteries Are Nearly Depleted And Small Batteries Low", 
            30: "Large Batteries Are Removed", 
            31: "Large Batteries Are Inserted", 
            32: "Small Batteries Are Removed", 
            33: "Small Batteries Are Inserted", 
            34: "Battery Low The Cat Eye Function And The Door Screen Are Suspended", 
            35: "Ultrasonic Sensitivity Decreased"
        }),
        MapConv("position", "sensor", mi="2.e.1020.p.1", map={
            1: "indoor", 2: "outdoor", 3: "not tell indoor or outdoor"
        }),
        BaseConv("lock_timestamp", "sensor", mi="2.e.1020.p.5"),  # lock timestamp

        # doorbell
        ConstConv("action", mi="5.e.1006", value="doorbell"),
        BaseConv("doorbell_timestamp", "sensor", mi="5.e.1006.p.1"),  # doorbell timestamp

        # battery sensor
        BaseConv("battery", "sensor", mi="4.p.1003"),
        BaseConv("changing", "sensor", mi="4.p.1034"),
    ],
}] + DEVICES

12655: ["Loock", "Loock Smart Lock V5 Max", "XFCL201"], pdid is 9877 replace 12655 to 9877