keymaster icon indicating copy to clipboard operation
keymaster copied to clipboard

ISSUE: v0.1.0-b1 Constantly Adding and Removing User Codes

Open zanix opened this issue 7 months ago • 42 comments

Describe the bug When a code slot is enabled, the sync status keeps going from Adding to Synced and back again every few seconds.

The debug log in ZWave JS shows the user code is being added then removed roughly 20 seconds after. Then very shortly after it is added again, then removed.

This keeps repeating until I disable the user code in HA.

I have a child lock linked to the main one and it is never updated with a code or set active. I tried disabling the child lock in HA devices but the result is the same.

Environment (please complete the following information):

  • OS: HassOS
  • Type of system that HA is running on: NUC
  • Home Assistant version: 2025.8.0
  • Hassio/Docker/Core? Hassio
  • Component version: 0.1.0-b1
  • Z-Wave integration name: zwave_js
  • Lock make and model: Yale YRD420-ZW2

Logs

Home Assistant Log
2025-08-10 17:38:13.578 DEBUG (MainThread) [custom_components.keymaster.switch] [Switch async_turn_on] Front Door Code Slot 1: Enabled: True
2025-08-10 17:38:13.579 DEBUG (MainThread) [custom_components.keymaster.entity] [set_property_value] property: switch.code_slots:1.enabled, final_prop: enabled, value: True
2025-08-10 17:38:13.579 DEBUG (MainThread) [custom_components.keymaster.coordinator] [set_pin_on_lock] Front Door: Code Slot 1: Setting PIN to 1111
2025-08-10 17:38:14.893 DEBUG (MainThread) [custom_components.keymaster.coordinator] [set_pin_on_lock] Front Door: Code Slot 1: PIN set to 1111
2025-08-10 17:38:14.893 DEBUG (MainThread) [custom_components.keymaster.coordinator] [connect_and_update_lock] garage_entry: node_status: 4
2025-08-10 17:38:14.897 DEBUG (MainThread) [custom_components.keymaster.coordinator] [update_lock_data] garage_entry: usercodes: [{'code_slot': 1, 'name': 'User Code (1)', 'in_use': False, 'usercode': ''}, {'code_slot': 2, 'name': 'User Code (2)', 'in_use': False, 'usercode': ''}, {'code_slot': 3, 'name': 'User Code (3)', 'in_use': False, 'usercode': ''}, {'code_slot': 4, 'name': 'User Code (4)', 'in_use': False, 'usercode': ''}, {'code_slot': 5, 'name': 'User Code (5)', 'in_use': False, 'usercode': ''}, {'code_slot': 6, 'name': 'User Code (6)', 'in_use': False, 'usercode': ''}, {'code_slot': 7, 'name': 'User Code (7)', 'in_use': False, 'usercode': ''}, {'code_slot': 8, 'name': 'User Code (8)', 'in_use': False, 'usercode': ''}]
2025-08-10 17:38:14.898 DEBUG (MainThread) [custom_components.keymaster.coordinator] [connect_and_update_lock] front_door: node_status: 4
2025-08-10 17:38:14.902 DEBUG (MainThread) [custom_components.keymaster.coordinator] [update_lock_data] front_door: usercodes: [{'code_slot': 1, 'name': 'User Code (1)', 'in_use': False, 'usercode': '1111'}, {'code_slot': 2, 'name': 'User Code (2)', 'in_use': False, 'usercode': ''}, {'code_slot': 3, 'name': 'User Code (3)', 'in_use': False, 'usercode': ''}, {'code_slot': 4, 'name': 'User Code (4)', 'in_use': False, 'usercode': ''}, {'code_slot': 5, 'name': 'User Code (5)', 'in_use': False, 'usercode': ''}, {'code_slot': 6, 'name': 'User Code (6)', 'in_use': False, 'usercode': ''}, {'code_slot': 7, 'name': 'User Code (7)', 'in_use': False, 'usercode': ''}, {'code_slot': 8, 'name': 'User Code (8)', 'in_use': False, 'usercode': ''}]
2025-08-10 17:38:14.902 DEBUG (MainThread) [custom_components.keymaster.coordinator] [clear_pin_from_lock] front_door: Code Slot 1: Clearing PIN
2025-08-10 17:38:15.035 DEBUG (MainThread) [custom_components.keymaster.coordinator] [clear_pin_from_lock] front_door: Code Slot 1: Clear command sent, confirming
2025-08-10 17:38:15.035 DEBUG (MainThread) [custom_components.keymaster.coordinator] [clear_pin_from_lock] front_door: Code Slot 1: PIN Not Cleared, will retry
2025-08-10 17:38:15.036 DEBUG (MainThread) [custom_components.keymaster.coordinator] [connect_and_update_lock] Front Door: node_status: 4
2025-08-10 17:38:15.039 DEBUG (MainThread) [custom_components.keymaster.coordinator] [update_lock_data] Front Door: usercodes: [{'code_slot': 1, 'name': 'User Code (1)', 'in_use': False, 'usercode': '1111'}, {'code_slot': 2, 'name': 'User Code (2)', 'in_use': False, 'usercode': ''}, {'code_slot': 3, 'name': 'User Code (3)', 'in_use': False, 'usercode': ''}, {'code_slot': 4, 'name': 'User Code (4)', 'in_use': False, 'usercode': ''}, {'code_slot': 5, 'name': 'User Code (5)', 'in_use': False, 'usercode': ''}, {'code_slot': 6, 'name': 'User Code (6)', 'in_use': False, 'usercode': ''}, {'code_slot': 7, 'name': 'User Code (7)', 'in_use': False, 'usercode': ''}, {'code_slot': 8, 'name': 'User Code (8)', 'in_use': False, 'usercode': ''}]
2025-08-10 17:38:15.039 DEBUG (MainThread) [custom_components.keymaster.coordinator] [clear_pin_from_lock] Front Door: Code Slot 1: Clearing PIN
2025-08-10 17:38:15.137 DEBUG (MainThread) [custom_components.keymaster.coordinator] [clear_pin_from_lock] Front Door: Code Slot 1: Clear command sent, confirming
2025-08-10 17:38:15.137 DEBUG (MainThread) [custom_components.keymaster.coordinator] [clear_pin_from_lock] Front Door: Code Slot 1: PIN Not Cleared, will retry
2025-08-10 17:38:15.138 DEBUG (MainThread) [custom_components.keymaster.coordinator] [connect_and_update_lock] Front Door: node_status: 4
2025-08-10 17:38:15.140 DEBUG (MainThread) [custom_components.keymaster.coordinator] [update_lock_data] Front Door: usercodes: [{'code_slot': 1, 'name': 'User Code (1)', 'in_use': False, 'usercode': '1111'}, {'code_slot': 2, 'name': 'User Code (2)', 'in_use': False, 'usercode': ''}, {'code_slot': 3, 'name': 'User Code (3)', 'in_use': False, 'usercode': ''}, {'code_slot': 4, 'name': 'User Code (4)', 'in_use': False, 'usercode': ''}, {'code_slot': 5, 'name': 'User Code (5)', 'in_use': False, 'usercode': ''}, {'code_slot': 6, 'name': 'User Code (6)', 'in_use': False, 'usercode': ''}, {'code_slot': 7, 'name': 'User Code (7)', 'in_use': False, 'usercode': ''}, {'code_slot': 8, 'name': 'User Code (8)', 'in_use': False, 'usercode': ''}]
2025-08-10 17:38:15.140 DEBUG (MainThread) [custom_components.keymaster.coordinator] [connect_and_update_lock] Garage Entry: node_status: 4
2025-08-10 17:38:15.142 DEBUG (MainThread) [custom_components.keymaster.coordinator] [update_lock_data] Garage Entry: usercodes: [{'code_slot': 1, 'name': 'User Code (1)', 'in_use': False, 'usercode': ''}, {'code_slot': 2, 'name': 'User Code (2)', 'in_use': False, 'usercode': ''}, {'code_slot': 3, 'name': 'User Code (3)', 'in_use': False, 'usercode': ''}, {'code_slot': 4, 'name': 'User Code (4)', 'in_use': False, 'usercode': ''}, {'code_slot': 5, 'name': 'User Code (5)', 'in_use': False, 'usercode': ''}, {'code_slot': 6, 'name': 'User Code (6)', 'in_use': False, 'usercode': ''}, {'code_slot': 7, 'name': 'User Code (7)', 'in_use': False, 'usercode': ''}, {'code_slot': 8, 'name': 'User Code (8)', 'in_use': False, 'usercode': ''}]
2025-08-10 17:38:15.162 DEBUG (SyncWorker_5) [custom_components.keymaster.coordinator] [write_config_to_json] JSON File Updated
2025-08-10 17:38:15.162 DEBUG (MainThread) [custom_components.keymaster.coordinator] [schedule_quick_refresh_if_needed] Scheduling refresh in 15 seconds
2025-08-10 17:38:15.162 DEBUG (MainThread) [custom_components.keymaster.coordinator] Finished fetching keymaster data in 0.269 seconds (success: True)
2025-08-10 17:38:15.795 DEBUG (MainThread) [custom_components.keymaster.coordinator] [handle_zwave_js_lock_event] front_door: event: <Event zwave_js_notification[L]: domain=zwave_js, node_id=2, home_id=4084870027, endpoint=0, device_id=7c5ef385c24b493784768e9aea49389a, command_class=113, command_class_name=Notification, label=Access Control, type=6, event=14, event_label=New user code added, parameters=>, new_state: locked, params: {}, code_slot_num: 0
2025-08-10 17:38:15.795 DEBUG (MainThread) [custom_components.keymaster.coordinator] [handle_zwave_js_lock_event] Front Door: event: <Event zwave_js_notification[L]: domain=zwave_js, node_id=2, home_id=4084870027, endpoint=0, device_id=7c5ef385c24b493784768e9aea49389a, command_class=113, command_class_name=Notification, label=Access Control, type=6, event=14, event_label=New user code added, parameters=>, new_state: locked, params: {}, code_slot_num: 0
2025-08-10 17:38:15.795 DEBUG (MainThread) [custom_components.keymaster.coordinator] [handle_zwave_js_lock_event] Front Door: event: <Event zwave_js_notification[L]: domain=zwave_js, node_id=2, home_id=4084870027, endpoint=0, device_id=7c5ef385c24b493784768e9aea49389a, command_class=113, command_class_name=Notification, label=Access Control, type=6, event=14, event_label=New user code added, parameters=>, new_state: locked, params: {}, code_slot_num: 0
2025-08-10 17:38:30.163 DEBUG (MainThread) [custom_components.keymaster.coordinator] [connect_and_update_lock] garage_entry: node_status: 4
2025-08-10 17:38:30.167 DEBUG (MainThread) [custom_components.keymaster.coordinator] [update_lock_data] garage_entry: usercodes: [{'code_slot': 1, 'name': 'User Code (1)', 'in_use': False, 'usercode': ''}, {'code_slot': 2, 'name': 'User Code (2)', 'in_use': False, 'usercode': ''}, {'code_slot': 3, 'name': 'User Code (3)', 'in_use': False, 'usercode': ''}, {'code_slot': 4, 'name': 'User Code (4)', 'in_use': False, 'usercode': ''}, {'code_slot': 5, 'name': 'User Code (5)', 'in_use': False, 'usercode': ''}, {'code_slot': 6, 'name': 'User Code (6)', 'in_use': False, 'usercode': ''}, {'code_slot': 7, 'name': 'User Code (7)', 'in_use': False, 'usercode': ''}, {'code_slot': 8, 'name': 'User Code (8)', 'in_use': False, 'usercode': ''}]
2025-08-10 17:38:30.168 DEBUG (MainThread) [custom_components.keymaster.coordinator] [connect_and_update_lock] front_door: node_status: 4
2025-08-10 17:38:30.172 DEBUG (MainThread) [custom_components.keymaster.coordinator] [update_lock_data] front_door: usercodes: [{'code_slot': 1, 'name': 'User Code (1)', 'in_use': True, 'usercode': '1111'}, {'code_slot': 2, 'name': 'User Code (2)', 'in_use': False, 'usercode': ''}, {'code_slot': 3, 'name': 'User Code (3)', 'in_use': False, 'usercode': ''}, {'code_slot': 4, 'name': 'User Code (4)', 'in_use': False, 'usercode': ''}, {'code_slot': 5, 'name': 'User Code (5)', 'in_use': False, 'usercode': ''}, {'code_slot': 6, 'name': 'User Code (6)', 'in_use': False, 'usercode': ''}, {'code_slot': 7, 'name': 'User Code (7)', 'in_use': False, 'usercode': ''}, {'code_slot': 8, 'name': 'User Code (8)', 'in_use': False, 'usercode': ''}]
2025-08-10 17:38:30.172 DEBUG (MainThread) [custom_components.keymaster.coordinator] [clear_pin_from_lock] front_door: Code Slot 1: Clearing PIN
2025-08-10 17:38:31.468 DEBUG (MainThread) [custom_components.keymaster.coordinator] [clear_pin_from_lock] front_door: Code Slot 1: Clear command sent, confirming
2025-08-10 17:38:31.469 DEBUG (MainThread) [custom_components.keymaster.coordinator] [clear_pin_from_lock] front_door: Code Slot 1: PIN Not Cleared, will retry
2025-08-10 17:38:31.470 DEBUG (MainThread) [custom_components.keymaster.coordinator] [connect_and_update_lock] Front Door: node_status: 4
2025-08-10 17:38:31.473 DEBUG (MainThread) [custom_components.keymaster.coordinator] [update_lock_data] Front Door: usercodes: [{'code_slot': 1, 'name': 'User Code (1)', 'in_use': False, 'usercode': '1111'}, {'code_slot': 2, 'name': 'User Code (2)', 'in_use': False, 'usercode': ''}, {'code_slot': 3, 'name': 'User Code (3)', 'in_use': False, 'usercode': ''}, {'code_slot': 4, 'name': 'User Code (4)', 'in_use': False, 'usercode': ''}, {'code_slot': 5, 'name': 'User Code (5)', 'in_use': False, 'usercode': ''}, {'code_slot': 6, 'name': 'User Code (6)', 'in_use': False, 'usercode': ''}, {'code_slot': 7, 'name': 'User Code (7)', 'in_use': False, 'usercode': ''}, {'code_slot': 8, 'name': 'User Code (8)', 'in_use': False, 'usercode': ''}]
2025-08-10 17:38:31.473 DEBUG (MainThread) [custom_components.keymaster.coordinator] [clear_pin_from_lock] Front Door: Code Slot 1: Clearing PIN
2025-08-10 17:38:31.599 DEBUG (MainThread) [custom_components.keymaster.coordinator] [clear_pin_from_lock] Front Door: Code Slot 1: Clear command sent, confirming
2025-08-10 17:38:31.599 DEBUG (MainThread) [custom_components.keymaster.coordinator] [clear_pin_from_lock] Front Door: Code Slot 1: PIN Not Cleared, will retry
2025-08-10 17:38:31.600 DEBUG (MainThread) [custom_components.keymaster.coordinator] [connect_and_update_lock] Front Door: node_status: 4
2025-08-10 17:38:31.604 DEBUG (MainThread) [custom_components.keymaster.coordinator] [update_lock_data] Front Door: usercodes: [{'code_slot': 1, 'name': 'User Code (1)', 'in_use': False, 'usercode': '1111'}, {'code_slot': 2, 'name': 'User Code (2)', 'in_use': False, 'usercode': ''}, {'code_slot': 3, 'name': 'User Code (3)', 'in_use': False, 'usercode': ''}, {'code_slot': 4, 'name': 'User Code (4)', 'in_use': False, 'usercode': ''}, {'code_slot': 5, 'name': 'User Code (5)', 'in_use': False, 'usercode': ''}, {'code_slot': 6, 'name': 'User Code (6)', 'in_use': False, 'usercode': ''}, {'code_slot': 7, 'name': 'User Code (7)', 'in_use': False, 'usercode': ''}, {'code_slot': 8, 'name': 'User Code (8)', 'in_use': False, 'usercode': ''}]
2025-08-10 17:38:31.606 DEBUG (MainThread) [custom_components.keymaster.coordinator] [connect_and_update_lock] Garage Entry: node_status: 4
2025-08-10 17:38:31.610 DEBUG (MainThread) [custom_components.keymaster.coordinator] [update_lock_data] Garage Entry: usercodes: [{'code_slot': 1, 'name': 'User Code (1)', 'in_use': False, 'usercode': ''}, {'code_slot': 2, 'name': 'User Code (2)', 'in_use': False, 'usercode': ''}, {'code_slot': 3, 'name': 'User Code (3)', 'in_use': False, 'usercode': ''}, {'code_slot': 4, 'name': 'User Code (4)', 'in_use': False, 'usercode': ''}, {'code_slot': 5, 'name': 'User Code (5)', 'in_use': False, 'usercode': ''}, {'code_slot': 6, 'name': 'User Code (6)', 'in_use': False, 'usercode': ''}, {'code_slot': 7, 'name': 'User Code (7)', 'in_use': False, 'usercode': ''}, {'code_slot': 8, 'name': 'User Code (8)', 'in_use': False, 'usercode': ''}]
2025-08-10 17:38:31.620 DEBUG (SyncWorker_3) [custom_components.keymaster.coordinator] [write_config_to_json] No changes to kmlocks. Not updating JSON file
2025-08-10 17:38:31.639 DEBUG (MainThread) [custom_components.keymaster.coordinator] [schedule_quick_refresh_if_needed] Scheduling refresh in 15 seconds
2025-08-10 17:38:31.639 DEBUG (MainThread) [custom_components.keymaster.coordinator] Finished fetching keymaster data in 1.476 seconds (success: True)
2025-08-10 17:38:32.361 DEBUG (MainThread) [custom_components.keymaster.coordinator] [handle_zwave_js_lock_event] front_door: event: <Event zwave_js_notification[L]: domain=zwave_js, node_id=2, home_id=4084870027, endpoint=0, device_id=7c5ef385c24b493784768e9aea49389a, command_class=113, command_class_name=Notification, label=Access Control, type=6, event=13, event_label=Single user code deleted, parameters=>, new_state: locked, params: {}, code_slot_num: 0
2025-08-10 17:38:32.361 DEBUG (MainThread) [custom_components.keymaster.coordinator] [handle_zwave_js_lock_event] Front Door: event: <Event zwave_js_notification[L]: domain=zwave_js, node_id=2, home_id=4084870027, endpoint=0, device_id=7c5ef385c24b493784768e9aea49389a, command_class=113, command_class_name=Notification, label=Access Control, type=6, event=13, event_label=Single user code deleted, parameters=>, new_state: locked, params: {}, code_slot_num: 0
2025-08-10 17:38:32.361 DEBUG (MainThread) [custom_components.keymaster.coordinator] [handle_zwave_js_lock_event] Front Door: event: <Event zwave_js_notification[L]: domain=zwave_js, node_id=2, home_id=4084870027, endpoint=0, device_id=7c5ef385c24b493784768e9aea49389a, command_class=113, command_class_name=Notification, label=Access Control, type=6, event=13, event_label=Single user code deleted, parameters=>, new_state: locked, params: {}, code_slot_num: 0
2025-08-10 17:38:46.640 DEBUG (MainThread) [custom_components.keymaster.coordinator] [connect_and_update_lock] garage_entry: node_status: 4
2025-08-10 17:38:46.644 DEBUG (MainThread) [custom_components.keymaster.coordinator] [update_lock_data] garage_entry: usercodes: [{'code_slot': 1, 'name': 'User Code (1)', 'in_use': False, 'usercode': ''}, {'code_slot': 2, 'name': 'User Code (2)', 'in_use': False, 'usercode': ''}, {'code_slot': 3, 'name': 'User Code (3)', 'in_use': False, 'usercode': ''}, {'code_slot': 4, 'name': 'User Code (4)', 'in_use': False, 'usercode': ''}, {'code_slot': 5, 'name': 'User Code (5)', 'in_use': False, 'usercode': ''}, {'code_slot': 6, 'name': 'User Code (6)', 'in_use': False, 'usercode': ''}, {'code_slot': 7, 'name': 'User Code (7)', 'in_use': False, 'usercode': ''}, {'code_slot': 8, 'name': 'User Code (8)', 'in_use': False, 'usercode': ''}]
2025-08-10 17:38:46.645 DEBUG (MainThread) [custom_components.keymaster.coordinator] [connect_and_update_lock] front_door: node_status: 4
2025-08-10 17:38:46.649 DEBUG (MainThread) [custom_components.keymaster.coordinator] [update_lock_data] front_door: usercodes: [{'code_slot': 1, 'name': 'User Code (1)', 'in_use': False, 'usercode': ''}, {'code_slot': 2, 'name': 'User Code (2)', 'in_use': False, 'usercode': ''}, {'code_slot': 3, 'name': 'User Code (3)', 'in_use': False, 'usercode': ''}, {'code_slot': 4, 'name': 'User Code (4)', 'in_use': False, 'usercode': ''}, {'code_slot': 5, 'name': 'User Code (5)', 'in_use': False, 'usercode': ''}, {'code_slot': 6, 'name': 'User Code (6)', 'in_use': False, 'usercode': ''}, {'code_slot': 7, 'name': 'User Code (7)', 'in_use': False, 'usercode': ''}, {'code_slot': 8, 'name': 'User Code (8)', 'in_use': False, 'usercode': ''}]
2025-08-10 17:38:46.650 DEBUG (MainThread) [custom_components.keymaster.coordinator] [connect_and_update_lock] Front Door: node_status: 4
2025-08-10 17:38:46.654 DEBUG (MainThread) [custom_components.keymaster.coordinator] [update_lock_data] Front Door: usercodes: [{'code_slot': 1, 'name': 'User Code (1)', 'in_use': False, 'usercode': ''}, {'code_slot': 2, 'name': 'User Code (2)', 'in_use': False, 'usercode': ''}, {'code_slot': 3, 'name': 'User Code (3)', 'in_use': False, 'usercode': ''}, {'code_slot': 4, 'name': 'User Code (4)', 'in_use': False, 'usercode': ''}, {'code_slot': 5, 'name': 'User Code (5)', 'in_use': False, 'usercode': ''}, {'code_slot': 6, 'name': 'User Code (6)', 'in_use': False, 'usercode': ''}, {'code_slot': 7, 'name': 'User Code (7)', 'in_use': False, 'usercode': ''}, {'code_slot': 8, 'name': 'User Code (8)', 'in_use': False, 'usercode': ''}]
2025-08-10 17:38:46.656 DEBUG (MainThread) [custom_components.keymaster.coordinator] [connect_and_update_lock] Front Door: node_status: 4
2025-08-10 17:38:46.660 DEBUG (MainThread) [custom_components.keymaster.coordinator] [update_lock_data] Front Door: usercodes: [{'code_slot': 1, 'name': 'User Code (1)', 'in_use': False, 'usercode': ''}, {'code_slot': 2, 'name': 'User Code (2)', 'in_use': False, 'usercode': ''}, {'code_slot': 3, 'name': 'User Code (3)', 'in_use': False, 'usercode': ''}, {'code_slot': 4, 'name': 'User Code (4)', 'in_use': False, 'usercode': ''}, {'code_slot': 5, 'name': 'User Code (5)', 'in_use': False, 'usercode': ''}, {'code_slot': 6, 'name': 'User Code (6)', 'in_use': False, 'usercode': ''}, {'code_slot': 7, 'name': 'User Code (7)', 'in_use': False, 'usercode': ''}, {'code_slot': 8, 'name': 'User Code (8)', 'in_use': False, 'usercode': ''}]
2025-08-10 17:38:46.660 DEBUG (MainThread) [custom_components.keymaster.coordinator] [set_pin_on_lock] Front Door: Code Slot 1: Setting PIN to 1111
2025-08-10 17:38:47.980 DEBUG (MainThread) [custom_components.keymaster.coordinator] [set_pin_on_lock] Front Door: Code Slot 1: PIN set to 1111
2025-08-10 17:38:47.981 DEBUG (MainThread) [custom_components.keymaster.coordinator] [connect_and_update_lock] Garage Entry: node_status: 4
2025-08-10 17:38:47.982 DEBUG (MainThread) [custom_components.keymaster.coordinator] [update_lock_data] Garage Entry: usercodes: [{'code_slot': 1, 'name': 'User Code (1)', 'in_use': False, 'usercode': ''}, {'code_slot': 2, 'name': 'User Code (2)', 'in_use': False, 'usercode': ''}, {'code_slot': 3, 'name': 'User Code (3)', 'in_use': False, 'usercode': ''}, {'code_slot': 4, 'name': 'User Code (4)', 'in_use': False, 'usercode': ''}, {'code_slot': 5, 'name': 'User Code (5)', 'in_use': False, 'usercode': ''}, {'code_slot': 6, 'name': 'User Code (6)', 'in_use': False, 'usercode': ''}, {'code_slot': 7, 'name': 'User Code (7)', 'in_use': False, 'usercode': ''}, {'code_slot': 8, 'name': 'User Code (8)', 'in_use': False, 'usercode': ''}]
2025-08-10 17:38:47.982 DEBUG (MainThread) [custom_components.keymaster.coordinator] [async_update_data] Front Door/garage_entry Code Slots Equal
2025-08-10 17:38:47.982 DEBUG (MainThread) [custom_components.keymaster.coordinator] [async_update_data] Front Door/Garage Entry Code Slots Equal
2025-08-10 17:38:47.990 DEBUG (SyncWorker_10) [custom_components.keymaster.coordinator] [write_config_to_json] JSON File Updated
2025-08-10 17:38:47.990 DEBUG (MainThread) [custom_components.keymaster.coordinator] [schedule_quick_refresh_if_needed] Scheduling refresh in 15 seconds
2025-08-10 17:38:47.991 DEBUG (MainThread) [custom_components.keymaster.coordinator] Finished fetching keymaster data in 1.350 seconds (success: True)
2025-08-10 17:38:48.891 DEBUG (MainThread) [custom_components.keymaster.coordinator] [handle_zwave_js_lock_event] front_door: event: <Event zwave_js_notification[L]: domain=zwave_js, node_id=2, home_id=4084870027, endpoint=0, device_id=7c5ef385c24b493784768e9aea49389a, command_class=113, command_class_name=Notification, label=Access Control, type=6, event=14, event_label=New user code added, parameters=>, new_state: locked, params: {}, code_slot_num: 0
2025-08-10 17:38:48.891 DEBUG (MainThread) [custom_components.keymaster.coordinator] [handle_zwave_js_lock_event] Front Door: event: <Event zwave_js_notification[L]: domain=zwave_js, node_id=2, home_id=4084870027, endpoint=0, device_id=7c5ef385c24b493784768e9aea49389a, command_class=113, command_class_name=Notification, label=Access Control, type=6, event=14, event_label=New user code added, parameters=>, new_state: locked, params: {}, code_slot_num: 0
2025-08-10 17:38:48.891 DEBUG (MainThread) [custom_components.keymaster.coordinator] [handle_zwave_js_lock_event] Front Door: event: <Event zwave_js_notification[L]: domain=zwave_js, node_id=2, home_id=4084870027, endpoint=0, device_id=7c5ef385c24b493784768e9aea49389a, command_class=113, command_class_name=Notification, label=Access Control, type=6, event=14, event_label=New user code added, parameters=>, new_state: locked, params: {}, code_slot_num: 0
2025-08-10 17:39:02.991 DEBUG (MainThread) [custom_components.keymaster.coordinator] [connect_and_update_lock] garage_entry: node_status: 4
2025-08-10 17:39:02.995 DEBUG (MainThread) [custom_components.keymaster.coordinator] [update_lock_data] garage_entry: usercodes: [{'code_slot': 1, 'name': 'User Code (1)', 'in_use': False, 'usercode': ''}, {'code_slot': 2, 'name': 'User Code (2)', 'in_use': False, 'usercode': ''}, {'code_slot': 3, 'name': 'User Code (3)', 'in_use': False, 'usercode': ''}, {'code_slot': 4, 'name': 'User Code (4)', 'in_use': False, 'usercode': ''}, {'code_slot': 5, 'name': 'User Code (5)', 'in_use': False, 'usercode': ''}, {'code_slot': 6, 'name': 'User Code (6)', 'in_use': False, 'usercode': ''}, {'code_slot': 7, 'name': 'User Code (7)', 'in_use': False, 'usercode': ''}, {'code_slot': 8, 'name': 'User Code (8)', 'in_use': False, 'usercode': ''}]
2025-08-10 17:39:02.996 DEBUG (MainThread) [custom_components.keymaster.coordinator] [connect_and_update_lock] front_door: node_status: 4
2025-08-10 17:39:03.000 DEBUG (MainThread) [custom_components.keymaster.coordinator] [update_lock_data] front_door: usercodes: [{'code_slot': 1, 'name': 'User Code (1)', 'in_use': True, 'usercode': '1111'}, {'code_slot': 2, 'name': 'User Code (2)', 'in_use': False, 'usercode': ''}, {'code_slot': 3, 'name': 'User Code (3)', 'in_use': False, 'usercode': ''}, {'code_slot': 4, 'name': 'User Code (4)', 'in_use': False, 'usercode': ''}, {'code_slot': 5, 'name': 'User Code (5)', 'in_use': False, 'usercode': ''}, {'code_slot': 6, 'name': 'User Code (6)', 'in_use': False, 'usercode': ''}, {'code_slot': 7, 'name': 'User Code (7)', 'in_use': False, 'usercode': ''}, {'code_slot': 8, 'name': 'User Code (8)', 'in_use': False, 'usercode': ''}]
2025-08-10 17:39:03.001 DEBUG (MainThread) [custom_components.keymaster.coordinator] [clear_pin_from_lock] front_door: Code Slot 1: Clearing PIN
2025-08-10 17:39:04.312 DEBUG (MainThread) [custom_components.keymaster.coordinator] [clear_pin_from_lock] front_door: Code Slot 1: Clear command sent, confirming
2025-08-10 17:39:04.312 DEBUG (MainThread) [custom_components.keymaster.coordinator] [clear_pin_from_lock] front_door: Code Slot 1: PIN Not Cleared, will retry
2025-08-10 17:39:04.314 DEBUG (MainThread) [custom_components.keymaster.coordinator] [connect_and_update_lock] Front Door: node_status: 4
2025-08-10 17:39:04.317 DEBUG (MainThread) [custom_components.keymaster.coordinator] [update_lock_data] Front Door: usercodes: [{'code_slot': 1, 'name': 'User Code (1)', 'in_use': False, 'usercode': '1111'}, {'code_slot': 2, 'name': 'User Code (2)', 'in_use': False, 'usercode': ''}, {'code_slot': 3, 'name': 'User Code (3)', 'in_use': False, 'usercode': ''}, {'code_slot': 4, 'name': 'User Code (4)', 'in_use': False, 'usercode': ''}, {'code_slot': 5, 'name': 'User Code (5)', 'in_use': False, 'usercode': ''}, {'code_slot': 6, 'name': 'User Code (6)', 'in_use': False, 'usercode': ''}, {'code_slot': 7, 'name': 'User Code (7)', 'in_use': False, 'usercode': ''}, {'code_slot': 8, 'name': 'User Code (8)', 'in_use': False, 'usercode': ''}]
2025-08-10 17:39:04.318 DEBUG (MainThread) [custom_components.keymaster.coordinator] [clear_pin_from_lock] Front Door: Code Slot 1: Clearing PIN
2025-08-10 17:39:04.415 DEBUG (MainThread) [custom_components.keymaster.coordinator] [clear_pin_from_lock] Front Door: Code Slot 1: Clear command sent, confirming
2025-08-10 17:39:04.415 DEBUG (MainThread) [custom_components.keymaster.coordinator] [clear_pin_from_lock] Front Door: Code Slot 1: PIN Not Cleared, will retry
2025-08-10 17:39:04.416 DEBUG (MainThread) [custom_components.keymaster.coordinator] [connect_and_update_lock] Front Door: node_status: 4
2025-08-10 17:39:04.419 DEBUG (MainThread) [custom_components.keymaster.coordinator] [update_lock_data] Front Door: usercodes: [{'code_slot': 1, 'name': 'User Code (1)', 'in_use': False, 'usercode': '1111'}, {'code_slot': 2, 'name': 'User Code (2)', 'in_use': False, 'usercode': ''}, {'code_slot': 3, 'name': 'User Code (3)', 'in_use': False, 'usercode': ''}, {'code_slot': 4, 'name': 'User Code (4)', 'in_use': False, 'usercode': ''}, {'code_slot': 5, 'name': 'User Code (5)', 'in_use': False, 'usercode': ''}, {'code_slot': 6, 'name': 'User Code (6)', 'in_use': False, 'usercode': ''}, {'code_slot': 7, 'name': 'User Code (7)', 'in_use': False, 'usercode': ''}, {'code_slot': 8, 'name': 'User Code (8)', 'in_use': False, 'usercode': ''}]
2025-08-10 17:39:04.421 DEBUG (MainThread) [custom_components.keymaster.coordinator] [connect_and_update_lock] Garage Entry: node_status: 4
2025-08-10 17:39:04.425 DEBUG (MainThread) [custom_components.keymaster.coordinator] [update_lock_data] Garage Entry: usercodes: [{'code_slot': 1, 'name': 'User Code (1)', 'in_use': False, 'usercode': ''}, {'code_slot': 2, 'name': 'User Code (2)', 'in_use': False, 'usercode': ''}, {'code_slot': 3, 'name': 'User Code (3)', 'in_use': False, 'usercode': ''}, {'code_slot': 4, 'name': 'User Code (4)', 'in_use': False, 'usercode': ''}, {'code_slot': 5, 'name': 'User Code (5)', 'in_use': False, 'usercode': ''}, {'code_slot': 6, 'name': 'User Code (6)', 'in_use': False, 'usercode': ''}, {'code_slot': 7, 'name': 'User Code (7)', 'in_use': False, 'usercode': ''}, {'code_slot': 8, 'name': 'User Code (8)', 'in_use': False, 'usercode': ''}]
2025-08-10 17:39:04.443 DEBUG (SyncWorker_9) [custom_components.keymaster.coordinator] [write_config_to_json] JSON File Updated
2025-08-10 17:39:04.444 DEBUG (MainThread) [custom_components.keymaster.coordinator] [schedule_quick_refresh_if_needed] Scheduling refresh in 15 seconds
2025-08-10 17:39:04.444 DEBUG (MainThread) [custom_components.keymaster.coordinator] Finished fetching keymaster data in 1.453 seconds (success: True)
2025-08-10 17:39:05.207 DEBUG (MainThread) [custom_components.keymaster.coordinator] [handle_zwave_js_lock_event] front_door: event: <Event zwave_js_notification[L]: domain=zwave_js, node_id=2, home_id=4084870027, endpoint=0, device_id=7c5ef385c24b493784768e9aea49389a, command_class=113, command_class_name=Notification, label=Access Control, type=6, event=13, event_label=Single user code deleted, parameters=>, new_state: locked, params: {}, code_slot_num: 0
2025-08-10 17:39:05.207 DEBUG (MainThread) [custom_components.keymaster.coordinator] [handle_zwave_js_lock_event] Front Door: event: <Event zwave_js_notification[L]: domain=zwave_js, node_id=2, home_id=4084870027, endpoint=0, device_id=7c5ef385c24b493784768e9aea49389a, command_class=113, command_class_name=Notification, label=Access Control, type=6, event=13, event_label=Single user code deleted, parameters=>, new_state: locked, params: {}, code_slot_num: 0
2025-08-10 17:39:05.207 DEBUG (MainThread) [custom_components.keymaster.coordinator] [handle_zwave_js_lock_event] Front Door: event: <Event zwave_js_notification[L]: domain=zwave_js, node_id=2, home_id=4084870027, endpoint=0, device_id=7c5ef385c24b493784768e9aea49389a, command_class=113, command_class_name=Notification, label=Access Control, type=6, event=13, event_label=Single user code deleted, parameters=>, new_state: locked, params: {}, code_slot_num: 0
2025-08-10 17:39:19.445 DEBUG (MainThread) [custom_components.keymaster.coordinator] [connect_and_update_lock] garage_entry: node_status: 4
2025-08-10 17:39:19.449 DEBUG (MainThread) [custom_components.keymaster.coordinator] [update_lock_data] garage_entry: usercodes: [{'code_slot': 1, 'name': 'User Code (1)', 'in_use': False, 'usercode': ''}, {'code_slot': 2, 'name': 'User Code (2)', 'in_use': False, 'usercode': ''}, {'code_slot': 3, 'name': 'User Code (3)', 'in_use': False, 'usercode': ''}, {'code_slot': 4, 'name': 'User Code (4)', 'in_use': False, 'usercode': ''}, {'code_slot': 5, 'name': 'User Code (5)', 'in_use': False, 'usercode': ''}, {'code_slot': 6, 'name': 'User Code (6)', 'in_use': False, 'usercode': ''}, {'code_slot': 7, 'name': 'User Code (7)', 'in_use': False, 'usercode': ''}, {'code_slot': 8, 'name': 'User Code (8)', 'in_use': False, 'usercode': ''}]
2025-08-10 17:39:19.450 DEBUG (MainThread) [custom_components.keymaster.coordinator] [connect_and_update_lock] front_door: node_status: 4
2025-08-10 17:39:19.454 DEBUG (MainThread) [custom_components.keymaster.coordinator] [update_lock_data] front_door: usercodes: [{'code_slot': 1, 'name': 'User Code (1)', 'in_use': False, 'usercode': ''}, {'code_slot': 2, 'name': 'User Code (2)', 'in_use': False, 'usercode': ''}, {'code_slot': 3, 'name': 'User Code (3)', 'in_use': False, 'usercode': ''}, {'code_slot': 4, 'name': 'User Code (4)', 'in_use': False, 'usercode': ''}, {'code_slot': 5, 'name': 'User Code (5)', 'in_use': False, 'usercode': ''}, {'code_slot': 6, 'name': 'User Code (6)', 'in_use': False, 'usercode': ''}, {'code_slot': 7, 'name': 'User Code (7)', 'in_use': False, 'usercode': ''}, {'code_slot': 8, 'name': 'User Code (8)', 'in_use': False, 'usercode': ''}]
2025-08-10 17:39:19.455 DEBUG (MainThread) [custom_components.keymaster.coordinator] [connect_and_update_lock] Front Door: node_status: 4
2025-08-10 17:39:19.459 DEBUG (MainThread) [custom_components.keymaster.coordinator] [update_lock_data] Front Door: usercodes: [{'code_slot': 1, 'name': 'User Code (1)', 'in_use': False, 'usercode': ''}, {'code_slot': 2, 'name': 'User Code (2)', 'in_use': False, 'usercode': ''}, {'code_slot': 3, 'name': 'User Code (3)', 'in_use': False, 'usercode': ''}, {'code_slot': 4, 'name': 'User Code (4)', 'in_use': False, 'usercode': ''}, {'code_slot': 5, 'name': 'User Code (5)', 'in_use': False, 'usercode': ''}, {'code_slot': 6, 'name': 'User Code (6)', 'in_use': False, 'usercode': ''}, {'code_slot': 7, 'name': 'User Code (7)', 'in_use': False, 'usercode': ''}, {'code_slot': 8, 'name': 'User Code (8)', 'in_use': False, 'usercode': ''}]
2025-08-10 17:39:19.461 DEBUG (MainThread) [custom_components.keymaster.coordinator] [connect_and_update_lock] Front Door: node_status: 4
2025-08-10 17:39:19.465 DEBUG (MainThread) [custom_components.keymaster.coordinator] [update_lock_data] Front Door: usercodes: [{'code_slot': 1, 'name': 'User Code (1)', 'in_use': False, 'usercode': ''}, {'code_slot': 2, 'name': 'User Code (2)', 'in_use': False, 'usercode': ''}, {'code_slot': 3, 'name': 'User Code (3)', 'in_use': False, 'usercode': ''}, {'code_slot': 4, 'name': 'User Code (4)', 'in_use': False, 'usercode': ''}, {'code_slot': 5, 'name': 'User Code (5)', 'in_use': False, 'usercode': ''}, {'code_slot': 6, 'name': 'User Code (6)', 'in_use': False, 'usercode': ''}, {'code_slot': 7, 'name': 'User Code (7)', 'in_use': False, 'usercode': ''}, {'code_slot': 8, 'name': 'User Code (8)', 'in_use': False, 'usercode': ''}]
2025-08-10 17:39:19.465 DEBUG (MainThread) [custom_components.keymaster.coordinator] [set_pin_on_lock] Front Door: Code Slot 1: Setting PIN to 1111
2025-08-10 17:39:20.763 DEBUG (MainThread) [custom_components.keymaster.coordinator] [set_pin_on_lock] Front Door: Code Slot 1: PIN set to 1111
2025-08-10 17:39:20.764 DEBUG (MainThread) [custom_components.keymaster.coordinator] [connect_and_update_lock] Garage Entry: node_status: 4
2025-08-10 17:39:20.771 DEBUG (MainThread) [custom_components.keymaster.coordinator] [update_lock_data] Garage Entry: usercodes: [{'code_slot': 1, 'name': 'User Code (1)', 'in_use': False, 'usercode': ''}, {'code_slot': 2, 'name': 'User Code (2)', 'in_use': False, 'usercode': ''}, {'code_slot': 3, 'name': 'User Code (3)', 'in_use': False, 'usercode': ''}, {'code_slot': 4, 'name': 'User Code (4)', 'in_use': False, 'usercode': ''}, {'code_slot': 5, 'name': 'User Code (5)', 'in_use': False, 'usercode': ''}, {'code_slot': 6, 'name': 'User Code (6)', 'in_use': False, 'usercode': ''}, {'code_slot': 7, 'name': 'User Code (7)', 'in_use': False, 'usercode': ''}, {'code_slot': 8, 'name': 'User Code (8)', 'in_use': False, 'usercode': ''}]
2025-08-10 17:39:20.773 DEBUG (MainThread) [custom_components.keymaster.coordinator] [async_update_data] Front Door/garage_entry Code Slots Equal
2025-08-10 17:39:20.774 DEBUG (MainThread) [custom_components.keymaster.coordinator] [async_update_data] Front Door/Garage Entry Code Slots Equal
2025-08-10 17:39:20.805 DEBUG (SyncWorker_6) [custom_components.keymaster.coordinator] [write_config_to_json] JSON File Updated
2025-08-10 17:39:20.807 DEBUG (MainThread) [custom_components.keymaster.coordinator] [schedule_quick_refresh_if_needed] Scheduling refresh in 15 seconds
2025-08-10 17:39:20.807 DEBUG (MainThread) [custom_components.keymaster.coordinator] Finished fetching keymaster data in 1.362 seconds (success: True)
2025-08-10 17:39:21.659 DEBUG (MainThread) [custom_components.keymaster.coordinator] [handle_zwave_js_lock_event] front_door: event: <Event zwave_js_notification[L]: domain=zwave_js, node_id=2, home_id=4084870027, endpoint=0, device_id=7c5ef385c24b493784768e9aea49389a, command_class=113, command_class_name=Notification, label=Access Control, type=6, event=14, event_label=New user code added, parameters=>, new_state: locked, params: {}, code_slot_num: 0
2025-08-10 17:39:21.659 DEBUG (MainThread) [custom_components.keymaster.coordinator] [handle_zwave_js_lock_event] Front Door: event: <Event zwave_js_notification[L]: domain=zwave_js, node_id=2, home_id=4084870027, endpoint=0, device_id=7c5ef385c24b493784768e9aea49389a, command_class=113, command_class_name=Notification, label=Access Control, type=6, event=14, event_label=New user code added, parameters=>, new_state: locked, params: {}, code_slot_num: 0
2025-08-10 17:39:21.659 DEBUG (MainThread) [custom_components.keymaster.coordinator] [handle_zwave_js_lock_event] Front Door: event: <Event zwave_js_notification[L]: domain=zwave_js, node_id=2, home_id=4084870027, endpoint=0, device_id=7c5ef385c24b493784768e9aea49389a, command_class=113, command_class_name=Notification, label=Access Control, type=6, event=14, event_label=New user code added, parameters=>, new_state: locked, params: {}, code_slot_num: 0
2025-08-10 17:39:28.342 DEBUG (MainThread) [custom_components.keymaster.switch] [Switch async_turn_off] Front Door Code Slot 1: Enabled: False
2025-08-10 17:39:28.342 DEBUG (MainThread) [custom_components.keymaster.entity] [set_property_value] property: switch.code_slots:1.enabled, final_prop: enabled, value: False
2025-08-10 17:39:28.342 DEBUG (MainThread) [custom_components.keymaster.coordinator] [clear_pin_from_lock] Front Door: Code Slot 1: Clearing PIN
2025-08-10 17:39:29.619 DEBUG (MainThread) [custom_components.keymaster.coordinator] [clear_pin_from_lock] Front Door: Code Slot 1: Clear command sent, confirming
2025-08-10 17:39:29.619 DEBUG (MainThread) [custom_components.keymaster.coordinator] [clear_pin_from_lock] Front Door: Code Slot 1: PIN Not Cleared, will retry
2025-08-10 17:39:29.620 DEBUG (MainThread) [custom_components.keymaster.coordinator] [connect_and_update_lock] garage_entry: node_status: 4
2025-08-10 17:39:29.623 DEBUG (MainThread) [custom_components.keymaster.coordinator] [update_lock_data] garage_entry: usercodes: [{'code_slot': 1, 'name': 'User Code (1)', 'in_use': False, 'usercode': ''}, {'code_slot': 2, 'name': 'User Code (2)', 'in_use': False, 'usercode': ''}, {'code_slot': 3, 'name': 'User Code (3)', 'in_use': False, 'usercode': ''}, {'code_slot': 4, 'name': 'User Code (4)', 'in_use': False, 'usercode': ''}, {'code_slot': 5, 'name': 'User Code (5)', 'in_use': False, 'usercode': ''}, {'code_slot': 6, 'name': 'User Code (6)', 'in_use': False, 'usercode': ''}, {'code_slot': 7, 'name': 'User Code (7)', 'in_use': False, 'usercode': ''}, {'code_slot': 8, 'name': 'User Code (8)', 'in_use': False, 'usercode': ''}]
2025-08-10 17:39:29.624 DEBUG (MainThread) [custom_components.keymaster.coordinator] [connect_and_update_lock] front_door: node_status: 4
2025-08-10 17:39:29.628 DEBUG (MainThread) [custom_components.keymaster.coordinator] [update_lock_data] front_door: usercodes: [{'code_slot': 1, 'name': 'User Code (1)', 'in_use': False, 'usercode': '1111'}, {'code_slot': 2, 'name': 'User Code (2)', 'in_use': False, 'usercode': ''}, {'code_slot': 3, 'name': 'User Code (3)', 'in_use': False, 'usercode': ''}, {'code_slot': 4, 'name': 'User Code (4)', 'in_use': False, 'usercode': ''}, {'code_slot': 5, 'name': 'User Code (5)', 'in_use': False, 'usercode': ''}, {'code_slot': 6, 'name': 'User Code (6)', 'in_use': False, 'usercode': ''}, {'code_slot': 7, 'name': 'User Code (7)', 'in_use': False, 'usercode': ''}, {'code_slot': 8, 'name': 'User Code (8)', 'in_use': False, 'usercode': ''}]
2025-08-10 17:39:29.629 DEBUG (MainThread) [custom_components.keymaster.coordinator] [clear_pin_from_lock] front_door: Code Slot 1: Clearing PIN
2025-08-10 17:39:29.731 DEBUG (MainThread) [custom_components.keymaster.coordinator] [clear_pin_from_lock] front_door: Code Slot 1: Clear command sent, confirming
2025-08-10 17:39:29.732 DEBUG (MainThread) [custom_components.keymaster.coordinator] [clear_pin_from_lock] front_door: Code Slot 1: PIN Not Cleared, will retry
2025-08-10 17:39:29.733 DEBUG (MainThread) [custom_components.keymaster.coordinator] [connect_and_update_lock] Front Door: node_status: 4
2025-08-10 17:39:29.736 DEBUG (MainThread) [custom_components.keymaster.coordinator] [update_lock_data] Front Door: usercodes: [{'code_slot': 1, 'name': 'User Code (1)', 'in_use': False, 'usercode': '1111'}, {'code_slot': 2, 'name': 'User Code (2)', 'in_use': False, 'usercode': ''}, {'code_slot': 3, 'name': 'User Code (3)', 'in_use': False, 'usercode': ''}, {'code_slot': 4, 'name': 'User Code (4)', 'in_use': False, 'usercode': ''}, {'code_slot': 5, 'name': 'User Code (5)', 'in_use': False, 'usercode': ''}, {'code_slot': 6, 'name': 'User Code (6)', 'in_use': False, 'usercode': ''}, {'code_slot': 7, 'name': 'User Code (7)', 'in_use': False, 'usercode': ''}, {'code_slot': 8, 'name': 'User Code (8)', 'in_use': False, 'usercode': ''}]
2025-08-10 17:39:29.736 DEBUG (MainThread) [custom_components.keymaster.coordinator] [clear_pin_from_lock] Front Door: Code Slot 1: Clearing PIN
2025-08-10 17:39:29.863 DEBUG (MainThread) [custom_components.keymaster.coordinator] [clear_pin_from_lock] Front Door: Code Slot 1: Clear command sent, confirming
2025-08-10 17:39:29.863 DEBUG (MainThread) [custom_components.keymaster.coordinator] [clear_pin_from_lock] Front Door: Code Slot 1: PIN Not Cleared, will retry
2025-08-10 17:39:29.864 DEBUG (MainThread) [custom_components.keymaster.coordinator] [connect_and_update_lock] Front Door: node_status: 4
2025-08-10 17:39:29.866 DEBUG (MainThread) [custom_components.keymaster.coordinator] [update_lock_data] Front Door: usercodes: [{'code_slot': 1, 'name': 'User Code (1)', 'in_use': False, 'usercode': '1111'}, {'code_slot': 2, 'name': 'User Code (2)', 'in_use': False, 'usercode': ''}, {'code_slot': 3, 'name': 'User Code (3)', 'in_use': False, 'usercode': ''}, {'code_slot': 4, 'name': 'User Code (4)', 'in_use': False, 'usercode': ''}, {'code_slot': 5, 'name': 'User Code (5)', 'in_use': False, 'usercode': ''}, {'code_slot': 6, 'name': 'User Code (6)', 'in_use': False, 'usercode': ''}, {'code_slot': 7, 'name': 'User Code (7)', 'in_use': False, 'usercode': ''}, {'code_slot': 8, 'name': 'User Code (8)', 'in_use': False, 'usercode': ''}]
2025-08-10 17:39:29.866 DEBUG (MainThread) [custom_components.keymaster.coordinator] [clear_pin_from_lock] Front Door: Code Slot 1: Clearing PIN
2025-08-10 17:39:29.962 DEBUG (MainThread) [custom_components.keymaster.coordinator] [clear_pin_from_lock] Front Door: Code Slot 1: Clear command sent, confirming
2025-08-10 17:39:29.962 DEBUG (MainThread) [custom_components.keymaster.coordinator] [clear_pin_from_lock] Front Door: Code Slot 1: PIN Not Cleared, will retry
2025-08-10 17:39:29.963 DEBUG (MainThread) [custom_components.keymaster.coordinator] [connect_and_update_lock] Garage Entry: node_status: 4
2025-08-10 17:39:29.967 DEBUG (MainThread) [custom_components.keymaster.coordinator] [update_lock_data] Garage Entry: usercodes: [{'code_slot': 1, 'name': 'User Code (1)', 'in_use': False, 'usercode': ''}, {'code_slot': 2, 'name': 'User Code (2)', 'in_use': False, 'usercode': ''}, {'code_slot': 3, 'name': 'User Code (3)', 'in_use': False, 'usercode': ''}, {'code_slot': 4, 'name': 'User Code (4)', 'in_use': False, 'usercode': ''}, {'code_slot': 5, 'name': 'User Code (5)', 'in_use': False, 'usercode': ''}, {'code_slot': 6, 'name': 'User Code (6)', 'in_use': False, 'usercode': ''}, {'code_slot': 7, 'name': 'User Code (7)', 'in_use': False, 'usercode': ''}, {'code_slot': 8, 'name': 'User Code (8)', 'in_use': False, 'usercode': ''}]
2025-08-10 17:39:30.007 DEBUG (SyncWorker_0) [custom_components.keymaster.coordinator] [write_config_to_json] JSON File Updated
2025-08-10 17:39:30.009 DEBUG (MainThread) [custom_components.keymaster.coordinator] [schedule_quick_refresh_if_needed] Scheduling refresh in 15 seconds
2025-08-10 17:39:30.009 DEBUG (MainThread) [custom_components.keymaster.coordinator] Finished fetching keymaster data in 0.389 seconds (success: True)
2025-08-10 17:39:30.444 DEBUG (MainThread) [custom_components.keymaster.coordinator] [handle_zwave_js_lock_event] front_door: event: <Event zwave_js_notification[L]: domain=zwave_js, node_id=2, home_id=4084870027, endpoint=0, device_id=7c5ef385c24b493784768e9aea49389a, command_class=113, command_class_name=Notification, label=Access Control, type=6, event=13, event_label=Single user code deleted, parameters=>, new_state: locked, params: {}, code_slot_num: 0
2025-08-10 17:39:30.444 DEBUG (MainThread) [custom_components.keymaster.coordinator] [handle_zwave_js_lock_event] Front Door: event: <Event zwave_js_notification[L]: domain=zwave_js, node_id=2, home_id=4084870027, endpoint=0, device_id=7c5ef385c24b493784768e9aea49389a, command_class=113, command_class_name=Notification, label=Access Control, type=6, event=13, event_label=Single user code deleted, parameters=>, new_state: locked, params: {}, code_slot_num: 0
2025-08-10 17:39:30.444 DEBUG (MainThread) [custom_components.keymaster.coordinator] [handle_zwave_js_lock_event] Front Door: event: <Event zwave_js_notification[L]: domain=zwave_js, node_id=2, home_id=4084870027, endpoint=0, device_id=7c5ef385c24b493784768e9aea49389a, command_class=113, command_class_name=Notification, label=Access Control, type=6, event=13, event_label=Single user code deleted, parameters=>, new_state: locked, params: {}, code_slot_num: 0

