본문 바로가기

스마트 홈 자동화: 사람 위치 기반 감지 및 알림 시스템 디바이스 연동

스마트 홈 환경에서 특정 사용자의 상태(예: 위치 변경이나 집 도착)를 실시간으로 감지하고 이에 대한 알림을 제공하는 자동화 시스템을 구축하는 기본적인 예시입니다. 이러한 자동화는 다양한 상황에서 응용하여 활용할 수 있습니다.

활용 시나리오

  1. 위치 상태 변경 감지
    • 사용자가 특정 위치로 이동하거나 집을 떠났을 때 자동으로 알림을 발송.
  2. 스마트 디바이스 연동
    • 사용자가 집에 도착하면 조명을 켜거나, 집을 떠나면 보안 시스템을 활성화.
  3. 다중 사용자 모니터링
    • 가족 구성원의 상태를 실시간으로 추적하고, 이를 기반으로 추가 자동화를 트리거.

자동화 1: 상태 변경 이벤트 기반 알림과 상태 업데이트

alias: "Notify when person state changes"
description: "Detects state changes for person entities and sends notifications."
trigger:
  - platform: event
    event_type: state_changed
mode: parallel
max: 25
condition:
  condition: and
  conditions:
    - condition: template
      value_template: '{{ trigger.event.data.new_state.domain == "person" }}'
    - condition: template
      value_template: '{{ trigger.event.data.new_state.state == "home" }}'
action:
  - service: notify.telegram
    data:
      title: |
        *Person Status Alert*
      message: |
        Entity: {{ trigger.event.data.entity_id }}
        Current State: {{ states('trigger.event.data.entity_id') }}
        Is Home: {{ is_state('trigger.event.data.entity_id', 'home') }}
  - wait_template: '{{ not is_state("trigger.event.data.entity_id", "home") }}'
    timeout: "00:00:05"
    continue_on_timeout: true
  - condition: template
    value_template: "{{ not wait.completed }}"
  - service: person_health.overwrite_state
    data_template:
      entity_id: '{{ trigger.event.data.entity_id }}'
      state: 'OK'

트리거

  • 모든 state_changed 이벤트를 감지합니다.
  • 특정 조건에 따라 동작하도록 제한합니다.

조건

  • 변경된 엔티티가 person 도메인에 속하고, 상태가 home인 경우에만 실행됩니다.

액션

  • 텔레그램으로 사용자 상태 알림 발송
  • 사용자가 "home"에서 벗어날 때까지 최대 5초 대기
  • 대기 이후 상태를 'OK'로 업데이트

활용

  • 실시간 위치 상태 변경 알림
  • "home" 상태에서의 상태 유지 여부 확인
  • 상태 업데이트를 통해 추가 자동화 트리거 가능

자동화 2: 특정 사용자 상태 변경에 따른 알림

alias: "Notify when person moves"
description: "Notify when specific person entities move to a new state."
trigger:
  - platform: state
    entity_id:
      - person.yours_truly
      - person.my_better_half
    to: null
condition:
  - condition: template
    value_template: >-
      {{trigger.from_state is not none and trigger.from_state.state !=
      trigger.to_state.state}}
action:
  - service: notify.notify
    data:
      title: "{{ state_attr(trigger.entity_id, 'friendly_name') }} is on the move."
      message: >-
        {{ state_attr(trigger.entity_id, 'friendly_name') }} has moved from
        {{ trigger.from_state.state }} to {{ trigger.to_state.state }}.
mode: queued

트리거

  • 특정 person 엔티티(yours_truly, my_better_half)의 상태 변경을 감지합니다.
  • 상태 변경 결과 상태는 제한하지 않습니다.

조건

  • 이전 상태와 새로운 상태가 서로 다를 때만 실행됩니다.

액션

  • 알림을 통해 사용자 상태 변경 메시지를 전달합니다.
    • friendly_name: 사용자 이름
    • from_stateto_state: 이전 및 현재 상태 정보

활용

  • 특정 사용자의 상태 변화(예: 위치 이동) 추적
  • 사용자 이동 경로를 실시간으로 모니터링하여 알림 제공

통합된 활용 사례

1. 다중 사용자 상태 추적

  • 첫 번째 자동화는 모든 person 엔티티를 대상으로 하며, 사용자가 집에 도착했을 때 알림을 보냅니다.
  • 두 번째 자동화는 특정 person 엔티티를 대상으로 하며, 상태 변경에 따른 이동 알림을 제공합니다.

2. 스마트 홈 확장

  • 알림과 연동된 조명, 난방, 보안 시스템을 자동으로 제어할 수 있습니다.
    • 사용자가 "home" 상태가 되면 조명을 켜고, "not_home" 상태가 되면 보안 시스템을 활성화.
    • 텔레그램으로 알림 발송과 함께 스마트 디바이스 명령 전달 가능.

3. 업무와 가족 생활 관리

  • 직장 내 출퇴근 관리, 가족 구성원의 위치 파악.
  • 특정 시간에 따라 자동화 동작 조건 추가 가능(예: 야간 모드 활성화).

구성 요약

모든 사용자의 집 도착 시 알림

  • 모든 상태 변경 이벤트를 모니터링.
  • 조건부로 "home" 상태 변경 시 알림 및 상태 업데이트.

특정 사용자의 상태 이동 알림

  • 특정 사용자의 상태 변경을 감지.
  • 상태 변화에 따른 이동 경로 알림.

활용 기술

  • 텔레그램 알림 서비스 활용.
  • Home Assistant의 template 기능을 통해 상태 조건 정의.
  • 병렬 처리 및 큐 모드로 다중 사용자 환경 지원.

 

이 두 가지 자동화를 통합하여 Home Assistant 기반의 위치 추적 및 알림 시스템을 효과적으로 운영할 수 있습니다.

728x90

댓글