본문 바로가기

SmartHome. IoT/SmartHome 기본

HomeAssistant의 자동화를 알아보기 - 2.트리거

728x90
반응형

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

오늘은 홈 어시스턴트 자동화 알아보기 2편, 트리거에 대하여 입니다.

트리거, 조건, 동작은 동일한것도 다양하게 표현할 수 있기 때문에 매우 복잡한 부분입니다.

이번 강좌는 기본적인 내용 알아보기인 만큼, 각 메뉴에 대한 이해를 목표로 하겠습니다.

https://www.home-assistant.io/docs/automation/trigger/

트리거에 대한 자세한 내용은 위 원문을 참조하시면 좋습니다.

트리거는 꽤 많은 종류가 존재합니다.

Home Assistant, MQTT, 기기, 달력, 상태, 수치 상태, 시간, 시간 패턴, 웹 훅, 위치정보, 이벤트, 지역, 태그, 태양, 템플릿... 다양하죠?

이것들을 거의 다 쓰시는 분들도 있겠지만, 저는 주로 상태, 수치 상태, 시간, 태양 정도를 자주 씁니다.

그 외의 트리거에 대한 이해가 부족한 상태여서 자세한 내용을 다루기 어려운점 이해 부탁드립니다.

이제 시작해 볼까요?

공통 정보

트리거 우측 상단의 3점을 누르면, 몇가지 메뉴가 나옵니다.

메뉴는 총 5가지(버전에 따라 다를 수 있음) 가 존재하며 각각의 역할은 다음과 같습니다.

트리거 ID 수정

트리거 ID 수정 부분은, 조건이나 동작에서 해당 트리거 동작을 감지할때 사용합니다.

기본은 비활성화 이지만, 트리거 ID 수정을 누르면 임의의 ID를 생성할 수 있습니다.

이 트리거 ID는, 해당 자동화 내에서만 유효합니다.

YAML로 편집하기

UI에디트가 아닌 YAML 방식으로 편집합니다.

자동화 구문을 복사해서 붙여넣기 하거나 할때 편하겠지요.

YAML은 항상 들여쓰기를 조심하셔야 합니다!

일부 트리거 조건은 UI에디트가 불가능 하므로 YAML로만 편집해야 할수도 있습니다.

비활성화

최근 추가된 기능입니다.

트리거를 삭제허거나 하지 않고, 비활성화만 하여 자동화 구성을 변경할 수 있습니다.

테스트 삼아서 추가한 장치를 빼본다던지, 동일 기능을 가진 장치의 비교를 위한다던지..

쓸모는 여러가지겠지요?

복제하기, 삭제하기는 뭐... 아실테니 그냥 넘어가겠습니다.

이제 트리거의 종류별 동작에 대해 알아볼께요.

아참, 트리거에 대해 한가지 이해하셔야 할건...트리거는 자동화의 방아쇠를 당기는 '순간' 입니다.

불이 켜지는 '순간', 습도가 50%보다 높아지는 '순간', 도어센서가 열리는 '순간' 등등... 아셨죠?

Home Assistant

홈 어시스턴트의 시작/종료 이벤트를 감지합니다.

HA가 종료되거나, 시작될때 알림을 받고싶다면 이 트리거를 쓰면 되겠죠

MQTT

설정된 MQTT에서 오가는 데이터를 기반으로 트리거 합니다.

저는 MQTT라곤 거의 zigbee2mqtt만 쓰기때문에 딱히 쓰지 않는 트리거 입니다.

기기(device)

기기의 상태를 감지해서 트리거 합니다.

이 부분은, 센서 등 구성요소가 아닌 구성하기 - 기기 및 서비스 - 기기 항목에 표시되어 있는것들만 가능하며

기기에 따라 구성할 수 있는 조건이 달라집니다.

가장 아래쪽에 '동안' 부분은, for 항목으로 해당 조건이 xx:yy:zz 시간동안 유지되었다면 트리거 됩니다.

해당 시간 이내에 트리거 조건에서 벗어난다면, 트리거 되지 않습니다.

달력(calendar)

HA에서 지원하는 캘린더(구글캘린더 등) 의 일정 시작/종료 조건을 감지해서 트리거 합니다.

전 캘린더를 안 써서...

상태(state)

제가 가장 많이 사용하는 항목 이네요.

구성요소(entity)의 상태에 따라 트리거 되며, 구성요소와 속성(attributes) 를 선택할 수 있습니다.

구성요소는 여러개 선택할수도 있으며, or값 이므로 구성요소중 조건에 맞는것 하나만 있어도 트리거 됩니다.

이전/이후는 from/to 로써, 변화되는 기준값을 설정합니다.

이전 = on / 이후 = off 로 설정했다면, on->off 로 변경될때만 트리거 됩니다.

이전을 비우고, 이후를 off로 설정했다면, 어떤 상태에서든 -> off로 변경될때만 트리거 됩니다.

가령 장치가 사용 불가(unavailable) 상태였다가 off로 변해도 트리거 됩니다.

이전 / 이후로 모두 비우면, 장치에 모든 변화가 있을때 트리거 됩니다.