ZWave JS Log
2025-08-10 17:38:13.516 INFO APP: GET /health/zwave 301 0.373 ms - 162
2025-08-10 17:38:14.887 INFO Z-WAVE: [Node 002] Value updated: 99-0-userCode-1  => 1111
2025-08-10 17:38:15.030 INFO Z-WAVE: [Node 002] Value updated: 99-0-userIdStatus-1 0 => 0
2025-08-10 17:38:15.135 INFO Z-WAVE: [Node 002] Value updated: 99-0-userIdStatus-1 0 => 0
2025-08-10 17:38:15.780 INFO Z-WAVE: [Node 002] Value updated: 113-0-alarmType 33 => 112
2025-08-10 17:38:15.784 INFO Z-WAVE: [Node 002] Value updated: 113-0-alarmLevel 1 => 1
2025-08-10 17:38:15.787 CNTRLR   [Node 002] [Notification]
                                   type:  Access Control
                                   event: New user code added
2025-08-10 17:38:15.790 INFO Z-WAVE: [Node 002] CC Notification notification {
  type: 6,
  event: 14,
  label: 'Access Control',
  eventLabel: 'New user code added',
  parameters: undefined
}
2025-08-10 17:38:16.420 INFO Z-WAVE: [Node 002] Value updated: 99-0-userIdStatus-1 0 => 1
2025-08-10 17:38:16.422 INFO Z-WAVE: [Node 002] Value updated: 99-0-userCode-1 1111 => 1111
2025-08-10 17:38:16.951 INFO Z-WAVE: [Node 002] Value updated: 99-0-userIdStatus-1 1 => 1
2025-08-10 17:38:16.957 INFO Z-WAVE: [Node 002] Value updated: 99-0-userCode-1 1111 => 1111
2025-08-10 17:38:31.464 INFO Z-WAVE: [Node 002] Value updated: 99-0-userIdStatus-1 1 => 0
2025-08-10 17:38:31.595 INFO Z-WAVE: [Node 002] Value updated: 99-0-userIdStatus-1 0 => 0
2025-08-10 17:38:32.345 INFO Z-WAVE: [Node 002] Value updated: 113-0-alarmType 112 => 33
2025-08-10 17:38:32.348 INFO Z-WAVE: [Node 002] Value updated: 113-0-alarmLevel 1 => 1
2025-08-10 17:38:32.351 CNTRLR   [Node 002] [Notification]
                                   type:  Access Control
                                   event: Single user code deleted
