Skip to content

Handle BLE Locks

Alex X edited this page Nov 19, 2021 · 1 revision

BLE locks have an action entity, just like buttons. You need to do something with the lock to get data from it.

The state changes to door, lock, fingerprint, armed when an event occurs. Details of the event are in the entity attributes.

action: fingerprint

  • key_id - Key ID in full hex format
  • action_id: 0, message: Match successful
  • action_id: 1, message: Match failed
  • action_id: 2, message: Timeout
  • action_id: 3, message: Low quality
  • action_id: 4, message: Insufficient area
  • action_id: 5, message: Skin is too dry
  • action_id: 5, message: Skin is too wet

action: door

  • action_id: 0, message: Door is open
  • action_id: 1, message: Door is closed
  • action_id: 2, message: Timeout is not closed
  • action_id: 3, message: Knock on the door
  • action_id: 4, message: Breaking the door
  • action_id: 5, message: Door is stuck

action: lock

  • key_id - Key ID in short decimal format
  • action_id: 0, message: Unlock outside the door
  • action_id: 1, message: Lock
  • action_id: 2, message: Turn on anti-lock
  • action_id: 3, message: Turn off anti-lock
  • action_id: 4, message: Unlock inside the door
  • action_id: 5, message: Lock inside the door
  • action_id: 6, message: Turn on child lock
  • action_id: 7, message: Turn off child lock
  • method_id: 0, method: bluetooth
  • method_id: 1, method: password
  • method_id: 2, method: biological
  • method_id: 3, method: key
  • method_id: 4, method: turntable
  • method_id: 5, method: nfc
  • method_id: 6, method: one-time password
  • method_id: 7, method: two-step verification
  • method_id: 8, method: coercion
  • method_id: 10, method: manual
  • method_id: 11, method: automatic
  • key_id: 0xc0de0000, error: Frequent unlocking with incorrect password
  • key_id: 0xc0de0001, error: Frequent unlocking with wrong fingerprints
  • key_id: 0xc0de0002, error: Operation timeout (password input timeout)
  • key_id: 0xc0de0003, error: Lock picking
  • key_id: 0xc0de0004, error: Reset button is pressed
  • key_id: 0xc0de0005, error: The wrong key is frequently unlocked
  • key_id: 0xc0de0006, error: Foreign body in the keyhole
  • key_id: 0xc0de0007, error: The key has not been taken out
  • key_id: 0xc0de0008, error: Error NFC frequently unlocks
  • key_id: 0xc0de0009, error: Timeout is not locked as required
  • key_id: 0xc0de000a, error: Failure to unlock frequently in multiple ways
  • key_id: 0xc0de000b, error: Unlocking the face frequently fails
  • key_id: 0xc0de000c, error: Failure to unlock the vein frequently
  • key_id: 0xc0de000d, error: Hijacking alarm
  • key_id: 0xc0de000e, error: Unlock inside the door after arming
  • key_id: 0xc0de000f, error: Palmprints frequently fail to unlock
  • key_id: 0xc0de0010, error: The safe was moved
  • key_id: 0xc0de1000, error: The battery level is less than 10%
  • key_id: 0xc0de1001, error: The battery is less than 5%
  • key_id: 0xc0de1002, error: The fingerprint sensor is abnormal
  • key_id: 0xc0de1003, error: The accessory battery is low
  • key_id: 0xc0de1004, error: Mechanical failure

Write me if the values are wrong somewhere. I translated from Chinese documentation.

Example of several automations:

automation:
- alias: Doorbell
  trigger:
    platform: state
    entity_id: sensor.ble_1010274797_action
    to: door
  condition:
    condition: template
    value_template: "{{ trigger.to_state.attributes['action_id'] == 3 }}"
  action:
    service: persistent_notification.create
    data_template:
      title: Doorbell
      message: The doorbell is ringing

- alias: Lock Error
  trigger:
    platform: state
    entity_id: sensor.ble_1010274797_action
    to: lock
  condition:
    condition: template
    value_template: "{{ trigger.to_state.attributes['error'] }}"
  action:
    service: persistent_notification.create
    data_template:
      title: Lock ERROR
      message: "{{ trigger.to_state.attributes['error'] }}"

- alias: Open lock
  trigger:
    platform: state
    entity_id: sensor.ble_1010274797_action
    to: lock
  condition:
    condition: template
    value_template: "{{ trigger.to_state.attributes['action_id'] == 0 }}"
  action:
    service: persistent_notification.create
    data_template:
      title: Lock is open
      message: |
        Opening method: {{ trigger.to_state.attributes['method'] }}
        User ID: {{ trigger.to_state.attributes['key_id'] }}
Clone this wiki locally