IoTのデモなどのためにIBM IoT Foundationと接続する場合、一番手っ取り早いのがQuickStartだ。
なので、これまではQuickStartを使っていたのだけど、そろそろSaaS(?)版の本物に近い環境での接続を試しておかないと、いざ仕事になった時にこまる。
ということでMQTTブローカの先をトライアル版の環境に変更することにした。
トライアル版を使用するには、IBM IoT Foundationサイトから「Sign up」を押して、IBM Cloud Marketplaceの「Go to Market」ボタンを押し、
Internet of Things Cloud というサイトからFree Trial 「TRY NOW」ボタンを押してIBM IDを登録(すでに持っていれば既存IDで接続)する。
有料版もあるが、執筆時点でリージョン日本ではオープンになっていなかった。
登録が完了するとメールがおくられてくるのでその中のLunch Serviceリンクを踏む。
https://internetofthings.ibmcloud.com/を開いて、ログインしてもよい。
ログインすると右上のアイコンが人マークになるのでこの人型アイコンをクリックする。
するとYOUR ORGANIZATIONに1つ組織が構築されているのでこの組織名文字列リンクを踏む(この組織名は、接続先URLの先頭の文字列となる)。
Devicesタブを選択する。
Add Deviceリンクを押し、デバイス登録画面を開く。
デバイスタイプの文字列を適当に入力する。私は使用デバイスの名称(arduino)にした。
Device IDにはMACアドレス(小文字コロンなし)を入力し、Continueボタンを押す。
表示された情報を記録し、Doneボタンを押す。
表に追加したデバイスがあらわれ、すでに接続済みであれば先頭のマークが緑色になる。LastEventの+マークを押せば、接続した履歴が表示される。接続されていない場合は赤い■マークがかわりに表示されている。
Arduino側のプログラムはtokenを使った認証が必要となる。先ほとデバイス登録直後メモした情報を使用する。
PubSubClientライブラリを使ったプログラムについては、
Arduino YUN上の温湿度センサデータをIBM IoT Foundation QuickStartへ送信する
に書いた記事を参考のこと。
PubSubClientオブジェクトの生成部分が以下のようになっている場合、
PubSubClient client(serverName, 1883, 0, c);
serverNameを「<組織名>.messaging.internetofthings.ibmcloud.com」に変更する。
次に、PubSubClientオブジェクトのconnect()を実行する箇所は、引数3つの関数に変更する。
client.connect(clientName, userName, password);
clientNameは「d:<組織名>:<デバイスタイプ>:<デバイスID(MACアドレス小文字コロンなし)>」を指定する。
userNameは、「use-token-auth」という固定文字列を指定する。
passwordは、デバイス登録直後にメモしたauth-token値を指定する。
トピック名の指定方法はQuickStartの際の記述方法と同じなので省略する。詳細は以下のサイトを参照のこと。
MQTT client connection
https://docs.internetofthings.ibmcloud.com/messaging/mqtt.html#mqtt-client-connection
0 件のコメント:
コメントを投稿