2025-08-10 17:38:32.353 INFO Z-WAVE: [Node 002] CC Notification notification {
  type: 6,
  event: 13,
  label: 'Access Control',
  eventLabel: 'Single user code deleted',
  parameters: undefined
}
2025-08-10 17:38:33.118 INFO Z-WAVE: [Node 002] Value updated: 99-0-userIdStatus-1 0 => 0
2025-08-10 17:38:33.122 INFO Z-WAVE: [Node 002] Value updated: 99-0-userCode-1 1111 => 
2025-08-10 17:38:43.558 INFO APP: GET /health/zwave 301 0.329 ms - 162
2025-08-10 17:38:47.979 INFO Z-WAVE: [Node 002] Value updated: 99-0-userCode-1  => 1111
2025-08-10 17:38:48.872 INFO Z-WAVE: [Node 002] Value updated: 113-0-alarmType 33 => 112
2025-08-10 17:38:48.875 INFO Z-WAVE: [Node 002] Value updated: 113-0-alarmLevel 1 => 1
2025-08-10 17:38:48.876 CNTRLR   [Node 002] [Notification]
                                   type:  Access Control
                                   event: New user code added
2025-08-10 17:38:48.877 INFO Z-WAVE: [Node 002] CC Notification notification {
  type: 6,
  event: 14,
  label: 'Access Control',
  eventLabel: 'New user code added',
  parameters: undefined
}
2025-08-10 17:38:49.509 INFO Z-WAVE: [Node 002] Value updated: 99-0-userIdStatus-1 0 => 1
2025-08-10 17:38:49.512 INFO Z-WAVE: [Node 002] Value updated: 99-0-userCode-1 1111 => 1111
2025-08-10 17:39:04.308 INFO Z-WAVE: [Node 002] Value updated: 99-0-userIdStatus-1 1 => 0
2025-08-10 17:39:04.411 INFO Z-WAVE: [Node 002] Value updated: 99-0-userIdStatus-1 0 => 0
2025-08-10 17:39:05.195 INFO Z-WAVE: [Node 002] Value updated: 113-0-alarmType 112 => 33
2025-08-10 17:39:05.198 INFO Z-WAVE: [Node 002] Value updated: 113-0-alarmLevel 1 => 1
2025-08-10 17:39:05.200 CNTRLR   [Node 002] [Notification]
                                   type:  Access Control
                                   event: Single user code deleted
