目次


スマートフォンを IoT デバイスに変身させる

スマートフォンとの間で送受信されるセンサー・データを処理、視覚化、保管するための IBM Cloud アプリを作成する

Comments

このチュートリアルでは、スマートフォンによって生成されたセンサー・データを IBM Watson IoT Platform クラウド内でホストされたサービスに送信する方法と、そのデータを処理、視覚化、保管する Cloud Foundry アプリケーションを IBM Cloud 上で作成する方法を説明します。最後に、スマートフォン向け Android アプリケーションを作成する方法についても説明します。

このアーキテクチャーの概要は以下のとおりです。

ソリューションのアーキテクチャーを示す図
ソリューションのアーキテクチャーを示す図

アプリを作成するために必要となる事項

1

IBM Cloud 内で IoT アプリを作成する

Internet of Things Platform Starter ボイラープレートには、Node-RED エンジンが含まれています。後で IoT メッセージを処理する際に、このエンジンを使用します。このステップでは、IBM Watson IoT Platform との間で MQTT メッセージを送受信するための Internet of Things サービスを作成します。

  1. IBM Cloud アカウントにログインします。
  2. 「Create Resource (リソースの作成)」をクリックします。
  3. 「Catalog (カタログ)」で、「Platform (プラットフォーム)」に分類されている「Internet of Things Platform Starter」をクリックします。
  4. アプリの名前を入力します。この名前はホスト名としても使用されるので、IBM Cloud 内で一意の名前でなければなりません (例えば、「iot<自分の名前>」)。この例では、「iottutorialdaniel」という名前を使用します。「Create an app (アプリの作成)」ダイアログのスクリーン・キャプチャー
    「Create an app (アプリの作成)」ダイアログのスクリーン・キャプチャー
  5. 「CREATE (作成)」をクリックします。
  6. アプリが作成されたら、左側のペインで「Overview (概要)」をクリックします。作成されたアプリには、2 つの接続が含まれていることに注目してください。1 つは Cloudant NoSQL データベースとの接続用、もう 1 つは Internet of Things Platform サービスとの接続用です。
2

MQTT メッセージを Watson IoT Platform に送信するデバイスを追加する

  1. アプリの「Overview (概要)」ビューで、「Connections (接続)」の下に示されている Internet of Things Platform サービス (iot<自分の名前>-iotf-service のような名前になっています) をクリックします。 接続を示す画面のスクリーン・キャプチャー
    接続を示す画面のスクリーン・キャプチャー
  2. 「Launch (起動)」をクリックして Watson IoT Platform ダッシュボードを開きます。 「Launch Dashboard (ダッシュボードを起動)」ボタンが強調表示されたサービス・ページのスクリーン・キャプチャー
    「Launch Dashboard (ダッシュボードを起動)」ボタンが強調表示されたサービス・ページのスクリーン・キャプチャー

    Watson IoT Platform のダッシュボードが表示されます。このサービスは、IBM Cloud からは独立したものです。アプリには組織 ID が割り当てられます。この ID は、後でモバイル・アプリを開発する際に必要になります。以下に示す図では、組織 ID が「mgso1i」となっています。どこに示されているかというと、ダッシュボードの右上隅にあるログイン情報の下です。

    IBM Internet of Things Platform サーバー上のサービスと組織 ID を強調表示している画面のスクリーン・キャプチャー
    IBM Internet of Things Platform サーバー上のサービスと組織 ID を強調表示している画面のスクリーン・キャプチャー
  3. 左側のメニューにカーソルを合わせ、ポップアップ表示されるメニューで「Device (デバイス)」をクリックします。次に、「Add a device type (デバイス・タイプを追加)」をクリックします。組織内では、複数のデバイス・タイプを用意することができ、タイプごとに複数のデバイスを使用することができます。デバイス・タイプとは、同じ特徴を持つデバイスのグループのことであり、あるデバイス・タイプのグループからは、同じセンサー・データが提供される場合があります。このチュートリアルの例では、デバイス・タイプの名前は「Android」にしなければなりません (このデバイス・タイプ名は、後で使用することになるアプリで必要となります)。 「Create Device Type (デバイス・タイプの作成)」ダイアログのスクリーン・キャプチャー
    「Create Device Type (デバイス・タイプの作成)」ダイアログのスクリーン・キャプチャー
  4. 「Next (次へ)」をクリックします。これにより、デバイス・タイプに関するメタデータ (シリアル番号、モデルなど) を入力できるページが表示されます。このデモでは、これらの情報を指定する必要はないので、何も指定せずに「Done (完了)」をクリックします。
  5. 「Register Devices (デバイスの登録)」をクリックします。次のページでデバイス ID を入力します。デバイス ID として、例えばスマートフォンの MAC アドレスを指定できます。ただし、この ID は組織内でのみ一意であればよいので、この例でのように「112233445566」といった数値を入力することもできます。
  6. 「Next (次へ)」をクリックします。これにより、デバイスに関するメタデータを入力するページが表示されます。何も入力しないまま「Next (次へ)」をクリックします。
  7. 認証トークンの値を入力します。この値は後で必要になるのでメモしておいてください。「Next (次へ)」をクリックします。認証トークンを示す画面のスクリーン・キャプチャー
    認証トークンを示す画面のスクリーン・キャプチャー
  8. 「Done (完了)」をクリックします。
  9. 「Back (戻る)」をクリックします。

