跳转到内容

阀门组件

valve 组件是 ESPHome 中阀门的通用表示。阀门目前可以是 关闭 或 打开,并支持三个命令:打开、关闭 和 停止。

NOTE

在 Home Assistant 中使用阀门需要 Home Assistant 2024.5 或更高版本。

所有阀门配置模式都继承自此模式——您可以为阀门设置这些键。

valve:
- platform: ...
device_class: water

配置变量:

  • id (可选, string): 手动指定用于代码生成的 ID。至少必须指定 id 和 name 中的一个。
  • name (可选, string): 阀门的名称。至少必须指定 id 和 name 中的一个。

NOTE

如果您为设备设置了 friendly_name,并希望阀门 使用该名称,可以将 name: None。

高级选项:

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

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

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

  • 如果启用了 Webserver 并选择了版本 3,则还包括 Webserver 组件的所有其他选项。请参阅 Webserver Version 3。

MQTT 选项:

  • position_state_topic (可选, string): 用于发布阀门位置变更的主题。
  • position_command_topic (可选, string): 用于接收阀门位置命令的主题。
  • 还包括 MQTT 组件 的所有其他选项。

执行时,此 action 将打开给定 ID 的阀门。

on_...:
then:
- valve.open: valve_1

NOTE

此操作也可以表示为 lambdas:

auto call = id(valve_1).make_call();
call.set_command_open();
call.perform();

执行时,此 action 将关闭给定 ID 的阀门。

on_...:
then:
- valve.close: valve_1

NOTE

此操作也可以表示为 lambdas:

auto call = id(valve_1).make_call();
call.set_command_close();
call.perform();

执行时,此 action 将停止给定 ID 的阀门。

on_...:
then:
- valve.stop: valve_1

NOTE

此操作也可以表示为 lambdas:

auto call = id(valve_1).make_call();
call.set_command_stop();
call.perform();

执行时,此 action 将切换给定 ID 的阀门,循环经过状态 关闭/停止/打开/停止… 这允许通过单个按钮来控制阀门。

on_...:
then:
- valve.toggle: valve_1

NOTE

此操作也可以表示为 lambdas:

auto call = id(valve_1).make_call();
call.set_command_toggle();
call.perform();

此 action 是其他阀门操作的更通用版本,允许设置所有阀门属性。

on_...:
then:
- valve.control:
id: valve_1
position: 50%

配置变量:

  • id (必填, ID): 要控制的阀门。

  • stop (可选, boolean, templatable): 是否停止阀门。

  • state (可选, string, templatable): 要设置的阀门状态——OPEN 或 CLOSE 之一。

  • position (可选, float, templatable): 要设置的阀门位置。

    • 0.0 = 0% = CLOSED
    • 1.0 = 100% = OPEN

NOTE

此操作也可以表示为 lambdas:

auto call = id(valve_1).make_call();
// set attributes
call.set_position(0.5);
call.perform();

在 lambdas 中,您可以访问阀门的当前状态(注意这些字段是 只读的,如果您想对阀门进行操作,请使用如上所示的 make_call() 方法)。

  • position : 检索阀门的当前位置,作为介于 0.0(关闭)和 1.0(打开)之间的值。
if (id(my_valve).position == VALVE_OPEN) {
// 阀门已打开
} else if (id(my_valve).position == VALVE_CLOSED) {
// 阀门已关闭
} else {
// 阀门处于打开和关闭之间
}
  • current_operation : 阀门当前执行的操作:
if (id(my_valve).current_operation == ValveOperation::VALVE_OPERATION_IDLE) {
// 阀门处于空闲状态
} else if (id(my_valve).current_operation == ValveOperation::VALVE_OPERATION_OPENING) {
// 阀门当前正在打开
} else if (id(my_valve).current_operation == ValveOperation::VALVE_OPERATION_CLOSING) {
// 阀门当前正在关闭
}

此触发器在阀门每次达到完全打开状态时激活。

valve:
- platform: template # 或任何其他平台
# ...
on_open:
- logger.log: "Valve is Open!"

此触发器在阀门每次达到完全关闭状态时激活。

valve:
- platform: template # 或任何其他平台
# ...
on_closed:
- logger.log: "Valve is Closed!"