제가 사용하고 있는 집안 환기 관련한 Rule Machine으로 작성한 자동화 입니다.
ST에서는 WebCore를 이용해서 자동화해서 사용하였는데 Hubitat에서는 동일하게 WebCore에서는 정상 작동을 하지 않더라구요. 그래서 Rule Machine으로 작성하여 사용 중입니다.
첫번째는 베란다 창문을 열면 tts로 환기 시작을 알려주고 창문을 닫으면 환기 시간을 계산해서 tts로 알려주는 자동화 입니다.
베란다 창문은 앞서 소개시켜드린 Group Sensor +로 그룹으로 묶어서 사용하고 있습니다.
로컬 변수를 선언하여 환기 시간을 계산하였습니다.
작동 절차는 창문을 열면 현재 시간을 초 단위로 open time과 start time 변수에 값을 넣어주고
창문을 닫으면 현재 시간을 초 단위로 end time 변수에 값을 넣어준 다음
close time - open time의 계산 값을 temp에 넣어줍니다.
여기서 temp 변수 값을 60으로 나눠서 total time에 결과 값을 넣어줍니다.

중간에 로컬 변수에는 없는 start time 이라는 변수가 있는데 이 변수는 Hub Setting의 Hub Variables에 선언한 글로벌 변수 입니다. 이 변수는 두번째 환기 자동화에서 사용하게 됩니다.

----------------------------------------------------------------------------------------------------------------------------------
첫번째 자동화 작동 절차를 쉽게 설명해드립니다.
먼저 Create Local Variables에서 필요한 변수를 만들어 줍니다.
창문이 열리는 시간 값이 들어갈 open time, 창문이 닫히는 시간 값이 들어갈 close time,
환기 시간의 계산 값이 들어갈 temp, 초단위로 입력된 temp 값을 분 단위로 계산된 최종 값이 들어갈 total time
창문 열림/닫힘을 판단할 windows open 변수는 상쾌한 타입님이 소개시켜주신 Private Boolean으로 대체하시면 됩니다.
트리거는 Group Sensor +로 묶은 베란다 창문이 changed 인 경우로 설정했습니다.
이렇게 해야 Action 부분에서 if-then 을 이용해서 창문이 닫혀 있을때와 열려 있을 때 모두 자동화를 짤 수 있습니다.
Action에서 먼저 Conditional Actions -> IF Expression THEN을 선택해서 if-then 명령을 입력합니다.
조건문에 창문이 열려 있고 Private Boolean 값이 false인 경우를 입력합니다.
그리고 Then인 액션 항목에는 필요한 변수 값을 입력합니다.
Private Boolean 값을 True로 입력 (true : 창문 열림, false : 창문 닫힘)
open time과 start time엔 현재 시간 값을 초 단위로 입력 (아래 그림 참고)

환기 시작한다는 내용을 TTS로 내보냅니다. (저는 갤럭시 홈미니를 이용했습니다.)
여기까지가 창문이 열렸을 경우입니다.
이제 창문이 닫히는 경우입니다.
Conditional Actions -> ELSE-IF Expression THEN을 선택합니다.
조건문에는 창문이 닫혀 있는 경우와 Private Boolean 값이 true인 경우를 입력하고
then인 액션 항목에는 환기 시간 계산 항목이 들어가게됩니다.
close time에는 open time과 같은 방식으로 현재 시간 값을 초 단위로 입력합니다.
temp 항목에는 close time - open time의 계산식을 입력합니다. (아래 그림 참조) (결과 값이 초단위로 temp에 저장됨)

total time에는 위에서 계산된 temp 값을 60으로 나눈 계산식을 입력합니다. (temp에 저장된 초단위의 값을 60으로 나눠서 분단위로 계산)

나온 결과 값을 TTS와 텔레그램으로 알림을 보내줍니다.
결과를 TTS와 텔레그램으로 알림을 보낸 후 사용된 변수의 값들을 초기화 해줍니다. (아래 그림 참고)

----------------------------------------------------------------------------------------------------------------------------------
아래는 환기 관련 두번째 자동화 입니다.
환기 시간 이라는 가상 스위치를 하나 만든 다음 가상 스위치를 켜면 현재 환기 시간이 몇분인지 알려주는 자동화 입니다.
이 자동화에서 위에서 사용된 글로벌 변수인 start time의 값이 사용됩니다.

기존에는 windows open 이라는 변수를 선언해서 베란다 창문 열림과 닫힘을 true, false 처리도 같이 하였는데
상쾌한 타입님이 소개시켜주신 Private boolean으로 변경하였습니다.
'민군의 스마트홈 > Hubitat' 카테고리의 다른 글
| 디바이스 사용 시간을 추적하는 App "Device Active Time Tracker App" & TV 시청 알림 (0) | 2025.09.02 |
|---|---|
| 정각에 스피커로 시간 알림 받기 (갤럭시 홈 미니 버전) (0) | 2025.09.02 |
| 정각에 스피커로 시간 알림 받기 (0) | 2025.09.02 |
| 룰머신에서 변수로 받아온 time 값을 시간, 분으로 분리하는 방법 (0) | 2025.09.02 |
| 센서를 그룹으로 묶어주는 App : Sensor Group + (0) | 2025.09.02 |