2025-08-10 17:39:05.201 INFO Z-WAVE: [Node 002] CC Notification notification {
  type: 6,
  event: 13,
  label: 'Access Control',
  eventLabel: 'Single user code deleted',
  parameters: undefined
}
2025-08-10 17:39:05.923 INFO Z-WAVE: [Node 002] Value updated: 99-0-userIdStatus-1 0 => 0
2025-08-10 17:39:05.925 INFO Z-WAVE: [Node 002] Value updated: 99-0-userCode-1 1111 => 
2025-08-10 17:39:13.590 INFO APP: GET /health/zwave 301 0.288 ms - 162
2025-08-10 17:39:20.751 INFO Z-WAVE: [Node 002] Value updated: 99-0-userCode-1  => 1111
2025-08-10 17:39:21.649 INFO Z-WAVE: [Node 002] Value updated: 113-0-alarmType 33 => 112
2025-08-10 17:39:21.651 INFO Z-WAVE: [Node 002] Value updated: 113-0-alarmLevel 1 => 1
2025-08-10 17:39:21.653 CNTRLR   [Node 002] [Notification]
                                   type:  Access Control
                                   event: New user code added
2025-08-10 17:39:21.655 INFO Z-WAVE: [Node 002] CC Notification notification {
  type: 6,
  event: 14,
  label: 'Access Control',
  eventLabel: 'New user code added',
  parameters: undefined
}
2025-08-10 17:39:22.279 INFO Z-WAVE: [Node 002] Value updated: 99-0-userIdStatus-1 0 => 1
2025-08-10 17:39:22.281 INFO Z-WAVE: [Node 002] Value updated: 99-0-userCode-1 1111 => 1111
2025-08-10 17:39:29.615 INFO Z-WAVE: [Node 002] Value updated: 99-0-userIdStatus-1 1 => 0
2025-08-10 17:39:29.727 INFO Z-WAVE: [Node 002] Value updated: 99-0-userIdStatus-1 0 => 0
2025-08-10 17:39:29.837 INFO Z-WAVE: [Node 002] Value updated: 99-0-userIdStatus-1 0 => 0
2025-08-10 17:39:29.958 INFO Z-WAVE: [Node 002] Value updated: 99-0-userIdStatus-1 0 => 0
2025-08-10 17:39:30.438 INFO Z-WAVE: [Node 002] Value updated: 113-0-alarmType 112 => 33
2025-08-10 17:39:30.440 INFO Z-WAVE: [Node 002] Value updated: 113-0-alarmLevel 1 => 1
2025-08-10 17:39:30.440 CNTRLR   [Node 002] [Notification]
                                   type:  Access Control
                                   event: Single user code deleted
