ハロー!IoT 1年生 ひつじです。
前回はIoTの基礎用語について記載させて頂きました。
今回は実際にそれぞれの役割がどういう風に動くのか、オープンソースのmosquittoをインストールして
OS上での挙動を見てみましょう。
#mosquittoとは
Eclipse Foundationが展開してMessageBrokerのオープンソース(EPL/EDL licensed)です。
モスキートと発音するようですが、蚊の英語表記とはすこし表記が違います。
前回の記事では、BrokerとはPublisherとSubscriberを仲介する役割としてお話したかと思います。
また、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側のターミナルで状況を確認してみましょう。
ちゃんと受信できていますね。
#まとめ
いかがでしたでしょうか。
実際にmosquittoを使ってMQTTの通信を実施してみました。
なんとなくBrokerやPub/Subのイメージがわいたのではないでしょうか。
今回は1台のOSの中で通信を行いましたが、次回はいよいよクラウドサービスを使っての通信を試してみたいと思います。
それではご査収ください!