- Monty Home Device Hacking Guide는 원래 컴포스트 모니터링용인 Monty Home BLE 기기를 Raspberry Pi로 확장해 온도, 습도, 배터리 등 환경 데이터를 가져오고 표시하며 자동화하는 방법을 다룸
- 저장소는 Python, BLE, Raspberry Pi를 사용한 3개 프로젝트를 제공하며, 온도 임계값 기반 LED 제어, I2C OLED 표시, IFTTT 알림 전송을 포함함
- BLE 명령은 온도
;QT\r\n, 습도 ;QH\r\n, 배터리 ;QL\r\n, CO2 ;QC\r\n, TVOC ;QO\r\n, 펌웨어 버전 ;QV\r\n, 재부팅 ;CR\r\n, 공장 초기화 ;CF\r\n 등을 제공함
- 실행 환경은 BLE 지원 Raspberry Pi, Monty Home BLE Device, Python 3, Bleak, Requests, Adafruit CircuitPython SSD1306, Pillow 등이 필요함
- 사용자는 스크립트 안의 BLE 명령을 바꾸거나
notification_handler 조건을 확장해 다른 센서 데이터 처리, 대시보드 연동, 로깅, 추가 자동화로 확장할 수 있음
Monty Home BLE 기기 확장 가이드
- Monty Home Device Hacking Guide는 Monty Home BLE 기기의 기능을 Raspberry Pi로 확장하는 단계별 안내서임
- Monty Home 기기는 원래 컴포스트 모니터링용으로 설계됐으며, 온도, 습도, 기타 환경 지표 데이터를 수집함
- 이 가이드는 BLE 기기, IoT 애플리케이션, 환경 모니터링에 관심 있는 사용자를 대상으로 함
- Monty Home 구매처는 https://montycompost.co/ 로 안내됨
포함된 3개 프로젝트
-
온도 기반 LED 제어
- Monty Home 기기의 온도 데이터를 사용해 Raspberry Pi의 LED를 제어함
- 온도가 지정 임계값을 넘으면 LED가 켜져 경고를 표시함
- 다루는 기술은 GPIO LED 제어, BLE 데이터 조회, Python 조건 처리임
- 필요한 하드웨어는 BLE 지원 Raspberry Pi, LED, 330Ω 저항임
-
I2C OLED에 온도와 습도 표시
- Monty Home 기기에서 가져온 실시간 온도와 습도를 Raspberry Pi에 연결된 OLED 화면에 표시함
- SSD1306 OLED 디스플레이로 동적 데이터를 표시하고 BLE 데이터 검색 및 화면 갱신을 구현함
- 필요한 하드웨어는 BLE 지원 Raspberry Pi와 SSD1306 OLED Display이며, 128x32 또는 128x64 구성이 가능함
-
IFTTT를 통한 온도 알림
- Monty Home 기기의 온도가 특정 임계값을 넘으면 Raspberry Pi가 IFTTT를 통해 알림을 보냄
- IoT 자동화를 위한 IFTTT 연동,
requests 라이브러리 기반 HTTP 요청, BLE 데이터와 클라우드 알림 결합을 다룸
- 필요한 하드웨어와 계정은 Wi-Fi가 있는 Raspberry Pi와 IFTTT 계정임
실행 환경과 의존성
- 하드웨어는 Raspberry Pi Zero 2 또는 BLE를 지원하는 다른 Raspberry Pi 모델, Monty Home BLE Device가 필요함
- 프로젝트에 따라 LED, OLED 디스플레이, IFTTT 계정 같은 추가 구성 요소가 필요함
- 운영체제는 Raspberry Pi OS Lite 또는 Raspberry Pi OS with Desktop을 사용할 수 있음
- Python 3와
pip 설치가 필요함
- Python 라이브러리는 다음을 사용함
- Bleak: BLE 통신용,
pip install bleak
- Requests: IFTTT 연동용,
pip install requests
- Adafruit CircuitPython SSD1306: OLED 제어용,
pip install adafruit-circuitpython-ssd1306
- Pillow: OLED 이미지 처리용,
pip install pillow
Monty Home BLE 명령
- BLE 명령은 Python 스크립트에서 교체하거나 수정해 다른 데이터를 요청하거나 동작을 수행할 수 있음
| 명령 |
기능 |
;QA\r\n |
플래시 메모리에 있는 모든 데이터의 인덱스 반환 |
;QP\r\n |
플래시 메모리의 대기 중 데이터 인덱스 반환 |
;QR\r\n |
인덱스로 레코드 반환, 인덱스가 없으면 NACK |
;QS\r\n |
기기 상태 반환 |
;QL\r\n |
배터리 잔량을 퍼센트로 반환 |
;QT\r\n |
NTC 센서의 온도 측정값 반환 |
;QH\r\n |
상대 습도 측정값 반환 |
;QO\r\n |
가장 최근 TVOC 측정값 반환 |
;QC\r\n |
가장 최근 CO2 측정값 반환 |
;QU\r\n |
기기의 고유 ID 반환 |
;QV\r\n |
기기 펌웨어 버전 반환 |
;CR\r\n |
기기 재부팅 |
;CF\r\n |
공장 초기화 수행 |
코드 실행 방식
- 각 프로젝트에는 BLE 연결을 설정하고 쿼리를 보내며 데이터를 처리하는 Python 스크립트가 포함됨
- 실행 순서는 Raspberry Pi 터미널에서 프로젝트 폴더로 이동한 뒤 스크립트를 실행하는 방식임
cd /path/to/project
python3 project_script.py
project_script.py는 실제 파일명으로 바꿔야 하며, 예시는 project1_temperature_led.py임
커스터마이징 포인트
- BLE 명령을 바꾸면 다른 종류의 데이터를 가져올 수 있음
- 예를 들어 온도 대신 습도를 조회하려면 다음처럼 명령을 교체함
command = ";QT\r\n"
command = ";QH\r\n"
notification_handler 함수에 조건을 추가하면 온도와 습도 같은 여러 데이터 유형을 디코딩하고 표시할 수 있음
- 데이터는 IoT 플랫폼이나 대시보드에 연동해 실시간 시각화, 로깅, 추가 자동화에 사용할 수 있음
참고 자료