IoTデータ閲覧システム

目的

IoTで収集・蓄積したデータを好きな時に検索してグラフとして閲覧できるようにする

 

システムの構成要素

インターネット側

自分側

構成図
構成図

 

データ提供サーバーについて

蓄積したデータに対するAPIを提供するサーバーです。

サーバー機の選定

インターネット経由でデータを直接提供する場合には、サーバー側もインターネット接続可能な回線を用意する必要があります。サーバーをインターネットに公開することになるのでセキュリティの確保も実施します。
今回はリバースプロキシを入れているのでサーバーをインターネットに公開する必要はありません。上記の負担は軽減されます。
リバースプロキシ、データベースサーバー双方との通信が必要ですが、通信は対データベースサーバの方を優先して考えた方が良いと思います。
今回はAWSのVPC上に仮想サーバーを設置しました。

ソフトウェア構成

項目 内容
OS CentOS
DBMS -----
WEBServer -----
Application データ提供API
・ユーザー認証
・拠点5分消費電力
・機器別5分消費電力
・月間日毎消費量
・月間日最大需要
・年間月別日最大需要
使用言語 Perl(PSGI)

アプリケーション

データ閲覧コンピュータとの通信はHTTPプロトコルで行います。
今回は

という処理をおこないます。
開発言語はPerlを使用し、PSGI仕様のアプリケーションサーバーとしています。
API呼び出しおよび応答の形式はきっちりと設計してデータ閲覧アプリケーションと共有します。
APIの汎用性とデータ閲覧アプリケーション側での使いやすさのバランスが肝要です。
今回は検索するデータの種類ごとに対応するAPIを作成しました。

 

データベースサーバーについて

収集したデータの格納は、データの関連が明確で後々の再利用がしやすいRDBMSで行います。
レコードとして

が格納されているものとします。

サーバー機の選定

データ提供サーバー上のアプリケーションと高速で通信できる所に設置することが望ましいです。
今回はデータ提供サーバーと同じAWSのVPC上に仮想サーバーを設置しました。

ソフトウェア構成

項目 内容
OS CentOS
DBMS MySQL
WEBServer -----
Application -----
使用言語 -----

 

配信サーバーについて

今回のデータ閲覧アプリケーションはHTMLアプリケーションなのでこれをデータ閲覧コンピュータに配信するWebサーバーを設置します。
データ閲覧アプリケーションのファイル群は配信サーバー上に格納します。

サーバー機の選定

インターネット経由でアプリケーションを直接配信する場合には、サーバー側もインターネット接続可能な回線を用意する必要があります。サーバーをインターネットに公開することになるのでセキュリティの確保も実施します。
今回はリバースプロキシを入れているのでサーバーをインターネットに公開する必要はありません。上記の負担は軽減されます。
他のサーバーと同じところに構築する方が手間が少なかったのでリバースプロキシと同じAWSのVPC上に仮想サーバーを設置しました。

ソフトウェア構成

項目 内容
OS CentOS
DBMS -----
WEBServer Nginx
Application -----
使用言語 -----

 

リバースプロキシについて

今回のシステムにおいてリバースプロキシは必須ではありません。データ閲覧コンピュータからの要求を直接データ提供サーバーで受け付けられますが、後々の運用のしやすさも考慮したシステム構成の例としてリバースプロキシを入れています。

サーバー機の選定

インターネット経由でデータを送信するのでサーバー側もインターネット接続可能な回線を用意する必要があります。サーバーをインターネットに公開することになるのでセキュリティの確保も実施します。
今回はサーバーとしてAWSのVPC上に仮想サーバーを設置しました。通信回線とセキュリティの準備の手軽さを考慮しました。

ソフトウェア構成

項目 内容
OS CentOS
DBMS -----
WEBServer Nginx
Application -----
使用言語 -----

 

データ閲覧コンピュータについて

今回はインターネットでデータを閲覧する方式にしています。
データ閲覧アプリケーションはHTMLアプリケーションとし、Webブラウザで稼働するものとします。

機器の選定

最近はWebブラウザのバージョン互換性による問題はあまり聞かなくなりました。
今回のアプリケーション程度であれば一般に使用されている大抵のPC、スマホで利用できると考えます。

ソフトウェア構成

項目 内容
OS 任意
WEBBrower 任意
Application 各種データ表示
・1日消費電力推移
・月間日毎消費量
・月間日最大需要
・年間月別日最大需要
使用言語 HTML5
javascript

アプリケーション

今回、以下に示す数種類のグラフを表示する画面を作成しました。
各画面はHTML、スタイルシート、スクリプトのファイルで構成します。
検索条件を設定してボタンをClickすると提供ServerのAPIを呼び出し、返されるデータをグラフ表示します。
開発言語としてHTML5、javascript使用し、提供Serverからのデータの取得・表示はAjax方式です。
DOMオブジェクト操作にjQuery、グラフ描画にはChartJSを使用しています。

1日消費電力推移表示

グラフ

月間日毎消費量表示

グラフ

月間日毎最大需要表示

グラフ

年間月別日毎最大需要表示

グラフ

 

以上