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 locks are starting to appear and will be the future. For HA, a Z-Wave JS stick + Z-Wave lock is the most reliable local control setup today.

Table of Contents

  1. Protocol Overview
  2. Best Locks for Local HA Control
  3. Setup Per Protocol
  4. Auto-Lock After 5 Min (YAML)
  5. Arrival Notification (YAML)
  6. Troubleshooting
  7. FAQ

What You Need

Protocol Overview: Z-Wave vs Zigbee vs Matter

FeatureZ-WaveZigbeeMatter (Thread)
Frequency908MHz (US)2.4GHz2.4GHz
Interference riskVery lowMedium (Wi-Fi overlap)Medium
Mesh networking✅ Yes✅ Yes✅ Yes (Thread)
Security certificationS2 (strong)Zigbee 3.0Matter security
Lock brandsSchlage, Yale, KwiksetYale, some SchlageEmerging (2024+)
HA integrationZ-Wave JS (excellent)Z2M/ZHA (good)Matter integration
Battery life1–2 years6–18 monthsSimilar to Zigbee

Best Locks for Local Home Assistant Control

Z-Wave Locks (Recommended)

Zigbee Locks

Setup Per Protocol

Z-Wave Lock Setup:

  1. Install the Z-Wave JS add-on in HA (Settings → Add-ons → Z-Wave JS)
  2. Plug in your Z-Wave USB stick
  3. In HA: Settings → Integrations → Z-Wave JS → configure with your USB stick path
  4. Go to the Z-Wave JS UI → Add Node (inclusion mode)
  5. Follow your lock's inclusion instructions (usually hold a button on the lock for 3 seconds)
  6. The lock appears in HA with lock/unlock entities and battery sensor

Zigbee Lock Setup:

  1. Enable Permit Join in Zigbee2MQTT
  2. Enter inclusion mode on the lock (typically hold the program button)
  3. Lock pairs and appears in Z2M device list and HA
User codes tip: Z-Wave JS exposes lock user codes as entities. You can create automations to add/change/delete user codes programmatically — great for Airbnb hosts or granting temporary access.

Auto-Lock After 5 Minutes (YAML)

automations.yaml — Auto-lock front door after 5 minutes
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)

automations.yaml — Notify when lock is manually unlocked from outside
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

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.