一个按钮,一句话就能让设备开始工作,这属于智能家居的半自动化,虽然很有用,但如果能在特定环境触发指定条件后,自动开始工作的话会让我们更加省心。
不过自动化也不是万能的,贵精不贵多,设计出适合自己生活习惯的自动化才不会为自己徒增烦恼。
自动开关窗帘
我的习惯是白天开窗帘晚上关窗帘,放假要睡到自然醒,当然不希望窗帘自己打开。所以自动开窗帘必须是工作日,关窗帘就没有这个限制了。
在 HA 中,日出日落是可以直接判断的,而判断工作日节假日就需要配置所在国家,具体可以参考官方说明。
但这个说明是英文的,没研究透,大概率是基于网络判断的,没去尝试,而是从网上抄了一个别的方法,目前还挺好用的。
首先打开configuation.yaml
,添加如下配置:
rest:
- scan_interval: 3600
resource_template: https://natescarlet.coding.net/p/github/d/holiday-cn/git/raw/master/{{ now().strftime('%Y') }}.json
sensor:
- name: cn_workdays
value_template: |-
{%- set today = now().strftime('%Y-%m-%d') %}
{%- set lst = (value_json | default({},true)).days | default([]) %}
{%- set ns = namespace(isOffDay=None) %}
{%- for d in lst %}
{%- if today == (d.date | default(None)) %}
{%- set ns.isOffDay = (d.isOffDay | default(None)) %}
{%- endif %}
{%- endfor %}
{%- set isOffDay = ns.isOffDay %}
{%- if not isOffDay in [True,False] %}
{%- if now().isoweekday() in [6,7] %}
{%- set isOffDay = True %}
{%- else %}
{%- set isOffDay = False %}
{%- endif %}
{%- endif %}
{%- if isOffDay == True %}
节假日
{%- elif isOffDay == False %}
工作日
{%- else %}
unknown
{%- endif %}
json_attributes:
- year
- papers
可安装Home Assistant Configurator插件简化修改配置文件的流程。
重启 HA 后,就能在侧边栏历史中看到cn_workdays
实体了,目前正是节假日嘿嘿。
接下来就是重头戏创建自动化了。
依次点击配置 - 场景自动化 - 创建自动化 - 从空的自动化开始,名称改为自动开窗帘。
触发条件选择日出,环境条件的状态输入工作日。
这里比较关键的是动作的配置,如果动作类型选择设备,窗帘项目下就只有一个调整位置的选项,显然不符合需求。
因此这里选的是调用打开窗帘的服务,然后在调用设备中再选择窗帘即可。如果设备列表找不到窗帘的话,可以尝试在实体注册表将窗帘显示为窗帘。
至此,这个自动化就配置完毕了,保存后点击执行可以查看效果。关于自动关窗帘,其实也大差不差,就是在环境条件里把节假日去掉,换成了窗帘处于打开状态,防止发出无效命令。
评论区