나비엔 NR-35D에서 교체한 BCM-300온도조절기는 HA에서 Auto->온수전용, 난방(Heat)->예약모드, 송풍(Fan only)->외출모드, 꺼짐->off로 작동.
난방은 예약모드(Heat)를 사용하면 보일러 가동되고 보일러 가동중지는 온수전용(Auto)으로 하여 자동화 구성.
온수 온도를 설정하려면 sihas 컴포넌트의 climate.py를 Auto모드일 때 온수 온도 설정되도록 수정하는 것이 필요. 아래처럼 코드 수정후 자동화는 climate.set_temperature 서비스로 hvac_mode에 auto를 temperature에 설정온도를 입력하면 됨.
climate ui에서 컨트롤하는 온도도 바로 반영되는데 ui에 표시되는 온도중 현재 실내온도는 제대로 표시되고 설정된 온수 온도 상태는 제대로 불러오지 못함.
chatgpt로 얻어낸 코드인데 나비엔 보일러에선 일단 잘 작동하는데 다른 모델에서 작동안되면 chatgpt에 코드를 넣어 이것저것 테스트. 수정후에는 꼭 HA재시작.
온수모드(Auto) 상태일 때 BCM_REG_ONSUSETPT를 사용해 온수온도 조절하는 명령을 넣은게 핵심인데 보일러에 따라 온수전환 모드가 없다면 작동되지 않음. 제가 가진 보일러 모델에선 대신 실내온도, 온돌모드 전환이 안돼 타이머모드(Heat)를 이용해 보일러 가동.
climate.py 493 - 497 라인:
assert self.opmode != None
self.command(
BCM_REG_ROOMSETPT if (self.opmode.heatMode == BcmHeatMode.Room) else BCM_REG_ONDOLSETPT,
math.floor(tmp),
)
아래처럼 변경:
assert self.opmode is not None
if self.opmode.isOnsuOn:
self.command(BCM_REG_ONSUSETPT, math.floor(tmp))
else:
target_reg = BCM_REG_ROOMSETPT if (self.opmode.heatMode == BcmHeatMode.Room) else BCM_REG_ONDOLSETPT
self.command(target_reg, math.floor(tmp))