IBM Developer Japan Webサイトは2021年3月15日をもって終了となり、日本語コンテンツの一部は、オープンソースとして、提供予定です。 URLはこちら

クラウド内でセンサー・データをストリーミング、保管、分析するための IoT ハブを構築する

このチュートリアルでは、Android デバイスをクラウドに接続して、センサー・データを分析するアナリティクス・モデルを開発する際に必要となる手順の概要を説明します。このチュートリアルを完了する頃には、デバイスのデータをストリーミングして保管し処理する独自の IoT ハブをセットアップできるようになっているはずです。

下の図は、サンプル・アプリのアーキテクチャーを示しています。

クラウド・アーキテクチャー

Android デバイスをクラウドに接続して、センサー・データの分析モデルを開発する際の手順は、5 つの主要ステップからなります。

  1. IBM Cloud アカウントを作成して、IoTool アプリをインストールする
  2. Watson IoT Platform サービス・インスタンスを作成する
  3. シンプルな Node-RED アプリを作成する
  4. Node-RED を使用してライブ・ダッシュボードを作成する
  5. IBM Watson Studio を利用して AI 分類子を作成する

前提条件

このチュートリアルに従うには、Android デバイス (スマートフォン)、インターネット接続、IBM Cloud アカウントが必要です。

所要時間

1 – 2 時間。

手順

ステップ 1. IBM Cloud アカウントを作成して、IoTool アプリをインストールする

ステップ 1 では、IBM Cloud 上でアカウントを作成し、アプリケーションを Android スマートフォンにインストールします。

このステップに従って必要なアプリをインストールして構成すると、下の図に示されているようなライブ・グラフが Android スマートフォン上に表示されるようになります。このグラフは、記録されたスマートフォンの動きを表すものです。

IoTool ダッシュボード

GitHub リポジトリー内に用意されているワークショップのセクション「Create IBM Cloud account and install IoTool apps」で説明している手順に従って、IBM Cloud アカウントを作成し、IoTool アプリをインストールしてください。

ステップ 2. Watson IoT Platform サービス・インスタンスを作成する

ステップ 2 では、IBM Watson IoT Platform サービス・インスタンスを作成し、MQTT でセキュアに通信できるよう、Android デバイスを登録します。続いて、IoTool アプリを使用して IoT Platform インスタンスに MQTT で接続できるように Android スマートフォンを構成します。 MQTT 通信プロトコルはパブリッシュ/サブスクライブ・モデルに従って機能します。このモデルでは、デバイスがデータをトピックにパブリッシュ (送信) できます。そのトピックには、他のデバイスもサブスクライブ (listen) できます。また、Android デバイスから IBM Cloud にセンサー・データをストリーミングして、IBM Watson IoT Platform 内でデータの内容をモニタリングします。

GitHub リポジトリー内に用意されているワークショップのセクション「Use IBM Watson IoT Platform」で説明している手順に従って、IoT Platform サービス・インスタンスを作成してください。

ステップ 3. シンプルな Node-RED アプリを作成する

ステップ 3 では、IBM Cloud スターター・キットを使用して Node-RED アプリを作成します。アプリのデプロイメントは IBM Continuous Delivery クラウド・サービスを利用して自動化します。その上で、先ほどデプロイした Cloud Foundry アプリケーション (つまり、Node-RED アプリ) を Watson IoT Platform サービスに接続します。これによって生成される API 鍵は、アプリを認証する際に使用することになります。次に、Node-RED Web IDE を使用してシンプルなアプリケーションを開発します。このアプリケーションで、MQTT を介してデバイスからストリーミングされる加速度データを受信します。下の図は、シンプルな Node-RED フローを示しています。

シンプルなフロー

シンプルなアプリケーションを作成した後、それをテストします。アプリケーションをテストして、デバッグ・コンソール内にストリーミング・データが表示されることを確認します。

GitHub リポジトリー内に用意されているワークショップのセクション「Use Node-RED programming tool」で説明している手順に従って、Node-RED アプリを作成してください。

ステップ 4. Node-RED を使用してライブ・ダッシュボードを作成する

ステップ 4 では、デバイスからストリーミングされる加速度データをリアルタイムで表示するライブ・ダッシュボードを作成します。この手順を通して、元の msg オブジェクトを操作して関連情報を抽出し、ダッシュボード・ノードに渡す方法を学びます。下の図は、加速度データの Node-RED フローを示しています。

加速度データのフロー

スマートフォンからストリーミングされるセンサー測定値のリストに線形加速度を追加し、線形加速度データをライブ・ダッシュボードに追加します。この手順を通して、既存のフローを再利用するために既存のノードをコピーして貼り付け、編集する方法を学びます。下の図は、線形加速度データのフローを示しています。

線形加速度データのフロー

最後に、性能指数としての絶対加速度を使用して、基本的な振動検出機能をダッシュボードに追加します。振動が検出されると、ダッシュボードに通知が表示されるようにします。下の図は、この通知のフローを示しています。

通知のフロー

GitHub リポジトリー内に用意されているワークショップのセクション「Create live dashboard on Node-RED」で説明している手順に従って、Node-RED を使用してライブ・ダッシュボードを作成してください。

ステップ 5. IBM Watson Studio を利用して AI 分類子を作成する

ステップ 5 では、測定された加速度データを Cloudant データベースに保管する Node-RED フローを作成します。センサー・データにはブール値の class ID でラベルが付けられます。このラベルで、データ収集中にデバイスが前後左右に振られたかどうかを示します。下の図は、Node-RED でのトレーニング・フローを示しています。

Node-RED のトレーニング・フロー

次に、IBM Watson Studio 上で空のプロジェクトとその対となる Cloud Object Storage サービス・インスタンスを作成し、分類子モデルを開発するための空の Notebook を作成します。続いて、Cloudant データベース内に保管されているデータに、IBM Watson Studio プロジェクトからアクセスできるようにするためのサービス資格情報を作成します。IBM Watson Studio プロジェクトはこの資格情報を使用して Cloudant 内のセンサー・データを Pandas DataFrame に読み込み、PySpark の機械学習機能を使用してロジスティック回帰分類子モデルをトレーニングします。最後に、トレーニング済み分類子モデルを JavaScript 関数に変換し、この関数による振動検出の確率を視覚化して Node-RED ダッシュボードに追加します。下の図は、完成した Node-RED フローを示しています。

分類子のフロー

GitHub リポジトリー内に用意されているワークショップのセクション「Build an AI classifier using IBM Watson Studio」で説明している手順に従って、AI 分類子を作成してください。

まとめ

これで、Android デバイスを IBM Cloud に接続し、デバイスからのセンサー・データを分析するアナリティクス・モデルを開発できました。このチュートリアルで学んだ知識を生かして、デバイスのデータをストリーミングして保管し処理する独自の IoT ハブをセットアップしてください。