IOT

[HomeAssistant] 도어센서 + 모션센서 + 타이머를 활용한 전등 자동화

오리야호 2022. 2. 21. 16:49
반응형

이전에 모션 센서 만으로 전등 자동화 구성

(지금은 블루프린트를 사용하지 않고 자동화를 구현하고 있습니다.)

개요

도어 센서를 추가로 구매하면서 기존 모션 센서 만으로 구성했던 자동화를 수정해보았습니다.

모션만 사용했을 때 자동화보다 카운터 센서 또는 도어 센서와 조합하여 사용했을 때 만족도가 높았고 특히 입실할 때 반응 속도가 빨라진 점이 좋았습니다.

사용하는 조합

* 항상 문이 열려있는 공간 전등 자동화는 카운터 센서 + 모션 센서 활용

(제가 사용하는 시하스 카운터 센서는 열린 공간에서 무심하게 통과하면 오류율이 매우 낮습니다.)

* 문을 열고 닫는 공간의 전등 자동화는 도어센서 + 모션 센서 활용 (이 글은 도어센서 + 모션 센서 활용 조합입니다)

(입실, 퇴실 이벤트가 명확한 상황이므로 자동화에 유리)

HA로 자동화를 시작하면서 자동화를 위한 자동화를 가장 경계하고 있습니다. 웬만하면 단일 자동화로 처리되도록 구성하고 있습니다.

이 자동화는 동작 모드가 병렬 또는 대기열이어야 작동합니다.

단일 자동화로 재귀적 상황에서 이벤트가 무시되던 현상 문의글 → 모드를 병렬로 변경해야 했는데 dftt님 답변을 보기 전까지 전혀 생각을 못했네요 ㅎㅎ

고맙게도 많은 분들이 답변을 달아 주셨어요 ㅎㅎ

https://cafe.naver.com/koreassistant/8053

 

HA 자동화 트리거 재귀적 호출 시 미동작 현상 문의

대한민국 모임의 시작, 네이버 카페

cafe.naver.com

자동화 2개로 운영 중이다가 오늘 하나로 합치고 문제없어 보여서 사례를 올려봅니다.

자동화 하나로 처리돼서 너무 만족스럽습니다.

들어가면 바로 켜지고 나오면 10초 뒤에 꺼집니다.

화장실에 사람이 있는 동안 감지되는 움직임은 타이머를 3분으로 계속 초기화시켜줍니다.

나올 때 문을 닫으면 타이머 시간이 1분 이상 남더라도 10초로 다시 바뀌고 10초 후 불이 꺼집니다.

(타이머가 동작중일 때 타이머를 다시 시작시킬 경우 시간만 변경되고 상태 값은 활성화로 유지됩니다.)

일단 들어갈 때 빨라진 반응 속도에 가족들 만족도가 매우 좋았습니다.

활용 기기

스위치 zemismart 2 선식 스위치

모션 아카라 T1 모션

이번에 신규로 페어링.. 아카라 도어센서

자동화 구성하기

이번 사례의 핵심은 타이머입니다.

* 타이머가 동작한다 → 불을 켠다.

* 타이머가 끝난다 → 불을 끈다.

타이머가 시작하는 상황은 다음으로 정의하였습니다.

* 움직임이 감지된다 → 3분 타이머 작동

* 버튼으로 불을 켠다 → 10초 타이머 작동

* 문을 연다 → 10초 타이머 작동

* 문을 닫는다 → 10초 타이머 작동

아래의 상황을 가정하고 시나리오를 구성했습니다.

* 문을 열고 들어간 뒤 문을 닫으면 10초 이내 움직임이 분명히 감지될 것이다.

* 문을 닫고 나오면 타이머가 얼마나 남았든 10초로 재설정된다. 누군가 남아있다면 어차피 모션 감지 후 타이머 시간이 재설정된다.

* 버튼이나 앱으로 전등을 켜면 타이머 10초 작동되므로 사람이 들어가지 않으면 자동으로 다시 꺼진다.

타이머 사용 시 몇 가지 유의해야 했던 사항은

* HA 재기동 시 상태가 초기화된다. 상태는 idle로 초기화. 시간은 처음 설정 한 시간으로

* 이미 시작된 타이머를 다시 시작하면 시간만 재설정된다.

입니다.

흐름은 아래 그림처럼 동작하고 시작과 종료는 애매해서 표기하지 않았습니다.

자동화에 사용할 타이머 생성

구성 > 자동화 및 장면 > 도우미 탭 > + 도우미 추가하기 버튼을 눌러 생성할 수 있습니다.

여기서 생성한 타이머가 자동화에서 계속 사용됩니다.

트리거 정의

동작 (타이머를 구동시키는 동작들)

동작 (타이머 시작/종료)

전체 자동화 YAML

alias: 자동화_안방 화장실 전등 자동화(도어, 모션)
description: ''
trigger:
  - platform: state
    entity_id: timer.anbang_hwajangsil_jeondeung_taimeo
    to: active
    id: 타이머 시작했을 때
  - platform: state
    entity_id: timer.anbang_hwajangsil_jeondeung_taimeo
    to: idle
    id: 타이머 끝났을 때
  - type: motion
    platform: device
    device_id: 074713dc88e34b8142a3622d096ed9fa
    entity_id: binary_sensor.0x54ef4410001e9400_occupancy
    domain: binary_sensor
    id: 모션 감지
  - platform: device
    type: turned_on
    device_id: 03e31db151c8981bee6655bb610578f6
    entity_id: switch.0xa4c138b8230bc965_left
    domain: switch
    id: 전등 켜질 때
    for:
      hours: 0
      minutes: 0
      seconds: 0
  - type: opened
    platform: device
    device_id: eb85148a887e210575200b35358f3bdb
    entity_id: binary_sensor.0x00158d0008091ca0_contact
    domain: binary_sensor
    id: 문 열릴 때
    for:
      hours: 0
      minutes: 0
      seconds: 0
  - type: not_opened
    platform: device
    device_id: eb85148a887e210575200b35358f3bdb
    entity_id: binary_sensor.0x00158d0008091ca0_contact
    domain: binary_sensor
    id: 문 닫힐 때
    for:
      hours: 0
      minutes: 0
      seconds: 0
condition: []
action:
  - choose:
      - conditions:
          - condition: trigger
            id: 모션 감지
        sequence:
          - service: timer.start
            data:
              duration: '00:03:00'
            target:
              entity_id: timer.anbang_hwajangsil_jeondeung_taimeo
      - conditions:
          - condition: or
            conditions:
              - condition: trigger
                id: 전등 켜질 때
              - condition: trigger
                id: 문 열릴 때
              - condition: trigger
                id: 문 닫힐 때
        sequence:
          - service: timer.start
            data:
              duration: '00:00:10'
            target:
              entity_id: timer.anbang_hwajangsil_jeondeung_taimeo
    default: []
  - choose:
      - conditions:
          - condition: trigger
            id: 타이머 시작했을 때
        sequence:
          - type: turn_on
            device_id: 03e31db151c8981bee6655bb610578f6
            entity_id: switch.0xa4c138b8230bc965_left
            domain: switch
      - conditions:
          - condition: trigger
            id: 타이머 끝났을 때
        sequence:
          - type: turn_off
            device_id: 03e31db151c8981bee6655bb610578f6
            entity_id: switch.0xa4c138b8230bc965_left
            domain: switch
    default: []
mode: parallel
max: 10

저희 집 환경에서는 이 자동화로 한동안 사용할 것 같습니다.

 

반응형