ノード⑤:期間内のデータを検索
このノードで、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にあります。ぜひ、下記の資料をご覧ください。(編集部)

