locks: document per-door code toggles

This commit is contained in:
Donavan Fritz
2026-07-16 20:34:33 -05:00
parent 06c246f021
commit ccca08caaf
2 changed files with 16 additions and 12 deletions
+15 -11
View File
@@ -5,29 +5,33 @@ Two Z-Wave (zwave_js) keypad locks: `lock.lodge_front_door_lock` (node 3) and
`lock.bunkhouse_frontdoor_lock`. 8 shared code slots, managed from the
"Lock Management" Lovelace view via helpers:
`input_text.lock_slotN_user`, `input_text.lock_slotN_code`,
`input_boolean.lock_slotN_enabled` (N = 18).
`input_boolean.lock_slotN_lodge_enabled`, and
`input_boolean.lock_slotN_bunkhouse_enabled` (N = 18).
Slot 1 = Fritz family, 2 = cleaner, 4 = carpenter, 5 = backup.
Legacy `input_boolean.lock_slotN_enabled` helpers remain but are unwired and
hidden from the dashboard.
</overview>
<sync>
All code writes go through `script.lock_sync_slot` (fields: `slot` 18), the
single source of truth. Per slot it: resolves the code (slot's own code if
`_enabled` on, else the slot-1 family code), REFUSES non-4-10-digit codes
(persistent notification "slot N SKIPPED", nothing written), then per lock does
a UserCode CC `get` (repopulates the Z-Wave value cache so a missing cached
slot can't error) followed by `zwave_js.set_lock_usercode` — every zwave call
`continue_on_error` so one lock/slot never blocks the rest.
single source of truth. Per slot and door it resolves the code (slot's own code
if that door's toggle is on, else the slot-1 family code), refuses an invalid
effective code for only that door with a door-specific notification, then does
a UserCode CC `get` followed by `zwave_js.set_lock_usercode`. Every Z-Wave call
uses `continue_on_error`, so one door never blocks the other.
- `script.lock_sync_all_codes` — warns (persistent + `notify.mobile_app_donavan_s_iphone_16_pro`)
if a lock's `*_node_status` sensor isn't alive/asleep, then runs
`lock_sync_slot` for slots 18.
- `automation.lock_slot_N_sync_both_locks` (×8) — trigger on the slot's
`_enabled` OR `_code` helper change → `lock_sync_slot` for that slot.
- `automation.lock_slot_N_sync_both_locks` (×8, alias "Sync Door Codes") —
trigger on either door's enabled toggle OR the slot's `_code` helper →
`lock_sync_slot` for that slot.
- `automation.lock_codes_full_sync_self_heal` — full sync daily 04:00 and
10 min after HA start, so transient failures heal within a day.
Disabled slots are overwritten with the family code (design choice), so the
family code exists in multiple lock slots.
Each disabled door slot is overwritten with the family code, so the family code
exists in multiple slots. Slot 1's toggles are no-ops because its fallback is
its own family code.
</sync>
<troubleshooting>