Xiaomi Mi Flora Monitorを利用した自動化

Xiaomi Mi Flora Monitor” の続きで,Flora Monitorから得られるセンサー値によってトリガーをかけて自動化をするにはどうしたらいいか。

単にスマホでFlora Monitorで得られる4種類のデータが閲覧できるのはそれだけでも有意義だが,せっかくなのでゆくゆくはそのデータを元に他のことも自動化したい。例えば,養分が少なすぎるようであれば自動で液肥を投入する,であるとか。 “Automated Hydroponic System Build – Projects | Kyle Gabriel” でやられているようなシステムは,非常に本格的で素人がそうそう真似できるものではないが,部分的であろうと自動化できることは大きな意義がある。

調べてみると,Linuxをプラットフォームに想定したFlora Monitor対応のソフトウェアが複数見つかった。IFTTTやZapierのようなクラウド・オートメーション・サービス(以下単純に “IFTTT” として括る)を自動化の核として利用することを前提に考えると,以下のような選択肢がある:

  • Webhookを利用してIFTTTに直接データを投げる。
  • MQTTのブローカー(サーバー)に接続するクライアントとして動作する。MQTTブローカーを何らかの形で用意する必要がある上,何らかの形でMQTTブローカーとIFTTTとのブリッジができなければならない。

ローカルにFlora MonitorとBluetoothで接続し継続的にデータを取得して上記処理を行うLinuxベースのサーバー(以下「モニター・サーバー」)をどうするかについても複数選択肢がある。BLEでFlora Monitorと通信をしなくてはならないので,物理的に近くにモニター・サーバーを設置しなくてはならない。Rasberry Piを使用する方法がよくWeb上では見られる。

Webhookを使って直接IFTTTデータを投げる

IFTTTはwebhookによってデータを受けることができる( “IFTTT Maker Webhooks,” “IFTTT(イフト)で、Webhooksを使用して簡単に自動でGmailを送信する方法” など参照)。ただし,送れるパラメタが3個までなので,Flora Monitorで取得できる4種のデータを同時に送ることはできない

miflora Pythonライブラリなどを使ってセンサーデータを定期的に取得し,webhookを用いてIFTTTに通知すればよい。

MQTTブローカーにデータを投げ,そこからIFTTTにブリッジする