これで、デバイスから IBM Watson IoT Platform に MQTT メッセージを送信する準備ができました。

3

Android アプリをインストールして構成する

スマートフォンのセンサー・データの読み取りおよび送信には、IoT Starter for Android アプリを使用します。このアプリのソース・コードと資料は、iot-starter-for-android という名前の GitHub プロジェクトに含まれています。

Android 開発の経験がある方は、GitHub からコードをダウンロードして Android 開発環境にインポートして、.apk ファイルをビルドすることができます。そうでない場合、以下の手順に従うことで、アプリを迅速にインストールして実行中の状態にすることができます。

注: .apk ファイルは Android バージョン 5.0.1 用にコンパイルされていますが、Android 6 上でもテストして機能することが確認されています。お使いの環境に、このアプリの古いバージョンがインストールされている場合は、それをアンインストールしてから、新しいバージョンをインストールする必要があります。

  1. 携帯電話上で「Settings (設定)」 > 「Security (セキュリティー)」の順に選択します。「Device Administration (端末の管理)」セクションで、「Unknown sources (不明の送信元)」を有効にします。これで、Google Play 外部から .apk ファイルをインストールできるようになります。
  2. 携帯電話でブラウザーを開き、以下の URL を入力します。

    https://github.com/deveops/iot-starter-for-android/releases

    ダウンロードしてインストールする .apk ファイルを表示するブラウザー・ウィンドウのスクリーン・キャプチャー
  3. iotstarter-v2.1.0.apk のリンクを見つけます。そのリンクをクリックして apk ファイルをダウンロードします。
  4. ダウンロードしたファイルをクリックします。確認メッセージに対し、アプリをインストールすることを確認します。 .apk ファイルを表示する画面のスクリーン・キャプチャー

    これで IoT Starter アプリが Android 端末にインストールされます。

次に、Android アプリを構成する必要があります。

  1. IoT Starter アプリを起動します。
  2. 「Skip tutorial (チュートリアルをスキップ)」をクリックします。
  3. 以下のパラメーターを入力します。
    • Organization (組織): IBM IoT サーバー上で表示された組織 ID (「MQTT メッセージを Watson IoT Platform に送信するデバイスを追加する」ステップの冒頭を参照)。このチュートリアルの例では、「mgso1i」となっています。
    • Device ID (デバイス ID): 「MQTT メッセージを Watson IoT Platform に送信するデバイスを追加する」ステップの最後で構成したデバイス ID。このチュートリアルの例では、「112233445566」となっています。
    • Auth Token (認証トークン): 「MQTT メッセージを Watson IoT Platform に送信するデバイスを追加する」ステップで指定した認証トークン。
    • 「Use SSL (SSL を使用)」にチェック・マークを付けます。
    Android アプリの構成パラメーターを表示する画面のスクリーン・キャプチャー
    Android アプリの構成パラメーターを表示する画面のスクリーン・キャプチャー
  4. 「Activate Sensor (センサーをオンにする)」をクリックします。これで、アプリケーションがスマートフォンの加速度センサーからデータを収集し、そのデータを IBM IoT サーバーに送信するようになります。このアプリは、加速度計のデータと、公開されたメッセージ数、受信したメッセージ数を表示します。実行中の Android アプリから送信された加速度計のデータを表示する画面のスクリーン・キャプチャー
    実行中の Android アプリから送信された加速度計のデータを表示する画面のスクリーン・キャプチャー
4

スマートフォンから Watson IoT Platform にメッセージが送信されていることを確認する

  1. コンピューターに戻り、使用している組織の IBM Watson IoT Platform ページをもう一度開きます (「MQTT メッセージを Watson IoT Platform に送信するデバイスを追加する」ステップの冒頭を参照してください)。
  2. 左側のメニューで、「Devices (デバイス)」をクリックします。Android 端末が表示されます。 Android 端末がリスト表示された「Devices (デバイス)」タブのスクリーン・キャプチャー
    Android 端末がリスト表示された「Devices (デバイス)」タブのスクリーン・キャプチャー
  3. デバイス ID をクリックしてから、「Recent Events (最近のイベント)」タブを表示します。スマートフォンから送信されてきたイベントが表示されるはずです。
  4. いずれかのイベントをクリックします。スマートフォンから送信されるメッセージは、JSON フォーマットになっています。メッセージには、加速度と位置のデータが含まれています。 Android 端末から受信したメッセージが表示されたポップアップ・ウィンドウのスクリーン・キャプチャー
    Android 端末から受信したメッセージが表示されたポップアップ・ウィンドウのスクリーン・キャプチャー