2025-08-10 17:39:30.441 INFO Z-WAVE: [Node 002] CC Notification notification {
  type: 6,
  event: 13,
  label: 'Access Control',
  eventLabel: 'Single user code deleted',
  parameters: undefined
}
2025-08-10 17:39:31.478 INFO Z-WAVE: [Node 002] Value updated: 99-0-userIdStatus-1 0 => 0
2025-08-10 17:39:31.480 INFO Z-WAVE: [Node 002] Value updated: 99-0-userCode-1 1111 => 

Screenshots

Image

Additional context

There is a child lock (Garage Entry) linked to the parent lock (Front Door)

zanix avatar Aug 10 '25 23:08 zanix

@zanix how many slots are defined on the lock that is having this issue? I have only personally only seen this, so far, on locks that have more than 10 slots defined.

tykeal avatar Aug 11 '25 15:08 tykeal

@tykeal I have 8 slots defined.

zanix avatar Aug 11 '25 15:08 zanix

Thanks. Well, that kills a very small, and not well thought out, theory I had.

tykeal avatar Aug 11 '25 15:08 tykeal

Just to confirm, you're not actually using the code: 1111 right?

firstof9 avatar Aug 11 '25 17:08 firstof9

Correct, I was using a different code and replaced it for the post.

zanix avatar Aug 11 '25 18:08 zanix

