TL;DR
- 임대 아파트의 Orcon 15RF 환기 시스템을 분해하지 않고 리모컨에 ESP32를 연결해 Home Assistant에 연동하고, 실내 센서값에 따라 팬 속도를 자동 조절함.
- 리모컨의 버튼 접점을 제어하는 방식으로 통신 프로토콜 역공학과 별도 868MHz 무선 장치가 필요하지 않으며, Waveshare ESP32-C6 Zero 보드를 사용함.
ESPHome에서 팬 속도 숫자 템플릿을 제공하고 마지막 설정값을 기억해 해당 버튼을 누르며, 리모컨 버튼을 별도로 노출하지 않아 상태 추적을 유지함.- 온도, 이산화탄소(CO₂), 습도 변화율을 기준으로 팬 속도를 1~3단계로 설정하고, 실외 온도와 실내 온도의 차이도 자동화에 반영함.
- CTRL ONE 화면 위젯으로 자동화를 몇 시간 동안 중지하고 팬 속도를 수동 조절할 수 있어 기존 리모컨을 대체함.
임대 아파트 환기 시스템을 스마트하게 제어하기
- Home Assistant에 환기 시스템을 연동해 CTRL ONE ePaper 스마트 실내 컨트롤러의 CO₂ 및 습도 센서값을 활용하는 자동화를 구성함.
- 네덜란드의 현대식 아파트는 창문을 열 수 없는 경우가 많아 환기 장치가 실내에 신선한 공기를 공급하고 습기를 배출하는 데 필수적이며, 장치에는 완전히 끄는 설정이 없음.
- 임대 주택의 환기 장치를 직접 열어 개조하는 대신, 고장 나더라도 교체 비용이 더 낮은 리모컨을 개조하는 방식을 선택함.
- Orcon 15RF 리모컨은 독자 규격인 Honeywell의 RAMSES-II 프로토콜을 사용하며, 관련 프로토콜을 역공학한 작업도 이미 공개돼 있음.
- RAMSES-II는 868MHz 대역에서 작동하므로 기본적으로 2.4GHz만 사용하는 ESP32로는 직접 통신할 수 없음. 별도의 무선 장치를 마련하고 역공학 코드를
ESPHome에 맞게 이식한 뒤 작동을 디버깅하는 대신, 프로토콜을 이미 알고 있는 리모컨 자체를 제어하기로 함.
리모컨 분해와 버튼 연결
- 리모컨의 저항식 접점은 외부 케이스를 누르면 작동하며, 팬 속도 1·2·3단계, 자동 모드, 타이머 기능을 제공함.
- 자동 모드는 아파트 전체의 공기가 섞인 흡기 지점에서 습도를 감지하므로 특정 방의 샤워를 감지하기 어렵고, 공기질이나 CO₂에 따라 반응하지 못함.
- 집 안에 설치한 CTRL ONE은 각 방의 온도, 습도, CO₂를 측정하므로 Home Assistant 자동화에 활용할 수 있으며, 화면 위젯으로 수동 제어도 가능함.
- 주로 사용할 버튼은 팬 속도 1·2·3단계이며, 페어링 모드 진입 조합에 필요한 자동 버튼도 연결함.
- 리모컨과 환기 장치 사이의 통신을 직접 분석하는 방식과 달리, 버튼을 대신 누르는 방식은 환기 장치의 현재 팬 속도를 조회할 수 없음.
- 이 리모컨이 유일한 속도 조절 수단이므로 ESP32가 마지막으로 누른 버튼을 기억하면 현재 속도와 동기화된 상태를 유지할 수 있음. 우발적인 버튼 입력을 막기 위해 버튼 리본 케이블을 분리함.
- 버튼 접점에 연결할 전선을 납땜함. 오른쪽 전선 세 개는 속도 1·2·3단계에, 가장 왼쪽 전선은 자동 버튼에 연결하며, 나머지 접점에는 타이머 버튼과 접지 핀이 있음.
- Ronald가 정리한 Orcon 기계식 환기 장치 연결 방법을 참고해 리모컨 핀의 기능을 확인함. 해당 방법은 납땜이 필요 없지만 부품을 추가로 구매해야 하고 리모컨 배터리를 계속 사용함.
- ESP32와 전선을 이미 보유하고 있어 별도 비용 없이 제작했으며, USB 전원선을 사용할 계획이므로 리모컨의 코인 셀 배터리 대신 ESP32 개발 보드의 3.3V 핀으로 전원을 공급함.
- 버튼 연결부의 접지 전선을 따로 추가하지 않고 배터리 홀더 양쪽에 연결한 전선을 통해 리모컨과 ESP32의 접지를 공유함. 작은 전선이 쉽게 떨어지지 않도록 카프톤 테이프로 고정함.
- Waveshare ESP32-C6 Zero 개발 보드를 사용함. USB-C 포트는 보드 프로그래밍과 전원 공급에 사용하고, 전원선은 3.3V와 접지에, 버튼 전선 네 개는 GPIO 핀에 연결함.
- ESP32를 리모컨 케이스 안에 폼 접착 테이프로 고정함. 별도 케이스를 만들 필요 없이 기존 리모컨 하우징을 활용함.
ESPHome 구성
ESPHome에서 ESP32-C6 보드와 네트워크를 설정하고, 재시작·안전 모드 버튼, 가동 시간·Wi-Fi 신호 센서를 구성함. CPU 주파수는 필요 이상의 처리 성능을 줄이기 위해 80MHz로 설정하며, IPv6도 활성화함.- GPIO 출력 네 개를 팬 속도 1·2·3단계와 자동 버튼에 각각 연결하고, 버튼을 누를 때 200ms 동안 접점을 작동시킴.
- GPIO는 오픈 드레인 방식으로 설정함. 버튼이 눌릴 때는 핀을 3.3V로 끌어올리고, 누르지 않을 때는 연결이 끊긴 것처럼 동작해 기존 버튼 회로를 모방함.
- 팬 속도 템플릿 숫자 엔티티는 1~3의 값을 저장하고, 값이 바뀌면 해당 속도 버튼을 누름. 낙관적 상태 설정과 값 복원을 사용해 현재 설정을 기억함.
- 버튼 자체를 Home Assistant에 노출하면 템플릿 숫자 엔티티 밖에서 버튼이 눌려 팬 속도 상태를 추적하지 못할 수 있으므로, 팬 속도 제어에는 숫자 엔티티를 사용함.
- 자동 버튼은 기본적으로 비활성화하고 진단용으로 분류함. 페어링 모드와 추가 기기 페어링용 진단 버튼은 각각 팬 속도 1 또는 2 버튼과 자동 버튼을 3.1초 동안 함께 작동시킴.
Home Assistant 자동화
- 자동화 규칙은 다음과 같음.
- 실내 온도가 23°C 초과이고 실외보다 높으면 아파트를 더 빠르게 식히도록 팬 속도를 3단계로 설정함.
- 어느 방에서든 CO₂가 600ppm 초과이면 2단계, 1000ppm 초과이면 3단계로 설정함.
- 어느 방에서든 습도가 분당 2% 초과로 변하면 3단계로 설정함.
- 습도는 계절에 따라 상대습도가 크게 달라지므로 고정된 습도 기준을 사용하면 덥고 비가 오는 날 팬이 계속 최고 속도로 작동할 수 있음. 습도 변화율을 추적하면 샤워를 시작했을 때처럼 몇 분 동안 급격히 습도가 오르는 상황을 감지할 수 있음.
- 자동화 전에 집 안 모든 CTRL ONE의 최댓값을 모으는 보조 센서를 구성해 최대 CO₂, 습도, 온도 값을 집계함. 이 값이 기준에 도달하면 자동화가 실행됨.
- 자동화 변수는 CO₂ 수요를 600ppm과 1000ppm 기준으로 1~3단계에 매핑하고, 습도 변화량이 분당 -2% 미만 또는 2% 초과이면 3단계를 요구함.
- 온도 수요는 실내 평균 온도와
weather.buienradar의 실외 온도를 비교함. 실내가 23°C 미만이면 1단계이며, 실내가 실외보다 5°C 초과로 높으면 3단계, 실외보다 높지만 차이가 5°C 이하면 2단계로 설정함. 그 밖의 경우에는 1단계임. - CO₂, 습도, 온도 수요 가운데 가장 높은 값을 최종 팬 속도로 사용함. Home Assistant에 날씨 정보를 추가해 실외 온도도 자동화에 반영함.
- 자동화가 원하는 동작의 약 95%를 처리하지만, 레이저 커터 냄새를 빼거나 요리할 때는 팬 속도를 더 높여야 할 수 있음. CTRL ONE 화면 위젯으로 팬 속도를 수동 변경하면 자동화가 몇 시간 동안 비활성화됨.
- CTRL ONE을 통해 센서 데이터를 활용한 환기 자동화를 구성하고 집 안의 여러 기기에서 기존 리모컨 대신 수동 제어도 가능함.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요