跳转到内容

模板阀门

template 阀门平台允许您使用几个操作和一个值 lambda 创建简单的阀门。一旦 定义,它将自动在 Home Assistant 中显示为阀门,并可通过前端进行控制。

# Example configuration entry
valve:
- platform: template
name: "Template Valve"
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; 如果阀门应报告为 OPEN。
  • return VALVE_CLOSED; 如果阀门应报告为 CLOSED。
  • return {}; 如果应重复上一个状态。
  • lambda (可选, lambda): 重复评估以获取阀门当前状态的 Lambda。

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

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

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

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

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

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

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

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

  • 还包括 Valve 的所有其他选项。

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

# Example configuration entry
valve:
- platform: template
name: "Template Valve"
id: my_template_valve
# in some trigger
on_...:
- valve.template.publish:
id: my_template_valve
state: OPEN
# Templated
- valve.template.publish:
id: my_template_valve
state: !lambda 'return VALVE_OPEN;'

配置选项:

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

  • state (可选, templatable): 要发布的状态。OPEN、CLOSED 之一。如果使用 lambda,请使用 VALVE_OPEN 或 VALVE_CLOSED。

  • position (可选, float, templatable): 要发布的位置,从 0(CLOSED)到 1.0(OPEN)

  • current_operation (可选, string, templatable): 要发布的当前操作模式。IDLE、OPENING 和 CLOSING 之一。如果使用 lambda,请使用 VALVE_OPERATION_IDLE、VALVE_OPERATION_OPENING 和 VALVE_OPERATION_CLOSING。

NOTE

此操作也可以在 lambdas 中编写:

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