※ 총 4편(하드웨어 설치 / 애드온 설치 / 조명과 팬 제어 / 보일러 제어) 중 보일러 제어 편임
우리 집은 코맥스 월패드를 사용하는 아파트로, 현재 일부 월패드 기기는 브릿지 허브로, 나머지는 HA의 Wallpad Add-on을 통해 제어하고 있었다. HA에 Wallpad Add-on을 설치한 후 실제로 동작시켜보니, 다른 디바이스는 제어에 문제가 없었지만, 보일러에서 off 명령을 내릴 때 월패드가 지속적으로 멈추는 현상이 발생했다. 그래서 조명과 엘리베이터 부분만 HA로 제어하고, 문제가 생긴 보일러와 수정하지 못한 전열 시스템(환풍기)은 일단 브릿지 허브로 계속 제어하기로 했었다.
최근에 시간이 남아서 이 부분을 좀 더 공부해 보니 문제점을 알 수 있었고, 보일러와 전열 시스템 모두 HA와 연동을 마무리했다. 문제 원인은 Wallpad Add-on의 js 파일 안에 있는 off 명령 패킷이 실제 우리 집 패킷과 달랐고, 일부 구문 오류도 있었던 것이 원인이었다. 그 부분을 수정한 후, 모든 기능이 정상적으로 동작하게 되었다. 사실 조명 및 전열 시스템, 보일러의 켜기 명령 패킷이 js 파일에 원래 있던 것들과 완벽히 일치해서, off 명령의 패킷이 다를 것이라곤 생각하지 못했었다.
그리고 오늘 월패드 뒤에 연결되어 있던 브릿지 허브마저 철거하여, 이제 IOT 디바이스는 모두 로컬에서 제어할 수 있는 상태가 되었다.
코드 구문 비교 사이트
위의 코드 구문 비교 사이트에서 수정 전후의 js 파일들을 비교하고, 그 결과를 기록으로 남긴다.
수정 전
원래 js 파일에서는 보일러의 off 상태 패킷이 ‘8284’로 시작했지만, 실제 우리 집의 패킷을 탐색해 보니 ‘8280’으로 시작하는 것을 확인했다.
수정 후
이 정보를 바탕으로 패킷을 ‘8280’으로 수정했고, 수정 후 월패드를 처음 시작할 때 Log 창에 현재 보일러의 상태가 제대로 표시되었다.
전열교환기 상태 수정
편의를 위해 전열교환기의 speed “state name”을 전열교환기의 on/off 상태에 따라 구분해서 입력했다. 전열교환기가 power off일 때 speed state name을 “0”으로, power on일 때 speed “low”의 state name을 “1”, speed “mid”를 “2”, speed “high”를 “3”으로 지정했다.
전열 교환기의 command 명령 부분에서, 원래 js 파일에서는 power off일 때의 speed state 패킷이 지정되어 있지 않았다. 이를 수정하기 위해 기존의 power off 구문을 복사 및 추가한 후, "power: 'off'" 대신에 'speed: '0'으로 수정해 주었다.
또한, 기존의 speed 구문에서 ‘low/mid/high’로 되어 있던 것을 ‘0/1/2/3’으로 수정했다.
case 구문을 사용하여 state 패킷의 첫 두 글자에 따라 어떤 디바이스의 상태인지를 표시하도록 설정된 부분이 있는데, 원래 js 파일에서는 환풍기와 가스밸브의 state 패킷 첫 두 글자가 잘못되어 있었다. 이 부분을 올바르게 수정해 주었다.
수정 작업
1. Var 함수 추가: 코드에서 누락된 Var 함수를 추가해 줌으로써, 변수가 제대로 정의되고 사용될 수 있도록 했다.
2. 보일러 끄기 명령의 ackHEX 수정: 원래 js 파일에서는 보일러 끄기 명령의 ackHEX 값이 0x84로 되어 있었지만, 실제 우리 집의 패킷 상황에 맞춰 0x80으로 수정했다. 우리 집의 보일러 관련 명령 패킷을 탐색하다 보니 84로 시작하는 패킷 중에 84'80'xxxxxx로 시작하는 패킷들이 있었기 때문에, 이 값이 맞지 않다는 것을 알게 되었다.
3. 전열 시스템과 보일러의 동작 확인: 수정 후 전열 시스템은 완벽하게 작동했고, 보일러의 켜짐/꺼짐 및 현재 온도 상태도 잘 확인되었다. 보일러 켜짐/꺼짐 명령도 정상적으로 작동했다.
4. 보일러 끄기 명령과 다른 명령의 충돌 문제: 보일러 끄기 명령과 다른 명령을 동시에 실행할 경우, 보일러는 꺼지지만 다른 명령이 실행되지 않고 월패드가 먹통이 되는 문제가 발생했다. Wallpad Add-on의 로그 창을 확인한 결과, 보일러 끄기 명령이 실행된 후 큐에서 삭제되지 않는 것처럼 보였다.
5. 임시 해결 방법: 이 문제를 해결하기 위해 코드의 -1로 되어 있던 부분을 -2로 변경했다. 이렇게 하니, 보일러 끄기 명령만 실행되고 다른 명령이 씹히는 현상은 여전히 발생하지만, 월패드 Add-on이 먹통이 되는 문제는 해결되었다. 이 정도면 실사용에서는 큰 문제가 되지 않는 수준이므로, 일단 임시로 이렇게 마무리했다.
js.file은 여기까지 수정을 했고 mqtt에 기기 등록을 위해 mqtt.yaml 파일은 아래와 같이 작성하였다.
전열시스템(fan, 환풍기) 관련해서는 speed range를 1/2/3으로 표시했다.
------------------------------------------------
첫번 째 이야기 - 하드웨어 설치 : https://wendysm.tistory.com/78
두번 째 이야기- 애드온 설치 : https://wendysm.tistory.com/79
세번 째 이야기- 조명 및 팬 연동 관련 js file 수정 : https://wendysm.tistory.com/79