본문 바로가기

SmartHome. IoT/SmartHome 응용

[HA] 간단한 자동화를 만드는 과정..

728x90
반응형

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

요즘 날씨가 많이 추워졌습니다.

그 덕분에 환기를 하다가 빨리 문을 닫고 싶어지는데요...(전열교환기가 없어요 ㅠ.ㅜ)

Co2 수치를 낮추고자 환기를 하는데, 일정수준 이하로 떨어뜨려야 좀 의미가 있고..

그렇다고 너무 오래 환기를 하자니, 이미 수치는 다 떨어져서 집안 온도만 낮아지는 상태고..

그래서 적당히 떨어지면 알려주자! 라는 마음에 자동화를 만들었습니다.

그 과정에서 제가 고민한 내용들을 함께 알아보실까요?

전체 모습

자 우선 전체적인 내용을 한번 볼께요.

트리거 2개, 조건 4개, 동작 1개로 이루어진 심플한 자동화 입니다.

여기에 사용된 구성요소는, Co2센서(AQM-Co2) 1개와

2개의 토글 도우미(input_boolean), 그리고 TTS를 재생할 구글홈 스피커 입니다.

TTS는 Edge TTS 를 사용하였습니다.

각각의 내용을 보면 간단하게 이루어져 있습니다.

트리거

수치상태 - AQM-Co2 / 450이하 2분 유지

HA - 시작 이벤트

조건

수치상태 - AQM-Co2 / 450이하

상태 - 토글1(환기모드) / on

상태 - 토글2(재실모드) / on

특정 시간

동작

TTS 발화

이제 하나씩 알아볼까요?

트리거

가장 먼저 트리거 입니다.

저는 트리거를 2개 설정했습니다.

숫치상태 트리거를 이용해서, AQM-Co2라는 센서의 수치가 450 이하 로 내려갈때 트리거 시킬건데요

경과 시간을 2분으로 설정해서 순간적으로 튀는 경우를 방지하고자 했습니다.

이렇게 설정하면, 450 아래로 내려간 상태를 2분동안 유지해야만 트리거가 되죠.

Co2 수치는 실외일때 기준 400ppm정도를 기준으로 삼습니다. 물론 요즘은 좀 높아졌고, 지역에 따라 다르지만

그래도 보통 420ppm정도는 유지합니다.

Co2센서들은 켈리브레이션을 하면 현 상태 = 400ppm 으로 인지하기 때문에 450정도로 설정하면 적당할것 같았어요.

물론 이 기준 수치는, 사용하시는 센서와 환기할때의 트랜드 변화를 체크해서 반영하셔야 합니다.

너무 타이트하게(400ppm 이라던지, 410ppm이라던지) 하면 조건을 맞추기가 쉽지 않을 수 있습니다.

그런데, 450이상인 상태에서 HA가 재시작 된다거나 하고, 그 틈에 수치가 450 미만으로 떨어진다면...

이 트리거는 소용이 없게 됩니다.

왜냐면 수치상태 라는 트리거(의 below)는, 기준 수치 이상 -> 미만 으로 '변화하는게 감지될때 만' 동작하거든요.

이미 기준수치 아래로 내려갔다면, 거기서 아무리 수치가 변하더라도 트리거 되지 않습니다.

물론 수치가 변동되다가 기준수치 위로 올라갔다가 다시 내려가면 트리거가 되긴 합니다.

하지만 환기의 특성상 낮아지면 낮아졌지 올라가기는 어렵거든요.. 그러므로 대안이 필요하죠.

두번째 트리거는 HomeAssistant 트리거로, 시작 이벤트를 넣었습니다.

이걸 설정하면, 혹시 HA가 재시작 되는 순간에도 트리거가 되니까 수치상태 트리거의 약점을 극복할 수 있습니다.

물론, 이 경우 HA가 재시작 되면 무조건 트리거가 되니 그에 따른 제한사항이 필요하겠죠.

조건

다음으로 조건을 알아보겠습니다.

트리거가 단순한 만큼, 조건에서 오동작을 방지하기 위한 노력을 해줘야 합니다.

