Quick Answer
Z-Wave is still the gold standard for smart locks — interference-free 900MHz band, strong security, excellent battery life. Zigbee locks are also available and work with Zigbee2MQTT. Matter-over-Thread locks are now sold by several brands (Aqara and Yale among them) and work through HA's Matter integration. For HA, a Z-Wave JS stick + Z-Wave lock is the most reliable local control setup today.
Table of Contents
What You Need
- Z-Wave smart lock such as the Kwikset Home Connect 620 (or a Schlage or Yale Z-Wave lock)
- Z-Wave USB stick: Zooz ZST39 800 LR (or an Aeotec Z-Stick 7)
- Home Assistant with Z-Wave JS integration
Protocol Overview: Z-Wave vs Zigbee vs Matter
| Feature | Z-Wave | Zigbee | Matter (Thread) |
|---|---|---|---|
| Frequency | 908MHz (US) | 2.4GHz | 2.4GHz |
| Interference risk | Very low | Medium (Wi-Fi overlap) | Medium |
| Mesh networking | ✅ Yes | ✅ Yes | ✅ Yes (Thread) |
| Security certification | S2 (strong) | Zigbee 3.0 | Matter security |
| Lock brands | Schlage, Yale, Kwikset | Mostly older Kwikset and Yale models | Aqara, Yale and others |
| HA integration | Z-Wave JS (excellent) | Z2M/ZHA (good) | Matter integration |
| Battery life | 1–2 years | 6–18 months | Similar to Zigbee |
Best Locks for Local Home Assistant Control
Z-Wave Locks (Recommended)
- Schlage Connect BE469ZP: Z-Wave Plus, S2 security, built-in alarm, works with Z-Wave JS. Retail stock varies by finish, so check availability before you plan around it.
- Yale Assure Lock 2 with Z-Wave module: the current Yale line (it replaced the discontinued Assure YRD256). Z-Wave JS exposes lock/unlock, battery, keypad events and user codes. Buy the lock with its matching Z-Wave module: users report the older first-generation module doesn't fully work with the Assure Lock 2.
- Kwikset Home Connect 620: Kwikset's Z-Wave keypad deadbolt, which takes over from the discontinued SmartCode 888. Kwikset also lists a Z-Wave Long Range version.
Zigbee Locks
- Older Kwikset SmartCode Zigbee models (910/914/916): pair directly with Zigbee2MQTT and ZHA, but mostly turn up used or as clearance stock now. Check the Zigbee2MQTT device list for your exact model.
- Original Yale Assure locks (YRD2xx) with a Zigbee module: work with Z2M and ZHA. This line is discontinued, so it's for existing owners rather than new buyers.
Matter Locks
- Matter-over-Thread locks (for example Aqara's U-series): add them through HA's Matter integration. You need a Thread border router.
Setup Per Protocol
Z-Wave Lock Setup:
- Install the Z-Wave JS add-on in HA (Settings → Add-ons → Z-Wave JS)
- Plug in your Z-Wave USB stick
- In HA: Settings → Integrations → Z-Wave JS → configure with your USB stick path
- Go to the Z-Wave JS UI → Add Node (inclusion mode)
- Follow your lock's inclusion instructions (usually hold a button on the lock for 3 seconds)
- The lock appears in HA with lock/unlock entities and battery sensor
Zigbee Lock Setup:
- Enable Permit Join in Zigbee2MQTT
- Enter inclusion mode on the lock (typically hold the program button)
- Lock pairs and appears in Z2M device list and HA
Auto-Lock After 5 Minutes (YAML)
automation:
- alias: "Auto-lock front door"
description: "Lock front door 5 minutes after it's unlocked"
trigger:
- platform: state
entity_id: lock.front_door
to: "unlocked"
for:
minutes: 5
condition:
- condition: state
entity_id: lock.front_door
state: "unlocked"
action:
- service: lock.lock
target:
entity_id: lock.front_door
- service: notify.mobile_app_your_phone
data:
title: "Front Door Locked"
message: "Front door auto-locked after 5 minutes."
Arrival Notification (YAML)
automation:
- alias: "Front door unlocked - arrival notification"
description: "Alert when lock is unlocked with keypad code"
trigger:
- platform: state
entity_id: lock.front_door
to: "unlocked"
attribute: changed_by
condition:
- condition: template
value_template: >
{{ trigger.to_state.attributes.changed_by is not none
and trigger.to_state.attributes.changed_by != 'HA' }}
action:
- service: notify.mobile_app_your_phone
data:
title: "Front Door Unlocked"
message: >
Door unlocked at {{ now().strftime('%H:%M') }}
{% if trigger.to_state.attributes.changed_by %}
by code {{ trigger.to_state.attributes.changed_by }}
{% endif %}
Troubleshooting
- Entities don’t appear in Home Assistant: Confirm the integration is loaded correctly and double-check that the device is supported by the platform you chose.
- Commands feel delayed: This is usually caused by cloud polling, weak Wi-Fi, or a slow Zigbee mesh rather than Home Assistant itself.
- Things work in the vendor app but not in HA: Re-check credentials, local API permissions, and whether the device is using the correct network path.
- Automations misfire: Open the automation trace in Home Assistant and verify the exact entity IDs and state changes being used.
FAQ
Can a smart lock be controlled when my internet is down?
Yes — Z-Wave and Zigbee locks communicate locally. As long as your HA server is running (even with no internet), you can lock/unlock via the HA app on your local Wi-Fi. The physical keypad always works regardless of power to HA.
Are smart locks secure against hacking?
Z-Wave S2 security is strong and uses AES-128 encryption with key exchange. The physical lock cylinder is the weakest link in most cases. A determined attacker will pick the lock before exploiting Z-Wave. Use a high-quality deadbolt.
Can I use door codes in Home Assistant automations?
Yes — Z-Wave JS exposes "last used code slot" as an attribute. Combine with the notify service to get alerts like "Code slot 3 (Guest) used at 3:47 PM." You can also set/delete codes via the lock service in HA.
SmartWired uses affiliate links. If you buy through our links, we may earn a commission at no extra cost to you. See our Affiliate Disclosure.