これで、IBM Cloud 上でメッセージのデータを扱う準備ができました。

5

Node-RED フローでメッセージを処理する

このセクションでは、IBM Cloud IoT アプリケーションを拡張して、Node-RED フローを使用してスマートフォンから送信されるメッセージを処理し、その処理したメッセージをスマートフォンに送り返すようにします。携帯電話は返されてきたメッセージに応じて、アプリの背景色を変化させます。

  1. IBM Cloud ダッシュボードを開きます (bluemix.net にアクセスして、「Dashboard (ダッシュボード)」をクリックします)。
  2. IBM Cloud ダッシュボードで、(ステップ 1 で作成した) IBM Cloud IoT アプリが実行中になっていることを確認します。
  3. ブラウザー内で <自分のアプリ名>.mybluemix.net を開きます。ここで、<自分のアプリ名> は作成した IoT アプリの名前です。ウィザードのステップに従って、Node-RED エディターのユーザー名とパスワードを設定します。
  4. IoT アプリの Node-RED ページで、「Go to your Node-RED flow editor (Node-RED フロー・エディターに移動)」をクリックします。エディターが開き、サンプル・フローが表示されます。 サンプル・フローを表示する画面のスクリーン・キャプチャー
    サンプル・フローを表示する画面のスクリーン・キャプチャー
  5. このエディターのドラッグ・アンド・ドロップ機能を使用して、メッセージのフローをつなげることができます。独自のフローを作成することもできますが、ここでは以下のコードをインポートします。ただし最初に、既存のすべてのノードを選択し、Delete キーを押して削除してください。
  6. GitHub から、以下に示すコード (1 行の長いコード行) をテキスト・ファイル (nodeRedCode.txt) としてダウンロードします。
  7. ダウンロードしたファイルをテキスト・エディターで開きます。テキスト・エディターで、コード全体が 1 行になっていることを確認します。改行がある場合は削除してから、コード行をコピーします。
  8. Node-RED エディターで、Ctrl-I を押して「Import Nodes (ノードのインポート)」ダイアログを開きます。コードを貼り付けてから、「OK」をクリックします。 「Import Nodes (ノードのインポート)」ダイアログのスクリーン・キャプチャー
    「Import Nodes (ノードのインポート)」ダイアログのスクリーン・キャプチャー
  9. ここで、このフローを特定のパラメーターに合わせて適応させる必要があります。関連するパラメーターは、デバイス ID だけです。「IBM IoT App Out (IBM IoT アプリ出力)」ノードをダブルクリックします。ポップアップ・ウィンドウが表示されるので、以前に使用した端末 ID (例えば、「112233445566」) を入力して、「Import (インポート)」をクリックします。
  10. フロー・エディターの「Deploy (デプロイ)」ボタンをクリックします。すると、フローがデプロイされて即座にアクティブになるはずです。
  11. スマートフォンをひっくり返したり、傾けたりしてください。z 軸の向きによって、携帯電話上のアプリの背景色が変わるはずです。
  12. Node-RED エディターで、「msg.payload」ノードの横にある四角形をクリックし、「debug (デバッグ)」タブをクリックしてデバッグを有効にします。携帯電話から送信されてくるメッセージが表示されます。メッセージのデータは JSON フォーマットです。 Node-RED エディターの「msg.payload」ノードと、メッセージが表示された「debug (デバッグ)」タブを表示する画面のスクリーン・キャプチャー
    Node-RED エディターの「msg.payload」ノードと、メッセージが表示された「debug (デバッグ)」タブを表示する画面のスクリーン・キャプチャー
  13. フローを検査します。「calc color (色の計算)」ノードをダブルクリックします。このノードは、受信される z 軸方向の加速度の値に基づいて赤、緑、青の値を計算し、その結果を JSON データとして渡します。 スマートフォン上で背景色を変えるコードを示す、「Edit function (関数の編集)」ノードのスクリーン・キャプチャー
    スマートフォン上で背景色を変えるコードを示す、「Edit function (関数の編集)」ノードのスクリーン・キャプチャー

スマートフォンと最初の IBM Cloud IoT アプリケーションとの間で、双方向の通信が可能になりました。

6

センサー・データを視覚化する IBM Cloud アプリを作成する

