美文网首页智能家居
Home Assistant 自动化实践(一)

Home Assistant 自动化实践(一)

作者: 陈若涵 | 来源:发表于2018-03-03 13:35 被阅读17次

    回家开灯这件小事,我把它做复杂了

    本文想探讨的是如何只使用 HomeAssistant 本身的组件来实现一个“对用户友好”的功能开关。

    从一个原本应该很简单的例子讲起:我希望回家开门时玄关的灯会自动打开,并且稍后自动关闭。

    对“家人”友好的需求分析

    家里有你一个 geek 就足够了,你家领导只想要享受,所以开关灯的这个需求还要继续细化:

    1. 开门自动开灯,这个是最基础的。
    2. 定时关灯,这也是最基础的
    3. 人还在门口时候别关啊,不然多尴尬。
    4. 自动开关灯虽然智能,但也不能总是无脑执行,总有需要关闭的时候,需要给一个前端开关的功能。
    5. 关灯的延时长短也需要可以直接调整,领导可不会来修改你的代码和配置
    6. 不仅是开门后的开灯需要自动关闭。而我手动打开灯后,也希望可以自动关闭,让我尽量忘了关灯这件事

    功能分解

    要完成如上需求,我需要在 HA 中接入一些设备,例如

    1. 玄关灯,使用小米的单火墙壁开关控制
    2. 大门上安装门窗传感器
    3. 玄关合适位置放置小米人体传感器

    硬件准备完毕后,开始配置 HA,首先抽象出一个“控制面板”,对于开关灯这件小事,我觉得三个控制开关就足够了:自动开灯,自动关灯,以及自动关灯的延时时间设置。有了控制面板后,我还需要新增以下几个组件:

    1. 计时器(Timer),倒计时用
    2. 自动化脚本,开门时打开玄关灯
    3. 自动化脚本,玄关灯打开时或者人体感应有人时开始倒计时
    4. 自动化脚本,计时结束后根据当前人体感应是否有人来决策是否关灯

    HomeAssistant 效果

    最终效果

    参考配置

    timer:
      hallway_light_autoclose_timer:
        duration: "00:01:00"
    
    input_boolean:
      hallway_light_auto_close:
        name: 门厅灯自动关闭
      hallway_light_auto_turn_on:
        name: 门厅灯自动打开
    
    input_number:
      hallway_light_turn_off_delay:
        name: 玄关灯延时关闭(秒)
        mode: box
        min: 1
        max: 600
        step: 1
    
    group:
      hallway_panel:
        view: yes
        name: 玄关
        entities:
          - group.hallway_light_settings
          - group.hallway_light_components
    
      hallway_lights:
        entities:
          - switch.wall_switch_left_158d000211763b
          - switch.wall_switch_right_158d000211763b
    
      hallway_light_settings:
        name: 门厅灯设置
        entities:
          - input_boolean.hallway_light_auto_turn_on
          - input_boolean.hallway_light_auto_close
          - input_number.hallway_light_turn_off_delay
    
      hallway_light_components:
          - switch.wall_switch_left_158d000211763b
          - switch.wall_switch_right_158d000211763b
          - timer.hallway_light_autoclose_timer
          - sensor.illumination_34ce008143ab
          - binary_sensor.door_window_sensor_158d0001191793
          - binary_sensor.motion_sensor_158d0001296340
          - automation.hallway_light_auto_turn_on
          - automation.hallway_light_set_auto_close_timer
          - automation.hallway_light_timer_finish
    
    
    automation:
      - action:
        - data:
            entity_id:
            - group.hallway_lights
          service: switch.turn_on
        alias: hallway_light_auto_turn_on
        condition:
        - condition: state
          entity_id: input_boolean.hallway_light_auto_turn_on
          state: "on"
        id: '1519212408800'
        trigger:
        - entity_id: binary_sensor.door_window_sensor_158d0001191793
          from: 'off'
          platform: state
          to: 'on'
    
      - alias: hallway_light_set_auto_close_timer
        trigger:
          - platform: state
            entity_id: binary_sensor.motion_sensor_158d0001296340
            to: "off"
          - platform: state
            entity_id: group.hallway_lights
            to: "on"
        condition:
          - condition: state
            entity_id: input_boolean.hallway_light_auto_close
            state: "on"
          - condition: state
            entity_id: group.hallway_lights
            state: "on"
        action:
          service: timer.start
          data_template:
            entity_id: timer.hallway_light_autoclose_timer
            duration: "{{ states('input_number.hallway_light_turn_off_delay')|int }}"
    
      - alias: hallway_light_timer_finish
        trigger:
          - platform: event
            event_type: timer.finished
            event_data:
              entity_id: timer.hallway_light_autoclose_timer
        condition:
          - condition: state
            entity_id: input_boolean.hallway_light_auto_close
            state: "on"
          - condition: state
            entity_id: binary_sensor.motion_sensor_158d0001296340
            state: "off"
        action:
          service: switch.turn_off
          data:
            entity_id: group.hallway_lights
    

    相关文章

      网友评论

        本文标题:Home Assistant 自动化实践(一)

        本文链接:https://www.haomeiwen.com/subject/bmdtfftx.html