MQTTブローカ

重要な追記: 以下,Beebotte無料プランが目的が達成されるよい選択肢という骨子だった。いざ実際に使い始めてみると,その結論は誤ってないものの,Beebotteの利点と認識していたことがMQTTブローカとして使った際には必ずしも適用されないことがわかった。これらのことを “BeebotteのMQTTブリッジ” にまとめた。その上で,ESP32搭載TTGo T-Displayからセンサー値をMQTTブローカに投げるようにしてみた


MQTT.orgのロゴ

MQTT.orgのロゴ

MQTTブローカを使いたい。複数ベンダによるIoT機器を包括的にモニタし,コントロールするのにMQTTを統一インターフェースとして利用するのが理にかなってると思われるから。

LAN内の運用

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

インターネット上のサービスの利用

パブリックでフリーなMQTTブローカーも存在するのでそれを利用するのも手。LAN内ではなくインターネット内に存在するので,セキュリティーに注意する必要がある。

例えば,仮に自宅の室内の温度を見られたところで実害があるとは考えにくいが,IPカメラの画像であればそうもいってられなくなる(後でとりあげるBeebotteであれば, “Plans” のFAQ中の “What is a message?” によればインバウンドのメッセージは最大16KBということなので粗い画像を送りつけることは十分可能)。さらに,読み出しだけならまだしも,何か機器を制御できるようにしてあるのなら,それはアクセスされてはまずい。

TLS (Transport Layer Security)がサポートされていることが最低限必要だが,それだけでは不十分かもしれない。 “JavaScriptをサポートするESP8266/ESP32ファームウェア” でとりあげたMQTTブローカ機能を持つIoTプラットフォームのmDashのドキュメントに以下があった:

NOTE: mDash also supports MQTT as a transport protocol for devices. However, we would discourage from using it because of a security reasons. A single leaked device password can give an access to the entire fleet. A malicious client can suscribe to the # wildcard topic to sniff all traffic, and also can send commands to any device connected over MQTT.

Beebotte

Beebotte太っ腹な無料プランで以下が提供されるのでお遊びには十分。後で見るように,他にも無料プランとは思えない機能の充実ぶり。

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

ただし,messageの数え方は少し特殊で,5万メッセージ/日は意外と早く消費するかもしれない。 “Plans” のFAQ中の “What is a message?” 参照。

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

Beebotteと他のサービスとの連携については以下のように双方向通信が可能:

β版としているがルールエンジンが用意されている。MQTTブローカはデータのやりとりだけに終止させ,それに基づく自動化は別に分けるのが separation of concerns の観点からはいいのかもしれないが,簡単なことであればBeebotteの中で完結させてしまう選択肢があるのはよい。アクションとしてAndroid端末にFCMでメッセージが送れるとなっているが,具体的にどうするのかわかってない。

セキュリティーの重要性は認識しているようで, “Beebotte MQTT Support” で3つのレベルのアクセス制御を提供している。トークンは取り消したり再生成できる

Beebotte MQTT Support” の “Considerations” にある細かな要件を,ESPHomeであれば,そのMQTTクライアントコンポーネントで満たすことができるのかはこれから要検討。

用意されたウィジェットを使ってグラフィカルなダッシュボードを作れる

Microsoft Azure IoT Hub

Microsoft Azure IoT Hub(MQTTブローカー機能あり)は,「IoT Hub Free エディションは、概念実証プロジェクトを推進する目的で用意されています。1日あたり合計 8,000メッセージまで送信でき、最大500台までのデバイスIDを登録できます。デバイス ID の制限は Free エディションにのみ適用されます。」ということ。8,000メッセージ/日ならまだ使えそう。

モノのインターネット (IoT) の徹底的なセキュリティ | Microsoft Docs” でTLSだけでなくそれ以上のセキュリティー対策が講じられていることが分かる。

無料使用については “ようやく始める Azure IoT Hub – Qiita” ,MQTTブローカー機能の使用については “Azure IoTHubにMQTTを使ってつないでみる。 – Qiita” 。 “AWS と Azure と Raspberry Pi (ラズパイ) で IoT してみた (3) #raspi #aws #azure – クリエーションライン株式会社

 

MQTTブローカ」への6件のフィードバック

  1. ピンバック: Xiaomi Mi Flora Monitorを利用した自動化 | あくまで暫定措置としてのブログ
  2. ピンバック: TTGo T-Display ディスプレーつきESP32開発ボード | あくまで暫定措置としてのブログ
  3. ピンバック: BeebotteのMQTTブリッジ | あくまで暫定措置としてのブログ
  4. ピンバック: BeebotteのMQTTブリッジ | あくまで暫定措置としてのブログ
  5. ピンバック: ESP32搭載TTGo T-Displayからセンサー値をMQTTブローカに投げる | あくまで暫定措置としてのブログ
  6. ピンバック: SONOFF MICRO USBスマートアダプタをMQTT経由で操作できるように | あくまで暫定措置としてのブログ

コメントを残す

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

WordPress.com ロゴ

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

Google フォト

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

Twitter 画像

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

Facebook の写真

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

%s と連携中

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