Home

IoTデータ収集システムの構築

目的

インターネットにつなげる『モノ』である多回路電力量計から得たデータをインターネット側に設置したデータサーバーに届け、データを蓄積する

 

システムの構成要素

モノ側

インターネット側


構成図

 

多回路電力量計について

IoTでいうところのモノに相当するデバイスです。電力計測器として市販されている機器を使用します。計測したい機器の電源線に電流センサ取り付けて接続します。設置には電気工事士による作業が必要です。

が今回の多回路電力量計の選定条件です。

 

組込用コンピュータについて

機器の選定

大規模展開を前提にしない開発であれば、コンピュータの基板を専用筐体に入れた開発用モデルが販売されている機器がおすすめです。Linuxはほとんどの機器でサポートされています。

Internetに接続する通信回線

組込用コンピュータにEthernetインタフェースやWiFiモジュール、SIMモジュールが付いているか、後付け用モジュールが提供されているか、によって使用出来る通信回線が変わってきます。
今回はOSにLinuxを採用しているのでアプリケーション側では通信回線を意識せずOS任せにすることが出来ますが、OSのビルド時には通信インタフェースのドライバー組込みとネットワーク設定を行います。

アプリケーション

IoTでデータを収集する場合、モノ側の仕様にはあまり多くの注文は出来ないでしょう。モノ側の仕様への対応は組込用コンピュータ側のアプリケーションで行います。
今回は

という処理を行います。
受信サーバーへのデータの送信方式はアプリケーションの要件として自前で定めます。今回はインターネットと相性の良いHTTPプロトコルでHTMLコンテンツとしてデータを送信します。コンテンツ部分に計測レコードを記載し計測レコードの形式は独自に定めています。
受信サーバーへのデータ送信間隔は、5分・30分・1時間・1日を選択可能なアプリケーションとしました。

ソフトウェア構成

項目 内容
OS Debian、組込用Linux
DBMS -----
WEBServer -----
Application データ取得・送信機能
使用言語 Perl

 

受信サーバーについて

データ受信・登録機能を提供するアプリケーションサーバーです。

サーバー機の選定

インターネット経由でデータを届ける場合には受信サーバー側もインターネット接続可能な回線を用意する必要があります。サーバーをインターネットに公開することになるのでセキュリティの確保も実施します。
今回に関してはリバースプロキシを入れているので受信サーバーをInternetに公開する必要はありません。インターネットへの公開はリバースプロキシが担います。
リバースプロキシとの安定した通信が見込めるのでリバースプロキシ同じAWSのVPC上に仮想サーバーを設置しました。

アプリケーション

インターネットと相性の良いHTTPプロトコルでデータを待ち受けるアプリケーションサーバーを構築します。
今回は

という処理を行います。
開発言語はPerlを使用し、PSGI仕様のアプリケーションサーバーとしています。

ソフトウェア構成

項目 内容
OS CentOS
DBMS -----
WEBServer -----
Application データ受信機能
データ提供API機能
使用言語 Perl(PSGI)

 

データサーバーについて

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

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

サーバー機の選定

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

ソフトウェア構成

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

 

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

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

サーバー機の選定

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

ソフトウェア構成>

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

 

組込用コンピュータに関する付記

OSのブートとビルド(Linuxを念頭に)
多くの開発用モデルでは、OSの起動において

両方がサポートされていることでしょう。
アプリケーションの開発段階ではアプリケーションの変更やOS設定の変更が頻繁に発生するので後者で行う事が現実的です。
システムの信頼性としては前者に分があります。開発段階から必要な機能の取捨選択を意識しておいて、後で前者に移行出来ると良いです。
組込用コンピュータは、Distributionと呼ばれているような汎用パッケージで本番システムを稼働させることを前提としないものもあります。一般のPCと比べて記憶領域が小さい機器では、自分のシステム用にOSをビルド出来るようになっています。しかし自分用のビルドは万能ではなく、ビルドしたOSのサイズが大きくて書き込めないという事態に遭遇するかもしれません。そんな時はビルドに含める開発言語のライブラリの取捨選択がスリム化に寄与するかもしれません。

 

以上