跳转到内容

阀门组件

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

NOTE

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

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

valve:
- platform: ...
device_class: water

配置变量:

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

NOTE

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

高级选项:

  • internal (可选, boolean):将此组件标记为内部组件。内部组件不会暴露给前端(如 Home Assistant)。仅指定 id 而不指定 name 会隐式将此设置为 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 版本 3

MQTT 选项:

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

动作 在执行时打开具有给定 ID 的阀门。

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

NOTE

此动作也可以在 lambda 中表示:

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

动作 在执行时关闭具有给定 ID 的阀门。

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

NOTE

此动作也可以在 lambda 中表示:

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

动作 在执行时停止具有给定 ID 的阀门。

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

NOTE

此动作也可以在 lambda 中表示:

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

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

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

NOTE

此动作也可以在 lambda 中表示:

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

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

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

配置变量:

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

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

  • state (可选, string):要将阀门设置为的状态——OPENCLOSE 之一。

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

    • 0.0 = 0% = CLOSED(关闭)
    • 1.0 = 100% = OPEN(打开)

NOTE

此动作也可以在 lambda 中表示:

auto call = id(valve_1).make_call();
// 设置属性
call.set_position(0.5);
call.perform();

lambda 中,您可以访问阀门的当前状态(请注意这些字段是只读的,如果您想对阀门执行操作,请使用上面显示的 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:
- platform: template # 或任何其他平台
# ...
on_closed:
- logger.log: "阀门已关闭!"