Raspberry PiでIoTのMQTTで遠隔操作編のシリーズを始めます。実際に動作させてみるということを重点として進めます。ここでの遠隔操作は2台のRaspberry Pi間でインターネット経由のMQTTを利用して操作します。遠隔操作の動作としては相手側のRaspberry PiのGPIOを制御します。以下の記事で書いたリレーを使ってAC100Vのクリップ型のライトをオンオフします。
Raspberry PiでAC100V(ソリッド・ステート・リレー)制御
今回のシリーズ一覧です
RaspiでIoT(MQTTで遠隔操作編 その1)MQTTでの通信
RaspiでIoT(MQTTで遠隔操作編 その2)MQTT Brokerの構築とPythonでのpub/sub
RaspiでIoT(MQTTで遠隔操作編 その3)Raspberry PiのGPIOとHeroku連動Sub編
RaspiでIoT(MQTTで遠隔操作編 その4)Raspberry PiのGPIOとHeroku連動Pub編
今回のシリーズその1は遠隔操作を可能にするMQTTについてです。以下のような内容で進めます。
1.MQTTとは
2.MQTTの通信のポイント
3.Mosquittoのインストール
4.Mosquittoで通信の確認
1.MQTTとは
MQTTとはIoTでもよく利用されているプロトコルです。IBM社とEurotech社のメンバーにより考案されたプロトコルで、Publish(パブリッシュ)/Subscribe(サブスクライブ)型プロトコルです。
より詳細は、以下等を参照して下さい。
MQTT Version 3.1.1
今現在の最新(Ver3.1.1)より前のバージョン(Ver3.1)のようですが、以下の日本語でのページもあります。
MQTT V3.1 プロトコル仕様
2.MQTTの通信のポイント
実際に通信を行うためのポイントです。まず、実際のPublish/Subscribeでの通信は以下のようになります。
Publisherがメッセージの送信側で、Subscriberがメッセージの受信側になりbroker(ブローカー)がメッセージの中継を行います。
このメッセージ通信をTopic(トピック)という仕組みで行います。このトピックは/(スラッシュ) 区切りで指定します。このTopicを指定してメッセージを送信します。
他にも、QoS 、Will、Retain等の仕様がありますが、ここではMQTT自体を実装するのではなくて利用してみるということで仕様はこのあたりにします。次に実際にMosquitto(MQTTのオープンソース実装)で通信を試してみます。
3.Mosquittoのインストール
MosuittoはMQTTのオープンソース実装です。Raspberry Piでは比較的簡単にインストール出来てPublish/Subscribeの処理が確認出来ます。Raspberry Piが複数台あれば、Broker、Publisher、Subscriberと分けて動作させると分かりやすいと思いますが、ここでは1台で試します。
Mosquittoのサイトは以下です。
Mosquitto.org
Mosquitto(Broker)をインストールします。
$ sudo apt-get install mosquitto
以下のように完了しました。(※何回かやり直したので実際のメッセージとは違う場合もあるかとは思います。ご了承下さい。)
これで以下のように状態を確認します。
$ sudo service mosquitto status
activeが確認出来ます。
Mosquittoクライアントをインストールします。
$ sudo apt-get install mosquitto-clients
以上でインストールは完了です。
4.Mosquittoで通信の確認
ここではとにかく簡単なやりとりを確認します。まず、subscriberを起動します。
$ mosquitto_sub -h localhost -t tp1/sub1
これで、localhostのBroker(サーバ)のtp1/sub1というトピックをsubscribeします。待ちの状態になります。
次に、publishを実行します。こちらはすぐに完了します。
$ mosquitto_pub -h localhost -t tp1/sub1 -m Hello
subscriber側を確認します。Helloが届いています。
実際にはもっといろいろと指定出来ますが、ここではここまでにします。
今回はここまでにします。次回はインターネット上にBrokerを構築します。実際にはHerokuを使ってCloudMQTTを構築します。