- 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 アカウントのような追加コンポーネントが必要
- OS は 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 プラットフォームやダッシュボードと連携し、リアルタイム可視化、ロギング、追加の自動化に利用できる
参考資料
1件のコメント
Hacker Newsの意見
アイデアが浮かんだ。馬房を片付けたときに出た大きな堆肥の山があり、主に尿を含んだ木材チップとほぼ分解された馬糞でできていて、土も少し混ざっている
この夏にジャガイモとニンジンを植えてみたが、ジャガイモはとてもうまく育ち、ニンジンはいまひとつだったものの、水やりを間違えたせいだと思う
まだ完全には分解されていないようなので、温度を測ればどれくらい活発か分かりそうだ。以前、別の発酵プロジェクトで周囲温度を追跡していたESP8266ベースの温度センサーも1つある
サーミスタを密封し、8266をIP67ケースに入れてから太陽電池と一緒に堆肥の山の上に差しておけばよさそうだ。すでに
.localドメインでWebページも動かしているので、作業もほとんどかからなそう今週末に実際にやってみるかもしれない
熱性肥料は窒素化合物が多く、堆肥の山で素早く分解され、その過程で多くの熱を出す。伝統的な温室では、腐敗する肥料のエネルギーで冬に苗や挿し木を育てており、鶏・アヒル・馬糞がこれに当たる
冷性肥料は栄養分が少なく、分解時の発熱も少ないため、植物を傷める危険が低い。牛・ヤギ・羊のような反芻動物は、植物性の餌に含まれる窒素の大半を消化過程で取り出すのでこれに当たる。ラマやアルパカは反芻動物ではないが、肥料の栄養分が低いため冷性と見なせる
製品をけなしたいわけではないが、個人的には必要なさそうだ。ただ、電子モニタリングが投資額を回収できるほど最終産物を改善するには、堆肥化の規模がどの程度必要なのか検討したのか気になる
かなり大きな規模である必要がありそうに感じる
家庭向けデザインのキノコっぽい雰囲気は気に入っていて、そちらをもっと押し出してもよかった気がする
こうした環境では、通気サイクルの最適化や、コストが膨らむ前に非効率を見つけるといった形で、データに基づくインサイトが効率向上とコスト削減に実際に役立つ。製品サイトはこちら: (https://www.monty-pro.com)
家庭ではコスト削減よりも、日常的に堆肥を使う人が自分の手間の効果をよりよく得られるよう、便利なインサイトを提供することに重点を置いている。小規模でも堆肥化体験全体をより豊かにするのが目的だ
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...
作物モニタリングの Wiki 検索: https://www.google.com/search?q=crop+monitoring+wikipedia ...
精密農業: https://en.wikipedia.org/wiki/Precision_agriculture
デジタル農業: https://en.wikipedia.org/wiki/Digital_agriculture
GitHub の作物モニタリングシステム検索: https://www.google.com/search?q=crop+monitoring+system+site%...
SIEM: https://en.wikipedia.org/wiki/Security_information_and_event...
どのメーカーとモデルのセンサーを使っているのか気になります。趣味プロジェクトで非常に安価なセンサーを使って 環境モニタリングを試したことがありますが、センサー値の再現性や CO2 センサーのノイズ耐性でかなりひどい経験をしました。
HN でも関連する議論があり、そのおかげでノイズが問題の原因だと気づき、検証できました。
自宅でブレッドボードを組むレベルを超えるプロジェクトのアイデアがいくつかありますが、ソフトウェアとインフラの面が成熟してきているので、今度は信頼できる部品の上に作りたいです。
プロジェクトのアイデアをもう少し共有してもらえれば、役に立てる範囲でもう少し深く話せます。
より包括的で拡張性のある 小規模堆肥モニタリングが増えるのは良いことです。Gathering for Open Ag Tech コミュニティでも関心を持たれるかもしれません (https://forum.goatech.org/)
良いとは思いますが、高温堆肥を回すのに温度計 1 本あればかなり十分ではないかとも思います。私の堆肥が 45°C を超えたら、好熱性微生物がいて活動していると見なしてかなり確信できます。
ただ、私たちのシステムはもう少し深く知りたいときに力を発揮します。たとえばガス、水分レベル、気圧データを加えると、プロセスをより効果的にトラブルシュートしたり最適化したりできます。活動が好気性なのか嫌気性なのか、水分がどちらかに極端に偏っていないか、といったことが分かります。
堆肥化の配合や投入物が複雑になったり、プロセスが止まったのに理由が分からなかったりするとき、こうした知見が役立ちます。もちろん、誰もが多機能を必要としているわけではなく、信頼できる温度計と堆肥の勘だけでも、立派で健全な堆肥を作れます。
黒いプラスチック製の Dalek 型容器で、表面積に対して体積が小さすぎ、設置場所もかなり日陰です。
堆肥をモニタリングするときに得られるセンサー値の実用性がより気になる。温度と水分は直感的だが、たとえばガス組成は炭素/窒素比を示唆するのか、それとも山が無酸素状態に向かっているかを確認するためなのか?
気圧が分解速度の一般的な代理指標なのかも気になる。
また、モニタリングしながら学んだことによって、実際の堆肥化の習慣を変えたことがあるのかも知りたい。
温度データとあわせて見ると、その活動が好気性、つまり健全な堆肥の山なのか、それとも望ましくなく臭いが出る可能性のある嫌気性なのかをかなりよく把握できる。たとえば酸素の利用可能性が低下している状況でTVOCが急増した場合、嫌気性条件である可能性が高い。
気圧は companion アプリの Monty Mobile で、山を切り返したイベントの検知の一部として使っている。アプリは、水分レベルや切り返し頻度のような条件変化が分解にどのような影響を与えるかについても、ほかのデータとあわせて分析する。
ほとんどのユーザーにとっては、山が「活性」なのか「停滞」なのかを把握する一般的な代理指標だけで十分だ。これにより、茶色い材料を追加したり、水分を調整したり、通気を増やしたりする形でプロセスを調整できる。
堆肥は、タンブラー、容器、ミミズ農場のような構成や、肥料、生ごみ、庭の廃棄物のような投入物によって結果が大きく変わる。それでも、私たちのシステムの24時間データは行動変化のプロセスを単純化してくれる。
「試して待って、また試す」というやり方に頼らず即時フィードバックを得られるので、初心者にも経験者にも大きな違いを生みうる。
個人的にも Monty は大きな学習ツールだった。Monty Mobile アプリを使うことで堆肥の山により注意を向けるようになり、必要なときに材料を追加して山を調整することも、よりよく覚えていられるようになった。実際に内部で何が起きているのかと、より強くつながっている感覚がある。
以前から似たようなプロジェクトをやってみたかった。鉢植えに挿す1本の杭が土壌組成、栄養レベル、水分、風速、光量、湿度などを測定して、植物管理の推奨や成長の最適化をしてくれるようなものだ。
結局まだやれていない。おすすめのセンサー購入先があれば知りたい。
適切なセンサーを見つけるまでには試行錯誤が多く、特に堆肥化の条件が非常に過酷なのでなおさらだった。もしプロジェクトを再開するなら、応援したいし、お互いの記録を比べてみたい。
Monty Monitor はここで確認できる: https://montycompost.co/products/im-perfect-monty-monitor
どうやって心を読んだのかわからないが、本当に偶然、ちょうど今さっき堆肥モニタリング用の熱電対を調べていたところだった