跳转到内容

Template Lock

template 锁平台允许你仅用操作和可选的值 lambda 来创建简单的锁。定义完成后,它会自动出现在 Home Assistant 中作为锁,并可通过前端进行控制。

# 示例配置条目
lock:
- platform: template
name: "Template Lock"
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; 如果锁应报告为 LOCKED。
  • return LOCK_STATE_UNLOCKED; 如果锁应报告为 UNLOCKED。
  • return LOCK_STATE_JAMMED; 如果锁应报告为 JAMMED。
  • return LOCK_STATE_LOCKING; 如果锁应报告为 LOCKING。
  • return LOCK_STATE_UNLOCKING; 如果锁应报告为 UNLOCKING。
  • return {}; 如果应重复上次的状态。

NOTE

MQTT 组件在 Home Assistant 中仅支持 LOCK_STATE_LOCKED 和 LOCK_STATE_UNLOCKED

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

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

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

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

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

  • 锁 的所有其他选项。

你也可以在 YAML 文件的其他地方使用 lock.template.publish 操作向模板锁发布状态。

# 示例配置条目
lock:
- platform: template
name: "Template Lock"
id: template_lock1
# in some trigger
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,templatable):要发布的状态。

NOTE

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

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