このステップでは、スマートフォン (現在は、IoT 端末に変身しています) からメッセージを受信して、そのデータを視覚化する、もう 1 つのアプリケーションを IBM Cloud 内で作成します。

  1. IoT 可視化のための rickshaw4iot Github プロジェクトから rickshaw4iot-0.2.0.zip ファイルをダウンロードして、ファイルの中身をローカル・ディレクトリーに抽出します。あるいは、このリンク先の Github リポジトリーを複製またはダウンロードするのでも構いません。
  2. rickshaw4iot-0.2.0.zip ファイルの抽出先フォルダー内から、manifest.yml ファイルをエディターで開きます。host および name パラメーターを一意の名前に変更します。この名前も同じくホスト名として使用されるので、IBM Cloud 内で一意でなければなりません。例えば、iot<自分の名前>visualize という名前にします。ファイルを保存します。 manifest.yml ファイル内の host および name パラメーターのスクリーン・キャプチャー
    manifest.yml ファイル内の host および name パラメーターのスクリーン・キャプチャー
  3. コマンド・ウィンドウまたはターミナル・ウィンドウを開き、カレント・ディレクトリーを iot-visualization-0.2.0.zip ファイルの抽出先ディレクトリーに変更します。
  4. 以下の Cloud Foundry コマンドを入力します。
    cf api https://api.ng.bluemix.net
    cf login -u <自分の IBM Cloud ログイン ID>

    cf login コマンドが必要なのは、Cloud Foundry コマンド・ライン・ツールを初めて使用するときだけです。IBM Cloud パスワードも入力しなければならない場合があります。複数の IBM Cloud 組織を使用している場合 (デフォルトの場合には該当しません)、いずれか 1 つの組織を選択するよう求められます。

    上記のコマンドは、US South 領域にログインするためのものです。お使いのアカウントが、これとは別の領域内にある場合もあります。

    cf login -a https://api.eu-gb.bluemix.net   // United Kingdom
    cf login -a https://api.eu-de.bluemix.net   // Germany
    cf login -a https://api.au-syd.bluemix.net  // Sydney
  5. 以下のコマンドを入力して、IBM Cloud にアプリをデプロイします。

    cf push <今作成したアプリの名前>

    このコマンドは、manifest.yml ファイルを探し、そのファイル内のパラメーターを使用して、コードを IBM Cloud にアップロードします。しばらくすると、以下のようなメッセージが表示されます。

    OK

    App <デプロイしたアプリの名前> was started using this command 'node app.js'.

  6. IBM Cloud で、「Dashboard (ダッシュボード)」をクリックしてダッシュボードを開くと、デプロイしたばかりのアプリが表示されているはずです。詳細を表示するには、クリックします。 アプリの「Overview (概要)」ページのスクリーン・キャプチャー
    アプリの「Overview (概要)」ページのスクリーン・キャプチャー
  7. 「Create connection (接続を作成)」をクリックします。ステップ 1 で定義した Internet of Things サービスを選択してから、「Connect (接続)」をクリックします。IoT サービスを強調表示した、「Connect (接続)」ページのスクリーン・キャプチャー
    IoT サービスを強調表示した、「Connect (接続)」ページのスクリーン・キャプチャー
  8. 「Restage (再ステージ)」をクリックしてアプリを再ステージングします。これで、アプリが、Watson IoT Platform サーバーからメッセージを受信できるようになります。
  9. 視覚化アプリを確認するために、ブラウザーで http://<視覚化アプリの名前>.mybluemix.net を開きます。
  10. 「Device (デバイス)」ドロップダウン・ボックスで、該当するデバイス ID を選択します。
  11. スマートフォンを上下左右に動かすと、グラフ内に加速度の変化が示されるはずです。 選択されたデバイスとそのセンサー・データを線グラフで表示する、IoT 視覚化アプリのスクリーン・キャプチャー
    選択されたデバイスとそのセンサー・データを線グラフで表示する、IoT 視覚化アプリのスクリーン・キャプチャー

まとめ

このチュートリアルでは、簡単にスマートフォンをセンサー・デバイスに変身させて IBM Watson IoT Platform に接続し、スマートフォンとサーバーとの間でデータを送受信する方法を説明しました。また、IBM Cloud 上でデバイスからのデータを処理して視覚化する方法も紹介しました。この 2 つのアプリケーションから、IBM Cloud がモノのインターネットにもたらす価値を実感できるはずです。つまり、スマートフォンさえあれば、モノのインターネットを実現できるのです。


ダウンロード可能なリソース


関連トピック


コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Internet of Things, Cloud computing
ArticleID=1026772
ArticleTitle=スマートフォンを IoT デバイスに変身させる
publish-date=06212018