2016年8月24日水曜日

MQTT理解(publisher/subscriber: ruby利用、broker: Bluemixサービス)


◆ 目的
IoTやM2Mで使われるpublisherとsubscriberモデルの軽量なメッセージプロトコルであるMQTTの動作をrubyクライアントを使い確認する。rubyのmqttライブラリはこちらを使う。

brokerとなるサーバは構築の手間を省くため、IBM Bluemix上にあるサービス、Internet of Things Platform を利用する。



◆ publisher接続仕様
IBMが提供するIoTのbrokerの作法の詳細はこちら
以下ではコードを書く上で必要なところを抽出してまとめる。

(フォーマット)
● 認証(ユーザ)     : use-token-auth(固定値)
     (パスワード)   : デバイス登録時に払い出されるトークン

● Client ID      : d:{org_id}:{device_type}:{device_id}

● Topic(event)   : iot-2/evt/{event_id}/fmt/{format}
       (command) : iot-2/cmd/{command_id}/fmt/{format}
                   今回はeventトピック(commandではない)のフォーマットを利用する

{}の各変数はそれぞれ以下の意味である。
org_id           : brokerが払い出し(接続先エンドポイントのURIに付与される)
device_type      : 任意のものを作成
                   ここではラズベリーパイを使うことを想定しraspiとする
device_id        : デバイス単位で固有の値を任意に作成

event_id         : 任意のものを作成(ここではtype01とする)
command_id       : 任意のものを作成
format           : jsonとする

下記変数部分は文字列ワイルドカード文字(+)を使用することができる。
device_type、device_id、event_id、format



◆ subscriber接続仕様
(フォーマット)
● 認証(ユーザ)      : APIキー(broker管理画面で作成)
     (パスワード)    : APIトークン(broker管理画面で作成)

● Client ID       : a:{org_id}:{app_id}

● Topic(event)    : iot-2/type/{device_type}/id/{device_id}/evt/{event_id}/fmt/{format}
     (command)    : iot-2/type/{device_type}/id/{device_id}/cmd/{command_id}/fmt/{format}

{}の各変数はそれぞれ以下の意味である。
app_id            : 任意のものを作成(ここではapp01とする)

下記変数部分は文字列ワイルドカード文字(+)を使用することができる。
device_type、device_id、cmd_id、format



◆ publisherコード



◆ subscriberコード



◆ 試験
1.
$ ./subscriber.rb
待ち

2.
$ ./publisher.rb

3.
subscriber.rbのプロンプトへ以下が出力される。
"iot-2/type/android/id/12345/evt/type01/fmt/json"
"{\"d\":{\"test_data\":10}}"



3 件のコメント:

  1. Thank you for sharing such a nice and interesting blog with us. I have seen that all will say the same thing repeatedly. But in your blog, I had a chance to get some useful and unique information. I would like to suggest your blog in my dude circle.
    Jobs in Chennai
    Jobs in Bangalore
    Jobs in Delhi
    Jobs in Hyderabad
    Jobs in Kolkata
    Jobs in Mumbai
    Jobs in Noida
    Jobs in Pune

    返信削除
  2. I am regular visitor of this blog .I am working as blog reviewer in a private press and I saw many useful posts here. Sure, I will give best ratings for this blog .Keep posting best posts like this to get top reviews and ratings from blog reviewers and people .And I am thankful for this valuable post.
    Nautical Science Colleges in Chennai | Mechanical Colleges in Chennai | ECE Colleges in Chennai

    返信削除
  3. Great post! I am see the great contents and step by step read really nice information.I am gather this concepts and more information. It's helpful for me my friend. Also great blog here with all of the valuable information you have.
    Seo Company in India

    返信削除