smartthings에 c2c로 연결된 나비엔보일러를 다시 HA로 가져와 제어하는데 상태확인이 안돼 자동화에 따라 보일러 난방 on/off가 안될 때가 있음.
나비엔 보일러는 자체앱인 나비엔스마트와 smartthings, 구글홈에 동시 연결돼 있는 상황이고 이중에 ST 와 구글홈은 HA에서 컨트롤 가능.
일단 switch.heater로 on/off를 하고 파워센서로 보일러 가동을 확인해 on/off가 안돼 있으면 구글 애드온을 이용해 문자명령으로 구글홈에 on/off명령을 한번 더 보내 백업하는 자동화.
switch.heater(st에서 가져와 템플릿으로 만든 온돌/외출모드)
sensor.neo03_watt(보일러에 연결된 스마트 플러그 파워센서)
Google Assistant SDK 애드온(구글홈에 음성명령대신 문자로 명령을 보낼 수 있는 애드온)
** 구글홈으로 명령을 보낸 후 확인음성때문에 신경쓰이면 on/off 전 후로 볼륨컨트롤 명령을 함께 보내도 됨.
** st의 가상스위치를 클라우드가 아닌 st hub에 만들면 명령 스킵이 좀 덜함.
보일러를 켜고 10분 타이머를 켬. 30초 후 파워센서를 확인해 10W보다 작으면 구글홈으로 한번 더 보일러 가동 명령을 내리는 스크립트.
scripts.yaml
boiler_10min_once:
sequence:
- service: switch.turn_on
entity_id: switch.heater
- service: timer.start
entity_id: timer.boiler10
- delay: '00:00:30'
- condition: template
value_template: "{{ states('sensor.neo03_watt') | float(0) < 10 }}"
- action: google_assistant_sdk.send_text_command
data:
command: '나비엔보일러 모드를 온돌로 해줘'
media_player: media_player.notify
10분 타이머가 끝난 후 보일러를 끄고 5분 후 파워센서를 확인해 10W이상이면 구글홈으로 가동중지를 한번 더 보내는 자동화.
automations.yaml
- id: 시간-타이머/Boiler
alias: 시간-타이머/Boiler
mode: restart
triggers:
- trigger: event
event_type: timer.finished
event_data:
entity_id: timer.boiler7
- trigger: event
event_type: timer.finished
event_data:
entity_id: timer.boiler10
- trigger: event
event_type: timer.finished
event_data:
entity_id: timer.boiler15
- trigger: event
event_type: timer.finished
event_data:
entity_id: timer.boiler20
actions:
- action: switch.turn_off
entity_id: switch.heater
- delay: '00:05:00'
- condition: template
value_template: "{{ states('sensor.neo03_watt') | float(0) > 50 }}"
- action: google_assistant_sdk.send_text_command
data:
command: '나비엔보일러 모드를 외출로 해줘'
media_player: media_player.notify
** 참고: 보일러 5분 시간 패턴 난방 / 환수관온도, 실내온도를 조건으로 5분마다 트리거
automations.yaml
- id: boiler-night
alias: boiler-night
mode: single
triggers:
- trigger: time_pattern
minutes: '/5'
conditions:
- condition: state
entity_id: sun.sun
state: below_horizon
- condition: state
entity_id:
- timer.boiler7
- timer.boiler10
- timer.boiler15
- timer.boiler20
state: idle
- and:
- condition: numeric_state
entity_id: sensor.boiler_1_temperature
below: 30
- condition: numeric_state
entity_id: sensor.livingroom_pvvx_temperature
below: 23.5
actions:
- choose:
- conditions:
- condition: numeric_state
entity_id: sensor.outdoor_thmeter_temperature
above: 7.99
sequence:
- action: script.boiler_7min_once
- conditions:
- condition: numeric_state
entity_id: sensor.outdoor_thmeter_temperature
below: 8.00
above: 1.99
sequence:
- action: script.boiler_10min_once
- conditions:
- condition: numeric_state
entity_id: sensor.outdoor_thmeter_temperature
below: 2.00
above: -5.00
sequence:
- action: script.boiler_15min_once
- conditions:
- condition: numeric_state
entity_id: sensor.outdoor_thmeter_temperature
below: -4.99
sequence:
- action: script.boiler_20min_once