阀门组件
valve 组件是 ESPHome 中阀门的通用表示。阀门(目前)可以是 关闭 或 打开,并支持三个命令:打开、关闭 和 停止。
NOTE
在 Home Assistant 中使用阀门需要 Home Assistant 2024.5 或更高版本。
基本阀门配置
Section titled “基本阀门配置”所有阀门配置模式继承自此模式——您可以为阀门设置这些键。
valve: - platform: ... device_class: water配置变量:
- id (可选, string):手动指定用于代码生成的 ID。必须指定 id 和 name 中的至少一个。
- name (可选, string):阀门的名称。必须指定 id 和 name 中的至少一个。
NOTE
如果您为设备设置了 friendly_name,并且希望阀门使用该名称,可以设置 name: None。
-
device_class (可选, string):传感器的设备类别。请参阅 https://www.home-assistant.io/components/valve/ 获取可用选项列表。
-
icon (可选, icon):手动设置前端中阀门使用的图标。
高级选项:
-
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 组件的所有其他选项。
valve.open 动作
Section titled “valve.open 动作”此 动作 在执行时打开具有给定 ID 的阀门。
on_...: then: - valve.open: valve_1NOTE
此动作也可以在 lambda 中表示:
auto call = id(valve_1).make_call();call.set_command_open();call.perform();valve.close 动作
Section titled “valve.close 动作”此 动作 在执行时关闭具有给定 ID 的阀门。
on_...: then: - valve.close: valve_1NOTE
此动作也可以在 lambda 中表示:
auto call = id(valve_1).make_call();call.set_command_close();call.perform();valve.stop 动作
Section titled “valve.stop 动作”此 动作 在执行时停止具有给定 ID 的阀门。
on_...: then: - valve.stop: valve_1NOTE
此动作也可以在 lambda 中表示:
auto call = id(valve_1).make_call();call.set_command_stop();call.perform();valve.toggle 动作
Section titled “valve.toggle 动作”此 动作 在执行时切换具有给定 ID 的阀门,循环经过关闭/停止/打开/停止… 状态。这允许通过单个按钮控制阀门。
on_...: then: - valve.toggle: valve_1NOTE
此动作也可以在 lambda 中表示:
auto call = id(valve_1).make_call();call.set_command_toggle();call.perform();valve.control 动作
Section titled “valve.control 动作”此 动作 是其他阀门动作的更通用版本,允许设置所有阀门属性。
on_...: then: - valve.control: id: valve_1 position: 50%配置变量:
-
id (必填, ID):要控制的阀门。
-
stop (可选, boolean):是否停止阀门。
-
state (可选, string):要将阀门设置为的状态——
OPEN或CLOSE之一。 -
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
Section titled “Lambda”在 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.on_open 触发器
Section titled “valve.on_open 触发器”每次阀门达到完全打开状态时都会激活此触发器。
valve: - platform: template # 或任何其他平台 # ... on_open: - logger.log: "阀门已打开!"valve.on_closed 触发器
Section titled “valve.on_closed 触发器”每次阀门达到完全关闭状态时都会激活此触发器。
valve: - platform: template # 或任何其他平台 # ... on_closed: - logger.log: "阀门已关闭!"