MAIL

平日9:00〜17:30 お問い合わせ

MENU

ブログ BLOG

2016/7/ 5 (Tue)

Bluemix~IoTアプリ開発入門~

Bluemix~IoTアプリ開発入門~
Bluemix

前回に引き続き、今回はBluemixを使用した開発例をご紹介します。
Bluemixは無料で30日間は使用可能なので、興味のある方はぜひお試しください。

Bluemix フリートライアルの利用登録

Bluemixの使用には以下が必要になります。

  1. IBM IDの登録
  2. IBM Bluemixの利用登録

手順についてはこちらを参照ください。

登録が終わったら、Bluemixのダッシュボードを開きます。

bluemix-dashboard.png

ダッシュボードが表示できたら、Bluemixの利用準備は完了です。

IoTソリューション開発入門

それではここからIoT事例としてメジャーな「室内に設置したセンサデバイスが計測した室温を送信し、ユーザがリアルタイムで確認する」ソリューションを作成してみましょう。

0705_01.png

  1. 室温を測定して送信(MQTT)するプログラム
  2. デバイスからセンサ情報を受信するMQTTブローカー
  3. ユーザのリクエストを受け付けるアプリケーション
  4. 室温を蓄積するDB
  5. 室温を参照するUI

の5つの要素で構成します。

では、早速始めましょう。

右上のメニューから「カタログ」を選び、

0705_02.png

ボイラープレートから「Internet of Things Platform Starter」を選択します。

0705_03.png

名前とホストを入力して作成すると、

0705_04.png

MQTT及びNoSQLデータベース(Cloudant NoSQL DB)をアプリケーションサーバ(Node.js)に繋げた状態で、すべてのミドルウェアの導入が完了になります。

0705_05.png

以上のミドルウェアをオンプレミスで構築する場合に必要な、

  • サーバ/ネットワーク機器の調達
  • ネットワークの構築
  • サーバOSのインストール
  • ミドルウェアのインストール
  • ミドルウェア間の接続連携
  • etc...

といった、インフラ構築にまつわる作業がたった数分でできてしまいます。
楽ちんです。

この操作で真ん中の部分が出来上がりました。

0705_06.png

ここから、Raspberry Pi で動作するプログラムと Node.js で動作するアプリケーションを作っていくわけですが、Node-RED (実はエディタとして既に Node.js に乗っかっている) の使い方や、温度センサデータの取得方法は他サイトに譲り、日本語ページが意外と少ない印象のある「デバイスと Internet of Things Platform をつなぐ」ところを説明します。
※参考: MQTT Connectivity for Devices

以下の順番で行います。

  1. Internet of Things Platform にデバイスを登録する
  2. デバイスから Internet of Things Platform に接続する

まずはデバイスを登録するため、Node.js にバインドされている Internet of Things Platform を選択してダッシュボードを起動します。

0705_07.png

ICチップなアイコンを選択して、デバイスの追加をします。

0705_08.png

これから、デバイスID とそのデバイス・タイプを決めますが注意が必要です。

MQTT の仕様として、接続を一意にするクライアントIDは23バイト以下です。
Internet of Things Platform ではこのクライアントIDを "d:" + [組織ID] + ":" + [デバイス・タイプ] + ":" + [デバイスID] で定義しています。組織IDはあとでも出てきますが、この Internet of Things Platform のインスタンスを一意に示すIDで、2016/6/27現在6バイトです。
そのため、デバイスID とデバイス・タイプの合計が13バイト以下で設定する必要があります。

新規なので、デバイス・タイプを作成します。

0705_09.png

デバイス・タイプを入力して「次へ」。このあと、オプション設定がいっぱい出てきますが無視して「次へ」。

0705_10.png

作成したデバイス・タイプを選択して「次へ」。

0705_11.png

デバイスIDを入力して「次へ」。ここもこのあと、オプション設定がいっぱい出てきますが無視して「次へ」。

0705_12.png

これでデバイスが登録されました。 ここで出てきた
・組織ID
・デバイス・タイプ
・デバイスID
・認証トークン
は、後で使うのでメモしていてください。

0705_13.png

接続への準備が整ったので、次は実際に接続してみましょう。
接続情報を確認するため、アプリケーションの環境変数を開きます。
ここから、

    ・MQTTホスト		VCAP_SERVICES["iotf-service"]["credentials"]["mqtt_host"]
    ・非暗号化通信ポート	VCAP_SERVICES["iotf-service"]["credentials"]["mqtt_u_port"]
    ・暗号化通信ポート		VCAP_SERVICES["iotf-service"]["credentials"]["mqtt_s_port"]

をメモします。
また、組織ID は VCAP_SERVICES["iotf-service"]["credentials"]["org"] でも確認できます。

0705_14.png

デバイス側には以下のプログラムをのせます。
今回はRubyで作りましたがMQTTでのデータ送信が可能であれば、なんでも構いません。


このプログラムで送信したデータはデバイスの最近のイベントで確認できます。
この画面を開く前のデータは表示されないようなので、プログラムを実行する前に画面を開きましょう。

0705_15.png

こうしてパブリッシュされたデータはNode-RED 上で利用できます。
WebSocket ノードをつなげば、ブラウザへプッシュすることも可能です。

0705_16.png

こうして、IBM Bluemix サービスでシステム全体が構築されていきます。

次回は現在注目を集めている IBM Watson サービスを使ってみようと思います。

~Wata Bakary~