株式会社インデペンデンスシステムズ横浜

システム開発エンジニアの西田五郎が運営しております。Raspberry Pi や Arduino その他新規開発案件のご依頼をお待ちしております。

IoT Raspberry Pi

Raspberry PiでIoT(MQTTで遠隔操作編 その1)MQTTでの通信

投稿日:2017年4月23日 更新日:

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編

以下のような構成です

以下のようにライトのOn/Offを切り替えます。

今回のシリーズその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を構築します。

AdSense

AdSense

-IoT, Raspberry Pi

執筆者:

関連記事

SkyWayの利用(その4)Raspberry Piでの利用

前回の続きです。NTTコミュニケーションズ株式会社提供のリアルタイムコミュニケーションのためのプラットフォームであるSkyWayを使ってみます。前回はJavaScriptでカメラとマイクのストリーミン …

Raspberry PiのSDカードをSD Card Copierで別のSDカードへバックアップする方法

Raspberry Piの起動中のSDカードをSD Card Copierで別のSDカードへバックアップする方法についてです。この方法を使うと作業中のRaspberry Piの環境をそのまま別のSDカ …

ESP-WROOM-02でもセンサネットワーク稼働試験

ESP-WROOM-02でもセンサネットワークを稼働してみます。ESP-WROOM-02でもというのは今までRaspberry Piで稼働してきたのでESP-WROOM-02でも稼働してみようというこ …

Raspberry Piでタッチアプリ開発(その4)ボタンとGPIOの連動

Raspberry Piでタッチアプリ開発の4回目です。前回作成したレイアウトとボタンのコールバックにGPIOの処理を組み込みます。そして、このアプリを自動起動するように設定します。 (※2021/0 …

Node.jsでRaspberryPiのGPIOを使う(その2)ブラウザからの操作

Node.jsでRaspberryPiのGPIOを使うの2回目です。前回はGPIOのデバイスドライバをNode.jsのファイル操作を使って操作しました。今回はこれを以下の記事で作成したWebサーバ的な …