跳转到内容

模板阀门

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

# 示例配置条目
valve:
- platform: template
name: "模板阀门"
lambda: |-
if (id(top_end_stop).state) {
return VALVE_OPEN;
} else {
return VALVE_CLOSED;
}
open_action:
- switch.turn_on: open_valve_switch
close_action:
- switch.turn_on: close_valve_switch
stop_action:
- switch.turn_on: stop_valve_switch
optimistic: true

可选 lambda 的可能返回值:

  • return VALVE_OPEN; 如果阀门应报告为已打开。
  • return VALVE_CLOSED; 如果阀门应报告为已关闭。
  • return {}; 如果应重复上次状态。
  • lambda (可选, lambda): 重复评估以获取阀门当前状态的 lambda。

  • open_action (可选, 动作):当远程端(如 Home Assistant 前端)请求打开阀门时应执行的动作。

  • close_action (可选, 动作):当远程端请求关闭阀门时应执行的动作。

  • stop_action (可选, 动作):当远程端请求停止阀门时应执行的动作。

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

  • restore_mode (可选, enum):控制阀门在启动时如何尝试恢复状态。

    • NO_RESTORE(默认):不保存或恢复状态。
    • RESTORE:尝试在启动时恢复状态,但不指示阀门返回该状态。
    • RESTORE_AND_CALL:尝试在启动时恢复状态,并指示阀门返回恢复的状态。
  • assumed_state (可选, boolean):是否不知道阀门的真实状态。这将使 Home Assistant 前端显示打开和关闭两个动作的按钮,而不是隐藏其中一个。默认为 false

  • has_position (可选, boolean):此阀门是否将其位置发布为浮点数。默认情况下(false),阀门仅发布打开/关闭位置。

  • position_action (可选, 动作):当远程端(如 Home Assistant 前端)请求将阀门设置为特定位置时应执行的动作。所需位置在 lambda 的 pos 变量中可用。需要将 has_position(上方)设置为 true

  • 阀门的所有其他选项。

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

# 示例配置条目
valve:
- platform: template
name: "模板阀门"
id: my_template_valve
# 在某个触发器中
on_...:
- valve.template.publish:
id: my_template_valve
state: OPEN
# 使用模板
- valve.template.publish:
id: my_template_valve
state: !lambda 'return VALVE_OPEN;'

配置选项:

  • id (必填, ID):模板阀门的 ID。

  • state (可选, 可模板化):要发布的状态。OPENCLOSED 之一。如果使用 lambda,请使用 VALVE_OPENVALVE_CLOSED

  • position (可选, 可模板化, float):要发布的位置,从 0(关闭)到 1.0(打开)

  • current_operation (可选, 可模板化, string):要发布的当前操作模式。IDLEOPENINGCLOSING 之一。如果使用 lambda,请使用 VALVE_OPERATION_IDLEVALVE_OPERATION_OPENINGVALVE_OPERATION_CLOSING

NOTE

此动作也可以在 lambda 中编写:

id(my_template_valve).position = VALVE_OPEN;
id(my_template_valve).publish_state();