ノード⑤:期間内のデータを検索
このノードで、CloudantからIoTセンサーシミュレーターのデータを取り出します。 StorageのCloudantノードを配置し、次表のように設定してください。 使用するノードは、左右両方にポートがあるCloudantノードです。
項目 | 設定値 | 備考 |
---|---|---|
Service | [アプリ名]-cloudantNoSQLDB | |
Database | [データベース名] | 例:iotsensor |
Search by | search index | |
index/[インデックス名] | 例:indexByTimestamp | |
Name | [任意] |
ノード⑥:平均気温と平均湿度の計算
ノード⑤で取り出したデータから、平均気温と平均湿度を計算します。 Functionノードを配置して、次のJavaScriptコードを設定します。
//平均値を計算 var getAverage = function( arr ) { var sum = 0; arr.forEach(function( elm ) { sum += elm; }); return Math.round(sum / arr.length); }; var total = msg.cloudant.total_rows; if ( total === 0 ){ //データが見つからなかった場合は処理を終了する(後続にmsgを返さない) } else { //データの取得 var timestamp = []; var temp = []; var humidity = []; obj = msg.payload; for ( var i in obj ) { var iotfdata = obj[ i ]; var name1 = "temp"; var name2 = "humidity"; var name3 = "timestamp"; temp.push(iotfdata[name1]); humidity.push(iotfdata[name2]); timestamp.push(iotfdata[name3]); } msg.payload = { "timestamp" : timestamp , "temp" : temp , "humidity" : humidity , "avgtemp" : getAverage( temp ) , "avghumidity" : getAverage( humidity ) }; return msg; }
1~8行目:平均値の計算を行っています。
10行目:検索結果のデータ件数(msg.cloudant.total_rows)を取得しています。
11~12行目:取得したデータ件数が0件の場合、そのまま処理を終了します。 後続のフローにmsgを渡さないと、以降のフローは動作せず終了します。 取得したデータが1件でもある場合、平均気温と平均湿度を求めます。
29~35行目:後続のノードに渡すデータを作成しています。
ノード⑦:不快指数の計算
平均気温、平均湿度に続き、ここでは不快指数を計算します。 Functionノードを配置して、次のJavaScriptコードを設定します。
//不快指数の計算 var getDiscomfortIndex = function ( Td , H ) { return 0.81 * Td + 0.01 * H * (0.99 * Td - 14.3) + 46.3; }; var temp = msg.payload.avgtemp; var humidity = msg.payload.avghumidity; var discomfort = Math.round(getDiscomfortIndex( temp , humidity )); //グローバル変数に不快指数を格納 context.global.temp = temp; context.global.humidity = humidity; context.global.discomfort = discomfort; msg.payload = discomfort; return msg;
1~8行目:不快指数の計算を行っています。
10~13行目:グローバル変数に結果を設定しています。
15行目:後続のノードに渡す不快指数の値を設定しています。
IoTを始めたい方も・本格導入を検討中の方も:おすすめソリューションのご紹介
ビジネスのパフォーマンスを高めようとさまざまな業種・企業で、IoT活用を前提とするプロジェクトが動き始めています。ただし、検討を始めて最初に出てくるのは、こんな要望ではないでしょうか。
「最初は実験的にスタートしたいから、小さく簡単に素早く始めたい」
「実運用に移ったときには10万・100万単位のセンサ/デバイスに対応できるスケーラビリティも確保したい」
これにお応えできるサービス・製品がIBMにあります。ぜひ、下記の資料をご覧ください。(編集部)