안녕하세요~ 레이군 입니다.
오늘은 홈 어시스턴트의 자동화와 스크립트에서 강력한 기능을 제공해주는 액션에 대해 알아보겠습니다.
그것은 바로, If-Then과 선택(choose) 인데요
이 두가지는 거의 비슷한 기능을 담당하고 있습니다.
기본은 이름에서 알 수 있듯이, 만약 A라는 조건이면 - a 동작을 실행하라 입니다.
그리고 거기에 더해, A조건을 만족하지 않으면 - b 독작을 실행하라 라고 할 수 있죠.
![](https://blog.kakaocdn.net/dn/l0a9u/btrDtuI5Y4I/KIkgnNbjkUCk3OKeQx5HaK/img.png)
If-Then은 크게 3가지 부분으로 나눠집니다.
가장 위 If 영역은 필수값으로, 만약 어떤 조건이면 동작을 실행하라 라는 기준이 되는 상태를 지정합니다.
이곳에서 지정할 수 있는건 자동화의 조건(condition)에서 지정할 수 있는 모든것 입니다.
그리고 Then 영역도 필수값이며, 위 If에서 지정한 조건이 만족할 경우 실행할 동작을 지정합니다.
동작은 마찬가지로 자동화의 동작(action) 에서 할 수 있는 모든것 입니다.
마지막 Else는 선택값 이며, If를 만족하지 않을때 실행할 동작을 지정합니다.
선택이기 때문에 비워두셔도 되겠죠?
선택(choose) 도 If-Then과 거의 비슷합니다.
다른점이 있다면, If-Then은 A or NOT 의 2가지 선택지 이고
선택(choose)는 A or NOT 부터 A or B or C or D....Z or NOT 형태로 만들 수 있습니다.
If - Then / else if - then / else if - then / ELSE 라고 생각하시면 되겠죠.
![](https://blog.kakaocdn.net/dn/t8C50/btrDqUhSrv4/mSF756wgY0n42zz5E9O301/img.png)
(기본적으로 옵션 1만 활성화 되어있고, 옵션2는 설명을 위해 추가 후 캡쳐 하였습니다.)
기본적으로 옵션 1 항목(조건/동작) 과 기본동작 으로 나눠지며
옵션 추가는 숫자 제한이 없는것 같습니다(30개 까지는 추가해 봤는데... 이정도면 다 된다고 봐야겠죠)
옵션을 추가지정 하지 않았다면 다음과 같이 동작합니다.
옵션1의 조건을 만족하면 - 옵션1의 동작을 실행
옵션 1의 조건을 만족하지 않는다면 - 기본 동작을 실행
옵션을 추가지정 하였다면
옵션 1의 조건을 만족하면 - 옵션 1의 동작을 실행
옵션 1의 조건을 만족하지 않은 상태로, 옵션 2의 조건을 만족하면 - 옵션 2의 동작을 실행
옵션 1과 옵션 2의 조건을 만족하지 않은 상태로, 옵션 3의 조건을 만족하면 - 옵션 3의 동작을 실행
옵션 1, 2, 3 모두의 조건을 만족하지 않는다면 - 기본 동작을 실행
간단하죠?
이런 If-Then 과 선택 항목을 작성할때는 조건 값의 순서에 주의해야 합니다.
이건 template로 if - elif - else 형태로 작성할때도 동일하니 참조해 주세요.
모든 조건값은, 순서대로 체크하며 가장 먼저 만족하는걸 선택하게 됩니다.
가령 조건 A / B / C가 있다고 합시다.
이러면 경우의 수가 총 7가지가 나오겠죠?
![](https://blog.kakaocdn.net/dn/ccW2NL/btrDtiCwO8Z/U8r6KOkgTB3yQhx6oZAWx1/img.png)
(A / B / C / A+ / A+C / B+C / A+B+C)
이걸 각각 값에 따라 다른 동작을 실행하려고 한다면 어떤 순서로 넣어야 할까요?
(A+B+C / A+B / A+C / B+C / A / B / C) 순서 입니다.
이걸 조합수로 구분하면 (3 / 2 / 1) 입니다.
각 카테고리 내에서 순서는 상관 없지만, 반드시 3 / 2 / 1 의 순서를 지키셔야 해요.
만약 B와 C가 열려있다고 합시다.
이걸 (A / B / C / A+B / A+C / B+C / A+B+C) 이 순서로 입력한 옵션으로 진행하게 되면
![](https://blog.kakaocdn.net/dn/co6AXV/btrDyoBuPCr/5XQq1tkCBp6LF2iZlhUL91/img.png)
두번째 옵션( B ) 에서 선택이 진행됩니다.
A를 만족? -> N -> B를 만족? -> Y 이기 때문에 원하는 B+C 상태까지 체크하기 전에 끝납니다.
(A+B+C / A+B / A+C / B+C / A / B / C) 이 순서로 진행하게 되면?
![](https://blog.kakaocdn.net/dn/8o70n/btrDknkGD4N/cZoKMrOyOv1d5KaJCnkoNK/img.png)
A+B+C를 만족? -> N -> A+B를 만족? -> N -> A+C를 만족? -> N -> B+C를 만족? -> Y 인거죠.
그러므로 If-Then이나 선택, template의 if 를 쓸때는 언제나
가장 달성하기 어려운 조건 = 가장 앞, 그 다음으로 어려운 조건 = 두번째 ~~~ 가장 쉬운조건 = 마지막
이 순서로 배치하시면 됩니다.
자 오늘은 간단한 If-Then과 선택의 사용법 기초에 대해 알아보았습니다.
여기에 따르는 자세한 내용은...음....
나중에 기회가 되면 그때...!
다음에 또 뵈요~
'SmartHome. IoT > SmartHome 응용' 카테고리의 다른 글
시놀로지 NAS에 VMM으로 HomeAssistant 설치하기 (0) | 2022.06.16 |
---|---|
HA 설치방법 최신화(라즈비안 + HA Supervised) (3) | 2022.06.14 |
Home Assistant 에서 자동화 실행 중 종료하기 (0) | 2022.05.29 |
HomeAssistant의 자동화를 알아보기 - 6.자동화 구성(스압주의) (0) | 2022.05.12 |
HomeAssistant의 자동화를 알아보기 - 5.유용한 도구 (0) | 2022.05.12 |