Parent / child lock setup at all?

firstof9 avatar Aug 11 '25 18:08 firstof9

Yes, I have "Garage Entry" as a child of "Front Door". I have tried removing the "Garage Entry" lock and I get the same result.

zanix avatar Aug 11 '25 18:08 zanix

...actually I only disabled the "Garage Entry" lock, I didn't remove it.

zanix avatar Aug 11 '25 18:08 zanix

Just curious do the actual codes show up in ZwaveJS for this lock or are they just ****?

firstof9 avatar Aug 11 '25 18:08 firstof9

They show up as the code and not ****

zanix avatar Aug 11 '25 19:08 zanix

Try clearing the slot in ZwaveJS UI manually and setting it to "Available", might help.

firstof9 avatar Aug 11 '25 20:08 firstof9

The code slots are cleared if I disable the code slot, so they are already empty in ZWaveJS. If I try to enter a code in ZWaveJS, keymaster will actively delete the codes again.

Here is what my ZWaveJS UI looks like: Image

zanix avatar Aug 11 '25 21:08 zanix

I noticed this same behavior today. previously my keymaster decided to go bonkers after +4 years of perfection. Read in a post to uninstall, delete everything related, restart and go for the latest Beta release. So I did. So nice to get rid of all the automations!

But now I am seeing the same issue... Either constant Adding or Deleting. I actually see 3 issues (unsure if all related)

