# This script uses ZHA Toolkit (https://github.com/mdeweerd/zha-toolkit) to manage smart door lock codes, and therefore ZHA Toolkit needs to be installed. # There is no gaurantee that this script will work as expected with your particular ZigBee smart door lock. # This has been tested against a Kwikset SmartCode 916 (https://www.kwikset.com/products/detail/916-smartcode-traditional-electronic-deadbolt-with-zigbee-technology) blueprint: name: Set Guest Door Code (ZigBee) description: >- A script that sets a temporary code for a ZigBee smart door lock (via ZHA Toolkit). This script adds and removes a new code, rather than enabling/disabling an existing code. source_url: https://raw.githubusercontent.com/nwithan8/configs/main/home_assistant/blueprints/scripts/set_guest_door_code_zigbee.yaml domain: script input: lock: description: (Required) Which door lock to program name: Lock selector: target: entity: domain: lock slot: description: (Required) Which code slot to use name: Slot selector: text: on_start: description: (Optional) Action to execute when code is enabled The lock entity is available via the "lock" variable. The set code is available via the "code" variable. The set code slot is available via the "slot" variable. The validity time is available via the "duration" variable. name: When code enabled default: [] selector: action: on_end: description: (Optional) Action to execute when code is disabled name: When code disabled default: [] selector: action: fields: code: description: The code to set example: "1234" name: Code required: true selector: text: null duration: description: How long the code is valid for name: Valid for required: true selector: duration: enable_day: true variables: lock: !input lock slot: !input slot sequence: - service: zha.set_lock_user_code data: code_slot: "{{ slot }}" user_code: "{{ code }}" target: entity_id: "{{ lock.entity_id }}" - choose: - conditions: "{{ true }}" sequence: !input on_start - delay: "{{ duration }}" - service: zha.clear_lock_user_code data: code_slot: "{{ slot }}" target: entity_id: "{{ lock.entity_id }}" - choose: - conditions: "{{ true }}" sequence: !input on_end mode: single