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

​

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

​

 

반응형