SHOEISHA iD

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

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

Bluemixではじめてみよう! 「IoT→クラウド」データ活用アプリケーション開発(AD)

IoTセンサーデータから過去の気象データをもとに体感温度を求めてツイートするアプリケーションをつくる

Bluemixではじめてみよう! 「IoT→クラウド」データ活用アプリケーション開発 【第2回】

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

ノード⑧:検索条件の設定

ここでは、Cloudantから過去の気象データを取り出すときの検索条件を設定します。 Functionノードを配置して、次のJavaScriptコードを設定します。

msg.payload = {
    'query': 'discomfort:' + msg.payload ,
    'limit': 200
};

return msg;

2行目:ノード⑦で計算した不快指数を指定しています。

⑧Functionノード「検索条件の設定」
⑧Functionノード「検索条件の設定」

ノード⑨:気象データを検索

ノード⑧で設定した検索条件を使って、Cloudantから過去の気象データを取得します。 左右両方にポートがあるCloudantノードを配置して、次表のように設定してください。

項目 設定値 備考
Service [アプリ名]-cloudantNoSQLDB  
Database [データベース名] 例:meteorologicaldata
Search by search index  
  index/[インデックス名] 例:indexByDiscomfort
Name [任意]  
⑨Cloudantノード「気象データを検索」
⑨Cloudantノード「気象データを検索」

ノード⑩:Tweet文書の作成

ノード⑨で取り出した気象データを使って、ここでツイートする文を組み立てます。 Functionノードを配置して、次のJavaScriptコードを設定します。

//体感温度
var getWindchillFactor = function( discomfort ) {
    var comment = '';
    if (discomfort < 55) {
        comment = 'に寒いですね!';
    } else if ( discomfort >= 55 && discomfort < 60 ){
        comment = 'に肌寒いですね!';
    } else if ( discomfort >= 60 && discomfort < 65 ){
        comment = 'ですね!';
    } else if ( discomfort >= 65 && discomfort < 70 ){
        comment = 'に快いですね!';
    } else if ( discomfort >= 70 && discomfort < 75 ){
        comment = 'に暑くはないですね!';
    } else if ( discomfort >= 75 && discomfort < 80 ){
        comment = 'にやや暑いですね!';
    } else if ( discomfort >= 80 && discomfort < 85 ){
        comment = 'に暑くて汗が出ますね!';
    } else {
        comment = 'に暑くてたまらないですね!';
    }
    return comment;
};

var total = msg.cloudant.total_rows;
var date = context.global.date;
var temp = context.global.temp;
var humidity = context.global.humidity;
var discomfort = context.global.discomfort;

tweetText = date + '頃のデバイス近辺の平均気温は' + temp + '度、平均湿度は' + humidity + '%、不快指数は' + discomfort + 'です。';

if ( total === 0 ){
    msg.payload = tweetText + ' ' + '似た気候の場所はどこだろう?';
} else {
    var obj = msg.payload;
    msg.payload = tweetText +
                obj[0].year + '年' + obj[0].month + '月の' + obj[0].place + 'のよう' + getWindchillFactor( discomfort ) +
                '(最高気温:' + obj[0].max + '度、最低気温:' + obj[0].min + '度)';
}
return msg;

1~22行目:不快指数から体感温度のコメントを作成しています。

24行目:検索結果のデータ件数(msg.cloudant.total_rows)を取得しています。

25~28行目:グローバル変数から日付、平均気温と湿度、不快指数を取得しています。

30行目~:ツイートする文章を作成しています。

⑩Functionノード「Tweet文書の作成」
⑩Functionノード「Tweet文書の作成」

ノード⑪:Tweet

最後の処理として、ノード⑪で組み立てた文をTwitterにツイートします。 Twitterノードを配置して「Node-REDの使い方 - Twitterへのツイートを行ってみる」の手順に従ってTwiiter IDを設定してください。

⑪Twitterノード
⑪Twitterノード

Twitterアカウントが準備できない場合は次のステップに進んでください。 ツイートする代わりにデバッグコンソールで確認だけは可能です。

Debugノードの設定

最初に示したフローの図にはありませんでしたが、ノード⑪までの処理の結果を確認するために、フローの最後にDebugノードを配置してください。

Debugノードを追加
Debugノードを追加

以上で、フローは完成です。次ページで実行してみます。

IoTを始めたい方も・本格導入を検討中の方も:おすすめソリューションのご紹介

ビジネスのパフォーマンスを高めようとさまざまな業種・企業で、IoT活用を前提とするプロジェクトが動き始めています。ただし、検討を始めて最初に出てくるのは、こんな要望ではないでしょうか。

「最初は実験的にスタートしたいから、小さく簡単に素早く始めたい」
「実運用に移ったときには10万・100万単位のセンサ/デバイスに対応できるスケーラビリティも確保したい」

これにお応えできるサービス・製品がIBMにあります。ぜひ、下記の資料をご覧ください。(編集部)

次のページ
アプリケーションの実行

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

  • X ポスト
  • このエントリーをはてなブックマークに追加
Bluemixではじめてみよう! 「IoT→クラウド」データ活用アプリケーション開発連載記事一覧

もっと読む

この記事の著者

吉田 武司(ヨシダ タケシ)

株式会社ソルクシーズ ソリューション部 所属。IBM Notes/Domino 一筋20年。2013年度、2014年度、2015年度IBM Champions for ICS(http://www.ibm.com/developerworks/champion/)に選出される。XPages Extensio...

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

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

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

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/9282 2016/04/04 02:08

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング