跳转到内容

Cover 组件

cover 组件是 ESPHome 中 Cover 的通用表示。 Cover(目前)可以是关闭打开状态,并支持三种类型的命令:打开关闭停止

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

cover:
- platform: ...
device_class: garage

配置变量:

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

NOTE

如果您为设备设置了 friendly_name,并且希望 Cover 使用该名称,可以设置 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 选项:

  • mqtt_json_state_payload (可选, boolean): 设置为 true 时,状态更改将仅作为每次状态更改的单个 JSON 对象发布到 state_topic。示例:

    { "state": "open", "position": 100, "tilt": 50 }

    当为 false 时,各个值分别发布到 state_topicposition_state_topictilt_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 组件的所有其他选项。

动作在执行时打开给定 ID 的 Cover。

on_...:
then:
- cover.open: cover_1

NOTE

此动作也可以用 lambda 表示:

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

动作在执行时关闭给定 ID 的 Cover。

on_...:
then:
- cover.close: cover_1

NOTE

此动作也可以用 lambda 表示:

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

动作在执行时停止给定 ID 的 Cover。

on_...:
then:
- cover.stop: cover_1

NOTE

此动作也可以用 lambda 表示:

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

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

on_...:
then:
- cover.toggle: cover_1

NOTE

此动作也可以用 lambda 表示:

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

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

on_...:
then:
- cover.control:
id: cover_1
position: 50%
tilt: 50%

配置变量:

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

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

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

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

    • 0.0 = 0% = CLOSED
    • 1.0 = 100% = OPEN
  • tilt (可选, float): 要设置的倾斜位置。范围为 0% - 100%。

NOTE

此动作也可以用 lambda 表示:

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

条件检查给定 ID 的 Cover 是否完全打开。

on_...:
if:
condition:
cover.is_open: cover_1
then:
- logger.log: "Cover 已打开!"

配置变量:

  • id (必填, ID): 要检查的 Cover。

条件检查给定 ID 的 Cover 是否完全关闭。

on_...:
if:
condition:
cover.is_closed: cover_1
then:
- logger.log: "Cover 已关闭!"

配置变量:

  • id (必填, ID): 要检查的 Cover。

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

cover:
- platform: template # 或任何其他平台
# ...
on_opened:
- logger.log: "Cover 已完全打开!"

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

cover:
- platform: template # 或任何其他平台
# ...
on_closed:
- logger.log: "Cover 已完全关闭!"

每次 Cover 开始打开时激活此触发器。

cover:
- platform: template # 或任何其他平台
# ...
on_opening:
- logger.log: "Cover 开始打开"

每次 Cover 开始关闭时激活此触发器。

cover:
- platform: template # 或任何其他平台
# ...
on_closing:
- logger.log: "Cover 开始关闭"

每次 Cover 停止移动并变为空闲状态时激活此触发器。

cover:
- platform: template # 或任何其他平台
# ...
on_idle:
- logger.log: "Cover 已停止移动"

NOTE

on_open 触发器已弃用,将在未来版本中删除。请改用 on_opened

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.01.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 当前正在关闭
}