목록홈네트워크(IoT)/힐스테이트 광교산 (47)
YOGYUI
거실 월패드에서는 비디오폰을 통화를 하거나, 현관 출입문 도어락을 해제할 수 있다 (문열기) 문열기 버튼을 클릭했을 때, 조명과 아울렛이 연결된 RS-485 포트에서 처음보는 패킷을 캡쳐할 수 있다 class ParserLight(SerialParser): def interpretPacket(self, packet: bytearray): try: if packet[3] == 0x19: # 조명 self.handleLight(packet) elif packet[3] == 0x1F: # 아울렛 (콘센트) self.handleOutlet(packet) else: writeLog(f'Unknown packet: {self.prettifyPacket(packet)}', self) except Exception a..
지난 포스트에서 엘리베이터 호출 관련 RS-485 패킷 후킹 및 분석을 완료했다(링크) python 시리얼 패킷 파서 및 MQTT 메시지 핸들러 구문을 구현하고, Homebridge 및 Home Assistant 액세서를 추가해서 홈네트워크 플랫폼과 연동을 시켜보자 1. python 코드 작성 깃헙 저장소 hillstate-elevator 브랜치로 소스코드 커밋 완료 https://github.com/YOGYUI/HomeNetwork/tree/hillstate-elevator GitHub - YOGYUI/HomeNetwork: HomeNetwork(Homebridge) Repo HomeNetwork(Homebridge) Repo. Contribute to YOGYUI/HomeNetwork developm..
한동안 1일 1디바이스씩 조지다가(?) 21일~23일 거제도 출장 일정으로 잠깐 휴식을 가졌다 ㅎㅎ 다시 열심히 달려보자.. 거실 월패드랑 복도 쪽 제어패드에는 엘리베이터 호출 기능이 있다 월패드에서는 상향, 하향 양방향으로 호출이 가능한데 반해, 복도 제어패드에서는 하향으로만 호출이 된다는 차이가 있다 (Hi-oT 앱에서도 하향으로만 호출된다는 점은 약간 특이하다) 월패드로 엘리베이터를 호출하면서 패킷 변화를 캡쳐해보자 1. 엘리베이터 호출 시 패킷 분석 class ParserVarious(SerialParser): def interpretPacket(self, packet: bytearray): try: if packet[3] == 0x18: # 난방 self.handleThermostat(packe..
지난 포스트에서 천장 시스템에어컨 관련 RS-485 패킷 후킹 및 분석을 완료했다 (링크) 마찬가지로 파이썬에서 MQTT 메시지를 핸들링하는 코드를 구현하고, Homebridge 및 Home Assistant 액세서리를 추가하도록 하자 1. python 코드 작성 깃헙 저장소 hillstate-airconditioner 브랜치로 소스코드 커밋 완료 https://github.com/YOGYUI/HomeNetwork/tree/hillstate-airconditioner GitHub - YOGYUI/HomeNetwork: HomeNetwork(Homebridge) Repo HomeNetwork(Homebridge) Repo. Contribute to YOGYUI/HomeNetwork development b..
분양받을 때 옵션으로 거실이랑 방3개 모두 천장형 시스템에어컨 (공기청정 미적용) 설치하기로 계약했다 원래 가지고 있던 에어컨이 없었을 뿐더러 이제껏 천장에 달린 시스템에어컨이 있는 집에서만 살아왔기 때문에 이게 익숙해서 별고민없이 설치할 수 있는 공간엔 죄다 설치했다 (에어컨 옵션 금액만 638만원 부들부들... 돈이 이렇게 많이 들줄은 몰랐지 ㅠㅠ) 거실에 있는 월패드로 각 방별로 에어컨 4가지의 상태를 설정할 수 있다 가동상태: On/Off 희망온도: 1도 단위, 최소 18도 ~ 최대 30도 풍량: 자동/미풍/약풍/강풍 모드: 자동/냉방/제습/공기청정 공기청정은 미적용 옵션으로 했는데, 월패드에서는 설정할 수 있는 점이 신기했다 (물론 Hi-oT 앱으로도 가능한데, 앱에서는 여러 상태에 대한 명령을..
지난 포스트에서 환기(전열교환기) 관련 RS-485 패킷 후킹 및 분석을 완료했다 (링크) 이제껏 구현한 조명/아울렛/가스밸브/난방과 크게 패킷 구조가 다르지 않으니 최대한 코드 구조를 재활용하면서 홈네트워크 플랫폼과 연동하도록 한다 1. python 코드 작성 깃헙 저장소 hillstate-ventilator 브랜치로 소스코드 커밋 완료 https://github.com/YOGYUI/HomeNetwork/tree/hillstate-ventilator GitHub - YOGYUI/HomeNetwork: HomeNetwork(Homebridge) Repo HomeNetwork(Homebridge) Repo. Contribute to YOGYUI/HomeNetwork development by creatin..
도시가스, 난방 관련 제어를 하면서, RS-485 통신선 여러개가 묶여있는 포트로 오가는 패킷 중 네번째 바이트 값에 따라 어떤 기기가 관련있는지 조사해나가고 있다 총 7개 값 (0x18, 0x1B, 0x1C, 0x2A, 0x2B, 0x34, 0x48)이 네번째 바이트 값으로 설정되어 있으며, 그 중 0x1B: 도기가스밸브 0x18: 난방 인 것을 알게 되었다 이번엔 환기(전열교환기)를 제어하면서 5번째 바이트가 0x02인 명령 패킷을 캡쳐하고 분석해보자 1. 환기 가동 및 풍량 변경 패킷 분석 가스, 난방을 제외하고 패킷을 캡쳐해보자 class ParserVarious(SerialParser): def interpretPacket(self, packet: bytearray): if packet[2:4]..
지난 포스트에서 난방 관련 RS-485 패킷 후킹 및 분석을 완료했다 (링크) 시리얼 패킷 파싱 및 명령 패킷 생성 python 코드를 작성하고 홈네트워크 플랫폼 액세서리를 추가해주자 1. python 코드 작성 깃헙 저장소 hillstate-thermostat 브랜치로 소스코드를 커밋했다 https://github.com/YOGYUI/HomeNetwork/tree/hillstate-thermostat GitHub - YOGYUI/HomeNetwork: HomeNetwork(Homebridge) Repo HomeNetwork(Homebridge) Repo. Contribute to YOGYUI/HomeNetwork development by creating an account on GitHub. gith..
지난번 도시가스차단기(밸브)쪽 포트의 RS-485 패킷 분석 시 (링크), 4번째 바이트가 0x1B인 패킷은 가스밸브와 관련된 패킷인 것을 알아냈다 그 외에도 4번째 바이트가 0x18, 0x1C, 0x2A, 0x2B, 0x34, 0x48인 패킷 종류가 있는 것을 확인했는데, 이제 힐스테이트 Hi-oT 앱으로 제어 가능한 디바이스들을 하나하나 건드려보면서 각각이 어떤 기기와 관련있는지 알아내보자 1. 난방 가동 및 온도 변경 패킷 분석 class ParserGas(SerialParser): def interpretPacket(self, packet: bytearray): if packet[2:4] == bytearray([0x01, 0x1B]): # 가스차단기 if packet[4] == 0x01: # 상..
지난 포스트에서 가스밸브 잠금 기능 관련 RS-485 패킷 후킹 및 분석을 완료했다 (링크) 이제 바로 코드를 작성하고 홈네트워크 플랫폼 액세서리를 추가하자 깃헙 저장소에 hillstate-gasvalve 브랜치로 소스코드를 커밋했다 https://github.com/YOGYUI/HomeNetwork/tree/hillstate-gasvalve GitHub - YOGYUI/HomeNetwork: HomeNetwork(Homebridge) Repo HomeNetwork(Homebridge) Repo. Contribute to YOGYUI/HomeNetwork development by creating an account on GitHub. github.com 핵심은 쿼리 및 명령 패킷 생성, 시리얼 패킷 해..
지난번 월패드의 조명 관련 RS-485 포트를 후킹하여 집안의 조명 제어와 아울렛(콘센트) 제어를 Homebridge 및 Home Assistant와 연동하여 애플 및 안드로이드 모바일 기기를 통해 제어할 수 있게 만들었다 이제 조명 말고 다른 RS-485 포트도 후킹해볼 차례~ 1. RS-485포트 연결 터미널 블록의 조명 RS-485 포트 왼쪽에 '가스', '일괄', 그리고 라벨이 붙여지지 않은 2개의 케이블의 선이 다발로 묶여서 연결되어 있는데, 선의 색(청색과 흰색+청색)이 조명과 동일하길래 RS-485 결선을 똑같이 해서 USB to RS485 컨버터 하나를 더 달아봤다 ※ 가스 외에 다양한 디바이스를 이 포트로 제어할 수 있는듯? 갈수록 보기 싫어지고 있지만 뭐... 아직은 개발단계니 ㅎㅎ 결..
1. 패킷 분석 지난번에 월패드 분해 후 중앙제어社의 릴레이 모듈과 연결된 RS-485 통신선에 USB to RS485 컨버터 선을 연결해서 월패드와 각 방의 조명 패드들간에 오고가는 시리얼 패킷을 후킹했었다 (링크) 하나의 패킷이 0xF7 바이트로 시작하고, 0xEE 바이트로 끝나는 규칙을 갖는 것으로 판단하여 바이트스트림을 잘라냈을 때, 평상시에는 다음과 같은 패킷이 반복적으로 송수신되는 것을 확인할 수 있었다 F7 0B 01 19 01 40 10 00 00 B5 EE F7 0D 01 19 04 40 10 00 02 02 02 B4 EE F7 0B 01 19 01 40 20 00 00 85 EE F7 0C 01 19 04 40 20 00 02 01 84 EE F7 0B 01 19 01 40 30 00..
지난 글(링크)에서 월패드의 조명 관련 '상태 조회', '응답', '명령'에 관한 RS-485 패킷을 파싱하는 방법 및 패킷을 생성하는 방법에 대해 조사해봤다 이제 이를 토대로 애플 홈킷 및 구글 어시스턴트와 연동하여 스마트폰 및 AI스피커를 통해 조명을 제어해보자 시스템은 광교 아이파크때와 마찬가지로 필요한 모든 기능을 라즈베리파이4 단일 HW에서 모두 구동하도록 구현했다 홈네트워크 플랫폼 - Homebridge 및 Home Assistant(컨테이너) MQTT broker(Mosquitto) - 모든 홈네트워크 디바이스는 MQTT publish, subscribe 형식으로 상호작용 USB to RS485 컨버터 Python3 기반 프로그래밍: Flask로 이벤트 루프 생성 및 웹서버 구동 duckdn..
5. 외부 제어 (앱) 설치 외부에서 홈네트워크 명령을 주는 용도로 사용하기 위해 SMARTHOME Hi-OT (힐스테이트 스마트홈) 앱을 설치했다 스마트폰 앱으로 제어 연동할 수 있는건 나름 노력해서 잘 만든것 같은데, 단점이 한두개가 아닌 것 같다 ㅋㅋ 방 이름 변경을 할 수가 없다 (설정 창에서 방이름 변경 시 키보드 레이아웃이 안뜬다... 블루투스 키보드 사용자만 변경하라는건가? ㅋㅋㅋ 제어 반응성이 썩 좋지않다 (변경사항이 적용될 때까지 메시지박스가 서버로부터 응답을 기다리는 동안 다른 작업을 할 수가 없다) 아무래도 안드로이드랑 아이폰 둘 다 동일한 인터페이스로 만들다보니 발생한 문제같은데... (UI가 iOS에 특화된 컨트롤들이 아니다) 기업 입장에서야 인건비 아끼는건 뭐라 할게 아니지만 사..
이사짐 정리도 대충 끝났겠다, 이제 본격적으로 홈네트워크 작업을 해보자! 1. 월패드 제어 통신 포트 살펴보기 며칠전에 거실 월패드를 뜯어본 뒤 대충 구조는 파악했고, 이번엔 케이블에 부착된 라벨을 따라 신호선을 좀 더 면밀히 분석해봤다 벽면 안쪽 깊숙히 박혀있는 릴레이모듈(거실 천장 조명 제어)에서도 통신선이 빠져나와있는 것을 확인! 릴레이 모듈에서 시작된 회색 UTP 케이블이 '조명' 라벨이 붙은 UTP 케이블 중 일부와 엮여서 터미널 블록에 체결되어 있는 것을 확인! 시간 단축을 위해 릴레이모듈의 정보를 취합해보기로 했다 2. 릴레이 모듈 정보 취합 릴레이 모듈은 '중앙제어주식회사'에서 만든 JC-2883(J-Type) 모델인 것으로 확인되었다 구글링으로 JC-2883을 검색하니 첫페이지에 한국에너..