SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

IoTをかじってみよう

IoTをかじってみよう(6)
~Node-RED for Bluemixによる開発とIoTアプリケーション開発の留意点

  • このエントリーをはてなブックマークに追加

 前回はオフラインIDEを使ったmbedアプリケーションのデバッグ方法について解説しました。今回は2部構成です。第1部はNode-RED for Bluemixによる簡単なアプリケーション開発を実践し、第2部ではIoTアプリケーション開発の留意点について解説します。

  • このエントリーをはてなブックマークに追加

第1部 Node-REDを使用してIoTアプリを簡単に作ってみる

Node-REDとは

 Node-REDは、IBM英国Hursley研究所が開発したソフトウェアで、IoTデバイス、API、オンラインサービスを連携させるための開発用ツールです。ブラウザUIベースでビジュアルにモデルを作成でき、作成したモデルをすぐに動かしてみることができます。Node-REDはオープンソースとして提供されており、GitHubからソースを取得することができます。

 Node-REDはNode.jsが動作する環境で利用できますが、この連載ではセットアップが簡単なNode-RED for Bluemixを用います。

 なお、Node-REDは現在のところアイデアを手軽に試してみるようなケース(プロトタイピング)を想定しており、そのまま本番環境で利用するようなケースは想定していません。Bluemix上でもベータの扱いになっていて、突然使用できなくなる可能性がありますので注意してください。

開発・テスト手順解説の前提事項

 これから説明する手順は、以下を前提としています。

  • 今回の開発には、Macを使用しています
  • IBM ID取得済み、Bluemixにサインアップ済みの前提とします
  • mbedにアプリケーション・ボードを装着済みとします
  • mbedのクライアントサイドアプリは第2回でインストールしたものを使います
  • mbedがBluemixに接続するためのネットワーク環境(ルーター、LANケーブル)が必要です

今回のアプリケーション概要

 第2回では、IBM Internet of Things Foundationの認証不要なQuickstartサービスを用いて、mbedからMQTTで送信されたセンサーデータをQuickstartで表示できることを確認しました。今回はセンサーデータをBluemixへ送信し、Bluemix上のサービスやアプリケーションで処理を行えるようにします。

 また手順の解説ではBluemixの古い方のWeb画面を使用します。もしもTry the new Bluemixのリンクをクリックしてしまい、新しいWeb画面になってしまった方は、画面上部にある「クラシック・エクスペリエンスに進む」をクリックすると元の古いWeb画面に戻すことができます。

BluemixのNode-REDでアプリケーションを作成する

 BluemixにIBM IDでログインします。

 ログイン後のダッシュボードで右上の人型アイコンをクリックし、「地域」を「米国南部」に設定してください(図1)。

図1 地域
図1 地域

 スペースが未作成の場合は、任意の名前でスペースを作成しましょう(この手順では「dev」とします)。

 アプリケーションを作成します。「カタログ」から「Internet of Things Platform Starter(モノのインターネット・スターター・ボイラープレート)(図2)」を選択すると、IoTアプリの開発環境が作成されます。

図2 ボイラープレートの選択
図2 ボイラープレートの選択

 アプリケーションに任意の名前を付けましょう(手順では「iotmytestapp」とします)。

 アプリケーションが稼働中になったら「経路」の右横に表示されたURLがクリック可能となりますので、クリックしてみましょう(図3)。

図3 経路
図3 経路

 Node-REDのスタートアップがブラウザに表示されます。赤色の「Go to your Node-RED flow editor」をクリックしてください(図4)。

図4 Node-REDの開始
図4 Node-REDの開始

 フロー・エディターのワークスペースには、あらかじめサンプルのフローが作られた状態となっています(図5)。

図5 サンプルフロー
図5 サンプルフロー

 試しにワークスペースの一番左に配置された「IBM IoT APP In」ノードをダブルクリックしてみてください。プロパティの確認や変更が可能な構成ダイアログが表示されます。「IBM IoT APP In」ノードは、連載第2回でもご紹介したIBM Internet of Things Foundationの「Quickstart」サービスから、デバイスのイベントデータをフローへ入力する責務を持ちます。

 そのほかのノードのプロパティも確認してみましょう。サンプルフローの各ノードの責務は表1のとおりです。

