본문 바로가기
IoT

샤오미 히터 한번 킬때 0.5KWh 만 사용 자동화 (HomeAssistant)

by ㅋㅋ잠자 2020. 12. 13.
반응형

안녕하십니까? 도정진입니다.


이번에는 결코 어렵지 않은 자동화 예시를 한번 보여드리겠습니다.


일단은 샤오미 히터를 하기와 같이 연동했습니다. 물론 커스텀 컴포넌트가 있기는 한데.. 이미 한번 연동을 하고 나니 건들기가 싫어서 이렇게 유지중입니다.


히터를 한번 틀면 살벌하게 올라가는 전력 사용량... 이렇게 한번 제한을 해보았습니다.

(샤워 직전에만 사용하기 때문에 .. 샤워하고 나오면 갑자기 추운것을 방지하기 위한 용도로 사용하고 있습니다. 특정 오피스텔에는 상가용 전기가 들어와서 신나게 쓸 수 있지만, 일반 가정용에서는 신나게 못 쓰니 이렇게라도 사용을 해야합니다.)


다음에 HA 를 업데이트 할 때 지원되는 커스텀 컴포넌트를 활용해 보려고 합니다.


https://blog.djjproject.com/720


1. 자동화 조건 생각


현재 전력 사용량을 스위치가 켜지면 input_number 에 저장하는 자동화

상기 input_number + 0.5 와 비교했을 때 전력사용량이 더 커지면 스위치를 내리는 자동화


상기 2개를 추가하면 됩니다.


2. 인풋 넘버 생성


하기와 같이 생성합니다.


  heater_power_start:

    name: "heater_start_power"

    initial: 0

    min: 0.00

    max: 300.00

    step: 0.01


소수점 2자리까지 나오기 때문에 상기와 같이 인풋 넘버를 설정해야합니다.


3. 인풋 넘버를 초기화 하는 자동화 생성


WebUI 에서 하기와 같이 기입이 가능합니다.




트리거의 경우, 히터 스위치가 ON 이 될 경우 트리거가 걸리는 것입니다.

이때 조건의 경우 따로 체크할 부분이 없기 때문에 그냥 비워둡니다.


마지막으로 동작에는 template 를 사용해야 하기 때문에 어쩔 수 없이 data_template 를 사용해야합니다.


data_template:

  entity_id: input_number.heater_power_start

  value: '{{ states(''sensor.heater_energy'') | float }}'

service: input_number.set_value


본래 값을 집어넣으려면 서비스 호출메뉴에서 input_number.set_value 를 하고 value: 값만 service_data 에 넣어주면 됩니다만, 넣으려는 값이 template 값이라서 data_template 를 사용해야합니다.


4. 히터를 끄게 하는 자동화


히터를 끄게하는 자동화는 하기와 같이 생성합니다.



상기와 같이 템플릿으로 작성하면 리턴은 TRUE / FALSE 가 됩니다.


인풋 넘버의 값에서 <-- 이때는 string으로 읽어집니다.

여기서 + 0.5 를 하기 위해서는 float 으로 바꾸어야 합니다.


그리고 히터에 연결된 스마트 플러그 에너지 값을 비교하는 것입니다.



조건의 경우 상기 트리거가 걸리고 나서 히터가 켜져 있는 경우에만 이 자동화를 실행하기 위해서 추가하는 것입니다.

상태가 on 일 경우에만 off 처리를 하게 되는 것입니다.



이때 0.5kW 보다 많이 소모하게 되면 트리거가 걸리고 ON인지 확인한 다음 마지막으로 상기 동작을 하게 됩니다.

서비스호출은 switch.turn_off 로 하게 되고 끌 스위치를 지정하시면 됩니다.


5. 템플릿과 서비스 호출 값 알아보기


실제로 HA를 사용하다 보면, 개발자 도구를 많이 쓰게 됩니다.


개발자 도구에서 하기와 같이 쉽게 확인해볼 수 있습니다.




6. 스크립트를 통해 딜레이 추가 스위치 생성


실제로 히터의 전원을 완전히 내려버리기 때문에 기기가 켜지고 와이파이에 올라올 때까지 시간이 조금 걸립니다.


대략 3분정도 측정이 되었는데요.


스크립트를 하기와 같이 생성합니다.


  heater_turn_on:

    sequence:

      - service: switch.turn_on

        data:

          entity_id: switch.heater_switch

      - delay: '00:03:00'

      - service: climate.turn_on

        data:

          entity_id: climate.smartmi_heater


  heater_turn_off:

    sequence:

      - service: climate.turn_off

        data:

          entity_id: climate.smartmi_heater

      - delay: '00:00:03'

      - service: switch.turn_off

        data:

          entity_id: switch.heater_switch


히터를 킬 때에는 플러그 전원을 먼저 키고 3분을 기다린 다음에 climate.turn_on 으로 히터 climate 를 전원을 키는 과정을 가지며, 끌때에는 climate 를 끄고 스위치를 3초 뒤에 내리는 것으로 작동합니다.


이를 template 스위치로 등록하기 위해서는 하기와 같이 하시면 됩니다.


- platform: template

  switches:

    smartmi_heater:

      friendly_name: 샤오미히터

      icon_template: 'mdi:air-purifier'

      value_template: '{{ is_state(''switch.heater_switch'',''on'') }}'

      turn_off:

        service: script.heater_turn_off

      turn_on:

        service: script.heater_turn_on


템플릿 스위치를 통하여 상기와 같이 생성이 가능하며, value_template 에는 실제 플러그의 상태를 넣어주시면 됩니다.


이를 통해서 IR 컨트롤을 해야하는 TV나 에어컨 등을 미리 스크립팅으로 원 버튼으로 실행할 수 있도록 할 수 있습니다.




간단하게 여기서 마치겠습니다. 


감사합니다.


반응형

댓글