基于时间的 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。
处理 stop_action
Section titled “处理 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(); }