Home Assistant 삽질기 3 (Automation, data, data_template)

2019-11-12 18:00:02

최근에 샤오미 가습기를 구입하여 추가 연동하였다.

연동 자체는 매우 쉽기 때문에 금방할 수 있었지만, 해당 디바이스의 target_humidity 라는 값을 조절하고 싶었다.
그래서 처음에는 심플하게 텍스트 박스를 넣을까 하다가, 그래도 이왕하는 김에 바를 만들어서 조절되도록 하고 싶었다.

home-assistant-slide-bar

그래서 검색 결과, input_number와 automation을 사용하면 된다는 결론이 내려졌다.

그래서 관련 정보를 찾아서 먼저 input_number를 만들었다.

input_number:
  humidifier_bedroom_slider:
    name: "침실 가습기 목표 습도"
    initial: 60
    min: 30
    max: 80
    step: 10

위와 같이 추가 하였다. 여기까지 진행하면 "비어있는" 슬라이드바는 생성된다.

그 다음으로 작업한 부분은 현재 값을 슬라이드바에 반영하는 것이었다. 예를 들어 가습기의 target_humidity 값이 70 이라면 슬라이드바의 값도 70으로 되어 있길 바랬고 아래와 같이 구현하였다.

- id: '1573523243847'
  alias: update slider humi
  trigger:
  - platform: time_pattern
    seconds: /3
  condition: []
  action:
  - data:
      entity_id: input_number.humidifier_bedroom_slider
      value: '{{ states.fan.humidifier_bedroom.attributes.target_humidity | float }}'
    service: input_number.set_value

여기서부터 문제였다. 에러 메시지가 찍히기 시작한 것이었다.

xxxx-xx-xx xx:xx:xx ERROR (MainThread) [homeassistant.components.automation] Error while executing automation automation.update_slider_humi. Invalid data for call_service at pos 1: expected float for dictionary value @ data['value']

내가 해석하기로는 data 형태가 float이어야 하는데 아니다라는 오류로 인식하고 여러가지 시도를 수행해보았다.

      value: '{{ states.fan.humidifier_bedroom.attributes.target_humidity | float }}'
      value: '{{ states("fan.humidifier_bedroom.attributes.target_humidity") | float}}'
      value: '{{ state_attr("fan.humidifier_bedroom", "target_humidity") | float}}'
      .
      .
      .

진짜 할 수 있는 방법은 다 써봤지만 정상 동작하지 않았다. 그래서 구글링을 하루 종일 한 끝에 일부 automation에서 data 대신, data_template이 사용된다는 것을 확인하였고 혹시나 하고 적용해보았다.

- id: '1573523243847'
  alias: update slider humi
  trigger:
  - platform: time_pattern
    seconds: /3
  condition: []
  action:
  - data_template:
      entity_id: input_number.humidifier_bedroom_slider
      value: '{{ states.fan.humidifier_bedroom.attributes.target_humidity | float }}'
    service: input_number.set_value

... 아... 해결했다.

tag :  슬라이드data가습기연동사용input추가number조절automationtargethumidity여기디바이스처음시작float정보가지구글링반영습도해석일부에러확인형태메시지자체해당관련방법결론하루종일작업침실문제정상구현구입오류진행해결심플검색인식삽질기시도아래동작박스때문대신다음샤오미생성목표적용최근결과수행텍스트부분template