I have 2 lock setup in a Parent (Front) /Child (Garage) and a 3rd independent door (panty). Yes, had to put an exterior lock on the panty.... keeps the kids at bay 24/7. Nice having alexa tattle on them!

  • The codes on the front door all show "synced"
  • The codes on the garage show "synced" for the first slot and then "Adding" on the remaining 5 slots.
  • If I delete a code, within a min it will show "Disconnected" for that slot, but then all the other slots immediately change to "Deleting" too (this behavior goes back and forth)
  • The code for the panty is "synced", but the code is in ********* (the front/garage doors show the actual code(s))

Right now I am in a bad state because school starts tomorrow and the kids have no codes. Luckily the can sit under the veranda for a while.

fireheadman avatar Aug 12 '25 00:08 fireheadman

@fireheadman I know it's sub-optimal, but if it's causing you issues you could remove your Keymaster configuration for now and push the codes in manually via ZWave-JS UI. Once all the locks are removed from the beta configuration it stop doing funky things.

Believe me, I want this fixed too as I've got a few HA instances that I've had to effectively remove Keymaster from and am having to manually manage codes on right now instead of relying on my integration that consumes Keymaster.

Unknown when we're going to have any sort of fix for this 😒

tykeal avatar Aug 12 '25 16:08 tykeal

I've had to disable keymaster and set up codes manually as well. If there is more debugging needed, I am willing to re-enable and test.

zanix avatar Aug 12 '25 16:08 zanix

@fireheadman I know it's sub-optimal, but if it's causing you issues you could remove your Keymaster configuration for now and push the codes in manually via ZWave-JS UI...

I can confirm, this is currently the only stable way to interact with your lock in in HA 2025.8.x.

For anyone trying to get 0.1.0 beta to behave with HA core 2025.8, don't. I realized only after wasting a ton of time that I would much rather have a working keymaster integration over any of the 2025.8 features/improvements. Revert to HA Core 2025.7. revert zwave js ui. All is well again.

tjnewton3 avatar Aug 12 '25 16:08 tjnewton3

