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

o1-previewにナップサック問題を解かせてみた

Azure環境上にあるo1-previewを使って、以下のナップサック問題を解かせてみました。   ナップサック問題とは、ナップサックにものを入れるときどれを何個入れればいいかを計算する問題です。数学では数理最適化手法を使う際の例でよく出てきます。 Azure OpenAI Se...