2P by GN⁺ | ★ favorite | 댓글 1개
  • 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 플랫폼이나 대시보드에 연동해 실시간 시각화, 로깅, 추가 자동화에 사용할 수 있음

참고 자료

댓글과 토론

Hacker News 의견들
  • 아이디어가 떠오름. 말 우리를 치우며 나온 큰 퇴비 더미가 있는데, 주로 소변에 젖은 나무칩과 거의 분해된 말똥으로 되어 있고 흙도 조금 섞여 있음
    이번 여름에 감자와 당근을 심어 봤는데 감자는 아주 잘 됐고, 당근은 별로였지만 물주기를 잘못한 탓으로 봄
    아직 완전히 분해된 것 같지는 않아서 온도를 재 보면 얼마나 활발한지 알 수 있을 듯함. 예전에 다른 발효 프로젝트에서 주변 온도를 추적하던 ESP8266 기반 온도 센서도 하나 있음
    서미스터를 밀봉하고 8266을 IP67 케이스에 넣은 뒤 태양전지와 함께 퇴비 더미 위에 꽂아 두면 될 것 같음. 이미 .local 도메인으로 웹 페이지를 띄우고 있어서 작업도 거의 안 들 듯함
    이번 주말에 실제로 해볼지도 모르겠음

    • 당근에는 흙이 너무 비옥했을 수도 있음. 질소가 너무 많으면 잎은 잘 자라지만 뿌리 형성이 제대로 안 되는 경험이 있음
    • 소변 때문임. 더미를 넓게 펴서 햇볕에 표백하듯 말리면 암모니아를 날릴 수 있음
    • 그건 고온성 거름임. 원예 규칙은 틀리는 경우도 많고 너무 까다롭지만, 출발점으로는 이렇게 볼 수 있음
      고온성 거름은 질소 화합물이 많아서 퇴비 더미에서 빨리 분해되고 그 과정에서 열을 많이 냄. 전통적인 온실은 썩는 거름의 에너지로 겨울에 묘목과 삽목을 키웠고, 닭·오리·말똥이 여기에 들어감
      저온성 거름은 영양분이 적고 분해될 때 열도 덜 내서 식물을 태울 위험이 낮음. 소·염소·양처럼 되새김질하는 동물은 식물성 먹이의 질소 대부분을 소화 과정에서 뽑아내므로 해당됨. 라마와 알파카는 반추동물은 아니지만, 거름의 영양분이 낮아서 저온성으로 볼 수 있음
  • 제품을 깎아내리려는 건 아니지만 개인적으로 필요하진 않을 것 같음. 다만 전자식 모니터링이 투자비를 회수할 만큼 최종 산물을 개선하려면 퇴비화 규모가 어느 정도여야 하는지 검토했는지 궁금함
    꽤 큰 규모여야 할 것 같은 느낌임
    가정용 디자인의 버섯 같은 분위기는 마음에 들고, 그쪽을 더 밀어도 좋았을 듯함

    • 전자식 모니터링은 규모가 커질수록 가치가 커지는 게 맞고, 그래서 예정된 Monty Pro 라인은 산업용 퇴비화 시설과 대규모 운영에 맞춰져 있음
      이런 환경에서는 통기 주기 최적화나 비용이 커지기 전에 비효율을 잡아내는 식으로, 데이터 기반 인사이트가 효율과 비용 절감에 실제 도움이 됨. 제품 사이트는 여기서 볼 수 있음: (https://www.monty-pro.com)
      가정에서는 비용 절감보다 일상적인 퇴비 사용자가 노력의 효과를 더 잘 얻도록 편리한 인사이트를 제공하는 쪽에 초점을 둠. 작은 규모에서 퇴비화 경험 전체를 더 풍부하게 만드는 목적임
    • 프로젝트의 하드웨어 요구사항을 보면 장비가 약 100달러 수준임. 진입 비용은 꽤 낮은 편임
      Hardware Requirements
      
      Raspberry Pi (Zero 2 or another model with BLE support).  
      Monty Home BLE Device.  
      Additional hardware specific to each project, such as an LED, OLED display, and IFTTT account.  
      
  • collectd는 예를 들어 RRD 플랫 파일이나 SQLite에 기록할 수 있고, 수집한 지표를 Grafana나 InfluxDB 같은 모니터링·차트·이상 탐지 앱으로 전달할 수 있는 오픈소스 모니터링 시스템임
    Nagios에는 불필요한 알림을 막는 "state flaping detection" 기능이 있음
    collectd-python-plugins에는 i2c 센서와 Python으로 습도·온도를 모니터링하는 스크립트가 들어 있음: https://github.com/dbrgn/collectd-python-plugins
    LoRaWAN 토양 수분 센서도 있지만 배터리나 현장 충전 방식이 필요함
    "Satellite images of plants' fluorescence can predict crop yields" (2024)
    "Sensor-Free Soil Moisture Sensing Using LoRa Signals (2022)" https://dl.acm.org/doi/abs/10.1145/3534608 .. https://news.ycombinator.com/context?id=40234912
    오픈소스 토양 수분 센서 검색: https://www.google.com/search?q=open+source+soil+moisture+se...

  • 어떤 제조사와 모델의 센서를 쓰는지 궁금함. 취미 프로젝트에서 아주 저렴한 센서로 환경 모니터링을 해봤는데, 센서값 반복성이나 CO2 센서의 잡음 내성에서 아주 나쁜 경험을 했음
    HN에서도 관련 논의가 있었고, 그 덕분에 잡음이 문제 원인이라는 걸 깨닫고 검증할 수 있었음
    집에서 브레드보드로 만드는 수준을 넘어서는 프로젝트 아이디어가 몇 개 있는데, 소프트웨어와 인프라 쪽이 성숙해지고 있어서 이제는 신뢰할 수 있는 부품 위에 만들고 싶음

    • Monty 시스템에서는 BoschSensirion 센서를 사용함. 초기 시제품 단계에서 약 20종의 센서를 테스트했고, 다양한 퇴비화 환경에서 가장 다루기 좋은 결과를 보였음
      프로젝트 아이디어를 더 공유해 주면 도움이 되는 범위에서 더 깊게 이야기할 수 있음
  • 더 포괄적이고 확장 가능한 소규모 퇴비 모니터링이 늘어나는 건 좋음. Gathering for Open Ag Tech 커뮤니티에서도 관심을 가질 수 있음 (https://forum.goatech.org/)

    • 거기에 글을 올려볼 예정임
  • 좋긴 한데, 고온 퇴비를 돌리는 데는 그냥 온도계 하나면 꽤 간단하지 않나 싶음. 내 퇴비가 45°C를 넘으면 호열성 미생물이 있고 일을 하고 있다는 뜻으로 봐도 꽤 확실함

    • 기본적인 활성 고온 퇴비 더미를 유지하려는 사람에게는 온도계가 훌륭한 도구인 게 맞음
      다만 우리 시스템은 조금 더 깊이 들어가고 싶을 때 빛남. 예를 들어 가스, 수분 수준, 기압 데이터를 더하면 과정을 더 효과적으로 문제 해결하거나 최적화할 수 있음. 활동이 호기성인지 혐기성인지, 수분이 어느 한쪽으로 지나치게 치우쳤는지 같은 걸 볼 수 있음
      퇴비화 구성이나 투입물이 복잡해지거나, 과정이 멈췄는데 이유를 모르겠을 때 이런 인사이트가 도움이 됨. 물론 모두가 온갖 기능을 필요로 하는 건 아니고, 믿을 만한 온도계와 퇴비 감각만으로도 훌륭하고 건강한 퇴비를 만들 수 있음
    • 내 퇴비는 주변 온도보다 5°C 이상 올리기도 힘듦. 주된 이유는 퇴비통이 충분히 크지 않아서인 것 같음
      검은 플라스틱 달렉 모양 통이라 표면적 대비 부피가 너무 크고, 위치도 그늘이 아주 많은 곳임
    • 그런 온도를 만들어내는 대사 과정이 실제로 일어나고 있는지는 어떻게 확인하나?
  • 퇴비를 모니터링할 때 얻는 센서값의 실용성이 더 궁금함. 온도와 수분은 직관적인데, 예를 들어 가스 조성은 탄소/질소 비율을 시사하나, 아니면 더미가 무산소 상태로 가는지 확인하나?
    기압은 분해 속도의 일반적인 대리지표인지도 궁금함
    또 모니터링하면서 배운 것 때문에 실제 퇴비화 습관을 바꾼 적이 있는지도 알고 싶음

    • 센서값의 용도를 더 설명하자면, 주로 모니터링하는 가스는 총휘발성유기화합물(TVOC)이고, 이는 분해 활동의 일반적인 대리지표로 작동함
      온도 데이터와 함께 보면 활동이 호기성인지, 즉 건강한 퇴비 더미인지, 아니면 바람직하지 않고 냄새가 날 수 있는 혐기성인지 꽤 잘 알 수 있음. 예를 들어 산소 가용성이 떨어지는 상황에서 TVOC가 급증하면 혐기성 조건일 가능성이 큼
      기압은 companion 앱인 Monty Mobile에서 더미 뒤집기 이벤트 감지의 일부로 사용함. 앱은 수분 수준이나 뒤집기 빈도 같은 조건 변화가 분해에 어떤 영향을 주는지도 다른 데이터와 함께 분석함
      대부분의 사용자에게는 더미가 "활성"인지 "정체"인지 파악하는 일반 대리지표만으로 충분함. 이를 통해 갈색 재료를 추가하거나, 수분을 조절하거나, 통기를 늘리는 식으로 과정을 조정할 수 있음
      퇴비는 텀블러, 통, 지렁이 농장 같은 구성과 거름, 음식물 찌꺼기, 정원 폐기물 같은 투입물에 따라 결과가 크게 달라짐. 그래도 우리 시스템의 24시간 데이터는 행동 변화 과정을 단순화해 줌
      "시도하고 기다렸다가 다시 시도"하는 방식에 기대지 않고 즉시 피드백을 받으므로, 초보자와 숙련자 모두에게 큰 차이를 만들 수 있음
      개인적으로도 Monty는 큰 학습 도구였음. Monty Mobile 앱을 쓰면서 퇴비 더미에 더 관심을 갖게 됐고, 필요할 때 재료를 추가해 더미를 조정하는 것도 더 잘 기억하게 됨. 실제로 내부에서 무슨 일이 일어나는지 더 잘 연결되어 있다는 느낌이 듦
  • 오래전부터 비슷한 프로젝트를 해보고 싶었음. 화분에 꽂는 하나의 말뚝이 토양 조성, 영양분 수준, 수분, 풍속, 광량, 습도 등을 측정해서 식물 관리 추천과 성장 최적화를 해주는 식임
    결국 아직 해보진 못했음. 센서 구매 추천이 있는지 궁금함

    • 토양 수분으로 이런 취미 프로젝트를 해본 적 있음. 코드를 거의 못 짤 때 만든 지저분한 저장소지만, 정전식 센서 가이드 몇 개로 연결되어 있음: https://github.com/smcalilly/sensor
    • 우리 시스템에서는 Bosch와 Sensirion 센서를 사용함. 퇴비 더미처럼 열, 습기, 미생물 활동이 전자장비를 혹독하게 시험하는 환경에서도 신뢰성과 내구성이 좋음
      적절한 센서를 찾는 데는 시행착오가 많았고, 특히 퇴비화 조건이 워낙 가혹해서 더 그랬음. 프로젝트를 다시 시작한다면 응원하거나 서로 기록을 비교해 보고 싶음
  • Monty Monitor는 여기서 확인할 수 있음: https://montycompost.co/products/im-perfect-monty-monitor

  • 어떻게 마음을 읽었는지 모르겠지만, 정말 우연히 방금 퇴비 모니터링용 열전대를 찾아보고 있었음