2017年5月22日月曜日

IBMのWatson IoT PlatformでMQTTブローカを設定する方法

  • IoT Platformの作成
  • 必要情報の設定(1/2)
  • 必要情報の設定(2/2)
  • コマンドによる確認
の大きく分けて4段階で設定する。

IoT Platformの作成


IoT Bluemixのカタログから、
Internet of Things Platformを選択


遷移先のページでLiteを選択し、Create


Liteプランでは 500デバイス上限で、200MBまでの通信が使える。


遷移先のページでLaunch



デバイスタイプの設定


左のメニューからDEVICESを選択。



 Add Deviceを選択。


Create device type



もう一度Create device type


デバイスタイプの名前を設定


ここで設定した名前が「デバイスタイプ」となる。
他の人が使っていない名前にする必要がある。

入力したらnextを押して進む。


次にテンプレートを選ぶ画面になるが、選択しなくてOK。


そのままNext。


最後に確認画面が出るので、Next。


メタデータの設定も空欄でOK。
今までNextと書かれていた部分がCreateになるので、クリック。





すると最初の画面に戻り、先程設定した値が選択されていることを確認してNext。


Device IDを設定する。
入力したらNext。


またメタデータの入力画面になるので、空欄でOK。



次の画面で2通りの選択肢が与えられるが、自分は入力欄にトークンを入力した。


入力したら確認画面になるので、Addを押して作成。


作成したら、Organization IDをメモっておく。(URLにも入っている)


ここまでで、
  • デバイスタイプ 
  • デバイスID
  • トークン
  • Organization ID
が揃った。
あとはAPI Keyを設定する。



API Keyの設定

上記の流れで来ると、まだデバイスタイプのウィンドウが開いていると思うので、×ボタンで閉じる。


メニューのAPPSを選択。


Generate API Keyをクリック。


API KeyとAuthentication Tokenをメモして、Generateをクリック。
特に、Authentication Tokenは再確認しづらい(できない?)ので、確実に保存しておく。


mosquittoによる確認

mosquittoのコマンドで確認
-uオプションや-Pオプションはシングルクォーテーションでくくっておかないと、文字列とターミナルソフトによっては変数展開されてしまう。

サブスクライブ(Subscribe)コマンド(【パラメータ】を上記で取得したものに置き換え)

mosquitto_sub -i a:【Organization ID】:【App ID(任意の文字列)】 -h 【Organization ID】.messaging.internetofthings.ibmcloud.com -u '【API Key】' -P '【Authentication Token】'  -t "iot-2/type/【デバイスタイプ】/id/【デバイスID】/evt/【トピック】/fmt/json" -d 
 上記コマンドを実行し、
Subscribed (mid: 1): 0
このようなステータスで止まっていればサブスクライブ中。


サブスクライブとは別のターミナルで以下のパブリッシュ側コマンドを実行。

パブリッシュ(Publish)コマンド(【パラメータ】を上記で取得したものに置き換え)

mosquitto_pub -i d:【Organization ID】:【デバイスタイプ】:【デバイスID】 -h 【Organization ID】.messaging.internetofthings.ibmcloud.com -u "use-token-auth" -P '【トークン】' -t "iot-2/evt/【トピック】/fmt/json" -m '{"d":{"q":"適当なJSONメッセージ。dやqも変えて良い"}}' -d
上記コマンドを実行すると、サブスクライブ側で
{"d":{"q":"適当なJSONメッセージ。dやqも変えて良い"}}
のようにパブリッシュしたjsonメッセージが受信できているはず。


これで無料でMQTTブローカーが手に入る。