unavailable에서 on으로 가던, on에서 unavailable로 가던, off에서 on으로 가던... 다 트리거 됩니다.

이건 상태(state) 뿐만 아니라 속성(attributes)가 변경되도 트리거 됩니다.

속성 항목을 설정하면, 해당 속성의 값이 이전/이후 조건에 맞을때만 트리거 됩니다.

속성 까지만 정하고, 이전/이후를 비워두면 해당 속성이 변경되는 모든 시점에 트리거 됩니다.

경과 시간은, for으로 트리거 조건이 해당 시간동안 유지되었을 경우에 유효합니다.

수치 상태(numeric_state)

위에 설명드린 상태(state)의 숫자버전 입니다.

이상/이하 라고 표시되어 있지만, 미만/초과 라고 이해하셔야 합니다.

둘중 하나는 반드시 입력되어야 하며, 해당 조건이 만족하는 '순간' 트리거 됩니다.

가령, 이상 60 이라면 = 59.9 -> 60.1 로 넘어가는 순간 트리거 됩니다.

50 -> 61도, 40 -> 70도 트리거 되죠.

다만, 61->69 처럼 이미 60을 넘어선 상태라면, 트리거 조건을 만족하지 않습니다.

이하는 반대로 동작하겠죠? 큰 숫자에서 작은숫자로 넘어갈때만 동작합니다.

값 템플릿은, 해당 숫자를 템플릿 수식을 넣어서 계산해야 할때 사용합니다.

온도나 습도값을 일부 보간한다던가 할때 사용하는데... 이 부분은 템플릿에 대해 좀 아셔야 해요.

경과시간은...이제 아시죠?

시간(time)

시간은 특정 시간에 동작되는 트리거 입니다.시간/분 순서로 입력되며, 초 단위로는 안됩니다.

날짜/시간 입력 도우미 값을 설정하게 되면, input_datetime 에서 설정한 값으로 트리거가 됩니다.

해당 항목은 구성하기 - 기기 및 서비스 - 도우미 에서 추가하거나 수정할 수 있습니다.

물론 대시보드에 꺼내두고 편하게 수정할수도 있지요.

시간 패턴(time pattern)

시간 패턴은 특정 조건에 반복되는 트리거 입니다.

분 항목에 5를 입력한다면, 매 시간 5분마다 트리거가 됩니다. 1시 5분, 2시 5분 이렇게요.

분 항목에 /5를 입력한다면, 매 5분마다 트리거가 됩니다. 1시 5분, 1시 10분, 1시 15분 이렇게요.

시 항목에 10을 넣고, 분 항목에 /5를 입력한다면 10시 부터 매 5분마다 10시 55분가지 트리거가 됩니다.

웹 훅(webhook)

웹훅은... 제가 가장 모르겠는 부분이네요 ㅠ.ㅜ

http post 요청등에 응답하는 트리거라고 하네요.. 이쪽을 알고계시는 분들은 아마 딱 보면 아실거예요.

위치정보(geolocation)

위치정보는 GPS데이터 등을 받는게 있을경우 사용할 수 있습니다.

전 위치정보를 직접 받는 장치는 설정되어 있지 않아서 확인이 어렵네요..

이벤트(event)

이벤트는 HA에서 지원하는 각종 이벤트 값을 기준으로 트리거 시킬 수 있습니다.

전 주로, 샤오미 버튼으로 자동화 컨트롤 할때 사용하는데...

사용할 수 있는 이벤트 종류는 개발자도구-이벤트 쪽에 가셔서 우측에 보시면 있습니다.

지역(zone)

위치정보와 비슷하지만, GPS기반 device_tracker 를 추적하는 트리거 입니다.

GPS로 재실여부 판단할때 보조용도로 쓰기 좋습니다.

태그(tag)

HA에서 지원하는 nfc태그 스티커용 트리거 입니다.

현관문 앞에 하나 비치해 두고, 나갈때 태그하면 외출모드로 변경이라던지.. 이런걸 할 수 있겠죠

태양(sun)

일출/일몰을 기준으로 트리거 합니다.

오프셋을 선택해서 일몰 몇시간 전, 일출 몇시간 후 이런식으로도 설정이 가능하죠.

오프셋은 음수일 경우 이벤트 이전, 양수일 경우 이벤트 이후 입니다.

해돋이 선택 - 오프셋에 -00:30:00 을 입력한다면, 해돋이 30분 전이 트리거 시점이 됩니다.

sun트리거의 경우, 지역에서 설정한 위치 기반으로 일출/일몰 시간을 계산합니다.

템플릿(template)

템플릿은, 모든걸 할 수 있는 트리거 입니다.

다만, 그만큼 어렵죠.. 이건 제가 다룰 수 있을만한 수준이 아니라 적지를 못하겠습니다.

전 템플릿의 T정도만 아는 상황이라서요.. 너무나 어렵습니다 ㅠ.ㅜ

템플릿은 jinja 를 기반으로 합니다.

https://jinja.palletsprojects.com/en/latest/templates/

 
트리거에 대한 대략적인 내용을 알아보았습니다.

다음시간엔 조건(contition)을 알아볼께요~

 

728x90
반응형