本帖最后由 dscao 于 2020-8-29 10:12 编辑
参考:
https://bbs.hassbian.com/forum.php?mod=redirect&goto=findpost&ptid=10434&pid=339785
商品:https://www.mi.com/mj-smartlock
小米米家智能门锁标准版终于安装上去了,目前测试看到的数据只有这些:
上午10:37 收到关于 mqttl/1020275136/7 的消息[ 85 ]
5f486dec02
QoS: 0 - Retain: false
上午10:37 收到关于 mqttl/1020275136/7 的消息[ 84 ]
5f486de500
QoS: 0 - Retain: false
上午10:37 收到关于 mqttl/1020275136/11 的消息[ 83 ]
5f486de58001000220
QoS: 0 - Retain: false
上午10:37 收到关于 mqttl/1020275136/11 的消息[ 82 ]
5f486ddd00000000a1
QoS: 0 - Retain: false
上午10:37 收到关于 mqttl/1020275136/7 的消息[ 81 ]
5f486ddb01
QoS: 0 - Retain: false
上午10:37 收到关于 mqttl/1020275136/7 的消息[ 80 ]
5f486dd500
QoS: 0 - Retain: false
上午10:37 收到关于 mqttl/1020275136/11 的消息[ 79 ]
5f486dd500000000a4
QoS: 0 - Retain: false
上午10:37 收到关于 mqttl/1020275136/11 的消息[ 78 ]
5f486dcf00000000a1
QoS: 0 - Retain: false
上午10:37 收到关于 mqttl/1020275136/7 的消息[ 77 ]
5f486dcb01
QoS: 0 - Retain: false
上午10:36 收到关于 mqttl/1020275136/7 的消息[ 76 ]
5f486dcb00
QoS: 0 - Retain: false
上午10:36 收到关于 mqttl/1020275136/11 的消息[ 75 ]
5f486dc900000000a4
QoS: 0 - Retain: false
上午10:36 收到关于 mqttl/1020275136/7 的消息[ 74 ]
5f486dc800
QoS: 0 - Retain: false
上午10:36 收到关于 mqttl/1020275136/11 的消息[ 73 ]
5f486dc300000000a4
QoS: 0 - Retain: false
上午10:36 收到关于 mqttl/1020275136/7 的消息[ 71 ]
5f486dab01
QoS: 0 - Retain: false
上午10:36 收到关于 mqttl/1020275136/7 的消息[ 70 ]
5f486d9e00
QoS: 0 - Retain: false
上午10:36 收到关于 mqttl/1020275136/11 的消息[ 69 ]
5f486d9d8001000220
QoS: 0 - Retain: false
上午10:36 收到关于 mqttl/1020275136/7 的消息[ 68 ]
5f486d9501
QoS: 0 - Retain: false
上午10:36 收到关于 mqttl/1020275136/11 的消息[ 67 ]
5f486d9500000000a4
QoS: 0 - Retain: false
上午10:35 收到关于 mqttl/1020275136/7 的消息[ 66 ]
5f486d8702
QoS: 0 - Retain: false
QoS: 0 - Retain: false
上午10:35 收到关于 mqttl/1020275136/11 的消息[ 64 ]
5f486d8400000000a4
QoS: 0 - Retain: false
上午10:35 收到关于 mqttl/1020275136/11 的消息[ 63 ]
5f486d8300000000a4
QoS: 0 - Retain: false
上午10:35 收到关于 mqttl/1020275136/7 的消息[ 62 ]
5f486d8000
QoS: 0 - Retain: false
上午10:35 收到关于 mqttl/1020275136/11 的消息[ 61 ]
5f486d7f00000000a4
QoS: 0 - Retain: false
上午10:35 收到关于 mqttl/1020275136/11 的消息[ 60 ]
5f486d7b00000000a3
QoS: 0 - Retain: false
上午10:35 收到关于 mqttl/1020275136/11 的消息[ 59 ]
5f486d7900000000a2
QoS: 0 - Retain: false
上午10:35 收到关于 mqttl/1020275136/11 的消息[ 58 ]
5f486d7600000000a1
QoS: 0 - Retain: false
上午10:35 收到关于 mqttl/1020275136/11 的消息[ 57 ]
5f486d7400000000a3
QoS: 0 - Retain: false
上午10:35 收到关于 mqttl/1020275136/11 的消息[ 56 ]
5f486d7100000000a2
QoS: 0 - Retain: false
敲门/ 撬门/门卡住 没试过,其它的也未测试到,不清楚的就保留原来的。
有效的已测试:开门/关门/超时未关/门外开锁/上提把手锁门(门内门外一样)/反锁/解除反锁/门内开锁
mqttl/1020275136/4106 也是包含时间和电量的
value[8:12] 为 'c0de' 时异常,异常信息在value[12:16]
最终实测后改进的代码:
mqttl_xiaomilock.yaml
binary_sensor:
- platform: mqtt
name: mijia_lock
state_topic: 'mqttl/1020275136/7' #mqttl/设备did/eid, 替换成正确的did和eid
value_template: >-
{% if value[8:10] == '00' or value[8:10] == '02' or value[8:10] == '05'%}
unlock
{% elif value[8:10] == '01' or value[8:10] == '03' or value[8:10] == '04' %}
lock
{% endif %}
payload_on: 'unlock'
payload_off: 'lock'
device_class: lock
qos: 1
sensor:
- platform: mqtt #智能锁状态
name: lock_state
icon: 'mdi:lock-smart'
state_topic: 'mqttl/1020275136/7' #mqttl/设备did/eid, 替换成正确的did和eid
value_template: >-
{% if value[8:10] == '00' %}
开门
{% elif value[8:10] == '01' %}
关门
{% elif value[8:10] == '02' %}
超时未关
{% elif value[8:10] == '03' %}
敲门
{% elif value[8:10] == '04' %}
撬门
{% elif value[8:10] == '05' %}
门卡住
{% endif %}
- platform: mqtt
name: lock_state_update_time
icon: 'mdi:lock-clock'
state_topic: 'mqttl/1020275136/7'
value_template: "{{ value[0:8]|int(0,16)|timestamp_local }}"
#开锁方式
- platform: mqtt
name: lock_method
icon: 'mdi:lock-question'
state_topic: 'mqttl/1020275136/11'
value_template: >-
{% if value[16:17] == '0' %}
蓝牙
{% elif value[16:17] == '1' %}
密码
{% elif value[16:17] == '2' %}
指纹
{% elif value[16:17] == '3' %}
钥匙
{% elif value[16:17] == '4' %}
转盘
{% elif value[16:17] == '5' %}
NFC
{% elif value[16:17] == '6' %}
一次性密码
{% elif value[16:17] == '7' %}
双重验证
{% elif value[16:17] == 'a' %}
人工
{% elif value[16:17] == 'b' %}
自动
{% elif value[16:17] == 'f' %}
异常
{% else %}
{{ value[16:17] }}
{% endif %}
#门锁事件
- platform: mqtt
name: lock_event
icon: 'mdi:lock-question'
state_topic: 'mqttl/1020275136/11'
value_template: >-
{% if value[17:18] == '0' %}
门外开锁
{% elif value[17:18] == '1' %}
上提把手锁门
{% elif value[17:18] == '2' %}
反锁
{% elif value[17:18] == '3' %}
解除反锁
{% elif value[17:18] == '4' %}
门内开锁
{% elif value[17:18] == '5' %}
门内上锁
{% elif value[17:18] == '6' %}
开启童锁
{% elif value[17:18] == '7' %}
关闭童锁
{% elif value[17:18] == 'f' %}
异常
{% else %}
{{ value[17:18] }}
{% endif %}
#可以按照下边的格式匹配操作者
- platform: mqtt
name: lock_user
icon: 'mdi:human-handsdown'
state_topic: 'mqttl/1020275136/11'
value_template: >-
{% if value[8:16] == '00000000' %}
管理员
{% elif value[8:16] == 'ffffffff' %}
未知操作者
{% elif value[8:16] == 'DEADBEEF' %}
无效操作者
{% else %}
{{ value[8:16] }}
{% endif %}
#0x00000000 - 0x7FFFFFFF:蓝牙(最多 2147483647 个)
#0x80010000 - 0x8001FFFF:指纹(最多 65536 个)
#0x80020000 - 0x8002FFFF:密码(最多 65536 个)
#0x80030000 - 0x8003FFFF:钥匙(最多 65536 个)
#0x80040000 - 0x8004FFFF:NFC(最多 65536 个)
#0x80050000 - 0x8005FFFF:双重验证(最多 65536 个)
- platform: mqtt
name: lock_event_update_time
icon: 'mdi:lock-clock'
state_topic: 'mqttl/1020275136/11'
value_template: >-
{% if value[8:12] != 'c0de' %}
{{ value[0:8]|int(0,16)|timestamp_local }}
{% endif %}
- platform: mqtt
name: lock_alert
icon: 'mdi:lock-alert'
state_topic: 'mqttl/1020275136/11'
value_template: >-
{% if value[8:12] == 'c0de' %}
{% if value[12:16] == '0000' %}
密码多次验证失败
{% elif value[12:16] == '0001' %}
指纹多次验证失败
{% elif value[12:16] == '0002' %}
操作超时(密码输入超时)
{% elif value[12:16] == '0003' %}
撬锁
{% elif value[12:16] == '0004' %}
重置按键按下
{% elif value[12:16] == '0005' %}
错误钥匙频繁开锁
{% elif value[12:16] == '0006' %}
钥匙孔异物
{% elif value[12:16] == '0007' %}
钥匙未取出
{% elif value[12:16] == '0008' %}
错误NFC频繁开锁
{% elif value[12:16] == '0009' %}
超时未按要求上锁
{% elif value[12:16] == '1000' %}
电量低于10%
{% elif value[12:16] == '1001' %}
电量低于5%
{% elif value[12:16] == '1002' %}
指纹传感器异常
{% else %}
正常
{% endif %}
{% endif %}
- platform: mqtt
name: lock_alert_update_time
icon: 'mdi:lock-clock'
state_topic: 'mqttl/1020275136/11'
value_template: >-
{% if value[8:12] == 'c0de' %}
{{ value[0:8]|int(0,16)|timestamp_local }}
{% endif %}
- platform: mqtt
name: lock_battery
state_topic: 'mqttl/1020275136/4106'
value_template: "{{ value[8:10]|int(0,16) }}"
unit_of_measurement: '%'
device_class: battery
- platform: mqtt
name: lock_battdate
icon: 'mdi:update'
state_topic: 'mqttl/1020275136/4106'
value_template: "{{ value[0:8]|int(0,16)|timestamp_custom('%Y-%m-%d') }}"
homeassistant:
customize:
sensor.lock_state:
friendly_name: 门状态
sensor.lock_state_update_time:
friendly_name: 状态变更时间
sensor.lock_event:
friendly_name: 锁事件
sensor.lock_method:
friendly_name: 开锁方式
sensor.lock_user:
friendly_name: 操作者
sensor.lock_event_update_time:
friendly_name: 事件发生时间
sensor.lock_alert:
friendly_name: 警告信息
sensor.lock_alert_update_time:
friendly_name: 警告发生时间
sensor.lock_battery:
friendly_name: 电池电量
sensor.lock_battdate:
friendly_name: 电量报告日期
|