일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 티스토리챌린지
- 홈네트워크
- 해외주식
- 월패드
- 애플
- Bestin
- RS-485
- 코스피
- esp32
- 현대통신
- raspberry pi
- 오블완
- Apple
- matter
- Python
- 파이썬
- 힐스테이트 광교산
- 매터
- cluster
- Espressif
- 공모주
- ConnectedHomeIP
- MQTT
- SK텔레콤
- homebridge
- 국내주식
- 배당
- 나스닥
- Home Assistant
- 미국주식
- Today
- Total
YOGYUI
광교 아이파크::Bestin 홈네트워크 연동(애플, 안드로이드) 시스템 정리 본문
6월 이사까지 얼마 남지 않았으니, 떠나기전에 미리미리 이제껏 개발한 시스템을 도식화하고 간단하게 설명도 첨부해놔야겠다
1. Hardware
[시스템 구성 하드웨어 품목]
- 메인 PC: Raspberry Pi 4 Rev 1.2 (RAM 4GB)
- 네트워크: ipTime 8004NS-M 공유기 (유선 + Wi-Fi 2.4G + 5G 통합)
공유기는 아무거나 써도 무관 - 포트포워드 혹은 DMZ 기능만 설정할 수 있으면 됨 - USB to RS485 컨버터 x4
- USB 4포트 허브
- UTP 커플러 (Y형 스필리터) + UTP 케이블 2개
- 거실 월패드 조명 제어 보드 (자체제작, 프로세서: ESP8266)
- Apple TV 4K - Apple HomeKit 연동을 위한 허브 (Apple HomePot, iPad로 대체 가능)
- Google Home Mini - Google Assistant 음성 명령 연동을 위한 AI 스피커 (필수사항 아님)
[비용 산출]
※ 직접 구매한 온라인 쇼핑몰 기준 (백원 단위 반올림)
품목 | 가격 (원) |
Raspberry Pi 4 Rev 1.2 (RAM 4GB) | 100,000 |
RS485 to USB converter (x4) | 15,000 x 4 |
Apple TV 4K (64GB) | 260,000 |
Google Home Mini | 35,000 |
UTP Y-splitter | 11,000 |
USB 4 port HUB | 25,000 |
Customized PCB (ESP8266) (PCB + IC + 수동소자 총 구매) |
110,000 |
총합 | 601,000 |
어차피 라즈베리파이/애플 티비/구글 홈 미니 등은 다른 용도로도 활용하고 있어서 직접적인 프로젝트 비용은 아니긴 하지만, 지나치게 돈이 많이 든 프로젝트라는 느낌이 든다 ㅠㅠ
[RS-485 신호선 연결]
- 신발장 옆 H.N 단자함에서 'ENERGY 485', 'CTRL 485'는 각각 USB-RS485 컨버터의 A, B에 그대로 연결
- 'SMART SWITCH' RJ-45 포트에 연결된 UTP 케이블(라벨 '스마트')을 뽑은 뒤 Y형 스플리터에 1-1에 연결
2-1에 UTP 케이블 연결 후 게이트웨이 RJ-45 포트에 연결
UTP 케이블 절단 후 한 단은 Y형 스플리터 2-2에 연결, 반대 단은 8가닥 분리 후
4번 (파란색), 5번 (파란색 + 흰색): USB-RS485 컨버터 A, B에 각각 연결
7번 (갈색 + 흰색), 8번(갈색): USB-RS485 컨버터 A, B에 각각 연결
2. Software
모든 기능은 하나의 라즈베리파이 PC (Raspbian GNU/Linux 10 운영체제)에서 구동할 수 있도록 구성
- Mosquitto: MQTT broker
- 굳이 동일한 PC에서 구동되고 있을 필요 없음 - Homebridge: Apple HomeKit 연동
- 굳이 동일한 PC에서 구동되고 있을 필요 없음 - Home Assistant: Google Cloud Console + Google Assistant 연동
- 굳이 동일한 PC에서 구동되고 있을 필요 없음 - 소스코드: GitHub Repository 클론 (링크) - Python::Flask로 웹서버 구동
RS-485 컨버터가 연결된 PC(=라즈베리파이)에서 구동되어야만 함
[핵심 기능]
- RS485-to-USB 컨버터로 오고가는 홈네트워크 RS-485 시리얼 패킷 파싱
- 조명, 난방, 환기(전열교환기) 등 각각에 대한 Device 클래스 구현
- 각 Device의 현재 상태 및 제어는 모두 MQTT 프로토콜로 구현 (paho.mqtt 패키지 사용)
- MQTT broker에 내 소스코드와 Homebridge, Home Assistant가 모두 mqtt topic publish, subscribe
제어를 위한 RS485 패킷 송/수신은 모두 네트워크상의 MQTT 프로토콜로 변환되기 때문에, 앞서 언급했듯이 Mosquitto, Homebridge, Home Assistant 모두 별도의 플랫폼 (PC, 랩탑, NAS 등)에서 구동되고 있어도 무관하다
[HTTPS]
Google Assistant와 Home Assistant 연동을 하기 위해서는 HTTPS 로 HA에 접근할 수 있어야 하는데, 이를 위해 SSL 인증서 발급을 위한 인프라 구축이 필요했다
- DuckDNS에서 공유기 외부 IP 주소에 대한 DDNS 발급 (무료)
※ ipTime에서 제공하는 DDNS(iptime.org)는 더이상 Let's Encrypt에서 SSL 발급이 되지 않음 - Nginx 설치
- uWSGI 설치해 Nginx와 파이썬 기반 Flask 웹서버와 인터페이스
- 라즈베리파이 80 포트에 대한 reverse proxy 구성 후 Let's encrypt (certbot)로 SSL 인증서 발급 (.pem 파일)
- Home Assistant - configuration.yaml 파일에 SSL 인증서 정보 기입
[네트워크 설정]
라즈베리파이의 방화벽 허용, 공유기의 포트포워딩을 다음 포트(모두 TCP)들에 적용
- 22: SSH
- 80: HTTP
- 443: HTTPS
- 1883: Mosquitto (mqtt broker)
- 8123: Home Assistant (docker container)
- 8581: Homebridge
3. Result
[Homebridge]
Apple TV나 HomePot 등 HomeKit 허브를 Homebridge와 동일 네트워크상에 연결하고 브릿지를 추가하면 애플 기기(아이폰, 아이패드, 맥북 등)에서 홈네트워크에 접근할 수 있다
[Home Assistant]
Google Cloud Console에서 테스트를 발행한 뒤 동일 네트워크에서 'Google Home' 어플리케이션으로 브릿지를 추가하면 홈 앱이 설치된 기기(애플, 안드로이드 모두 가능)에서 홈네트워크에 접근할 수 있다
현관문 제어 (열기), CCTV 영상 스트리밍, 지하 주차장 차량 도착 알림 등 아직 구현하지 못한 기능들이 많은데, 6월까지 할 수 있을런지 모르겠다... (CCTV가 SDI인 줄 알았는데 아닌 걸 알게 된 뒤로 약간 반 포기상태 ㅋㅋㅋ)
이제 애플, 안드로이드 모두 연동할 수 있는 방법을 블로그에 다 올려뒀으니, Bestin 홈네트워크를 사용하는 아이파크 거주민 분들께 도움이 되었으면 좋겠다 ^^
광교 아아파크 Bestin(베스틴) 홈네트워크 연동 카테고리 바로가기
문의사항
- 블로그 댓글(방명록은 확인이 힘듦 ㅠ)
- 이메일: lee2002w@gmail.com
'홈네트워크(IoT) > 광교아이파크' 카테고리의 다른 글
광교아이파크::Bestin 현관문 도어락 연동 (2) - Final (1) | 2022.03.30 |
---|---|
광교아이파크::Bestin 현관문 도어락 연동 (1) (0) | 2022.03.30 |
Bestin 홈네트워크 + 구글 어시스턴트 - 구글 홈 미니(AI 스피커) 연동 (0) | 2022.02.21 |
광교아이파크::Bestin 홈네트워크 - 안드로이드 기기 연동 (Home Assistant + Google Assistant) (0) | 2022.02.20 |
Bestin 홈네트워크 Flask 웹서버 - Nginx 연동 (0) | 2022.02.19 |