Thomas Dietrich氏による “Xiaomi Mi Flora Plant Sensor MQTT Client/Daemon” (miflora-mqtt-daemon: Linux service to collect and transfer Xiaomi Mi Flora plant sensor data via MQTT to your smart home system, with cluster supportが使いやすそうだ。openHABなどのホームオートメーションシステムに統合することも考慮されている。

Floraに特化してないより一般的な,bt-mqtt-gatewayというRasberry Piに限らないLinux一般で使えるBlueZライブラリを利用するPython 3スクリプトもある。Floraも明示的にサポートしている

自前でMQTTブローカーを用意することも難しくない。オープンソースのEclipse Mosquittoがある。それはOpenWrtでもサポートされているので,LAN内のモニター・サーバー上で走らせることもできる。今想定しているシナリオではLAN内MQTTブローカーからIFTTTへのLAN→WANの一方通行の通信のみなので,リバース・プロキシを用意するなどしてセキュリティに配慮する必要も特にない。

パブリックでフリーなMQTTブローカーも存在するのでそれを利用するのも手。Beebotteフリープランで以下が提供されるのでお遊びには十分。

  • Unlimited Channels
  • 50,000 Messages/day
  • 5,000 Persistent Messages/day
  • 3 Months History
  • SSL Encryption

その他もあるが(以下参照),あくまでお遊び用で「トピック」が丸見えになってしまうものもあるようなので注意。

一般MQTTブローカーとIFTTTのブリッジは存在するが,Beebotteはwebhookを呼ぶことができるのでこれを利用してBeebotte→IFTTTのデータ伝達ができる。さらに,BeebotteはREST APIを用意しているので,IFTTT→Beebotteのデータ伝達もできる。つまりBeebotteとIFTTTは双方向にデータのやり取りができる。

現時点ではMQTTを積極的に利用する意味はあまりない。連動させたいIoT機器はFlora Monitorだけで,これはセンサー機器である以上読み取り処理しかなされず,起動するなどといった処理はないので,IFTTTをwebhookで直接呼ぶだけで十分だ。ただ,将来的にそういう機器が増えてくることを見越してMQTTにIoT関係の処理を集約させるのはよいのかもしれない。

MQTTクライアントは各種ある(例えば “The Seven Best MQTT Client Tools 2019” 参照)。そこにもAndroidクライアントは列挙されてるが,Play Storeにもたくさん見受けられる

その他参考:

モニター・サーバー

モニター・サーバーとしては,いわばXiaomi謹製の製品が, “Gateways to the Internet for Non-IP Wireless Devices” で触れた,Youpin Smart Cleargrass Bluetooth/Wifi Gateway HubXiaomiはスマートホームに力を入れていて,Flora Monitorもその製品群の一つ,という位置づけ。Youpin Smart Cleargrass Bluetooth/Wifi Gateway Hubはその核となるもの。Mi HomeというXiaomi謹製アプリもあるが,Xiaomiの製品もサポートできるのか,や,IFTTTなどのような外部オートメーションシステムと連携できるかについてはわからない。

今のところ,自分は既存ルーターを流用することを考えている。OpenWrtをインストールしたルーターが何台もあり(正確にはブリッジとして運用中),どれもUSBポートがあるのでBluetoothのUSBドングル等周辺機器を利用できる。具体的には,今TP-LinkのTL-WR703Nに担わしてる機能を今後他のルータに移す予定があるので,その後それを流用できるだろう。小型で消費電力も少なく,USBポートもあるのでBLEに対応したドングルを追加できるのでうってつけ(ただしどのドングルを使えばいいかは意外と自明な問題ではない)。なお “OpenWrt Project: Automation, home automation and similar” にOpenWrtをホーム・オートメーションに使うことについての一般的情報がまとめられている。

多く見られるのがRasberry Piを使用する方法。これは,もっともよく使われるBluetoothのクラス2の機器の場合,電波の伝達距離は10m程度未満で,モニター・サーバーをFlora Monitorの物理的な近くに配置せざるをえない。その意味で小型のRasberry Piは向いている。特にビルトインでwifiとBluetooth(BLEを含み)機能を持つPi Zero Wはうってつけだろう。

Rasberry PiをFlora Monitorのモニターサーバーとして使った例を以下にいくつか。

さらに,今回調べるまで全く知らなかったが,ESP32を使用したマイクロコンピュータを使うという方法がある。ESP8266の後継モデルのESP32は非力ではあるが,wifiとデュアルモードのBluetooth(つまりBLEを含む)をサポートしているので,Flora Monitorのデータを取ってどっか(例えばMQTTブローカー)に投げるだけ,のような機能を実現するには十分。ESP8266やESP32は各種のいわゆるスマートデバイスに採用されているようだ。

まだあまりESP32のことは理解できてないんだが,ESP32を採用したSBCはArduinoと同じように扱える(具体的にはArduino IDEで開発できる)というのが一つのメリットのようだ。“esp32″と”flora”でWeb検索するといろいろヒットするAliExpressで”esp32″で検索するとこれまたいろいろヒットするESP8266を採用した機器用の代替ファームウェアTasmotaもある。Esp8266に関するオープンソースプロジェクトの数々

素人が最初に手を出すのには,M5Stack – Modular Rapid ESP32 IoT Development Board – ESP32 dev kitsの製品群,特にESP32 Basic Core IoT Development KitなどはLCDディスプレイ,ハードウェアボタン,スピーカ,バッテリ,micro SDカードリーダなどとともにケースに収められてAliExpressのオフィシャルストアで送料込みで3,500円ほどアマゾンで4,000円ほどスイッチサイエンスで約3,500円+送料ドキュメントも充実しているようだし,いいかもしれない。

TuyaのデバイスでESP8266/ESP32を採用したものはTuya Convertを使えばケースを開けたりはんだ付けしたり,といった手間なくTasmotaをインストールできる。RealTekのチップを採用したものにはTasmotaはインストールできない。

Xiaomi Mi Flora Monitorを利用した自動化」への5件のフィードバック

  1. ピンバック: My USB Bluetooth Dongles Do Not Support BLE | あくまで暫定措置としてのブログ
  2. ピンバック: Xiaomi Mi Flora Monitor | あくまで暫定措置としてのブログ
  3. ピンバック: ESP32デバイス向けESPHome | あくまで暫定措置としてのブログ
  4. ピンバック: BLE対応USB Bluetoothドングル | あくまで暫定措置としてのブログ
  5. ピンバック: 「スマート」なコンセントやテーブルタップ | あくまで暫定措置としてのブログ

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください