Closed clipman closed 11 months ago
fan_modes 설정을 통하여 fan 모드를 변환하는 이유는 climate UI에 정의된 Fan modes와 에어컨에서 지원하는 modes가 서로 다르기 때문입니다. 서로 달라도 상관은 없지만 최근 수정된 보강된 UI의 아이콘을 제대로 보여줄 수가 없기 때문입니다. 삼성 에어컨의 예를 들면, auto, medium, high, turbo 이 모드가 auto, low, medium, high 이렇게 변환됩니다.
네 확인해볼께요~ 그리고, 위의 세가지 설정은 구성옵션으로 빠졌습니다 yaml 설정에선 제거
통합구성요소 우측편에 구성 눌러보면 세개 옵션 추가되었습니다
아... 구성옵션이 저렇게 구성되어 있군요. 확인했습니다.
그리고 세팅하다보니 ST로 전송할때 숫자가 아닌 문자로 설정해야 하는 경우도 있네요. 아래와 같이 옵션으로 type을 설정하면 가능하도록 수정해서 테스트하고 있는데 괜찮네요.
- target_humidity: borderreason25422.autohumidity
min: 40
max: 80
step: 5
type: str
아래와 같이 수정해서 테스트했습니다.
async def async_set_humidity(self, humidity: int) -> None:
if self.get_extra_capa_attr_value(ATTR_TARGET_HUM, "type") == "str":
humidity = str(humidity)
await self._device.command(
self._component, self.get_extra_capa_capability(ATTR_TARGET_HUM), self.get_extra_capa_command(ATTR_TARGET_HUM), [humidity])
target_humidity에서 step: 은 지원하지 않네요.
아... 구성옵션이 저렇게 구성되어 있군요. 확인했습니다.
그리고 세팅하다보니 ST로 전송할때 숫자가 아닌 문자로 설정해야 하는 경우도 있네요. 아래와 같이 옵션으로 type을 설정하면 가능하도록 수정해서 테스트하고 있는데 괜찮네요.
- target_humidity: borderreason25422.autohumidity min: 40 max: 80 step: 5 type: str
아래와 같이 수정해서 테스트했습니다.
async def async_set_humidity(self, humidity: int) -> None: if self.get_extra_capa_attr_value(ATTR_TARGET_HUM, "type") == "str": humidity = str(humidity) await self._device.command( self._component, self.get_extra_capa_capability(ATTR_TARGET_HUM), self.get_extra_capa_command(ATTR_TARGET_HUM), [humidity])
target_humidity에서 step: 은 지원하지 않네요.
커스텀 카파빌리티네요... ;; ㅎㅎ 안그래도 오늘 climate 랑 fan 같은 복합 엔티티에서는 capability랑 같은 depth에서 다른 컴포넌트도 지정해서 사용할수 있어야겠는 상황이 있어서 만지고 있었습니다. 마찬가지로 테이터타입 같은것도 optional 하게 속성을 넣어줄수 있겠네요, 모양새가 간결해질수 있게 고민은 좀 해봐야할것같긴한데, 점점 복잡해지는군요 ㅎㅎ
아래 처럼 mode에도 switch를 사용할 수 있도록 조금 수정했어요.
climates:
- capability: switch
component: main
attributes:
- name: "Bedroom Humidifier"
capabilities:
- switch: switch
- mode: switch
options: ["on", "off"]
commands:
attribute: switch
hvac_modes:
[{ "on": "auto", "off": "off" }]
가끔 float 변환에러가 발생하는 경우가 있어서 수정했어요. None 또는 unavailable 두가지 유형이 발생했었네요.
climate.py에서 생성되는 climate에서는 async_update에서 hvac_modes 값을 설정하는데 async_update가 시작되도록 수정함
내용 다 확인했어요~ 오늘 수정한다고 이리저리 보는데 코드가 마음에 안들어서 다음주에 한번 더 개선할 생각입니다. 그때 같이 포함시킬께요
아래의 설정이 안되는 버그 수정
enable_default_entities : true enable_syntax_property: false resetting_entities: true