안녕하세요~ 레이군 입니다.
오늘은 홈 어시스턴트 사용중 자동화 동작에 시간이 소요되는 경우 임의로 해당 자동화를 종료하는걸 해볼께요.
자동화의 종료 방법은 여러가지가 있는데, 일단 기본적인 구성이 필요합니다.
보통 자동화는, A라는 트리거를 만족하면 -> B라는 조건을 확인 후 -> C라는 동작을 진행합니다.
HA에서 지원하는 자동화는 트리거를 여러개 설정할 수 있고, 각 트리거별로 ID를 지정할 수 있으며
동작 진행시 if-then 또는 선택(choose) 등을 통해 해당 트리거 ID별로 동작을 지정할 수 있습니다.
그리고 HA의 자동화 동작방식은 단일, 재시작, 대기열, 병렬 등 4가지 개념이 존재합니다.
https://blog.naver.com/ray0412/222727263734
기본 개념에 대해 더 알고싶으시면, 위 링크의 중간정도를 봐주시면 됩니다.
이 두가지를 합하면, 자동화 진행중 원하는 트리거를 발생시켜서 -> 진행중인 자동화의 중지가 가능합니다.
트리거의 방식에는 버튼이나 스위치 동작을 인식할수도 있고, 재실유무라던지 기타 다양한걸 사용할 수 있지만
저는 HA카페에 올라온 질문글로 인해 작성을 시작한 것이므로, 다른 자동화의 시작을 트리거로 삼아보겠습니다.
질문글은, A라는 자동화가 동작중(딜레이 등으로 액션의 시간이 긴 자동화) B라는 자동화가 트리거 된다면
A라는 자동화의 진행중인 동작을 중지할 수 있는 방법이 있는가? 였습니다.
![](https://blog.kakaocdn.net/dn/uJ1qC/btrDmWNn9s9/7lKM3sOOUk9kc36Gu3qM0K/img.png)
전체 구성은 위와 같습니다.
여기서 중요한건 3부분 인데, 하나씩 살펴보도록 하겠습니다.
![](https://blog.kakaocdn.net/dn/31qeH/btrDoaRWKYu/8VvAP1rL9REjNqXr44kRP0/img.png)
가장 먼저 확인해야할건, 자동화 모드의 설정 입니다.
자동화 모드는 기본적으로 단일(single)로 설정되어 있는데, 이걸 재시작(restart) 로 바꿔줘야 합니다.
![](https://blog.kakaocdn.net/dn/3rLOW/btrDlkaakgA/yjpbmxWATFqmD0sCM6lCnk/img.png)
그리고 두번째로는, 자동화 중지에 필요한 트리거를 설정하는 것 입니다.
저는 test_B라는 자동화가 실행될 때 트리거 되기를 원해서 설정해 보았습니다.
트리거 유형을 상태(state)로 설정 후 구성요소에 자동화를 선택하고
속성 항목에 last_triggered 를 넣어줍니다. 이전/이후 항목은 비워둡니다.
이렇게 하면, 해당 구성요소의 last_triggered라는 속성(attributes)가 변경될때 트리거 됩니다.
저 항목은 말 그대로 자동화가 트리거 될때 변경되므로, 자동화가 시작되었다고 인식할 수 있습니다.
그리고 가장 중요한, 트리거 ID를 설정해 주셔야 합니다.
우측 상단 3점 - 트리거 ID수정 을 진행해서 적당한 트리거 ID를 입력해 줍니다.
![](https://blog.kakaocdn.net/dn/cwSyZW/btrDlYYZ6AK/oF9iQvlv0ekZr6EyPWlq81/img.png)
그리고 동작부분 맨 앞에 if-then 을 넣어주세요.
If 값은 트리거 - stop(중지용 트리거ID로 설정한 값) 으로 정하고
Then의 동작은 중지(stop) 로 넣어줍니다.
Else 부분은 비워두시면 됩니다.
그리고 그 아래쪽에 원래 진행할 자동화를 넣어주시면 됩니다.
물론 Else 부분에 자동화 진행할걸 넣어주셔도 무방하긴 합니다.
하지만 그건 자동화 구성단계에서 부터 중지를 염두하고 만들어야 하는 부분이라서요..
저는 기존에 쓰던 자동화를 -> 중간에 중지하는걸로 수정하기 라는 목적으로 진행했습니다.
그리고 해당 중지 자동화를 비활성화 하기에도 따로 분리해 두는것이 편하기도 하구요.
![](https://blog.kakaocdn.net/dn/xGgsg/btrDoUnNdga/wUcYjEzWkfIy5KQYke3R11/img.gif)
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이 안 꺼지고 있지요.
자 오늘 내용은 여기까지!
다음에 또 뵈요~
'SmartHome. IoT > SmartHome 응용' 카테고리의 다른 글
HA 설치방법 최신화(라즈비안 + HA Supervised) (3) | 2022.06.14 |
---|---|
Home Assistant 자동화에서 If-Then 과 선택(choose) 은 어떻게 동작할까? (0) | 2022.05.30 |
HomeAssistant의 자동화를 알아보기 - 6.자동화 구성(스압주의) (0) | 2022.05.12 |
HomeAssistant의 자동화를 알아보기 - 5.유용한 도구 (0) | 2022.05.12 |
HomeAssistant의 자동화를 알아보기 - 4.동작 (0) | 2022.05.12 |