Power Monitor 電力監視システム
1. 概要
本システムは、①PZEM-004T電力測定モジュールを用いたデータ収集、②Go言語で実装されたサーバー、③Androidアプリケーション の三層アーキテクチャで構成された「リアルタイム電力情報/状態の遠隔監視システム」です。
システムの主な特徴:
- 15秒間隔でのリアルタイム電力データ収集
- WebSocketを用いた即座のデータ配信
- InfluxDBによる時系列データの効率的な保存
- 機械学習アルゴリズムを用いた電力消費予測
- 包括的な管理CLIによる効率的なシステム運用
本システムは、産業施設、オフィスビル、住宅などの電力使用量を継続的に監視し、エネルギー効率の最適化を目的としている。
2. 開発背景
夏季は電力消費量が飛躍的に増加しています。多くの電力会社は日単位での電力使用量データを提供していますが、より詳細でリアルタイムなデータがなければ、真のエネルギー効率化は困難です。「もっとリアルタイムのデータを見たい」というニーズに応えるため、このシステムを開発しました。
設計目標
- 経済性: 汎用ハードウェアの活用
- リアルタイム性: 15秒間隔でのデータ更新
- スケーラビリティ: 複数デバイスの同時監視
- 拡張性: API-first設計による将来的な機能拡張
3. 設計
本システムは三層アーキテクチャを採用している:
4. 実装
4.1 データ収集器の実装
データ収集器は、PZEM-004T電力測定モジュールとのシリアル通信を担当する核心コンポーネントである。
主要機能:
- シリアル通信管理: PZEM-004Tとの安定したModbus RTU通信
- データ収集サービス: 定期的な電力データ取得とフォーマット変換
- ローカルキャッシング: ネットワーク断絶時のデータ保護機能
- エラーハンドリング: 通信エラーの自動復旧とログ記録
実際の配線作業:
いつも愛用している100円ショップの延長コード(300円)を使い、コンセント付近で配線を切断して電力測定回路を挿入します。具体的な手順は以下の通り:
- 延長コードをコンセントに最も近い位置で切断
- 火線と中性線をPZEM-004Tの入力端子に接続
- すべての接続をしっかりと絶縁処理
- 電流変成器をPZEM-004Tの入力端子に接続
- PZEM-004Tのシリアル通信端子をRaspberry PiのGPIOピンに直接接続
PZEM-004T の TX → Raspberry Pi GPIO 15 (RXD)
PZEM-004T の RX → Raspberry Pi GPIO 14 (TXD)
PZEM-004T の 5V VCC → Raspberry Pi 5V
PZEM-004T の GND → Raspberry Pi GND
ハードウェア接続示意図
ハードウェア接続例
4.2 サーバーの実装
サーバー層は、Ginフレームワークを基盤とするRESTful APIサーバーとして設計されている。
APIグループ:
- 認証API: ユーザーログイン・トークン管理
- クライアントAPI: 一般ユーザー向けデータアクセス(Androidアプリで使用)
- 管理者API: システム管理機能(将来のWeb管理ポータル用)
- コレクターAPI: データ収集器専用エンドポイント
管理CLI機能:
- ユーザー管理: アカウントの作成・更新・削除、権限設定
- 収集器管理: デバイス登録・設定変更・状態監視
- 登録コード管理: 新規収集器用の登録コード生成・管理
4.3 Androidアプリケーションの実装
Androidアプリケーションは、MVP(Model-View-Presenter)パターンを採用し、関心の分離とテスタビリティを重視した設計となっている。
主要機能:
- リアルタイム監視: WebSocketによる即座のデータ更新
- 履歴データ分析: 過去のデータをインタラクティブなグラフで表示
- 電力消費予測: ハイブリッドアルゴリズムによる予測機能
- 多言語対応: 日本語、英語、中国語に対応
5. 使い方
⚠️ 安全に関する重要な注意事項
本システムでは開閉式電流変成器(Current Transformer)を採用しており、配電盤に対する電気工事は不要ですが、電気設備に関連する作業となるため、必ず電気工事士の指導の下で設置・使用を行ってください。安全を最優先に、適切な手順に従って作業を実施することが重要です。
5.1 システム導入
5.1.1 データ収集器導入
日本の単相三線制について:
日本の家庭用電力システムは単相三線制(100V/200V)を採用しており、中性線を基準として±100Vの電圧が供給されています。本システムは現在100V回路の監視に対応しており、一般的な家電製品の消費電力を正確に測定できます。
準備:
- PZEM-004T電力測定モジュールとRaspberry Piの準備
- 電流変成器を白色の中性線に取り付け
- 電源プラグをコンセントに挿入
⚠️ 重要:日本のコンセントでは短い方の極が電圧線、長い方が中性線です。プラグの向きを間違えると電力計算が不正確になる可能性があります
ソフトウェア導入:
- Raspberry PiでGPIOシリアル通信機能の有効化
-sudo raspi-configを実行し、「Interface Options」→「Serial」を選択
- 「Would you like a login shell to be accessible over serial?」→「No」を選択
- 「Would you like the serial port hardware to be enabled?」→「Yes」を選択 - 収集器プログラムを準備
- 設定ファイル(config.ini)の編集
- サーバーのIPアドレスとポートの設定
- シリアルポートの指定(/dev/ttyS0)
- データ収集間隔の設定
- PZEM-004Tの通信設定(ボーレート:9600) - 収集器サービスの起動と動作確認
5.1.2 サーバー導入
準備:
- Raspberry Piまたはサーバーの準備
- ネットワーク接続の確認
- データベースの初期設定
ソフトウェア導入:
配置方式の選択:
LAN内利用 → Raspberry Pi(収集器と同一デバイス)
リモートアクセス → VPS(Virtual Private Server)
共通導入手順:
- サーバープログラムを準備
- 設定ファイル(app.ini)の編集
- データベース接続設定
- JWT認証キーの設定
- WebSocketポートの設定 - サービス群の起動(以下の方法から選択)
Option A: Docker Compose利用(推奨)
- Go API サーバー
- InfluxDB(時系列データベース)
Option B: 個別インストール
- Go バイナリの直接実行
- InfluxDBの個別インストール・設定
- systemdサービス登録(Linux環境) - 管理CLIによる初期設定
- 管理者アカウントの作成
- 収集器用登録コードの生成 - ネットワーク設定とファイアウォール設定(VPS利用時)
5.2 基本操作
管理機能(CLI操作):
本システムでは、サーバーに組み込まれた包括的なCLI(コマンドラインインターフェース)により、Web管理ポータルなしでも完全なシステム管理を実現している。
./server user create- 新規ユーザーの作成./server collector list- 登録済みコレクターの一覧表示./server regcode generate- 新規コレクター用登録コードの生成
Androidアプリの初期設定:
- アプリ起動後、「設定」画面でサーバーアドレスを入力
- 管理者から提供されたユーザーアカウントでログイン
- 「デバイス一覧」から監視対象のコレクターを選択
- 接続確認とデータ受信テスト
日常的な監視操作:
- リアルタイム画面: 現在の電力データの確認
- 履歴画面: 過去のデータをグラフで分析
- 予測画面: 機械学習による電力消費予測の確認
|
リアルタイム画面 |
履歴画面 |
予測画面 |
5.3 デモ動画
6. 今後の展望
システムの継続的な発展を目指し、段階的な機能拡張を計画している。現在開発中の主要機能として、Webダッシュボードの実装により、ブラウザベースのデータ可視化インターフェースが提供される。また、システム管理とユーザー管理のためのWeb管理ポータルの開発も進めている。さらに、機械学習技術を活用したAIベース異常検知機能を導入し、設備異常の自動検出によってより高度な予防保全を実現する。
ハードウェア拡張の観点では、ESP-02無線WiFi串口透传モジュールの導入により、システムアーキテクチャの大幅な改善を図る。この技術により、単一のHubに対して複数の電力測定モジュールを無線接続することが可能となり、配線の簡素化と設置の柔軟性が向上する。各PZEM-004TモジュールにESP-02を組み合わせることで、広範囲に分散した電力監視ポイントを効率的に管理できるようになり、大規模施設や複数フロアでの電力監視において特に有効である。
電力監視範囲の拡張として、現在の100V回路監視に加えて200V回路の監視機能を実装する。日本の単相三線制システムでは、エアコンやIHクッキングヒーターなどの高消費電力機器は200V回路を使用しており、これらの監視により完全な電力使用状況の把握が可能となる。200V対応により、家庭やオフィスの総合的なエネルギー管理がより正確に実現できる。
コスト管理機能の強化として、電力会社の料金APIとの連携により、リアルタイムでの電気料金計算機能を実装する。この機能により、消費電力量を自動的に電気料金に換算し、当日・当週・当月の電気代予測を提供する。ユーザーは実際の金額ベースでエネルギー使用状況を把握でき、より効果的な節電計画の立案が可能となる。さらに、設定した予算額に基づく自動アラート機能により、予算超過の早期警告も実現する。
通知システムの拡充として、LineやDiscordなどとの連携により、毎日の電力使用量と電気料金を自動で通知する機能を導入する。ユーザーは普段使用しているメッセージアプリで簡単に電力使用状況を確認でき、継続的な節電意識の向上が期待できる。また、異常な電力消費や予算超過の際の緊急通知機能も提供し、迅速な対応を可能にする。
コメント