본문 바로가기

SmartHome. IoT/SmartHome 응용

Home Assistant 에서 자동화 실행 중 종료하기

728x90
반응형

안녕하세요~ 레이군 입니다.

오늘은 홈 어시스턴트 사용중 자동화 동작에 시간이 소요되는 경우 임의로 해당 자동화를 종료하는걸 해볼께요.

자동화의 종료 방법은 여러가지가 있는데, 일단 기본적인 구성이 필요합니다.

보통 자동화는, A라는 트리거를 만족하면 -> B라는 조건을 확인 후 -> C라는 동작을 진행합니다.

HA에서 지원하는 자동화는 트리거를 여러개 설정할 수 있고, 각 트리거별로 ID를 지정할 수 있으며

동작 진행시 if-then 또는 선택(choose) 등을 통해 해당 트리거 ID별로 동작을 지정할 수 있습니다.

그리고 HA의 자동화 동작방식은 단일, 재시작, 대기열, 병렬 등 4가지 개념이 존재합니다.

https://blog.naver.com/ray0412/222727263734

기본 개념에 대해 더 알고싶으시면, 위 링크의 중간정도를 봐주시면 됩니다.

이 두가지를 합하면, 자동화 진행중 원하는 트리거를 발생시켜서 -> 진행중인 자동화의 중지가 가능합니다.

트리거의 방식에는 버튼이나 스위치 동작을 인식할수도 있고, 재실유무라던지 기타 다양한걸 사용할 수 있지만

저는 HA카페에 올라온 질문글로 인해 작성을 시작한 것이므로, 다른 자동화의 시작을 트리거로 삼아보겠습니다.

질문글은, A라는 자동화가 동작중(딜레이 등으로 액션의 시간이 긴 자동화) B라는 자동화가 트리거 된다면

A라는 자동화의 진행중인 동작을 중지할 수 있는 방법이 있는가? 였습니다.

전체 구성은 위와 같습니다.

여기서 중요한건 3부분 인데, 하나씩 살펴보도록 하겠습니다.

가장 먼저 확인해야할건, 자동화 모드의 설정 입니다.

자동화 모드는 기본적으로 단일(single)로 설정되어 있는데, 이걸 재시작(restart) 로 바꿔줘야 합니다.

그리고 두번째로는, 자동화 중지에 필요한 트리거를 설정하는 것 입니다.

저는 test_B라는 자동화가 실행될 때 트리거 되기를 원해서 설정해 보았습니다.

트리거 유형을 상태(state)로 설정 후 구성요소에 자동화를 선택하고

속성 항목에 last_triggered 를 넣어줍니다. 이전/이후 항목은 비워둡니다.

이렇게 하면, 해당 구성요소의 last_triggered라는 속성(attributes)가 변경될때 트리거 됩니다.

저 항목은 말 그대로 자동화가 트리거 될때 변경되므로, 자동화가 시작되었다고 인식할 수 있습니다.

그리고 가장 중요한, 트리거 ID를 설정해 주셔야 합니다.

우측 상단 3점 - 트리거 ID수정 을 진행해서 적당한 트리거 ID를 입력해 줍니다.

그리고 동작부분 맨 앞에 if-then 을 넣어주세요.

If 값은 트리거 - stop(중지용 트리거ID로 설정한 값) 으로 정하고

Then의 동작은 중지(stop) 로 넣어줍니다.

Else 부분은 비워두시면 됩니다.

그리고 그 아래쪽에 원래 진행할 자동화를 넣어주시면 됩니다.

물론 Else 부분에 자동화 진행할걸 넣어주셔도 무방하긴 합니다.

하지만 그건 자동화 구성단계에서 부터 중지를 염두하고 만들어야 하는 부분이라서요..

저는 기존에 쓰던 자동화를 -> 중간에 중지하는걸로 수정하기 라는 목적으로 진행했습니다.

그리고 해당 중지 자동화를 비활성화 하기에도 따로 분리해 두는것이 편하기도 하구요.

test_A 자동화는 = test_1이 on 될때 -> test_2를 on 시키고 -> 5초 딜레이 후 -> test_2 를 off 시킴

test_B 자동화가 트리거 되면 -> test_A 자동화를 멈춤

test_B 자동화는 = test_3 이 on 될때 트리거 됨

03:00에 test_1 값을 on 시키면, test_2가 on 되고 5초 후 off 되는걸 볼 수 있습니다.

03:10에 진행된 자동화는, 동일하게 test_2가 on 되었지만, 5초가 흐르기 전에 test_3을 on 시키면서

test_B 자동화가 트리거 되고, 그로인해 test_A 자동화가 중지되는걸 볼 수 있습니다.

5초 지나도 test_2이 안 꺼지고 있지요.

자 오늘 내용은 여기까지!

다음에 또 뵈요~

728x90
반응형