scheduler-组件
简介
这是一个用于Home Assistant的自定义组件,用于基于时间控制您现有的设备。 它可以很好地与Lovelace scheduler卡片配合使用。
scheduler实体定义了在特定时间执行的操作,例如"每天21:00打开我的灯"。 HA中的任何实体都可以用于创建scheduler实体,结合HA中可用的任何服务。
安装
步骤1:下载文件
选项1:通过HACS
确保您已安装HACS。如果没有,在HA中运行wget -O - https://get.hacs.xyz | bash -
。
在HACS中选择集成。点击页面底部的"+"按钮,搜索"scheduler component",选择它,然后在HACS中点击安装。
选项2:手动
克隆此仓库或下载源代码为zip文件,并将custom_components/
文件夹及其内容添加/合并到您的配置目录中。
步骤2:重启HA
为了加载新添加的集成,需要重启HA。
步骤3:将集成添加到HA(<--- 这是许多人忘记的步骤)
在HA中,转到配置 > 集成。 在右下角,点击带有"+"的大按钮。
如果组件正确安装,您应该能在列表中找到"Scheduler"。您可能需要清除浏览器缓存才能显示集成。
选择它,scheduler集成就可以使用了。
步骤4:添加scheduler卡片
按照Lovelace scheduler卡片的说明设置允许您配置scheduler实体的卡片。
更新
- 更新文件:
- 使用HACS: 在HACS面板中,当有新版本可用时应该会有通知。按照HACS中的说明更新安装文件。
- 手动: 下载最新版本的zip文件,并将其解压到HA安装中的custom_components文件夹中,覆盖先前的安装。
- 重启HA以加载更改。
查看已安装的版本: 在HA中,转到配置 -> 集成。在Scheduler集成卡片中,您应该看到一个"1个设备"的链接,点击它。在表格中点击"Scheduler"设备,您应该看到设备信息。"固件版本"代表已安装的版本号。
卸载
- 从HA中移除scheduler: 在HA中转到配置 -> 集成。找到scheduler集成的卡片,点击带有3个点的按钮,然后点击"删除"。
- 移除文件:
- 通过HACS安装时: 在HACS面板中转到集成,找到Scheduler组件。点击带有3个点的按钮,然后点击"卸载"。
- 手动安装时: 在custom_components目录中,删除"scheduler"文件夹。
- 重启HA以使组件的所有痕迹消失。
备份
您的计划配置存储在HA配置目录的.storage
文件夹中,文件名为scheduler.storage
。
如果您通过HA supervisor创建快照,这个文件应该会自动备份。否则,请确保在备份中包含此文件。
HA中的实体是在(重新)启动HA时从scheduler.storage
文件创建的。
Scheduler实体
属于scheduler集成的实体的实体ID遵循switch.schedule_<token>
的模式,其中<token>
是随机生成的6位代码。
您可以像处理HA中其他switch
实体一样处理这些实体,这意味着您可以将它们放在任何Lovelace卡片中以便快速访问。
状态
scheduler实体可以有以下状态:
状态 | 描述 |
---|---|
off | 计划已禁用。禁用的计划不会跟踪时间,也不会执行任何操作。 |
on | 计划内部计时器正在运行,等待计时器到期。属性next_trigger 提供到期时间。 |
triggered | 计时器已完成,操作已执行。实体将等待1分钟,然后重置计时器。 |
unknown | 出现问题,计划未运行。 |
服务
由于计划遵循switch
平台,您可以使用switch.turn_on
和switch.turn_off
服务来启用和禁用计划。
此外,还提供以下服务。 请注意,此组件旨在与Lovelace scheduler卡片一起使用,该卡片处理一些数据验证。
scheduler.add
添加新的scheduler实体。
字段 | 类型 | 可选/必填 | 描述 | 备注 |
---|---|---|---|---|
weekdays | 列表 | 可选 | 应执行计划的(一周中的)日期 | 有效值为:mon , tue , wed , thu , fri , sat , sun , daily , workday weekend 。默认为 daily 。 |
start_date | 日期 | 可选 | 计划应开始触发的起始日期 | 有效格式为yyyy-mm-dd 。 |
end_date | 日期 | 可选 | 计划应触发的最后日期 | 有效格式为yyyy-mm-dd 。如果 end_date 在过去,计划将不再触发。 |
timeslots | 列表 | 必填 | 应执行的时间/时间间隔及操作列表 | 更多信息请参见时间段。 |
repeat_type | 字符串 | 可选 | 控制触发后的重复行为。 | 有效值为:
|
name | 字符串 | 可选 | 计划实体的友好名称。 | 该名称也将用于计划的entity_id。 默认值为 Schedule #abcdef ,其中abcdef =随机生成的序列。 |
scheduler.edit
更新现有scheduler实体的配置。 覆盖旧值。
服务参数与scheduler.add
相同,只是需要提供要修改的计划的entity_id
。
请注意,只需提供要更改的参数,如果未提供参数,将保留先前的值。
scheduler.remove
移除scheduler实体。
字段 | 类型 | 可选/必填 | 描述 | 备注 |
---|---|---|---|---|
entity_id | 字符串 | 必填 | scheduler实体的实体ID | 例如switch.schedule_123456 |
scheduler.copy
复制scheduler实体。
字段 | 类型 | 可选/必填 | 描述 | 备注 |
---|---|---|---|---|
entity_id | 字符串 | 必填 | 现有scheduler实体的实体ID | 例如switch.schedule_123456 |
name | 字符串 | 可选 | 创建的计划实体的友好名称。 | 该名称也将用于计划的entity_id。 默认值为 Schedule #abcdef ,其中abcdef =随机生成的序列。 |
scheduler.run_action
手动触发计划。
字段 | 类型 | 可选/必填 | 描述 | 备注 |
---|---|---|---|---|
entity_id | 字符串 | 必填 | scheduler实体的实体ID | 例如switch.schedule_123456 |
time | 字符串 | 可选 | 触发计划的时间。 | 如果计划只有一个时间段,将始终触发该时间段。 对于有多个时间段的计划:
|
skip_conditions | 布尔值 | 可选 | 是否应跳过计划的条件。 |
数据格式
时间段
时间段定义了计划触发的时间点,以及需要执行的操作。还可以选择指定在执行操作之前需要验证的条件。
名称 | 类型 | 可选/必填 | 描述 | 备注 |
---|---|---|---|---|
start | 字符串 | 必填 | 计划触发的时间(24小时制) | 范围应为00:00-23:59。每个时间段应有唯一值。输入也可以相对于太阳:如 sunrise+01:00 或 sunset-00:00 。 |
stop | 字符串 | 可选 | 时间段结束的时间(24小时制) | 仅在定义时间段时需要。范围应为00:01-00:00(次日开始)。stop 时间必须至少比 start 时间晚1分钟。 |
conditions | 列表 | 可选 | 执行动作前需要验证的条件 | 更多信息请参见条件。 |
condition_type | 字符串 | 可选 | 验证多个条件时应用的逻辑 | 有效值为:
|
track_conditions | 布尔值 | 可选 | 监视条件实体的变化,一旦条件变为有效则重复执行动作 | |
actions | 列表 | 必填 | 达到 start 时间时执行的动作 | 更多信息请参见动作。 |
注意:
为确保与调度器卡片兼容,需满足以下条件:
- 计划必须由以下之一组成:
- 只有
start
时间的单个时间段 - 所有时间段都有
start
和stop
时间,且不重叠,并且不相对于太阳的时间段列表。
-
所有时间段的条件必须相同。
-
动作列表只能包含单个服务/服务数据组合(多个动作只能有不同的entity_id)。
条件
条件用于定义在执行计划动作前需要验证的规则。 目前条件仅限于检查实体状态。
名称 | 类型 | 可选/必填 | 描述 | 备注 |
---|---|---|---|---|
entity_id | 字符串 | 必填 | 条件适用的实体 | 例如:binary_sensor.my_window |
value | 字符串 | 必填 | 用于比较实体状态的值 | 例如:on |
match_type | 字符串 | 必填 | 比较时应用的逻辑 | 有效值为:
|
动作
动作是HA服务与entity_id的组合。 有关可用动作和有效参数的信息,请参见HA中的开发者工具 -> 服务。
名称 | 类型 | 可选/必填 | 描述 | 备注 |
---|---|---|---|---|
entity_id | 字符串 | 必填 | 需要执行动作的实体 | 例如:light.my_lamp |
service | 字符串 | 必填 | 需要在实体上执行的HA服务 | 例如:light.turn_on |
service_data | 字典 | 可选 | 服务调用中使用的额外参数 | 例如:{brightness: 200} |