Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
4
Help us understand the problem. What is going on with this article?
@TomoakiYAMAGUCHI

MQTT-SNを簡単にテストする方法 その2

More than 3 years have passed since last update.

MQTT-SNゲートウェイを動かしてみよう

MQTT-SNの通信では MQTT-SNメッセージを MQTTメッセージ に変換してブローカーと仲介するMQTT-SNゲートウェイが必要となります。 MQTT-SNクライアント(UDP)とMQTTブローカー(TCP/IP)は直接通信することはできません。
その2では、MQTT-SNゲートウェイを作成してクライアントとブローカー間の通信を行います。 
さらに、シェアードメモリ上のリングバッファに出力されている通信ログをモニターしてみます。 

RaspberryPiなどHDDのないマシンでは、ファイルをFlashメモリに作成するので、メモリの寿命を心配してSRAM上のリングバッファに書き出しています。

用意するもの

  • クライアント用LinuxマシンとC++開発環境
  • ゲートウェイ用LinuxマシンとC++開発環境  
  • インターネットルーター DHCPサーバー付

ゲートウェイの作成

step1. ソースコードの準備

step1. ホームディレクトリーで、Githubからライブラリーをダウンロードします。

$ git clone https://github.com/ty4tw/AsyncMQTT-SN.git

AsyncMQTT-SN/AsyncGateway/srcにゲートウェイのソースコードとAsyncMQTT-SN/AsyncGateway/src/libに必要なライブラリーのソースコードが入っています。

step2. ソースコードをコンパイルします。

$ cd AsyncMQTT-SN/AsyncGateway
$ make DEFS=-DNETWORK_UDP
コンパイルエラーがなければゲートウェイをコピーします。
$ make install
実行モジュール TomyGateway がホームディレクトリーにコピーされます。

step3. ゲートウェイのコンフィグレーションファイルを作成します。

コンフィグレーションファイル /usr/local/etc/tomygateway/config/param.conf を作成します。

param.conf

BrokerName=test.mosquitto.org
BrokerPortNo=1883
SecureConnection=NO
#BrokerPortNo=8883
#SecureConnection=YES
StableNetwork=YES
GatewayID=1
GatewayName=TomyGateway-01
KeepAlive=900
#LoginID=
#Password=
SerialDevice=/dev/ttyUSB0
BroadcastIP=225.1.1.1
GatewayPortNo=2000
BroadcastPortNo=1883

BrokerName で使用するプローカーのドメイン名、BrokerPortNo でブローカーのポートを指定します。
ブローカーとTLSで接続する場合は BrokerPortNo=8883  SecureConnection=YES に変更します。
StableConnection はG3モデムを使用する場合などレスポンスが遅いか不安定な場合 NO にすることで CONNECTの処理が変わります。NOにするとCONNECTに時間がかかります。

step5. リングバッファを使用するために必要なキーファイルを作成します。

次の3つの空ファイルをキーファイルをとして作成します。
1) /usr/local/etc/tomygateway/config/rbmutex.key
2) /usr/local/etc/tomygateway/config/ringbuffer.key
3) /usr/local/etc/tomygateway/config/semaphore.key

step6. ゲートウェイを起動します。
ただし、クライアントとは異なるマシンで実行する必要があります。
$ ./TomyGateway

異常終了しなければ、たぶん動いています。 動いていることを確認するために通信ログを見てみましょう。 

ログモニターの作成

step1. ログモニターのコンパイル。

$ cd AsyncMQTT-SN/LogMonitor
$ make
コンパイルエラーがなければログモニターをコピーします。
$ make install
実行モジュール LogMonitor がホームディレクトリーにコピーされます。

step2. ログモニターの起動。

'$ sudo ./LogMonitor

ログが表示されます。

ここで、Linuxクライアントを起動してください。 クライアント・ゲートウェイ・プローカー間で行われているメッセージ交換内容が表示されているはずです。
Screenshot from 2015-05-20 05:37:02.png

つぎは、その3 でArduino用のクライアントを作成し、クライアント間で通信して、LEDを点滅させてみます。

4
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
TomoakiYAMAGUCHI
得意言語 C/C++ / eclipse paho コミッター

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
4
Help us understand the problem. What is going on with this article?