LoginSignup
8
7

More than 3 years have passed since last update.

IoT初心者向け mosquittoでPub/Sub通信やってみた

Last updated at Posted at 2019-06-22

ハロー!IoT 1年生 ひつじです。

前回はIoTの基礎用語について記載させて頂きました。

今回は実際にそれぞれの役割がどういう風に動くのか、オープンソースのmosquittoをインストールして
OS上での挙動を見てみましょう。

mosquittoとは

Eclipse Foundationが展開してMessageBrokerのオープンソース(EPL/EDL licensed)です。
モスキートと発音するようですが、蚊の英語表記とはすこし表記が違います。

i13.PNG

前回の記事では、BrokerとはPublisherとSubscriberを仲介する役割としてお話したかと思います。

i6.jpg

また、mosquittoにはBrokerだけでなくPublisherとSubscriberとしての機能をもつmosquitto clientもあります。

mosquitto → Brokerとして動くよ
mosquitto client → Pub/Sub通信を提供するよ

今回はこのソフトウェアつかって、MQTTによる通信をやってみたいと思います。

mosquitto インストール

wget http://download.opensuse.org/repositories/home:/oojah:/mqtt/CentOS_CentOS-7/home:oojah:mqtt.repo -O "/etc/yum.repos.d/Mosquitto.repo"
yum install mosquitto mosquitto-clients

これですんなりインスコできればいいのですが、僕の環境だとconflictしてしまいました。
なので、必要であればepelなど競合するレポジトリを無効化(enable=0)して再トライしてみてください。

#epel enable=0のやり方
grep enable /etc/yum.repos.d/epel.repo
enabled=0
#repo指定してインストール
yum --enablerepo=home_oojah_mqtt  install mosquitto
yum --enablerepo=home_oojah_mqtt  install mosquitto-clients

そして最後は起動コマンドを実行しておきましょう。

 /etc/init.d/mosquitto start

これでインスコ作業は完了です。

pub/sub通信してみる

まずはターミナルを2つ起動しておきましょう。
片方でSubscriberとして要求をだします。

#Subscriberとして要求
mosquitto_sub -d -t /client/abc

-t オプションでは、topicを指定しています。
ここでは任意の文字列なら何でもOKです。例では「/client/abc」としています。

次にSubscriberが要求しているTopicに対してPublishしてみましょう。

#Publisherとしてデータ送信
mosquitto_pub -d -t /client/abc -m "sheeptest"

-mにはペイロード(生のデータ)を記載しており、実際に送信するデータを記載します。今回は「sheeptest」という文字列をおくります。

では、Subscriber側のターミナルで状況を確認してみましょう。

i12.PNG

ちゃんと受信できていますね。

まとめ

いかがでしたでしょうか。
実際にmosquittoを使ってMQTTの通信を実施してみました。
なんとなくBrokerやPub/Subのイメージがわいたのではないでしょうか。

こんな流れでしたね。
i11.PNG

今回は1台のOSの中で通信を行いましたが、次回はいよいよクラウドサービスを使っての通信を試してみたいと思います。

それではご査収ください!

8
7
1

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
8
7