今回、屋内環境の快適性を簡単に把握したいと思い立ち、ツールの作成に取り組んでみました。折角なので、工場も対象に含めて、OPC-UAにも対応しました。
開発環境には、慣れたJava / OSGiを選択しましたが、3rdパーティでOSGi未対応のJavaライブラリも多く、バージョン依存の検証等でOSGi対応にする作業もそこそこ掛かりました。なお、わたしがOSGi対応にしたバンドルは、バンドル一覧から辿れます。
また、BLEをdbus経由でスマートに利用できるJavaライブラリを使えることは、今回の作業を進める上で、大いに励みになりました。なお、bluez-dbusには、幾つかissueやPRを投げて対応してもらいました。
OPC-UAのJava実装については、その界隈ではEclipse Miloは有名で、未だv1ではありませんが、多くのプロジェクトで利用されているのではと思います。ただ、Miloの開発は実質お一人の方がされているようで、ドキュメントが無いのも致し方無いと思います。今回、OPC-UAクライアントを書きましたが、Miloのサンプルコードはドキュメントの代わりに大いに役に立ちました。
また、可視化ツールについては、Grafanaは優れものと改めて実感しました。Chronografも良いのですが、Grafanaの場合、有志の方々から様々なパネルが公開されており、とても使い勝手が良いです。
今日、様々なオープンソースを組み合わせて、小さいですが、思い描くツールを割りと簡単に実現でき、とても重宝しています。あと、Raspberry Pi 4Bの4GBメモリモデルが手に入れば、連携するシステムを一台に詰め込んで、All-In-Oneにできるのでは思います。今でも面倒くさいので、Raspberry Pi 3Bに連携する全システムを載せて利用してます。(OPC-UAはオフにしていますが)
今後、設定と更新を簡単に繰り返せるように、コンテナ化して、Kubernetesで構築したエッジのコンテナクラスタに配備することで、手軽に利用できるようにしたいと思います。その場合、
- セキュアなWi-FiネットワークのコンテナクラスタにPodを配備
- エッジ系を、オンプレに閉じる、あるいは、クラウドと連携させてPodを管理
- ダッシュボードから操作
これらを稼働環境の要件に考えています。本ツールは、主だった環境情報をセンシングして可視化しますが、場所を選ばすに手軽に設置して、ロケーションフリーで展開できればと考えています。
最後に、将来の活用を考えて、MQTTでデータを取得する仕組みを入れました。IoTに限らず、主役はデータと思いますので。
一連の記事
このシリーズは、以下の記事から構成されます。
- 動機とコンセプト
-
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]
簡易ツールの最新情報は、こちらをご参照下さい。