2024/12/08

나비엔보일러 / C2C 자동화 백업



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