⌚ 2016/7/ 5 (Tue) 🔄 2024/3/20 (Wed)
Bluemix~IoTアプリ開発入門~
前回に引き続き、今回はBluemixを使用した開発例をご紹介します。
Bluemixは無料で30日間は使用可能なので、興味のある方はぜひお試しください。
Bluemix フリートライアルの利用登録
Bluemixの使用には以下が必要になります。
- <span class="caps">IBM IDの登録
- <span class="caps">IBM Bluemixの利用登録
手順についてはこちらを参照ください。
登録が終わったら、Bluemixのダッシュボードを開きます。
ダッシュボードが表示できたら、Bluemixの利用準備は完了です。
IoTソリューション開発入門
それではここからIoT事例としてメジャーな「室内に設置したセンサデバイスが計測した室温を送信し、ユーザがリアルタイムで確認する」ソリューションを作成してみましょう。
- 室温を測定して送信(MQTT)するプログラム
- デバイスからセンサ情報を受信するMQTTブローカー
- ユーザのリクエストを受け付けるアプリケーション
- 室温を蓄積するDB
- 室温を参照するUI
の5つの要素で構成します。
では、早速始めましょう。
右上のメニューから「カタログ」を選び、
ボイラープレートから「Internet of Things Platform Starter」を選択します。
名前とホストを入力して作成すると、
MQTT及びNoSQLデータベース(Cloudant NoSQL DB)をアプリケーションサーバ(Node.js)に繋げた状態で、すべてのミドルウェアの導入が完了になります。
以上のミドルウェアをオンプレミスで構築する場合に必要な、
- サーバ/ネットワーク機器の調達
- ネットワークの構築
- サーバOSのインストール
- ミドルウェアのインストール
- ミドルウェア間の接続連携
- etc...
といった、インフラ構築にまつわる作業がたった数分でできてしまいます。
楽ちんです。
この操作で真ん中の部分が出来上がりました。
ここから、Raspberry Pi で動作するプログラムと Node.js で動作するアプリケーションを作っていくわけですが、Node-RED (実はエディタとして既に Node.js に乗っかっている) の使い方や、温度センサデータの取得方法は他サイトに譲り、日本語ページが意外と少ない印象のある「デバイスと Internet of Things Platform をつなぐ」ところを説明します。
※参考: MQTT Connectivity for Devices
以下の順番で行います。
- Internet of Things Platform にデバイスを登録する
- デバイスから Internet of Things Platform に接続する
まずはデバイスを登録するため、Node.js にバインドされている Internet of Things Platform を選択してダッシュボードを起動します。
ICチップなアイコンを選択して、デバイスの追加をします。
これから、デバイスID とそのデバイス・タイプを決めますが注意が必要です。
MQTT の仕様として、接続を一意にするクライアントIDは23バイト以下です。
Internet of Things Platform ではこのクライアントIDを "d:" + [組織ID] + ":" + [デバイス・タイプ] + ":" + [デバイスID] で定義しています。組織IDはあとでも出てきますが、この Internet of Things Platform のインスタンスを一意に示すIDで、2016/6/27現在6バイトです。
そのため、デバイスID とデバイス・タイプの合計が13バイト以下で設定する必要があります。
新規なので、デバイス・タイプを作成します。
デバイス・タイプを入力して「次へ」。このあと、オプション設定がいっぱい出てきますが無視して「次へ」。
作成したデバイス・タイプを選択して「次へ」。
デバイスIDを入力して「次へ」。ここもこのあと、オプション設定がいっぱい出てきますが無視して「次へ」。
これでデバイスが登録されました。
ここで出てきた
・組織ID
・デバイス・タイプ
・デバイスID
・認証トークン
は、後で使うのでメモしていてください。
接続への準備が整ったので、次は実際に接続してみましょう。
接続情報を確認するため、アプリケーションの環境変数を開きます。
ここから、
・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"] でも確認できます。
デバイス側には以下のプログラムをのせます。
今回はRubyで作りましたがMQTTでのデータ送信が可能であれば、なんでも構いません。
このプログラムで送信したデータはデバイスの最近のイベントで確認できます。
この画面を開く前のデータは表示されないようなので、プログラムを実行する前に画面を開きましょう。
こうしてパブリッシュされたデータはNode-RED 上で利用できます。
WebSocket ノードをつなげば、ブラウザへプッシュすることも可能です。
こうして、IBM Bluemix サービスでシステム全体が構築されていきます。
次回は現在注目を集めている IBM Watson サービスを使ってみようと思います。
~Wata Bakary~