跳转到内容

模板锁

template 锁平台允许您仅从动作和可选的值 lambda 创建简单的锁。定义后,它会自动在 Home Assistant 中显示为锁,并可通过前端控制。

# 示例配置条目
lock:
- platform: template
name: "模板锁"
lambda: |-
if (id(some_binary_sensor).state) {
return LOCK_STATE_LOCKED;
} else {
return LOCK_STATE_UNLOCKED;
}
lock_action:
- switch.turn_on: switch1
unlock_action:
- switch.turn_off: switch1
open_action:
- button.press: button1

可选 lambda 的可能返回值:

  • return LOCK_STATE_LOCKED; 如果锁应报告为已锁定。
  • return LOCK_STATE_UNLOCKED; 如果锁应报告为已解锁。
  • return LOCK_STATE_JAMMED; 如果锁应报告为卡住。
  • return LOCK_STATE_LOCKING; 如果锁应报告为正在锁定。
  • return LOCK_STATE_UNLOCKING; 如果锁应报告为正在解锁。
  • return {}; 如果应重复上次状态。

NOTE

Home Assistant 中的 MQTT 组件仅支持 LOCK_STATE_LOCKEDLOCK_STATE_UNLOCKED

  • lambda (可选, lambda): 重复评估以获取锁当前状态的 lambda。

  • lock_action (可选, 动作):当远程端(如 Home Assistant 前端)请求锁定锁时应执行的动作。

  • unlock_action (可选, 动作):当远程端(如 Home Assistant 前端)请求解锁锁时应执行的动作。

  • optimistic (可选, boolean):是否以乐观模式运行——在此模式下,发送到模板锁的任何命令都会立即更新报告的状态。默认为 false

  • assumed_state (可选, boolean):是否不知道锁的真实状态。这将使 Home Assistant 前端显示锁定和解锁两个动作的按钮,而不是在锁已锁定/解锁时隐藏其中一个。默认为 false

  • 的所有其他选项。

您还可以使用 lock.template.publish 动作从 YAML 文件的其他位置向模板锁发布状态。

# 示例配置条目
lock:
- platform: template
name: "模板锁"
id: template_lock1
# 在某个触发器中
on_...:
- lock.template.publish:
id: template_lock1
state: LOCK_STATE_LOCKED
# 使用模板
- lock.template.publish:
id: template_lock1
state: !lambda 'return LOCK_STATE_LOCKED;'

配置选项:

  • id (必填, ID):模板锁的 ID。
  • state (必填, boolean, 可模板化):要发布的状态。

NOTE

此动作也可以在 lambda 中编写,publish_state 方法的参数表示锁应变为的状态:

id(template_lock1).publish_state(lock::LOCK_STATE_LOCKED);