以前から、屋内(プライベート/オフィス/工場)の主な環境情報の変化の傾向を把握したいと思っていました。CO2とPM2.5の各濃度、あと一般的な環境情報(温度、湿度、照度など)についてです。
PM2.5は、ここ数年、大気汚染に関して良く聞く単語で、大気中の微小粒子状物質を指します。
また、地球温暖化の指標として、大気中のCO2濃度が取り上げられていますが、現在、屋外の濃度は平均して400 ppm程度だそうです。一方、閉め切った部屋では、軽く1000 ppmを超えることをインターネットの記事で知りました。こちらの記事によると、2000 ppmを超えると体調への影響が懸念されるそうで、今回の取り組みの主な動機の一つです。
更に、工場を想定して、産業オートメーション機器から稼動情報を取得して、簡単にモニタリングする機能を入れました。このために、機器から情報を取得するプロトコルとして、インダストリー4.0 / IIoTで注目されているOPC-UAを使用します。現在、この分野は工場のIoT化の観点からホットな領域と思いますが、まずは、お試しで、設備機器の稼動状況を手軽にモニタリングする際の一助になれればと思います。
ただ、現在、稼働中の機器の中でOPC-UAに対応済みの機器はまだまだ少数なのではと思います。この場合、既存の機器の産業用ネットワークプロトコル(例、EtherNet/IP(CIP)やModbusなど)をOPC-UAに変換する仕組みが必要になります。実際、このようなプロトコル変換の商用製品が存在します。(オープンソースでは未だ見たことがありません)
これらのデータを収集して、リアルタイムにモニタリングする簡易ツールを目指して、以下の要件を立てました。
- 屋内(プライベート/オフィス/工場)の一般的な環境情報(CO2、PM2.5、温度、湿度、照度)をモニタリングする
- 産業オートメーション機器の稼働情報をOPC-UAで取得してモニタリングする
- Raspberry Pi 3Bで稼動する
- Java 8以上で稼動するOSGiアプリケーションにまとめる(Java & OSGiには慣れているので)
- モニタリングに使用する時系列データベースと可視化ツールは、既存のオープンソースを利用する
- 収集したデータを他の用途に利用可能にする(データソース機能)
イメージはこんな感じです。
先に結論を言いますと、一連の記事で紹介する、作成した各種センサーデータ取得用のJavaライブラリを組み込んで簡易ツールにまとめたものは、こちらのGithubで公開しています。
今後、本ツールの設定と更新を簡単に繰り返せるように、コンテナ化して、Kubernetesで構築したエッジのコンテナクラスタに配備することで、手軽に利用できるようにしたいと思います。
一連の記事
このシリーズは、以下の記事から構成されます。
- 動機とコンセプト(今回)
-
Bluetooth LEアドバタイズ信号をJavaでキャッチする(Bluetooth LE / bluez-dbus)
関連するGithubはこちら。 -
TI SensorTag CC2650から温度/湿度/照度などをJavaで取得する(Bluetooth LE / bluez-dbus)
関連するGithubはこちら。 -
MH-Z19BからCO2濃度をJavaで取得する(シリアル通信 / jSerialComm)
関連するGithubはこちら。 -
PPD42NSからPM2.5濃度をJavaで取得する(GPIO / Pi4J)
関連するGithubはこちら。 -
産業オートメーション機器の稼動情報をJavaで取得する(OPC-UA / Eclipse Milo)
関連するGithubはこちら。 -
簡易ツールにまとめる
関連するGithubはこちら。 - 後記
追記
[2019.11.16]
簡易ツールの最新情報は、こちらをご参照下さい。