techrmc’s blog

ICT大好きな中小企業診断士のブログです

Raspberry Pi 3BとESP-WROOM-02を用いた自作の環境ログシステム(その2)

Raspberry Pi 3BとESP-WROOM-02を用いた自作の環境ログシステム(その1)」では、環境ログシステムの全体概要と、ESP-WROOM-02による測定クライアントについて説明しました。
techrmc.hatenablog.com
ここでは、Raspberry Pi 3Bによるデータ蓄積サーバについて説明します。

データ蓄積サーバ

Raspberry PiのHDD化

Raspberry PiではOSがmicroSDカード上に構築されます。しかし環境ログシステムではサイズの小さなセンサデータを高頻度でDBに書き込む必要があるため、書き込み頻度に限界のあるmicroSDカードでは寿命が短くなってしまいます。そこで長期運用を可能とするため、OSをUSB接続のHDDにインストールし、microSDカードへのアクセスはブート時のみとなるように構成変更しました。

MQTT

MQTTブローカとしてmosquittoを使います。mosquittoについては次の記事を参考にしました。
monoist.itmedia.co.jp
ちなみにESP-WROOM-02の測定クライアントでは、MQTTパブリッシャとしてPubSubClientを使っています。PubSubClientはArduinoのライブラリマネージャによってインストールできます。Raspberry Pi上のMQTTサブスクライバで受信した、測定クライアントのMQTTメッセージ例を下図に示します。

測定クライアントからのMQTTメッセージ例

SQLサーバ

SQLサーバとしてMariaDBを使います。MariaDBについては次の記事を参考にしました。
www.raspberrypirulo.net
nort-wmli.blogspot.com
SQLサーバのデータテーブルの例を下図に示します。

MariaDBのデータテーブル例

Node-RED

センサデータをWebブラウザで簡単に可視化できるツールとして、Node-REDを使っています。Node-REDでは、MQTTサブスクライバで受信したデータをグラフ化するとともに、SQLサーバにデータを蓄積するフローを組みます。このフローを下図に示します。

Node-REDのフロー

上記フローの中のSQLクエリ生成のJavaScriptは下記の通りです。

SQLクエリ生成

Node-REDへデータ閲覧用スマホからアクセスした画面例を下図に示します。スマホ画面には、測定クライアントからpublishされたセンサデータがグラフ表示されます。なお、右側のアグリセンサが今回の環境ログシステムのグラフであり、左側のBME280は環境ログシステムとは別のセンサのグラフ(画面キャプチャ時はデータ無し)です。

スマホ画面

以上、Raspberry PiESP-WROOM-02を用いた環境ログシステムを紹介しました。センサデータは、スマホにグラフ表示されるとともに、SQLサーバに蓄積されています。SQLのDBを操作することで、任意のデータ分析やデータ加工が可能です。