おはようございます、cloudpack@dz_ こと大平かづみです。

Prologue – はじめに

さぁ、いよいよ IoT プラットフォームにつなぐ準備ができました!

Bluemix Advent Calendar 2015 でお披露目するべく、着々と準備を進めていたこの ESP-WROOM-02 !

38dd26d0-f6be-dfa5-39bb-0bb408b903ed

(WiFiモジュール、Arduino互換のプログラム書き込み可能)

キミを、 IBM IoT Foundation で Bluemix につなげてあげるよー!(/・ω・)/

準備

前提

ESP-WROOM-02 がインターネットに接続できる状態であることが前提です。

過去の記事で ESP-WROOM-02 の準備をしたので、ぜひご参照くださいませ。

おおまかな手順

さて、準備ができたら Bluemix IBM IoT Foundation に接続する準備を進めましょう。

  1. Arduino IDE に MQTT ライブラリを導入する
  2. Bluemix で IoT Foundation サービスを作成する
  3. IoT Foundation にデバイスを登録する
  4. Bluemix で IoT Foundation Starter を作成する
  5. データを送ってみる

Arduino IDE にMQTT ライブラリを導入する

Arduino IDE に MQTT ライブラリを導入します。

今回は、参考にしている IBM developerWorksレシピ で紹介されている Arduino Client for MQTT を利用します。

Git で導入する場合

Arduino IDE のインストールディレクトリに、libraries があるので、その下に任意のディレクトリを作って git clone してください。

ce3a747d-596e-527d-21cb-c402dc578505

「スケッチ」>「Include Library」>「Manage Libraries…」を開きます。

b5d58e7b-d74a-41a2-bee7-6bdd01d06e09

PubSubClient をみつけて、インストールしてください。

97cca53c-b0be-90b6-7838-b89217a5a11b

Zip で導入する場合

もし、Zip をダウンロードして導入する方は、 Arduino IDE の 「Add .ZIP Library…」を利用できるかと思います。

bb3a7e7f-6f09-4391-2730-df15fe1976d7

Bluemix で IoT Foundation サービスを作成する

それではさっそく、 Bluemixカタログ から、「Internet of Things Foundation」を作成します。

df1068bb-b639-7297-4d8d-4e440c73d1dd

名前を付けて、アンバインドのままで作成します。

8e31d144-1867-651e-aa63-b6f08b4b2420

「ダッシュボードを起動」で、Internet of Things Foudation のダッシュボードを開きます。

118e9e3c-88af-200d-2578-e787754d10e8

IoT Foundation にデバイスを登録する

次に、ESP-WROOM-02 を想定したデバイスを IoT Foundaiton に登録します。Internet of Things Foundation へのデバイスの登録 を参考にしました。
Internet of Things Foundation のダッシュボードはこのようになっています。デバイスの追加をクリックします。

498ed99e-e4f0-ffc6-3475-145b3f7addc0

作成直後は、デバイス・タイプがないので、作成しましょう。

1de12f38-074d-f53c-7ec7-227c3ba8de7f

任意のデバイス名を入力します。この後オプションでいろいろ入力できるので、好みで入力してください。

b03a5f08-e52d-e651-046f-62c624862cb5

デバイス・タイプが作成できたので、デバイスの追加に進みます。

b81d7a71-17e6-b5f6-dc1b-406048100b40

任意のデバイス名を入力します。この後もオプションでいろいろ設定できるのでお好みで設定してください。

450e4cf3-0262-82e6-4de6-6ceeb34094d9

トークンの設定をします。私は「自動生成認証トークン」を利用しました。

9d703061-259e-7f7e-65fa-cbf5016eddbf

デバイスの登録が完了しました。

7112ab17-febb-ee56-70ec-eadb50d09619

この情報はプログラムで使いますので、控えておいてください。トークンはこれ以降は表示されないので、ここで必ず控えておいてください。

  • 組織ID
  • デバイス・タイプ
  • デバイスID
  • 認証トークン

Internet of Things Foundation Starter を作成する

それから、データの受け手も作成しましょう。

モノのインターネット・スターター・アプリケーションによるアプリの作成 を参考に、IoT Foundation と連動するスターターアプリを使ってみます。

これはNode-RED というGUIで処理を描けるオープンソースのツールを用いたアプリケーションがつくれます。私は今回初めて触ってその簡単さにびっくりしました。

Bluemixカタログ から、今度は「Internet of Things Foundation Starter」を作成します。項目を入力して作成を進めてください。

5a6a62c9-4979-b8e1-a320-36148ee1677e

作成できたら、アプリケーションの起動を待ちます。

起動できたら、URLをクリックして開いてください。

db54b6d5-d574-4e1f-9f14-e81b66a0fa8c

Node-RED のフローエディタを開きます。

fb5a87f0-0ba8-a6c7-d1df-a7ad89868c4a

こんな画面です。ノードをつなげて処理を作っていきます。この時点ですでに IoT Foundation からの入力を受けてデバッガに出力する処理が設定されています。

1f55aa33-9e42-c6c5-2c59-e5b0522709bf

ここで、Bluemix のダッシュボードに戻って、このスターターアプリケーションに「Internet of Things Foundation サービス」をバインドします。(アプリケーションの再起動があります。)

c0e6b889-eed5-3ea3-6107-2f0e64f093f7

アプリケーションの再起動が終わったら、IoT Foundation からの入力を調整するので、Node-RED フローエディタの「IBM IoT App In」をダブルクリックしてください。

9e4682a1-2a17-ed51-4241-b1f0ce7d97d3

「Authentication」に「Bluemix Service」を選択して「OK」をクリックします。(適宜、「Device Id」を指定してもいいかもしれません。)

8e0797d7-43cb-ecdf-8955-eafa88679ef8

これで準備は完了です。

データを送ってみる

いよいよデータを送ってみましょう!

ソースコードは、IBM developerWorks レシピ のサンプルコードをベースに、PubSubClient の ESP8266向けサンプルコード を参考に調整しました。

esp8266_to_iotf.ino
/**
 * This source code refer to the recipe of IBM developerWorks, https://developer.ibm.com/recipes/tutorials/connect-an-esp8266-with-the-arduino-sdk-to-the-ibm-iot-foundation/ .
 */

#include 
#include 

//-------- Customise these values -----------
const char* ssid = "";
const char* password = "";

#define ORG ""      // 組織ID
#define DEVICE_TYPE ""  // デバイス・タイプ
#define DEVICE_ID "

いざ!

0e8c69f8-87d1-a299-33c8-96d2fda2fe17

3cd5f76e-9345-df82-eef7-8bdf7a799daf

この ESP-WROOM-02 から Bluemix につながったーーーー!!!(*ノωノ)

朝4時の感動。

Epilogue – おわりに

実は、意気込んで作業開始するも Bluemix の計画メンテナンスにぶつかり、500エラーの連続…(;´Д`)

普段使ってる米国リージョンをあきらめ、仮眠してヨーロッパがメンテナンスが終わるのを待ち、4時に晴れて繋がるというぎりぎりな Advent Calendar 参戦と相成りました(/・ω・)/

あー!もう朝だけど 12/14 の Advent Calendar として投稿します!おやすみなさい!

元記事はこちら

Check! IoT ができるようになるまで ~ ESP-WROOM-02 を IoT Foundation で Bluemix につなぐ!