Home Assistant 智能门锁完整指南:远程开关锁、临时访客密码与异常告警 3 个场景全搞定
2026/9/18 14:13:59 网站建设 项目流程

Home Assistant 智能门锁完整指南:远程开关锁、临时访客密码与异常告警 3 个场景全搞定

【免费下载链接】home-assistant.io:blue_book: Home Assistant User documentation项目地址: https://gitcode.com/GitHub_Trending/ho/home-assistant.io

把智能门锁接入 Home Assistant 后,它就从门上的硬件变成一个可远程开关、可发临时密码、能记录每次开门的自动化实体。这篇指南按三个真实场景带你做:人在外面怎么开锁、怎么给访客发一把"用完即焚"的密码、家里没人时怎么盯住门的异动。

先选路线:MQTT、Z-Wave 还是厂商集成?

动手前花一分钟判断你手里是什么设备,路线选错后面全白忙:

路线适合谁入网方式你将得到
MQTT有 MQTT 接口的锁或自组设备configuration.yaml里声明实体,自己定义 topic 和报文完全自由的控制逻辑,可任意定制报文格式
Z-Wave(Z-Wave JS)手持 Z-Wave 智能锁控制器装好后在界面里入网,几乎零配置即插即用,带安全加密和键盘开锁事件
厂商集成已有品牌生态(如官方适配的锁)在设置中搜索品牌名直接添加功能最完整,省掉一切折腾

经验判断:锁是 Z-Wave 的就走 Z-Wave,最省心;锁带 MQTT 或你想深度定制,选 MQTT;都不沾边就先查厂商有没有现成集成。

场景一:人在外面,怎么远程开/关锁 📱

门锁入网后会以lock.实体出现在系统里,三条控制通道随即可用。

仪表盘直控:给仪表盘加一个实体卡片,选中门锁实体即可。卡片上直接点"上锁/开锁",状态实时回显——这是最直接的验证方式,建议装完先试一遍。

手机 App 控制:Home Assistant 官方 App 登录你的实例后,门锁实体和家里一样可操作。人在公司、路上、酒店,都能从设备列表里找到它,点一下完成开关锁。

语音控制:配好 Assist 语音助手后,直接说:

  • "把前门锁上"
  • "前门锁好了吗?"

后者能拿到当前状态作为回答,出门后确认一把特别实用。

场景二:给访客下发"用完即焚"的临时密码 🔐

Z-Wave 锁通常有多个用户码位(code slot),这就是天然的权限管理工具:固定成员占固定槽位,访客用一个专用槽位,人来写入、人走清空。

下发密码(写入 7 号槽位):

# 给访客写入临时用户码:slot 7,PIN 2849 action: zwave_js.set_lock_usercode target: entity_id: lock.front_door data: code_slot: 7 usercode: "2849"

把"写入 + 通知"串成一条自动化,访客还没到家就收到密码:

alias: 下发临时访客密码 triggers: - trigger: time at: "2026-09-20 08:00:00" actions: - action: zwave_js.set_lock_usercode target: { entity_id: lock.front_door } data: { code_slot: 7, usercode: "2849" } - action: notify.notify data: message: "今日上门密码 2849,仅限今天使用"

访客走后再清空同一槽位,密码即刻失效:

# 访客离开后清空 7 号槽位,密码即刻作废 action: zwave_js.clear_lock_usercode target: entity_id: lock.front_door data: code_slot: 7

这个"写入—使用—清空"的循环,就是完整的访问权限生命周期。两个服务的详细参数可查 zwave_js.set_lock_usercode 和 zwave_js.clear_lock_usercode 文档。

场景三:不在家时,谁动了我的门? 🚨

Z-Wave JS 会把门锁的键盘操作转成通知事件(比如Keypad unlock operation),这是"门被谁开了"的关键信号。

留痕:记录访问日志

# 状态一变就记一条日志,事后随时可查 actions: - action: logbook.log data: name: 前门 message: "状态变更为 {{ trigger.to_state.state }}" entity_id: lock.front_door

告警:没人时开锁立刻提醒

alias: 键盘开锁告警 triggers: - trigger: event event_type: zwave_js_notification event_data: node_id: 14 event_label: "Keypad unlock operation" conditions: - condition: state entity_id: person.family state: not_home actions: - action: notify.notify data: message: "家中无人时,前门被键盘开锁"

node_id换成你的锁在 Z-Wave 网络里的实际编号——在开发者工具的"事件"里订阅zwave_js_notification,随便按一下门,就能看到真实数据。日志服务细节见 logbook.log。

配置速查:MQTT 门锁与 Z-Wave 入网步骤 ⚙️

MQTT 路线:确认 broker 可用后,在configuration.yaml声明实体即可,topic 和报文格式全由你定。

# configuration.yaml:声明一个 MQTT 门锁实体 mqtt: - lock: name: 后院门 state_topic: "myhome/backgate/state" command_topic: "myhome/backgate/command" payload_lock: "LOCK" payload_unlock: "UNLOCK" state_locked: "LOCK" state_unlocked: "UNLOCK"

state_topic接收锁的状态,command_topic是下发指令的通道;需要 PIN 时可加code_format约束格式。完整字段说明见 MQTT lock 集成文档。

Z-Wave 路线:硬件上把控制器(如 Home Assistant Connect Z-Wave)插到主机上,然后:

  1. 设置里添加 Z-Wave JS 集成,选 Recommended installation,等加载项启动完成
  2. 在集成配置页选择"Add new network"并生成网络密钥

  1. 在菜单里执行入网(Inclusion),把门锁进入配对模式,S2 安全锁输入面板上的 PIN
  2. 入网完成后,在设备面板确认锁已识别,节点信息一目了然

更多选项(如 S0/S2 安全等级、网络备份)参考 Z-Wave JS 集成文档。

踩坑自查清单:连不上、自动化不触发怎么办

  1. 实体状态卡住不动:MQTT 锁先确认 broker 在线,用客户端手动往state_topic发布一条状态报文,看实体是否跟随变化——多数问题出在 topic 或 payload 大小写不一致。
  2. Z-Wave 锁入网成功但没实体:打开设备面板看节点状态,是否处于 Excluded 或睡眠;把锁重新入网一次。
  3. 命令发了但锁没反应:Z-Wave 锁要确认节点在线、信号强度足够(离控制器远可加重复器);MQTT 锁则检查command_topic拼写和 payload 是否匹配。
  4. 自动化不触发:先在"开发者工具 → 事件"订阅事件,手动触发一次确认数据确实到达;再逐条核对entity_idnode_id、状态值是否和实际一致。
  5. 告警误报:检查person.family的地理围栏和离/回家延迟,状态没切到not_home告警就不会触发,切了才触发。
  6. 密码改了不生效:Z-Wave 锁写入用户码后要确认锁端回执;个别锁需要等待同步,写入后稍等几秒再验证。

写在最后

走完这三个场景,门锁就不再是一把"只能站门口按"的锁:远程能开关,访客能限时使用,每一次开门都有记录、异常立刻告警。接下来可以顺着 Matter 协议的方向继续看——它正在让不同品牌的门锁用同一套标准接入,Z-Wave JS 集成文档 和 MQTT lock 文档 里也留了相应的位置,值得常回来翻一翻。

【免费下载链接】home-assistant.io:blue_book: Home Assistant User documentation项目地址: https://gitcode.com/GitHub_Trending/ho/home-assistant.io

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询