본문 바로가기

IT/IoT

[HA] Home Assistant 자동화(Automation) 기초

반응형

Home Assistant는 연동된 센서나 스위치 등을 활용해서 자동화를 구성할 수 있습니다.

예를 들어 집 안에 사람이 없을 때 멀티탭을 꺼서 대기 전원을 차단시킬 수 있습니다.

혹은 아침에 해가 뜨면 자동으로 전동 커튼이 열리게 하는 기능 등을 구현할 수도 있습니다.

Home Assistant의 자동화는 기본적으로 아래와 같은 구조로 되어 있습니다.

(trigger)

When Paulus arrives home

(condition)

and it is after sunset:

(action)

Turn the lights in the living room on

위의 예제는 사람이 집에 돌아오면(trigger) 해가 졌는지를 체크(condition)합니다.

그리고 해가 졌으면 거실의 전등을 켜는 동작(action)을 실행합니다.

HA의 자동화는 이렇게 trigger, condition, action의 세 가지로 구성되어 있습니다.

자동화 관련 설정은 config 디렉터리의 automations.yaml에 추가하면 됩니다.

sudo nano /data/homeassistant/config/automations.yaml

다음 예제는 컴퓨터가 꺼지면 스마트 플러그를 끄는 동작을 하는 스크립트입니다.

PC가 꺼져도 대기 전력이 소모되는데 완전히 전원을 차단하는 기능입니다.

아래는 플러그의 사용 전력이 40 이하로 떨어지면 플러그를 끄는 스크립트입니다.

- alias: Turn off your computer automatically
  initial_state: true
  trigger:
    platform: numeric_state
    entity_id: switch.bedrood_desktop
    value_template: "{{ state.attributes.load_power }}"
    below: 40
  condition:
    condition: state
    entity_id: switch.bedrood_desktop
    state: 'on'
  action:
    - service: switch.turn_off
      entity_id: switch.bedrood_desktop

YAML의 가장 먼저 나오는 alias는 해당 자동화의 이름입니다.

다음으로 initial_state는 HA가 켜질 때 해당 자동화가 활성화될 것인지를 지정합니다.

값을 true로 설정하면 HA를 재시작하거나 할 때 자동화가 기본적으로 활성화됩니다.

필요할 때만 UI 등에서 수동으로 켜고 싶은 경우 false를 입력하면 됩니다.

그 이후로는 위에서 설명한 trigger, condition, action이 차례로 나옵니다.

 

1. Trigger

먼저 triggerplatform은 event, homeassistant, mqtt, state, sun 등이 지원됩니다.

여기서 numeric_state는 숫자 값을 사용한다는 의미입니다.

STATES

HA 좌측의 Developer Tools 메뉴의 STATES 탭으로 이동합니다.

여기서 좌측에 보이는 각 디바이스나 센서의 entity_idvalue_template을 위한 값을 확인할 수 있습니다.

사용 중인 멀티탭의 ID인 switch.bedroom_desktop을 entity_id에 입력합니다.

value_template은 "{{ state.attributes.상태 이름 }}" 형식으로 입력하면 됩니다.

여기서는 load_power를 사용하기 때문에 "{{ state.attributes.load_power }}"를 입력했습니다.

numeric_state는 above나 below를 선택할 수 있습니다.

컴퓨터가 꺼지면 사용 전력이 40 밑으로 내려가기 때문에 below: 40을 입력했습니다.

이 부분은 본인의 환경을 충분히 테스트한 이후에 값을 설정하면 됩니다.

 

2. Condition

다음은 condition 설정으로 해당 값이 true일 때만 action이 동작합니다.

여기서는 멀티탭이 켜져 있는 상태일 때만 꺼지도록 설정을 했습니다.

동일한 멀티탭의 상태를 확인하기 때문에 entity_id는 trigger와 동일합니다.

상태를 체크하기 위해 condition을 state로 입력하고 state 값은 'on'을 입력합니다.

상태 값(state)은 반드시 ''(Single Quotes) 사이에 위치해야 합니다.

이것은 멀티탭을 끄는 동작이 멀티탭이 켜진 상태에만 동작하도록 하기 위한 조건입니다.

 

3. Action

마지막은 실제로 수행할 동작인 action 설정입니다.

Services

실행 가능한 동작들의 목록은 Developer Tools의 SERVICES 탭에서 확인 가능합니다.

여기서는 스위치를 끄기 위한 동작은 switch.turn_off를 사용했습니다.

서비스를 선택하면 해당 서비스로 동작하는 엔티티들의 리스트를 확인할 수 있습니다.

실제로 동작하는 여부를 확인하기 위해서 CALL SERVICE를 눌러서 테스트를 해볼 수도 있습니다.

멀티탭에 사용 중인 컴퓨터가 연결되어 있다면 연결을 해제하고 테스트할 것을 권장합니다.

 

이것으로 기본적인 자동화 설정이 완료됩니다.

이제 컴퓨터가 꺼지면 대기 전력을 차단하기 위해 멀티탭이 꺼지게 됩니다.

최신 메인보드들은 AC전원이 복구되면 자동으로 켜지게 할 수 있는 기능들이 존재합니다.

해당 기능과 함께 하면 외부에서도 집 안의 PC를 켜거나 끄는 것이 가능합니다.

각각의 설정은 응용이 가능하며 다양한 조건 등을 설정하는 것도 가능합니다.

반응형