オムロンの環境センサーをニフティクラウドデバイスハブを使って可視化してみた

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

ニフティIoTデザインセンターの芳中です。
IoTデザインセンターの専属のエンジニアチーム「ニフティIoTラボ」では、IoTに関わるテクノロジーの研究、デバイスを使用した実験などを日々行っています。
今回は オムロンの環境センサーから温度と湿度の情報を取得し、それらの情報をニフティクラウドデバイスハブを使って可視化してみました。そちらの内容を、ご紹介したいと思います。

可視化には re:dash を利用しています。
専用のアプリを使えばスマホ上ではグラフなどを見ることはできるのですが、Web から見たい場合には対応していないので今回は Web からも見えるようにしてみました。

本記事の要約

  • オムロン 環境センサーを使って部屋の温度+湿度情報を取得
  • 取得したデータをデバイスハブを使って RDB に保存
  • 保存したデータを re:dash で可視化

システム概要

今回の完成図です
20160908_omron_with_redash

簡単にシステムの概要を説明すると、まず環境センサーの情報を RaspberryPi + Bluetooth ドングルで取得します。
取得した情報をデバイスハブに対してイベントとして送信します。
イベントとして送信されたセンサの値はデバイスハブの「スマートモジュール」という機能を使って自動的にニフティクラウド RDB に保存されます。
そして、RDB に保存した情報を re:dash を使って可視化します。

各種バージョン

  • RaspberryPi2 TypeB (Jessie, 4.4.13-v7)
  • node 4.2.1
  • npm 2.14.7
  • MySQL 5.6.22
  • re:dash 0.11.1

デバイスハブの準備

ニフティクラウドデバイスハブにデバイスを登録し API コールできるようにします。
設定方法は過去の記事に詳しく掲載されているのでそちらをご参照ください。

デバイス ID と API_KEY が取得できれば OK です。
また、今回はスマートモジュール for ニフティクラウド RDB も利用するのでニフティクラウド RDB の作成も事前に行っておいてください。

DB ファイアウォールに以下の 2 つの IP からのアクセスを許可してください

  • 164.70.6.130
  • 164.70.6.131

環境センサーから温度+湿度情報を取得

今回は RaspberryPi を使います。
環境センサーは BLE を使って通信するので RaspberryPi には USB で使える Bluetooth ドングルをつけておいてください。

また RaspberryPi 上で nodejs を利用するのでこちらも事前にインストールしておいてください。
nodejs に加え noble という bluetooth を操作するためのライブラリも利用するので noble の利用に必要なパッケージのインストールも行っておきます。

まず必要なライブラリをインストールします。
使用する package.json は以下の通りです。

  • vim package.json

npm install を実行して必要なライブラリをインストールしてください。
環境センサーから必要な情報を取得するスクリプトは以下の通りです。

  • vim index.js

DEVICE_ID と API_KEY はデバイスハブの準備で取得できた値を設定してください。
環境センサーがスキャンできたら温度と湿度を管理している Characteristics にアクセスして値を取得しています。
取得後はデバイスハブに値をイベントとして送信します。
送信後は 60 秒後に再度スキャンを開始します。

スマートモジュール for RDB の設定

デバイスハブでスマートモジュールの設定をします。
ニフティクラウド RDB で DB インスタンスを予め作成しておいてください。

スマートモジュール > 新規からスマートモジュールを作成します。
作成したニフティクラウド RDB の情報を入力してください。
omron_with_devicehub_sm_settings

作成できたら Subscribe するイベントを設定します。
今回は温度と湿度のイベントのみを Subscribe するように設定します。
omron_with_devicehub_sm_sub

この段階で RaspberryPi 上に作成した index.js を実行するとスマートモジュール経由で RDB にデータが保存されると思います。
スマートモジュールが自動で作成してくれるテーブルは「sensor_data」と「sensor_data_type」になります。
omron_with_devicehub_sm_mysql

スマートモジュールにも以下のようなイベントログが表示されていると思います。
omron_with_devicehub_sm_logs

re:dash サーバの構築

では、MySQL に保存されたデータを re:dash で可視化してみたいと思います。

今回はニフティクラウド上に Ubuntu 16.04 LTS を 1 台立ててそこに re:dash サーバを構築します。
作成したインスタンスの IP アドレスを DB ファイアウォールの許可 IP の一覧に追加しておいてください。
docker-compose を使うと簡単に構築できるので事前にdocker, docker-compose が使える環境を用意しておいてください。

docker がインストールできたら re:dash の公式の手順を使ってインストールしてください。

re:dash の設定

データソース、クエリを作成し作成したクエリの結果をグラフにします。

データソースの作成

データソースはスマートモジュール for RDB に保存した MySQL を利用します。
New Data Source から追加します。
omron_with_devicehub_redash_datasource

クエリの作成

New Query からクエリを追加します。
スマートモジュールが作成したテーブルを結合することで必要なデータを取得するクエリを作成します。

  • 温度を取得するクエリ

  • 湿度を取得するクエリ

クエリを作成したらデータを取得する間隔を設定しましょう。
とりあえず 1m あたりで設定しておくといいと思います。
取得間隔を増やすとその分 RDB に掛かる負荷も上がるのでこのあたりはご自身のシステムと相談して決めてください。

グラフの作成

あとは NEW VISUALIZATION からグラフを作成します。
Line Chart で作成するといい感じに表示されます。

  • 温度用の Visualization
    omron_with_devicehub_redash_humi

  • 湿度用の Visualization
    omron_with_devicehub_redash_temp

ここまでできれば完成です。
あとは Dashboard を使ってグラフを追加してあげれば環境センサーの可視化の完了です。
omron_with_devicehub_redash_dashboard

最後に

オムロン の環境センサー+デバイスハブを使って温度と湿度を可視化してみました。
ニフティクラウドデバイスハブニフティクラウド RDB を使うことでサーバレスで可視化することができました。
re:dash にはアラート機能もあるのである「温度を超えたらメールする」みたいなことも設定すると更に便利だと思います。

オムロンの環境センサーをニフティクラウドデバイスハブを使って可視化してみた
  • このエントリーをはてなブックマークに追加

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です