表1 サンプルフローの各ノードの責務
ノード名 責務
IBM IoT APP In IBM IoT Foundationからデバイスのイベントデータをサブスクライブする
device data フロー・エディターのdebugタブにデバッグメッセージとしてデバイスデータを出力する
temp メッセージペイロードのJSONデータからtemp(温度)属性のみを取り出して返す
temp thresh メッセージペイロードが40度以下なら1番目のフローに進み、40度より上なら2番目のフローに進む
safe Temperature(温度)が安全な閾値の範囲内にあるというメッセージを出力する
danger Temperature(温度)が危険な閾値の範囲内にある(安全な閾値の範囲外)というメッセージを出力する
cpu status CPUの温度の状態をデバッグメッセージとして出力する(このサンプルでは、CPUの温度がイベントとして上がってきていると想定しています)

 各ノードの責務およびデータフロー(ノードの繋がり)を確認することにより、このサンプルフローは、デバイスから送信される温度のデータをもとに、CPUの状態が安全か危険かを判定して通知するIoTサービスを実現しようとしていることが分かります。

 このように、Node-REDでは、ブラウザUIベースのワークスペース上でさまざまなノード(カプセル化された小さな機能)を繋げることによってアプリケーションを構築します。要件によっては、ほぼノンコーディングで作成することができますし、JavaScriptで自作した機能や他者が提供するAPIやサービスと連係させてカスタマイズできます。

 作成したデータ・フローのモデルは、デプロイすれば動作を確認することができるので、Node-RED for Bluemixは、IoTアプリケーションのプロトタイプ構築に最適なソリューションの一つと言えるでしょう。

 次に、IoTのサンプルフローに少し定義を加えて、実際に動作を確認してみましょう。

 「IBM IoT App In」ノードに「Quickstart」サービスからデータ入力できるようにします。IoT Sensorシミュレーターをブラウザの新たなタブに表示させてください。シミュレーターに表示された右上の英数字がデバイスIDです。この値をコピーするか控えておいてください(図6)。

図6 シミュレーターのデバイスID
図6 シミュレーターのデバイスID

 Node-REDのフロー・エディターに戻り、「IBM IoT App In」ノードの「Device Id」に控えておいた値を入力して「Ok」をクリックします(図7)。

図7 Device Idの入力
図7 Device Idの入力

 変更が加わったので、画面右上にある「Deploy」が赤色になりました。「Deploy」をクリックしてみましょう(図8)。

図8 デプロイ
図8 デプロイ

 「Successfully Deployed」という通知が表示されたらデプロイ完了です。フローエディタの右にあるデバッグコンソールに、図9のようなメッセージが出力されましたか?

図9 デバッグメッセージの確認
図9 デバッグメッセージの確認

 2秒おきにシミュレーターのイベントが実行され、Bluemixのアプリケーションがシミュレーターのセンサーデータを入力処理します。「temp thresh」ノードでは温度の閾値判定が行われ、その判定結果がデバッグメッセージとして出力されます。

 デバッグコンソールには、シミュレーターからの入力データもデバッグ用途で出力されていることが分かります。

 シミュレーターの下部に表示された矢印をクリックすると温度を上下できるので、40度以下の温度、また41度以上の温度に変更してみましょう。デバッグコンソールに表示される判定結果の内容が変わりましたか?

図10 メッセージの変化の確認
図10 メッセージの変化の確認

 サンプルフローの動作確認が終わったら、「IBM IoT App In」ノードの「Device Id」の値を削除して再びデプロイしましょう。これでシミュレーターのイベントデータのサブスクライブを止めることができます。デバッグコンソールに「Device Id is not set for Quickstart flow」というメッセージが出力された後は、何も出力されないことを確認してください。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
mbedのセンサーデータを入力データにする

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
IoTをかじってみよう連載記事一覧

もっと読む

この記事の著者

谷口 督(日本アイ・ビー・エム株式会社)(タニグチ ススム)

2000年問題対応の時期にIT業界に入り、それ以来UNIX系のインフラ構築を担当。最近の関心事は、そろそろ出てきそうな画期的なテクノロジー探しや世の中が良くなるためのもの作りです。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

山崎 まゆみ(日本アイ・ビー・エム株式会社)(ヤマザキ マユミ)

人・技術・本が好きなITエンジニア。公共・金融機関のアプリケーション開発/インフラ構築経験を持つ。プロジェクト現場で日々奮闘中。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/9396 2016/05/12 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング