스마트홈 구축기

[스마트홈 구축기 24] Home assistant에서 코맥스(commax) wallpad 제어하기 후속

시들지 않는 무지개 2024. 1. 1. 16:26
728x90

※ 총 4편(하드웨어 / 애드온 설치 / 조명과 팬 제어 / 보일러 제어) 중  보일러 제어 편임

 


우리 집은 코맥스 월패드를 쓰는 아파트인데 현재 브릿지 허브로 일부 월패드 기기를 나머지는 HA에서 wallpad add-on을 통해 제어하고 있다.
HA에 wallpad add-on을 설치 후 실제로 동작시켜보니 다른 디바이스는 제어가 문제가 없는데, 보일러에서 off 명령을 내릴 때에만 월패드가 지속적으로 멈추는 현상이 발생했다. 그래서 조명과 엘리베이터 부분만 먼저 HA로 제어를 하고, 나머지 문제가 생긴 보일러와 미처 수정을 못한 전열시스템(환풍기)은 일단 브릿지 허브로 계속 제어하기로 했었다.
최근에 시간이 남아서 이부분을 좀 더 공부해 보니 문제점을 알 수 있었고 보일러와 전열시스템 모두 HA와 연동을 마무리했다. 문제 해결 방법은 wallpad addon의 js.file안의 off 명령 패킷이 실제 우리 집 패킷과 달랐고 일부 구문 오류? 같은 것도 보여서 그 부분을 수정했다. (사실 조명 및 전열시스템, 보일러의 켜기 명령 패킷이 js file에 원래부터 있던 그것들과 완벽히 똑같아서 off 명령의 패킷이 실제 우리 집 것과 다를 것이라곤 생각을 못했었다.) 그리고 오늘 월패드 뒤에 연결되어 있던 브릿지허브마저 철거를 하게 되어, IOT 디바이스는 모두 로컬 제어할 수 있는 상태가 되었다.
 
코드 구문 비교 사이트

 

텍스트 문서 비교 사이트

두개의 텍스트 비교하여 틀린점 찾아주는 온라인 툴

wepplication.github.io

 
위의 코드 구문 비교 사이트에서 수정 전 후의 js.file들을 비교해보고 기록으로 남긴다.
 
 
원래 js.file에는 보일러 off 상태 패킷이 '8284'로 시작하는데 실제 우리 집의 패킷을 탐색해 보니 '8280'이었다. 수정하고 나니 월패드를 처음 시작할 때 Log창에 현재 보일러의 상태가 제대로 나왔다.
편의를 위해서 전열교환기의 speed "state name"을 전열교환기 on과 off일때를 구분해서 입력했다. power off일 때 speed state name은 "0", power on일 때 speed "low"의 speed state name은 "1", speed "mid"는 "2", speed "hign"는 "3"으로 지정했다.

 
 
전열 교환기의 command 명령 부분에서 원래 js.file에서는 power off일 때의 speed state 패킷이 지정되어 있지 않은데, 기존의 power off의 구문을 복사 및 추가한 후에 "power: 'off'" 대신에 'speed: '0'으로 수정해 줬다.
그리고 마찬가지로 speed를 기존 'low/mid/high'였던 것에서 '0/1/2/3'으로 수정했다.

 
 
 
case구문을 써서 state 패킷의 첫 두 글자가 무엇인지에 따라 어떤 디바이스의 state인지를 표시하게끔하는 부분이 있는데, 원래 js file에는 환풍기와 가스밸브의 state 패킷의 첫 두글자가 잘못되어 있었다. 그 부분을 맞춰서 수정해 줬다.

 
 
Var 함수가 누락된 것 같아서 추가한 부분이 있고,
마찬가지로 보일러의 끄기 명령의 ackHEX가 실제 우리 집과 다른 부분이 있어서 수정해 줬다. 원래 js.file에는 0x84라고 되어 있는 부분을 우리 집 패킷 상황에 맞춰서 0x80으로 수정했다.(우리 집의 보일러 관련 명령패킷을 탐색하다 보면 84로 시작하는 패킷 중에 84'80'xxxxxx로 시작하는 패킷들이 있었다.)
여기까지 했을 때 전열 시스템은 완벽히 작동했고, 보일러 관련해서는 켜짐/꺼짐 및 현재 온도 상태도 잘 확인되고, 보일러 켜짐/꺼짐 명령도 잘 작동했다. 다만 다른 명령과 동시에 보일러 꺼짐 명령을 작동시키면 보일러는 꺼지지만, 동시에 실행시킨 다른 명령은 씹히면서 순식간에 월패드가 먹통이 되었다. wallpad addon의 로그창을 보면 보일러 꺼짐 명령을 실행까지는 성공했다고 나오는데 보통 명령을 실행하면 큐에서 그 명령은 삭제를 해줘야 하는데 그게 안 되는 것처럼 보였다.
그래서 해준 방법은 아래 '-1'이라고 되어있는 부분을 '-2'로 변경해 준 것인데, 그렇게 할 경우 위의 문제가 되는 상황에서는 보일러 꺼짐 명령만 실행되고 같이 실행시켜 준 다른 명령이 씹히는 건 동일하나 wall pad addon이 먹통이 되진 않았다. 이 정도면 실사용에선 문제가 되지 않는 수준이라 일단 이렇게 임시로 마무리했다.

 
js.file은 여기까지 수정을 했고 mqtt에 기기 등록을 위해 mqtt.yaml 파일은 아래와 같이 작성하였다.
전열시스템(fan, 환풍기) 관련해서는 speed range를 1/2/3으로 표시했다.

------------------------------------------------

 

첫번 째 이야기 - 하드웨어 설치 : https://wendysm.tistory.com/78

 

[스마트홈 구축기 19] Home Assistant로 코맥스(commax) wallpad 제어하기(하드웨어 연결)

※ 총 4편(하드웨어 / 애드온 설치 / 조명과 팬 제어 / 보일러 제어) 중 하드웨어 연결 편임 최근에 메인 플랫폼을 ST(smartthings, 스마트싱스)에서 HA(homeassistant)로 이사를 했고 여건 상 아직도 ST에 남

wendysm.tistory.com

 

두번 째 이야기- 애드온 설치 : https://wendysm.tistory.com/79

 

[스마트홈 구축기 20] Home Assistant에 wallpad Addon(wallpad controller with RS485) 설치

※ '모두의 스마트홈' 네이버 카페에서 보고 읽은 내용들을 참고함. 총 3단계로 진행이 필요한데 첫 번째는 MQTT broker를 설치해야 하고 두 번째는 자기 집의 월패드 제조사에 맞는 addon을 설치하고

wendysm.tistory.com

 

세번 째 이야기- 조명 및 팬 연동 관련 js file 수정 : https://wendysm.tistory.com/79

 

[스마트홈 구축기 20] Home Assistant에 wallpad Addon(wallpad controller with RS485) 설치

※ '모두의 스마트홈' 네이버 카페에서 보고 읽은 내용들을 참고함. 총 3단계로 진행이 필요한데 첫 번째는 MQTT broker를 설치해야 하고 두 번째는 자기 집의 월패드 제조사에 맞는 addon을 설치하고

wendysm.tistory.com

 

728x90