侧边栏壁纸
博主头像
贯耳症博主等级

瓜虫冬匕ing……

  • 累计撰写 67 篇文章
  • 累计创建 49 个标签
  • 累计收到 865 条评论

目 录CONTENT

文章目录

HomeAssistant 自动化

贯耳症
2022-06-08 / 0 评论 / 0 点赞 / 1,780 阅读 / 736 字
温馨提示:
本网站有 CDN 缓存,一般刷新 3 次左右即可获取最新页面。

一个按钮,一句话就能让设备开始工作,这属于智能家居的半自动化,虽然很有用,但如果能在特定环境触发指定条件后,自动开始工作的话会让我们更加省心。

不过自动化也不是万能的,贵精不贵多,设计出适合自己生活习惯的自动化才不会为自己徒增烦恼。

自动开关窗帘

我的习惯是白天开窗帘晚上关窗帘,放假要睡到自然醒,当然不希望窗帘自己打开。所以自动开窗帘必须是工作日,关窗帘就没有这个限制了。

在 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实体了,目前正是节假日嘿嘿。

接下来就是重头戏创建自动化了。

依次点击配置 - 场景自动化 - 创建自动化 - 从空的自动化开始,名称改为自动开窗帘

触发条件选择日出,环境条件的状态输入工作日

这里比较关键的是动作的配置,如果动作类型选择设备,窗帘项目下就只有一个调整位置的选项,显然不符合需求。

因此这里选的是调用打开窗帘的服务,然后在调用设备中再选择窗帘即可。如果设备列表找不到窗帘的话,可以尝试在实体注册表窗帘显示为窗帘

至此,这个自动化就配置完毕了,保存后点击执行可以查看效果。关于自动关窗帘,其实也大差不差,就是在环境条件里把节假日去掉,换成了窗帘处于打开状态,防止发出无效命令。

0

评论区