2023年03月20日 更新

MQTT通信のデータ送信を簡単にためしてみよう

どうも、クラゲジュニアです。

今回はIoTでよく使われるMQTT通信を少しだけ試してみようと思います。MQTT通信とは、複数の端末から小さなデータが大量に流れるときに有効な通信手段で、自動車のセンサデータを集約するときなどに幅広く使われています。

今回は、MQTT通信におけるデータの送信を簡単に触ってみようと思います。

ざっくりしたMQTT通信の説明

MQTT通信にはパブリッシャー(publisher)サブスクライバー(subscriber)ブローカー(broker)という3つの要素があります。

通信の流れとしては、パブリッシャーがセンサ値などのデータをブローカーに送信し、それをブローカーが振り分けて最終的にサブスクライバーがそのデータを受信するイメージです。

今回は、パブリッシャーからブローカーにデータを送信するところまで行います。

用意するもの

今回はMQTT XというEMQ Technologies Inc.が開発したMQTTクライアントツールとshiftr.ioというサービスを使います。ちなみに今回はユーザー登録などの作業は必要ありません。

MQTT Xについては、下記のリンクからツールをインストールしてください。クラゲジュニアはWindows 10(x64)を使っているため、v1.9.1.win64.exeをインストールしました。

https://mqttx.app/

shiftr.ioについては、特に何か用意することはありません。下記のリンクにアクセスして、少し下にスクロールして下図の青く色を反転させている箇所をコピーしていただければOKです。

https://www.shiftr.io/try

登録のいらないサーバーである都合上、すでに色々な人が使っています。

構成

今回は下記の構成を作っていきます。今回は、MQTT XパブリッシャーShiftr.ioブローカーになっています。

手順

まず、MQTT Xを起動し、+ New Connectionをクリックします。

表示設定画面のうち、NameClient IDHostを設定します。

  • Name: shiftr_io_test (こちらは自由でOKです)
  • Client ID: kurage_[任意のランダムな文字列] (一応自由ですが、他のユーザーとのバッティングに注意してください。)
  • Host: public:public@public.cloud.shiftr.io (先程コピーしたURL)

少し設定画面を下にスクロールし、AdvancedMQTT Version3.1.1に設定します。

設定がおわりましたら、右上のConnectをクリックします。

正しく設定できていれば、Connectedと通知されます。 通知されていない場合は前述の設定を見返してみてください。

データ送信

今からデータを送信します。前述の通り、今からデータを送るブローカーは不特定多数の方が使用しているため、決して個人を特定できる情報は流さないでください。

Connected通知後の画面で右下のPayloadタブを開き、Topicの欄にjellyfish、その下の欄に下記を入力してください。また、すでに何かが書かれていた場合は一旦すべて消してから貼り付けてください。

{
  "msg": "hello, kurage"
}

設定したあと、右下の丸い送信ボタンをクリックします。 すると、画面上に送信されたメッセージが見えるようになります。何度か押すと、その都度メッセージが増えます。

では、shiftr.ioに再度アクセスしてみましょう。

https://www.shiftr.io/try/

下のグラフまでスクロールして、Last Messagesの欄で下スクロールしてTopicに設定したjellyfishを探してみましょう。また、三段目にかかれているIDがkurage_[設定したランダムな文字列]になっていることも合わせて確認してみましょう。

途中で見切れていますが、{ "msg": "hello, kurag…と表示されていますね。どうやらブローカーにデータが送信されているようです!

今回はMQTT通信でパブリッシャーからブローカーまでデータを流すことができました!

以上です。