Cover 组件
cover 组件是 ESPHome 中 Cover 的通用表示。
Cover(目前)可以是关闭或打开状态,并支持三种类型的命令:打开、关闭和停止。
基础 Cover 配置
Section titled “基础 Cover 配置”所有 Cover 配置模式都继承自此模式 - 您可以为 Cover 设置这些键。
cover: - platform: ... device_class: garage配置变量:
- id (可选, string): 手动指定用于代码生成的 ID。id 和 name 中至少必须指定一个。
- name (可选, string): Cover 的名称。id 和 name 中至少必须指定一个。
NOTE
如果您为设备设置了 friendly_name,并且希望 Cover 使用该名称,可以设置 name: None。
-
device_class (可选, string): 传感器的设备类别。请参阅 https://www.home-assistant.io/integrations/cover/#device-class 获取可用选项列表。
-
icon (可选, icon): 手动设置前端界面中 Cover 使用的图标。
高级选项:
-
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 选项:
-
mqtt_json_state_payload (可选, boolean): 设置为
true时,状态更改将仅作为每次状态更改的单个 JSON 对象发布到state_topic。示例:{ "state": "open", "position": 100, "tilt": 50 }当为
false时,各个值分别发布到state_topic、position_state_topic和tilt_state_topic。默认为false。 -
position_state_topic (可选, string): 用于发布 Cover 位置变更的主题。如果
mqtt_json_state_payload设置为true则无效。 -
position_command_topic (可选, string): 用于接收 Cover 位置命令的主题。
-
tilt_state_topic (可选, string): 用于发布 Cover 倾斜状态变更的主题。如果
mqtt_json_state_payload设置为true则无效。 -
tilt_command_topic (可选, string): 用于接收 Cover 倾斜命令的主题。
-
MQTT 组件的所有其他选项。
cover.open 动作
Section titled “cover.open 动作”此动作在执行时打开给定 ID 的 Cover。
on_...: then: - cover.open: cover_1cover.close 动作
Section titled “cover.close 动作”此动作在执行时关闭给定 ID 的 Cover。
on_...: then: - cover.close: cover_1NOTE
此动作也可以用 lambda 表示:
auto call = id(cover_1).make_call();call.set_command_close();call.perform();cover.stop 动作
Section titled “cover.stop 动作”此动作在执行时停止给定 ID 的 Cover。
on_...: then: - cover.stop: cover_1cover.toggle 动作
Section titled “cover.toggle 动作”此动作在执行时切换给定 ID 的 Cover,循环经过关闭/停止/打开/停止…状态。这允许通过单个按钮控制 Cover。
on_...: then: - cover.toggle: cover_1NOTE
此动作也可以用 lambda 表示:
auto call = id(cover_1).make_call();call.set_command_toggle();call.perform();cover.control 动作
Section titled “cover.control 动作”此动作是其他 Cover 动作的更通用版本,允许设置所有 Cover 属性。
on_...: then: - cover.control: id: cover_1 position: 50% tilt: 50%配置变量:
-
id (必填, ID): 要控制的 Cover。
-
stop (可选, boolean): 是否停止 Cover。
-
state (可选, string): 要将 Cover 设置为的状态 -
OPEN或CLOSE之一。 -
position (可选, float): 要设置的 Cover 位置。
0.0=0%=CLOSED1.0=100%=OPEN
-
tilt (可选, float): 要设置的倾斜位置。范围为 0% - 100%。
NOTE
此动作也可以用 lambda 表示:
auto call = id(cover_1).make_call();// 设置属性call.set_position(0.5);call.perform();cover.is_open 条件
Section titled “cover.is_open 条件”此条件检查给定 ID 的 Cover 是否完全打开。
on_...: if: condition: cover.is_open: cover_1 then: - logger.log: "Cover 已打开!"配置变量:
- id (必填, ID): 要检查的 Cover。
cover.is_closed 条件
Section titled “cover.is_closed 条件”此条件检查给定 ID 的 Cover 是否完全关闭。
on_...: if: condition: cover.is_closed: cover_1 then: - logger.log: "Cover 已关闭!"配置变量:
- id (必填, ID): 要检查的 Cover。
cover.on_opened 触发器
Section titled “cover.on_opened 触发器”每次 Cover 达到完全打开状态时激活此触发器。
cover: - platform: template # 或任何其他平台 # ... on_opened: - logger.log: "Cover 已完全打开!"cover.on_closed 触发器
Section titled “cover.on_closed 触发器”每次 Cover 达到完全关闭状态时激活此触发器。
cover: - platform: template # 或任何其他平台 # ... on_closed: - logger.log: "Cover 已完全关闭!"cover.on_opening 触发器
Section titled “cover.on_opening 触发器”每次 Cover 开始打开时激活此触发器。
cover: - platform: template # 或任何其他平台 # ... on_opening: - logger.log: "Cover 开始打开"cover.on_closing 触发器
Section titled “cover.on_closing 触发器”每次 Cover 开始关闭时激活此触发器。
cover: - platform: template # 或任何其他平台 # ... on_closing: - logger.log: "Cover 开始关闭"cover.on_idle 触发器
Section titled “cover.on_idle 触发器”每次 Cover 停止移动并变为空闲状态时激活此触发器。
cover: - platform: template # 或任何其他平台 # ... on_idle: - logger.log: "Cover 已停止移动"NOTE
on_open 触发器已弃用,将在未来版本中删除。请改用 on_opened。
Lambda
Section titled “Lambda”从 lambda 中,您可以访问 Cover 的当前状态(请注意这些字段是只读的,如果您想操作 Cover,请使用上面显示的 make_call() 方法)。
position:获取 Cover 的当前位置,值为0.0(关闭)到1.0(打开)之间。
if (id(my_cover).position == COVER_OPEN) { // Cover 已打开 } else if (id(my_cover).position == COVER_CLOSED) { // Cover 已关闭 } else { // Cover 处于打开和关闭之间的位置 }-
tilt:获取 Cover 的当前倾斜位置,值为0.0到1.0之间。 -
current_operation:Cover 当前正在执行的操作:
if (id(my_cover).current_operation == CoverOperation::COVER_OPERATION_IDLE) { // Cover 处于空闲状态 } else if (id(my_cover).current_operation == CoverOperation::COVER_OPERATION_OPENING) { // Cover 当前正在打开 } else if (id(my_cover).current_operation == CoverOperation::COVER_OPERATION_CLOSING) { // Cover 当前正在关闭 }