본 자동화는 이전 글에 이어서
더 완벽한 자동화를 구축하고 싶은 사람들을 위한 자동화 설정이다.
이전글의 난이도가 중급 이라면
본글에서 소개하는 자동화는
3중 가상스위치를 활용하여 좀 더 복잡해지고
HA를 활용 해야하므로 난이도를 고급으로 봐야 할지도 모르겠다.
사실 HA만 추가된것이므로 중급 난이도로 봐도 무난한것 같다.
요약하자면 ST에서 3중 가상스위치를 활용하는것인데
나는 ST 자동화를 100% 신뢰할수 없으므로 홈어시스턴트를 보조로 사용하여 자동화를 구축하는 방법이다.
홈어시스턴트 자동화를 캡쳐해서 보여주자니 캡처가 너무 길어져서 yaml 코드로 보여주겠다
어차피 HA를 쓰려면 yaml을 알아야 하니 익숙해져야 한다.
alias: 아기 침대 카메라 모션 감지하면 가상 스위치 켜기 (베이비캠)
description: ""
triggers:
- type: motion
device_id: c6dfb6f1b3c3547d90c511d6521f2e11
entity_id: 8c86b7e89d6dab36bd3dcd6dad5c8211
domain: binary_sensor
trigger: device
id: 카메라 모션 감지 됬을때
- type: occupied
device_id: b812ad1c63c646e682f5fe25285b2e11
entity_id: 4dbdc63c244f04f661c68ded5d85bf11
domain: binary_sensor
trigger: device
for:
hours: 0
minutes: 0
seconds: 20
id: 안방 멀티 센터 모션 감지 되면
conditions: []
actions:
- if:
- condition: trigger
id:
- 카메라 모션 감지 됬을때
- 안방 멀티 센터 모션 감지 되면
then:
- if:
- condition: state
entity_id: number.anbang_sihaseu_jaesil_kaunteo_senseo_ha_people
state: "0"
then:
- if:
- condition: device
type: is_off
device_id: 70f61c6116d54b1819c9f2fa22d3f811
entity_id: 1f8e54a7433d99a177e9abb763104111
domain: switch
then:
- if:
- condition: device
type: is_off
device_id: 66d88df0917028719bfb32b1a8f52c11
entity_id: ed109091702fed687d5b53fa818e5811
domain: switch
then:
- type: turn_on
device_id: 66d88df0917028719bfb32b1a8f52c6
entity_id: ed109091702fed687d5b53fa818e587
domain: switch
mode: single
위와 같이 나는 2개의 트리거를 사용한다
1. 카메라에서 모션이 감지 됬을때
2. 멀티센서에서 모션을 20초간 감지하면 (카메라모션이 감지가 안됫을때 보조 트리거)
(안방 카운터가 0일때만)
아기 침대 움직임 알림 가상 스위치가 꺼져있으면
아기 침대 움직임 알림 이중체크 가상 스위치가 꺼져있으면
아기 침대 움직임 알림 이중체크 가상 스위치를 켠다
그럼 스싱에서 이중체크 가상스위치가 켜지면 움직임 알림 가상 스위치가 켜진다
(스싱 자동화 내역은 홈어시스턴트 내용이 끝난후 소개할게요)
그럼 이제 가상 스위치가 꺼지면 미디어플레이어 장치인 네스트 허브 맥스를 종료해야한다.
alias: 아기 침대 가상스위치 꺼지면 구글네스트허브 끄기 (베이비캠)
description: ""
triggers:
- type: turned_off
device_id: 70f61c6116d54b1819c9f2fa22d3f811
entity_id: 1f8e54a7433d99a177e9abb763104111
domain: switch
trigger: device
id: 움직임 알림 가상 스위치 꺼졌을때
conditions: []
actions:
- if:
- condition: trigger
id:
- 움직임 알림 가상 스위치 꺼졌을때
then:
- action: media_player.play_media
target:
entity_id: media_player.geosil_gugeulneseuteuheobeu
data:
media_content_id: media-source://camera/camera.doorbell_repeater_97af
media_content_type: image/jpeg
metadata:
title: Doorbell Repeater-97AF
thumbnail: /api/camera_proxy/camera.doorbell_repeater_97af
media_class: video
children_media_class: null
navigateIds:
- {}
- media_content_type: app
media_content_id: media-source://camera
- delay:
hours: 0
minutes: 0
seconds: 0
milliseconds: 10
- action: media_player.play_media
target:
entity_id: media_player.anbang_gugeulneseuteuheobeu
data:
media_content_id: media-source://camera/camera.doorbell_repeater_97af
media_content_type: image/jpeg
metadata:
title: Doorbell Repeater-97AF
thumbnail: /api/camera_proxy/camera.doorbell_repeater_97af
media_class: video
children_media_class: null
navigateIds:
- {}
- media_content_type: app
media_content_id: media-source://camera
- delay:
hours: 0
minutes: 0
seconds: 0
milliseconds: 10
- action: media_player.turn_off
metadata: {}
data: {}
target:
entity_id:
- media_player.geosil_gugeulneseuteuheobeu
- delay:
hours: 0
minutes: 0
seconds: 0
milliseconds: 10
- action: media_player.turn_off
metadata: {}
data: {}
target:
entity_id:
- media_player.anbang_gugeulneseuteuheobeu
mode: single
그리고 ST에서 혹시나 가상스위치가 꺼지지 않았을 경우에 대비해서 HA 에서 보조 자동화를 걸어둔다
alias: 아기 침대 가상 스위치 켜지면 가상스위치 자동 끄기 (보조)
description: ""
triggers:
- type: turned_on
device_id: 70f61c6116d54b1819c9f2fa22d3f811
entity_id: 1f8e54a7433d99a177e9abb763104111
domain: switch
trigger: device
id: 움직임 알림 가상 스위치 켜졌을때
enabled: true
- type: turned_on
device_id: b11a328dcb04347070bf1a67ee6f8911
entity_id: 152979aa0eb3810fa42e9006b40a3711
domain: switch
trigger: device
id: 울음 알림 가상 스위치 켜졌을때
enabled: true
- type: turned_on
device_id: 66d88df0917028719bfb32b1a8f52c11
entity_id: ed109091702fed687d5b53fa818e5811
domain: switch
trigger: device
id: 이중 체크 가상 스위치 켜졌을때
- type: turned_on
device_id: 2f6137d1224405fff2893fe94a805211
entity_id: 07510c92ab07c86e906e1eb9723ebb11
domain: switch
trigger: device
id: 아기 침대 수동 버튼 가상 스위치 켜졌을때
conditions: []
actions:
- if:
- condition: trigger
id:
- 움직임 알림 가상 스위치 켜졌을때
then:
- repeat:
sequence:
- delay:
hours: 0
minutes: 5
seconds: 2
milliseconds: 0
- if:
- condition: device
type: is_on
device_id: 70f61c6116d54b1819c9f2fa22d3f811
entity_id: 1f8e54a7433d99a177e9abb763104111
domain: switch
then:
- type: turn_off
device_id: 70f61c6116d54b1819c9f2fa22d3f811
entity_id: 1f8e54a7433d99a177e9abb763104111
domain: switch
while:
- condition: device
type: is_on
device_id: 70f61c6116d54b1819c9f2fa22d3f811
entity_id: 1f8e54a7433d99a177e9abb763104111
domain: switch
for:
hours: 0
minutes: 0
seconds: 10
- if:
- condition: trigger
id:
- 울음 알림 가상 스위치 켜졌을때
then:
- repeat:
sequence:
- delay:
hours: 0
minutes: 1
seconds: 2
milliseconds: 0
- if:
- condition: device
type: is_on
device_id: b11a328dcb04347070bf1a67ee6f8911
entity_id: 152979aa0eb3810fa42e9006b40a3711
domain: switch
then:
- type: turn_off
device_id: b11a328dcb04347070bf1a67ee6f8911
entity_id: 152979aa0eb3810fa42e9006b40a3711
domain: switch
while:
- condition: device
type: is_on
device_id: b11a328dcb04347070bf1a67ee6f8911
entity_id: 152979aa0eb3810fa42e9006b40a3711
domain: switch
for:
hours: 0
minutes: 0
seconds: 10
- if:
- condition: trigger
id:
- 이중 체크 가상 스위치 켜졌을때
then:
- repeat:
sequence:
- delay:
hours: 0
minutes: 1
seconds: 2
milliseconds: 0
- if:
- condition: device
type: is_on
device_id: 66d88df0917028719bfb32b1a8f52c11
entity_id: ed109091702fed687d5b53fa818e5811
domain: switch
then:
- type: turn_off
device_id: 66d88df0917028719bfb32b1a8f52c11
entity_id: ed109091702fed687d5b53fa818e5811
domain: switch
while:
- condition: device
type: is_on
device_id: 66d88df0917028719bfb32b1a8f52c11
entity_id: ed109091702fed687d5b53fa818e5811
domain: switch
for:
hours: 0
minutes: 0
seconds: 10
- if:
- condition: trigger
id:
- 아기 침대 수동 버튼 가상 스위치 켜졌을때
then:
- repeat:
sequence:
- delay:
hours: 0
minutes: 5
seconds: 2
milliseconds: 0
- if:
- condition: device
type: is_on
device_id: 2f6137d1224405fff2893fe94a805211
entity_id: 07510c92ab07c86e906e1eb9723ebb11
domain: switch
then:
- type: turn_off
device_id: 2f6137d1224405fff2893fe94a805211
entity_id: 07510c92ab07c86e906e1eb9723ebb11
domain: switch
while:
- condition: device
type: is_on
device_id: 2f6137d1224405fff2893fe94a805211
entity_id: 07510c92ab07c86e906e1eb9723ebb11
domain: switch
for:
hours: 0
minutes: 0
seconds: 10
mode: restart
여기까지가 HA 쪽 자동화 이다.
HA 자동화는 이렇게 코드로 깔끔하게 보여줄수 있는 반면에
ST쪽 자동화는 깔끔하지 못하다
물론 IDE 에서 JSON 코드로 볼수가 있지만
코드로 보기는 좀 어렵게 느껴진다
[
{
"if": {
"and": [
{
"between": {
"value": {
"time": {
"reference": "Now"
},
"type": "time"
},
"start": {
"time": {
"daysOfWeek": [
"Sun",
"Mon",
"Tue",
"Wed",
"Thu",
"Fri",
"Sat"
],
"reference": "Midnight",
"offset": {
"value": {
"integer": 420,
"type": "integer"
},
"unit": "Minute"
}
},
"type": "time"
},
"end": {
"time": {
"daysOfWeek": [
"Sun",
"Mon",
"Tue",
"Wed",
"Thu",
"Fri",
"Sat"
],
"reference": "Noon",
"offset": {
"value": {
"integer": 660,
"type": "integer"
},
"unit": "Minute"
}
},
"type": "time"
},
"changesOnly": false
},
"type": "between"
},
{
"equals": {
"left": {
"device": {
"devices": [
"9bf4bc30-afeb-4f7d-bb7e-2974747df811"
],
"component": "main",
"capability": "switch",
"attribute": "switch",
"trigger": "Always"
},
"type": "device"
},
"right": {
"string": "on",
"type": "string"
},
"changesOnly": false
},
"type": "equals"
},
{
"equals": {
"left": {
"device": {
"devices": [
"c162db48-dccf-410e-94b7-9fb063b1ed11"
],
"component": "main",
"capability": "switch",
"attribute": "switch",
"trigger": "Never"
},
"type": "device"
},
"right": {
"string": "off",
"type": "string"
},
"changesOnly": false
},
"type": "equals"
}
],
"type": "and",
"then": [
{
"notification": {
"push": {
"title": "(이중체크 꺼짐일때) 아기 침대 울음 알림(낮에만)",
"message": "베이비캠에서 아기 울음을 감지 하였습니다",
"target": {
"locationId": "f0f7c2e7-24cd-4b56-97cc-de63f4530411",
"userUuids": [
"a280961a-209d-761c-f9a8-8cbb161d0811"
]
}
},
"type": "push"
},
"type": "notification"
},
{
"notification": {
"audio": {
"message": "베이비캠에서 아기 울음을 감지 하였습니다",
"devices": [
"b8de2cbe-848c-65be-ddb9-a09fa1866a11"
],
"ttsProvider": {
"provider": "Bixby",
"locale": "ko-KR",
"profile": "F05",
"output": {
"format": "PCM"
}
}
},
"type": "audio"
},
"type": "notification"
}
],
"sequence": {
"then": "Parallel",
"else": "Parallel"
}
},
"type": "if"
}
]
이렇게 이미지로 보여줄수도 있지만
아무래도 모바일이 익숙한 ST 사용자들에게는 익숙하지 못할것이다.
자동화를 하나하나 캡쳐하자니 오히려 너무 캡쳐가 많아져서 보기가 어려울거 같아서
텍스트로 설명 하겠다
전체적으로 요약하자면
가상 스위치가 켜지면 구글 홈앱에서 베이비캠을 재생한다.
구글홈앱에서는 tapo 카메라 앱과 구글어시스턴트 연동,
오케이구글 기기동기화 해줘
의 사전 작업을 해둬야한다
나는 수동 스위치도 하나더 추가해서 사용중이다
그러면 3중이아닌 4중이므로 다중 스위치? 라고 정정해야겟다.
여기서부터 ST 자동화를 텍스트 코딩으로 설명하겠다.
1. 이중 체크 가상 스위치쪽 연관 자동화
1-1 자동화명: 아기 침대 움직임 알림 이중체크 가상 스위치 1분뒤 끄기
(선행조건) 없음
(조건) 아기 침대 움직임 알림 이중체크 가상 스위치 켜지면
(동작) 아기 침대 움직임 알림 이중체크 가상 스위치 끄기: 1분후
1-2 자동화명: (이중체크 꺼짐일때) 울음 켜지면 이중체크 켜짐
(선행조건) 아기 침대 움직임 알림 이중체크 가상스위치 꺼짐 상태에서
(조건) 아기 침대 울음 알림 가상 스위치 켜지면
(동작) 아기 침대 움직임 알림 이중체크 가상 스위치= 켜기 59초 후 끄기
1-3 자동화명: 아기 침대 움직임 알림 가상 스위치 켜지면 스피커 알림(낮에만)
(선행조건)
매일 아침 7시에서 23시 사이
아기 침대 움직임 알림 이중체크 가상스위치 꺼짐
(조건) 아기 침대 움직임 알림 가상 스위치 켜지면
(동작) 스피커에서 메세지 재생 -> 거실 갤럭시홈미니: 베이비캠에서 움직임이 발견되었습니다.
1-4 자동화명: (이중체크 꺼짐일때) 아기 침대 울음 알림 (낮에만)
(선행조건)
매일 아침 7시에서 23시 사이
아기침대 움직임 알림 이중체크 가상스위치 꺼져있으면
(조건) 아기 침대 울음 알림 가상 스위치가 켜지면
(동작)
멤버에게 알림 보내기 -> 스마트폰 푸쉬 알림
스피커에서 메세지 재생 -> 거실 갤럭시홈미니: 베이비캠에서 아기 울음을 감지 하였습니다.
1-5 자동화명: 알림 스위치 꺼짐 상태에서 이중체크 스위치 켜지면 알림 스위치 켜짐
(선행조건)
아기 침대 움직임 알림 가상 스위치 꺼짐
아기 침대 움직임 알림 수동 스위치 꺼짐
아기 침대 울음 알림 가상 스위치 꺼짐
(조건) 아기 침대 움직임 알림 이중체크 가상 스위치가 켜지면
(동작) 아기 침대 움직임 알림 가상 스위치 켜기 : 4분 59초 후 끄기
2. 움직임 알림 가상 스위치쪽 연관 자동화
1-1. 자동화명:아기 침대 움직임 알림 가상 스위치 5분 후 자동 끄기
(조건) 아기 침대 움직임 알림 가상 스위치 켜지면
(동작) 아기 침대 움직임 알림 가상 스위치 끄기 5분 후
3. 울음 알림 가상 스위치쪽 연관 자동화
1-1. 자동화명: 아기침대 움을 알림 가상 스위치 5분 후 자동 끄기
(조건) 아기 침대 울음 알림 가상 스위치 켜지면
(동작) 아기 침대 울음 알림 가상 스위치 끄기 5분 후
4. 아기 침대 수동 가상 스위치 연관 자동화
1-1. 자동화명: 아기 침대 수동 가상 스위치 5분 후 자동 끄기
(조건) 아기 침대 수동 가상 스위치 켜지면
(동작) 아기 침대 수동 가상 스위치 끄기 5분 후
----------------------------------------------------------------------
그리고 나서 구글홈앱 자동화를 셋팅하면되는데
일단 사전에 ST 와 구글홈이 연동되어 있는 상태여야 한다
또한
구글홈 앱에서 tapo 카메라 기기를 연동하고 + 네스트허브도 연동 되어 있어야 한다
OK 구글 베이비캠 보여 줘 라고 말하면 네스트 허브에서 카메라를 실시간 스트리밍이 정상적으로 된다면
이제 구글홈 앱에서 자동화를 셋팅한다
1. 자동화명: 아기 침대 움직임 알림 가상 스위치 켜지면 네스트 허브에서 카메라 재생
(시작조건) 아기 침대 움직임 알림 가상스위치 켜짐
(작업) 구글어시스턴트맞춤명령어: 베이비캠 보여 줘
(구성) 재생할 기기: 거실 네스트
2. 자동화명: 아기침대 울음 알림 가상 스위치 켜지면 네스트 허브에서 카메라 재생
(시작조건) 아기 침대 울음 알림 가상 스위치 켜짐
(작업) 구글어시스턴트맞춤명령어: 베이비캠 보여 줘
(구성) 재생할 기기: 거실 네스트
3. 자동화명: 아기침대 수동 가상 스위치 켜지면 네스트 허브에서 카메라 재생
(시작조건) 아기침대 수동 가상 스위치 켜짐
(작업) 구글어시스턴트맞춤명령어: 베이비캠 보여 줘
(구성) 재생할 기기: 거실 네스트
4. 가상스위치 꺼지면 미디어 종료 자동화 추가
(생략)
-------------------------------------------------------------------------------------------------
여기까지가 ST 가상 스위치를 활용한 구글홈앱 스마트하게 쓰기 자동화 이다
해당 자동화의 특징은 이중체크 가상스위치를 통해서 중복으로 카메라가 실행되는것을 방지하고
무선 물리 버튼 스위치로 직접 카메라를 스트리밍 할수도 있다
해당 자동화는 육아에서 매우 편리한 자동화 이나
단점은 이유는 알수 없으나 가상스위치가 꼬여버릴때가 발생한다.
가상스위치가 꺼지지 않은 켜짐 상태로 유지 될수도 있고
ST에서 자동화의 갯수가 200개가 넘어가는순간부터 버벅이기 시작한다
이에 대한 단점을 해결하려면 HA에서 자동화를 구축해야한다
HA에서는 처음 자동화를 시작할땐 어렵지만
알고보면 더 깔끔하고 편한 자동화를 구축할수 있다
다음편은 해당 자동화를 더 완벽하게 할수 있는 HA 버전의 자동화를 소개하겠다.
'스마트홈 IoT' 카테고리의 다른 글
HA 가상스위치를 사용하여 구글홈 앱 스마트하게 사용하기 3탄 (0) | 2025.03.11 |
---|---|
현관 택배 감지용 스마트 카메라 출시 Aqara G5 pro (0) | 2025.03.07 |
홈어시스턴트 자동화 2편 (반복문, While문) (0) | 2025.02.24 |
홈어시스턴트 자동화 1편 (소개) (0) | 2025.02.24 |
스마트싱즈(ST) 입문 가이드 (0) | 2025.02.21 |