I can confirm it works well with one lock. I've got 4 properties having zero problems. But they all have a single lock. It's my multi-lock properties (which all have at least 6 locks) that are having issues.

tykeal avatar Aug 12 '25 16:08 tykeal

My 2 lock setup is working fine. I however did not parent/child them at this time.

firstof9 avatar Aug 12 '25 18:08 firstof9

Giving this a shot instead.... since a few of your comments made me think about this. My front door is a BE469ZP My garage interior and pantry doors are CKPD FE599

I noticed yesterday the pantry door (a standalone lock) was now showing ******* for the code instead of being unmasked. Also, 4-5 years ago when I setup keymaster I recall an issue were there FE599 locks would never relay notifcations for who just unlocked/locked the door (just never worked).

My front door does this fine.

So I deleted the garage interior lock and reinserted to keymaster as "standalone".... so now all 3 locks are individually connecting to keymaster. My front door shows all the codes (unmasked) My Garage Int door shows all ******** for codes My Pantry door shows all ******** for codes. And everything is now showing "Synced"

So I'm curious if something has changed (even with the beta version) that no longer likes having the BE460ZP and FE599 locks in a parent/child setup because of how the codes are expected to be shown?

Will also add, in Z-Wave JS, when I review the User Code v1, I see a ton of slots instead of the expect "set" number I specified in keymaster.

fireheadman avatar Aug 12 '25 19:08 fireheadman

I dunno, I don't use parent/child for my setup. It doesn't work for my complex situation. But if it stabilized for you, it's good to know as a data point that there may be some issues with the updated logic for parent / child along with the number of locks in play.

tykeal avatar Aug 12 '25 19:08 tykeal

well either that or the type of locks and the firmware behind them as a compatibility issue. I have never seen Z-Wave JS attempt to upgrade my firmware on them

fireheadman avatar Aug 12 '25 19:08 fireheadman

Upgrades will only be made available if there is publicly accessible firmware. If you have access to newer firmware for the locks you can manually upload it to the device. Not all companies make their ZWave firmware publicly accessible. For instance I'm not aware of Kwikset doing so and all my locks are Kwikset so they've never received a firmware update since I put them in place.

tykeal avatar Aug 12 '25 20:08 tykeal

good to know that info. guess schlage is the same way so I would have to buy their nexia/nexus or whatever gateway and app. Hard pass for me on that.

fireheadman avatar Aug 12 '25 20:08 fireheadman

@zanix so, after some further exploring of issues (since i've had a similar problem), assuming you're still currently having the issue, could you grab the custom_components/keymaster/json_kmlocks/keymaster_kmlocks.json file and load it up into a json viewer. and see if you have multiple definitions that have the same lock_entity_id.

If you have access to jq the command would be jq '.[].lock_entity_id' keymaster_kmlocks.json.

If you do have multiple of the same lock definition, then the only fix that I have found to be likely to be 100% successful is the following:

  1. Save off any slot configurations that you need
  2. Remove all Keymaster configurations
  3. Restart HA
  4. verify that custom_components/keymaster/json_kmlocks/keymaster_kmlocks.json is gone, if not remove it
  5. Re-add the locks to Keymaster

NOTE: that v0.1.0-b2 was released yesterday (thanks @firstof9 ) which adds the ability to choose to not add the Advanced Date Range and/or Advanced Day of Week management. Removing either of those advanced options will significantly reduce the number of entities that is produced for a lock. If you want to take advantage of this you will have to remove your Keymaster definitions and re-add them, trying to reconfigure does not currently work.

If you are using Rental Control in conjunction with Keymaster then the Advanced Date Range option is required for it to operate properly, but Advanced Day of Week is not.

For those wanting the math on entity savings: Advanced Date Range adds 3 entities per slot and Advanced Day of Week adds 36 entities per slot

tykeal avatar Aug 15 '25 14:08 tykeal

@zanix so, after some further exploring of issues (since i've had a similar problem), assuming you're still currently having the issue, could you grab the custom_components/keymaster/json_kmlocks/keymaster_kmlocks.json file and load it up into a json viewer. and see if you have multiple definitions that have the same lock_entity_id.

I do have multiple instances of each of my locks, Front Door is listed 3 times and Garage Entry is listed 2 times.

I will reset keymaster as shown and report back if it's fixed or not.

zanix avatar Aug 15 '25 18:08 zanix

  1. Remove the keymaster integration from devices
  2. Uninstall keymaster from HACS
  3. Confirm custom_components/keymaster/json_kmlocks/keymaster_kmlocks.json was deleted
  4. Shut down HA
  5. Remove keymaster references in .storage
    1. In core.config_entries with "domain":"keymaster"
    2. In core.device_registry with "identifiers":[["keymaster","01234567890123456789012345"]] (string of numbers changed for this report)
    3. In core.entity_registry with "platform":"keymaster" (around 2336!)
  6. Start HA
  7. Install keymaster v0.1.0-b3
  8. Restart HA
  9. Add the front door lock into keymaster
  10. Add the garage entry lock into keymaster, set front door as the parent
    • When adding the garage entry lock, I got an error:
    2025-08-15 12:50:12.263 ERROR (MainThread) [homeassistant.config_entries] Error setting up entry Garage Entry for keymaster
    Traceback (most recent call last):
      File "/usr/src/homeassistant/homeassistant/config_entries.py", line 749, in __async_setup_with_context
        result = await component.async_setup_entry(hass, self)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/config/custom_components/keymaster/__init__.py", line 168, in async_setup_entry
        await generate_lovelace(
        ...<10 lines>...
        )
      File "/config/custom_components/keymaster/lovelace.py", line 63, in generate_lovelace
        code_slot_dict: MutableMapping[str, Any] = await _generate_child_code_slot_dict(
                                                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
            code_slot_num=code_slot_num,
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
            advanced_date_range=advanced_date_range,
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
            advanced_day_of_week=advanced_day_of_week,
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        )
        ^
    
    1. Remove garage entry from keymaster
    2. Check custom_components/keymaster/json_kmlocks/keymaster_kmlocks.json and garage entry was still in there
    3. I'm leaving out the garage entry lock for now and continuing testing
  11. Continue to add codes to keymaster config
  12. I'm no longer getting the continuous addition/deletion of codes in ZWaveJS UI
    • I am getting other errors in the HA log though
    [custom_components.keymaster.coordinator] [Coordinator] Garage Entry: Code Slot 1: Unable to clear PIN. NotConnected:
    [custom_components.keymaster.coordinator] [Coordinator] Garage Entry: Code Slot 1: Unable to set PIN. NotConnected:
    
    This is repeating for the number of code slots that have a code in keymaster

Seems ok so far besides the error with the child lock. I am going to restart again and see if the garage entry lock stays in the .storage config and clean it out if it's still there and try to add the lock as a child again.

zanix avatar Aug 15 '25 19:08 zanix

  1. I have restarted HA and went to try to add the Garage Entry lock and now it's not showing up in the list when adding a lock to keymaster.
  2. I checked custom_components/keymaster/json_kmlocks/keymaster_kmlocks.json and it's still listed
  3. I stopped HA again and removed the Garage Entry lock from the json and also from the locations in .storage
    • I also found in keymaster_kmlocks.json that the Front Door lock child_config_entry_ids value has the ID for the Garage Entry lock so I removed it.
  4. After removing the lock from the various config files, I started HA and the Garage Entry lock was available when adding a new lock to keymaster
  5. I added the lock and I got the another error
    2025-08-15 13:43:13.761 ERROR (MainThread) [homeassistant.config_entries] Error setting up entry Garage Entry for keymaster
    Traceback (most recent call last):
      File "/usr/src/homeassistant/homeassistant/config_entries.py", line 749, in __async_setup_with_context
        result = await component.async_setup_entry(hass, self)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/config/custom_components/keymaster/__init__.py", line 168, in async_setup_entry
        await generate_lovelace(
        ...<10 lines>...
        )
      File "/config/custom_components/keymaster/lovelace.py", line 63, in generate_lovelace
        code_slot_dict: MutableMapping[str, Any] = await _generate_child_code_slot_dict(
                                                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
            code_slot_num=code_slot_num,
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
            advanced_date_range=advanced_date_range,
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
            advanced_day_of_week=advanced_day_of_week,
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        )
        ^
    TypeError: _generate_child_code_slot_dict() got an unexpected keyword argument 'advanced_date_range'
    
  6. With the lock added, I am now getting continuous adding/deleting of the codes on the Garage Entry lock, but the Front Door lock is not in a add/delete loop and is stable

I think removing a lock from keymaster config should clean it up from keymaster_kmlocks.json and disassociate it from any parent locks. As for the other configs, I don't think I really needed to remove the lock from them but I wanted to test from a clean slate. As for the add/delete loop on the Garage Entry lock, I have no idea. I'm going to try to add it without setting the Front Door lock as the parent

zanix avatar Aug 15 '25 19:08 zanix

Looks like adding the Garage Entry lock without associating it a parent works without issue. I no longer get the error in HA and it no longer has the add/delete loop issue.

zanix avatar Aug 15 '25 20:08 zanix

Ok, part of the issue with what you did there is that it can take a full 30 seconds to 1 minute after deleting a lock for it to get purged from the keymaster_kmlocks.json file from my testing. I'm not certain why it doesn't get purged right away. So if you restart HA before it's purged it then it's going to still be in the file likely polluting things. If you manage to get the lock configured you will probably have two references and then you run into the delete/add loop.

tykeal avatar Aug 15 '25 21:08 tykeal

I didn't restart HA immediately after removing the lock, but I couldn't tell you how long it was. I did assume the json would be updated immediately and perhaps I didn't give it enough time.

zanix avatar Aug 15 '25 21:08 zanix