Translate

2015年6月4日木曜日

PubSubClientライブラリを使ってArduinoからIBM IoT Foundationトライアル版へセンサデータを送信する


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 件のコメント:

既存アプリケーションをK8s上でコンテナ化して動かす場合の設計注意事項メモ

既存アプリをK8sなどのコンテナにして動かすには、どこを注意すればいいか..ちょっと調べたときの注意事項をメモにした。   1. The Twelve Factors (日本語訳からの転記) コードベース   バージョン管理されている1つのコードベースと複数のデプロイ 依存関係 ...