RaspberryPiとESP32とArduinoを中心に各種センサーでデータ収集、
リモートによる状態監視を行うシステムを検討します。
当システムの必要性は、必要な人には必要、いらない人には全く不要なシステムです。
現状、
お高いシステムとして、ご高尚なシステム屋さんが立派なサーバーを使って構築している
であろうと思いますが、
昨今の電子工作界隈では、
小型で高性能なマイコンが多数出てきており、わりと頑丈に動く、安い、ので、
汎用的なIotデバイスで、普通のInterNetProtcolを使って、立派な働きをする仕組みを
作ることができれば、
・コストはお安め。(でかいサーバー比)
・意外に安定動作(RaspberryPiもSDの信頼性に依存するくらい安定的)
・低消費電力
のメリットがあり、
これをお高く売れれば、粗利が大きい=それなりに儲かる
というわけです。
では、本文
データ収集システムを構築を考えた場合の、MQTTの構築構成を、
全体構成および各機能ブロックごとに分けて詳細に説明します。
全体構成:
-
Raspberry Pi (サーバー):
- MQTT Broker: Raspberry PiはMQTTブローカーとして機能し、データの中央集約と管理を行います。
- データ処理と保存: 受信したMQTTメッセージを解析し、必要な処理を実行。データベースへの保存や他の応用処理を行います。
-
ESP32 (データ収集用):
- MQTT Publisher: ESP32はセンサーデータを収集し、MQTTメッセージとしてRaspberry PiのMQTTブローカーに発行します。
- センサーデータの収集: ESP32上でセンサーデータを収集し、それをMQTTメッセージに変換して送信。
Raspberry Pi (サーバー) 機能ブロック:
-
MQTT Broker:
- Mosquittoのインストール: Raspberry PiにMosquittoなどのMQTTブローカーソフトウェアをインストールします。
- ブローカーの設定: MQTTブローカーの設定を行い、必要に応じてセキュリティ設定を施します。
- ポートの設定: MQTTブローカーがリッスンするポートを設定し、ファイアウォールを構成して必要なポートが開かれていることを確認。
-
データ処理と保存:
- データベースの選定とインストール: 適切なデータベース(例: SQLite、MySQL、InfluxDB)をRaspberry Piにインストールします。
- データベースへの接続: MQTTメッセージを解析し、データをデータベースに保存するための接続を確立。
- データ処理ロジックの実装: 必要なデータ処理ロジックを実装し、データの整形や集計を行います。
ESP32 (データ収集用) 機能ブロック:
- MQTT Publisher:
- PubSubClientの導入: ESP32上でMQTT通信を行うためのPubSubClientなどのライブラリを導入します。
- MQTTブローカーへの接続設定: Raspberry PiのMQTTブローカーに接続するためのMQTTサーバーのアドレスやポート、認証情報を設定。
- センサーデータの収集: センサーデータを取得し、MQTTメッセージとしてフォーマットして発行。
通信フロー:
-
ESP32 -> Raspberry Pi:
- ESP32がセンサーデータを収集し、MQTTメッセージとしてRaspberry PiのMQTTブローカーに発行。
- Raspberry PiのMQTTブローカーがメッセージを受け取り、データ処理ロジックに基づきデータを処理して保存。
-
Raspberry Pi -> ESP32:
- ESP32に対して必要な設定やコマンドをMQTTメッセージとして送信。 (例: ファームウェアの更新指示)
この構成により、ESP32がデータをセンサーから収集し、MQTT経由でRaspberry Piに送信され、Raspberry Piでデータの受け取りと処理が行われます。
という基本構成で、各部分の実装テストを行っていきます。
ちなみにデータ保存は バックアップ用として
ラズパイNASを使おうかどうしようかというところです。