跳转到内容

Lock Component

lock 域包含所有应像锁一样工作的平台,具备锁定/解锁操作。

lock:
- platform: ...
name: "Lock Name"

配置变量:

  • id(可选,string):手动指定用于代码生成的 ID。至少需要指定 id 和 name 之一。
  • name(可选,string):锁的名称。至少需要指定 id 和 name 之一。

NOTE

如果你的设备设置了 friendly_name,且希望锁使用该名称,可以将 name 设为 None。

  • icon(可选,icon):手动设置在前端中为该锁使用的图标。

  • internal(可选,boolean):将此组件标记为内部组件。内部组件不会暴露给前端(如 Home Assistant)。仅指定 id 而不指定 name 将隐式地将其设为 true。

  • on_lock(可选,Action):锁定锁时执行的自动化。参见 lock.on_lock / lock.on_unlock 触发器。

  • on_unlock(可选,Action):解锁锁时执行的自动化。参见 lock.on_lock / lock.on_unlock 触发器。

  • disabled_by_default(可选,boolean):如果为 true,则该实体不应被添加到任何客户端的前端中(通常是 Home Assistant),除非用户手动启用(通过 Home Assistant UI)。默认为 false。

  • entity_category(可选,string):实体的类别。 参见 https://developers.home-assistant.io/docs/core/entity/#generic-properties 查看可用选项列表。设为 "" 可移除默认的实体类别。

  • 如果启用了 MQTT,则包含 MQTT 组件 的所有其他选项。

  • 如果启用了 Webserver 且选择了版本 3,则包含 Webserver 组件的所有其他选项。参见 Webserver 版本 3。

此操作在执行时锁定指定 ID 的锁。

on_...:
then:
- lock.lock: deadbolt_1

此操作在执行时解锁指定 ID 的锁。

on_...:
then:
- lock.unlock: deadbolt_1

此操作在执行时打开(例如,释放插销)指定 ID 的锁。

on_...:
then:
- lock.open: doorlock_1

此 条件 检查给定锁是否已锁定(或已解锁)。

# In some trigger:
on_...:
if:
condition:
# Same syntax for is_unlocked
lock.is_locked: my_lock

在 lambda 中,可以对所有锁调用多个方法来执行一些高级操作(更多信息请参见完整的 API 参考)。

  • publish_state():手动触发锁发布新状态并在内部存储。如果与上一次内部状态不同,还会额外发布到前端。
// Within lambda, make the lock report a specific state
id(my_lock).publish_state(LOCK_STATE_LOCKED);
id(my_lock).publish_state(LOCK_STATE_UNLOCKED);
  • state:获取锁的当前状态。
// Within lambda, get the lock state and conditionally do something
if (id(my_lock).state == LOCK_STATE_LOCKED) {
// Lock is LOCKED, do something here
}
  • unlock() / lock() / open():从代码中手动锁定/解锁/打开锁。 与 lock.lock、lock.unlock 和 lock.open 操作类似, 但可用于复杂的 lambda 表达式中。
id(my_lock).unlock();
id(my_lock).lock();
id(my_lock).open();

每当锁被锁定/解锁时,此触发器都会被激活。它在锁组件确认状态后(例如,已锁定/解锁后)立即生效。

lock:
- platform: template # 或其他任何平台
# ...
on_lock:
- logger.log: "Door Locked!"
on_unlock:
- logger.log: "Door Unlocked!"