힐스테이트 광교산용 RS-485 파이썬 코드를 HA에서 자동 실행하는 방법 중 가장 HA스러운(?) 솔루션이랄까..
이미 개발되어 있는 파이썬 어플리케이션을 HA 베이스 도커(docker) 컨테이너에 임베딩하는게 전부인데, 어플리케이션 설정(기존의 config.xml)을 어떻게 하면 더 쉽게 수정할 수 있을까 요리조리 짱구를 굴리다보니 개발 일정이 많이 늘어져버렸다 ㅎㅎ... 딱히 데드라인을 정해놓고 개발하고 있던게 아니기도 하고 ^^;;
Ingress를 제대로 활용하려면 nginx도 적절하게 설정해줘야되는데, 어차피 웹 프론트엔드 개발 자체에 의욕이 없기 때문에 애드온의 options로 앱 구동에 필요한 파라미터들을 설정할 수 있게 해줬다 ㅎㅎ
- 파이썬 앱 정상 구동 여부만 확인 완료 - 애드온을 별도로 홍보하진 않을 계획 (블로그 방문자 중 관심있는 유저만 설치해 사용 후 문제 발생시 이슈 처리)
마크다운 문서로 애드온 사용법은 간략하게 기재해뒀는데, 블로그에도 사용 방법을 간단하게 포스팅하도록 한다
※ HA Core 2024.2.2, Supervisor 2024.03.0, OS 11.5 버전에서 설치 및 구동 테스트했으며, 다른 버전에서는 구동하지 않을 가능성이 존재함
애드온 스토어에서 YOGYUI 항목 검색 후 HomeNetwork for Hillstate항목 클릭
※ 결국 애드온 이름은 안바꿨다 -_-;;
설치하기 클릭
※ 400MB 가량의 도커 이미지를 다운로드받은 뒤 설치하기 때문에 5~10분 정도 기다려야 한다 (HA가 구동중인 환경에 따라 시간은 상이함)
설치가 완료되면 아래와 같이 애드온을 실행할 준비가 완료된다
※ 성급하게 시작하지 말자 (애드온 설정을 해줘야 하며, 아래 글을 계속 읽으면 된다)
※ AppArmor와 Ingress를 활성화해 가장 높은 보안 등급인 8등급(가장 안전하고 가장 낮은 위험)을 달성했다! 릴리즈하기에 무리없다랄까?
2. 애드온 설정
애드온을 본격적으로 시작하기 전에 MQTT 브로커랑 RS-485 컨버터 등 이것저것 미리 설정해둬야 할 게 있으니 꼼꼼하게 설정해주자 > 설정은 애드온의 구성 탭에서 진행
2.1. MQTT 브로커 설정
애드온이 설치된 HA에 Mosquitto MQTT 브로커 애드온을 설치해 사용할 계획이라면 호스트(host)는 core-mosquitto로 그대로 두고 아이디(username)와 비밀번호(password)만 변경해주자 (만약 포트번호를 바꿨다면 port도 적절하게 수정)
※ 동일 호스트라고 하여 127.0.0.1을 입력하면 동작하지 않는다
mosquitto broker의 호스트명은 'core-mosquitto'
만약 다른 환경에서 구동중인 브로커를 사용하고자 할 경우 IP주소를 입력해주면 된다
paho-mqtt의 SSL 보안 접속 기능은 아직 구현하지 않은 상태 만약 유저의 요청이 있다면 추가 개발할 계획
2.2. RS-485 컨버터 설정
USB-to-RS485 컨버터를 사용할 지 혹은 EW-11 같은 WiFi-to-RS485 컨버터를 사용할 지 여부에 따라 설정 방법이 조금 다르다
[공통사항]
name: 컨버터 이름, 앱 로그에 찍히는 이름으로 아무렇게나 구별되게만 지으면 된다 (컨버터 여러개 쓸 경우 구분하기 위한 용도)
index: 0 이상의 숫자로, 컨버터를 여러 개 쓸 경우 반드시 1씩 증가하게 값을 지정해야 한다 (0부터 시작) 아래에 나오는 파서 매핑 시 필요한 값이다
enable: 컨버터를 어플리케이션이 사용할 지 여부로, 디버깅 등 특별한 경우가 아니라면 true로 설정
hwtype: 0은 USB 컨버터 (시리얼 통신), 1은 WiFi 컨버터 (TCP 소켓 통신) USB-to-RS485 컨버터는 0으로 설정하고, EW-11은 1로 설정하면 된다 (EW-11 외 다른 컨버터도 지원)
activate를 true로 설정 후 애드온을 재시작하면 timeout 시간(단위=초)동안 디바이스를 자동으로 탐지하고 해당 디바이스들을 config.xml에 추가한 뒤 어플리케이션을 재시작하여 곧바로 제어가 가능하다
※ 아직 discovery 완료 후 activate 설정을 false로 바꾸는 기능을 구현하지 않았다... 만약 activate가 true인 채로 애드온이 재시작되면 불필요하게 디바이스를 중복으로 탐색하게 되니 activate를 false로 바꾼 후 애드온을 다시 재시작해줘야 한다... (1.0.5 버전에 해결할 예정)
prefix는 HA mosquitto mqtt broker의 discovery 검색 접두사 설정값을 참고하여 설정해주면 된다 (아무 설정도 안했다면 그냥 homeassistant로 그대로 두면 되며, 기기 검색 활성화는 반드시 켜져있어야 HA의 구성요소도 자동으로 추가된다)