跳转到内容

基于时间的 Cover

time_based Cover 平台允许您创建没有位置反馈的具有位置控制的 Cover。因此 Cover 的状态始终是假设的,当前位置是根据 Cover 在一个方向上移动的时间来近似的。Cover 的状态可以在节点重启时恢复。

# 示例配置条目
cover:
- platform: time_based
name: "Time-Based Cover"
open_action:
- switch.turn_on: open_cover_switch
open_duration: 2.1min
close_action:
- switch.turn_on: close_cover_switch
close_duration: 2min
stop_action:
- switch.turn_off: open_cover_switch
- switch.turn_off: close_cover_switch
  • open_action (必填, 动作): 当远程请求打开 Cover 时应执行的动作。

  • open_duration (必填, 时间): Cover 从完全关闭状态打开所需的时间量。

  • close_action (可选, 动作): 当远程请求关闭 Cover 时应执行的动作。

  • close_duration (必填, 时间): Cover 从完全打开状态关闭所需的时间量。

  • stop_action (必填, 动作): 当远程请求停止 Cover 或 Cover 已打开/关闭给定持续时间时应执行以停止 Cover 的动作。

  • has_built_in_endstop (可选, boolean): 表示 Cover 具有内置限位开关检测器。在此配置中,当打开或关闭时间完成时不执行 stop_action,并且如果命令 Cover 打开或关闭,将执行相应的动作而不检查当前状态。默认为 false

  • manual_control (可选, boolean): 用于具有手动外部控制的 Cover。在此配置中,如果命令 Cover 打开或关闭,即使当前状态完全打开或完全关闭与所需状态匹配,也将执行相应的动作,然后在动作的完整持续时间过后调用 stop_action。然后将重新学习当前状态。建议将 assumed_state 设置为 true,以便界面中的 Cover 控制按钮不会被禁用。默认为 false

  • assumed_state (可选, boolean): Cover 的真实状态是否未知。这将使 Home Assistant 前端显示打开和关闭两个动作的按钮,而不是隐藏或禁用其中一个。默认为 true

  • Cover 的所有其他选项。

NOTE

UI 上的停止按钮始终启用,即使 Cover 已停止,每次按下按钮都会导致执行 stop_action

对于某些 Cover 控制器,使用单独的开关进行向上和向下动作,而在发送反向命令时发出停止。这可以通过在 stop_action 中使用以下 lambda 函数来处理:

stop_action:
- lambda: !lambda |-
if (id(cover).get_last_operation() == CoverOperation::COVER_OPERATION_OPENING) {
// Cover 当前正在打开
id(cover_button_down).press();
} else if (id(cover).get_last_operation() == CoverOperation::COVER_OPERATION_CLOSING) {
// Cover 当前正在关闭
id(cover_button_up).press();
}