3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

MQTTでPub/Subしてみる

Last updated at Posted at 2020-08-08

今回はタイトルの通りMQTTを使ってみて、動作を確認するまでを行います。

目的

covid-19の影響で、イベントに参加する顧客が非接触で楽しめるコンテンツが無いか?という相談が増えています。弊社のインタラクティブコンテンツは、壁を触ったりガジェットを共有したりすることが多いのですが、各人のスマホを操作して何かを行う形であれば、体験共有型のコンテンツがより安全に楽しめるのでは?と考えました。その方法を模索する一環として、IoTの通信プロトコルとしてよく使用されているMQTTを使ってみようと思います。MQTTを使用して、例えば不特定多数の人がスマホからイベント会場の照明演出を任意に変更する、というように、スマホを操作デバイス化して面白い演出ができそうです。


MQTTとは?

MQTT(Message Queueing Telemetry Transport)は、短いメッセージを複数のユーザー(publisher, subscriber)が頻繁に送受信することを想定して作られています(参照)。その軽量さから、IoT実現に適していると言われています。

MQTTはPublish-Subscribe方式でメッセージを送受信します。Publisher(出版者)がBrokerにメッセージを送ると、購読登録をしているSubscriber(購読者)はこのメッセージを受け取ることができます。図にするとこんな感じです。
mqtt_sample.jpg
購読者は特定のトピックのみに購読登録することで、任意のトピックに限定してメッセージを受信することができます。

実際にMQTTブローカー(mosquitto)をインストールしてpub/subしてみます。


環境

PC: macOS Mojave ver.10.14.6


mosquittoをインストールして動作確認

まずはmosquittoをインストールして動作確認まで行います。mosquittoは、MQTTプロトコルを実装したオープンソースのソフトウェアです(参照)
ターミナルで以下のコマンドを実行します。

brew install mosquitto

インストールが完了したら、
以下のディレクトリにパスを通します(環境によって違うかもしれません)。
/usr/local/opt/mosquitto/sbin
/usr/local/opt/mosquitto/bin

ブローカーを立ち上げます。以下のコマンドのみで起動します。

mosquitto

Subscribeする

新しいウィンドウでターミナルを起動して、subscribeします。
🔔コマンドオプション: -d = バックグラウンドでブローカーを実行。 -t = topicの指定

mosquitto_sub -d -t topic/test

Publishする

さらに別のウィンドウでターミナルを起動してpublishします。
コマンド引数-mの後にメッセージを入れます(今回はkumaʕ •ᴥ• ʔkumaです)。

mosquitto_pub -d -t topic/test -m "kumaʕ •ᴥ• ʔkuma"

先ほどsubscribeした方のターミナルに「kumaʕ •ᴥ• ʔkuma」と表示されていれば正常に動作しています。

とっても簡単に使えるようになりました。
今回はMacの中で通信してみましたが、今後は別のデバイス間でメッセージのやりとりをしてみようと思います。

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?