첫번재 조건은 AQM-Co2라는 센서의 수치가 450 이하일때 로 지정했습니다.

어차피 트리거가 해당 센서의 수치 450 이하로 2분 유지일때니 필요없는것 아니냐? 라고 하실 수 있지만..

트리거가 저거 하나라면 필요 없는게 맞지만, 우리는 HA재시작시를 고려해서 트리거를 하나 더 넣었기 때문에

이 조건이 없다면 시도때도 없이 알림이 발생할 수 있으므로 제한을 둬야 합니다.

두번째 조건은 토글값인 환기모드 입니다.

이건 제가 만들어둔 토글값 이고, 단순하게 양쪽 베란다 창문이 모두 열려있으면 = 토글 on

모두 닫혀있으면 = 토글 off 가 되는 자동화가 적용되어 있습니다.

이 자동화의 목적이 환기가 완료되면 = 창문을 닫으라는 알림을 발생시키는 것이니 만큼

창문이 열려있지 않을때 알림을 받을 이유가 없으므로 해당 토글값을 조건으로 설정했습니다.

세번째 트리거는 재실상태 토글값 입니다.

이것도 환기모드와 마찬가지로 가족 폰중 하나라도 home 상태일때 = on

모두 not_home 상태일때 = off 시키는 자동화가 적용된 토글값 입니다.

off는 혹시 모를 튐 방지를 위해 not_home 상태가 10분 유지되면 동작하게 자동화를 구성해 뒀습니다.

사람이 집에 있을때만 알림을 받을 목적이므로 적용해 뒀습니다.

네번째 조건은, 시간 입니다.

06:30 이후 ~ 23:59 이전 사이에만 동작이 되겠죠.

이렇게 총 4개의 조건을 설정했고, 이 4가지를 모두 만족해야 다음 단계로 넘어갑니다.

동작

트리거 값을 만족해서 자동화가 시작되고, 조건을 '모두' 만족했다면 동작 단계로 넘어갑니다.

동작은 미디어 재생으로 지정했고, 플레이어는 거실에서 들을 수 있는 장치로 선택 후

플레이할 미디어는 Text to Speech(TTS) 를 사용할 것이고

제 HA에 설정된 총 3개의 TTS(Google, Google Cloud TTs, Edge TTS) 중

Edge TTS로 설정하여 환기 완료에 대한 알림 내용을 작성하였습니다.

이 내용을 말로 풀어내면 다음과 같겠죠.

(트리거)

AQM-Co2의 수치가 450 미만으로 내려간 상태로 2분 동안 유지되거나, HA가 시작될때

(조건)

AQM-Co2의 수치가 450미만 + 토글1(환기모드) on + 토글2(재실모드) on + 특정 시간의 조건이 모두 만족하면

(동작)

TTS를 허브라는 스피커로 방송하라...

여기에 추가적으로 고려해야 할 사항은 조건값이 만족된 상태에서 자동화가 또 동작하는 경우들 이겠죠.

자동화가 동작 했는데, 창문을 안 닫고 있다가 HA가 재시작 됨

자동화가 동작 했는데, 창문을 안 닫고 있다가 Co2센서 앞에서 운동을 해서 수치가 올라갔다 내려감

아니면 자동화 트리거는 만족했지만, 다른 이유로 조건이 불만족 될때 라던가요.

Co2수치는 450 미만이지만, GPS가 튀어서 재실모드가 빠졌다거나

환기모드 자동화를 잘못 짜서 환기모드 상태가 유지되지 않는다던가...뭐 그런것들요.

하지만 이것들은 일상적으로 발생할 수 있는 문제가 아니라고 판단되므로, 무시해도 될 변수인것 같아요.

이것까지 넣기엔 너무 귀찮고 별 효용성도 없어 보니이 제외하도록 하겠습니다.

자..... 자동화 작성은 대충 이런식으로 의식의 흐름을 따라 시나리오를 쓰고, 그에 맞춰 진행하시면 됩니다....!

참 쉽죠.....?

728x90
반응형