← プロジェクト English →

BANTAY-DAGITAB

2026-04-11
フルスタック IoT 人工知能
Tech Stack:
Python Python
Django Django
PostgreSQL PostgreSQL
Next.js Next.js
Docker Docker
C++ C++

IoT、OCR、そして会話型AIデータベースシステムを統合し、マニラ首都圏の住宅における電気料金の急増(ビル・ショック)を防止するシステム。

アーキテクチャの概要

Bantay-Dagitabは、マニラ首都圏の低所得者層を悩ませる「電気料金の急増(ビル・ショック)」を解決するために設計された、堅牢なマルチサービス・エンタープライズ・アプリケーションです。このシステムは、Docker Composeによってオーケストレーションされる4層の分散プラットフォームとして機能します。

  1. IoTエッジ層: CTセンサー(SCT-013-030)を搭載したESP32マイクロコントローラーが、15分ごとに高頻度の電力使用量テレメトリをバックエンドにプッシュします。
  2. ウェブダッシュボード (Next.js): 月間消費量、デジタル化された請求書、異常検知アラート、および会話型チャットボット・インターフェースを視覚化する、厳密に型指定されたTypeScriptダッシュボード。
  3. APIバックエンド (Django): オーケストレーターおよびスキーマ・マネージャーとして機能。認証の処理、リクエストのインターセプト、物理的な請求書のデジタル化のためのOpenCV+Tesseractパイプラインの実行、外部LLMチャットボット・クエリのためのコンテキストの動的構築を行います。
  4. 機械学習推論サービス (FastAPI): 異常検知 (scikit-learn) および負荷予測のための分離されたワークロードをホストします。
  5. データ層 (PostgreSQL 15): マテリアライズド・ビュー、PL/pgSQLストアド・プロシージャ、トリガーなどの高度なデータベース機能を活用してドメインロジックをカプセル化する、信頼できる唯一の情報源(Single Source of Truth)。

解決されたエンジニアリング課題

高頻度データの取り込みとパフォーマンスの最適化

1世帯あたり、年間約35,000行のテレメトリ・データを生成します。インデックス化が行われていなければ、このデータの集計はダッシュボードのボトルネックとなります。ターゲットを絞った複合Bツリー・インデックスに移行することで、月間消費量スキャンのクエリ・レイテンシが約247.3ミリ秒から3.8ミリ秒に短縮され、65倍の高速化を実現しました。

複雑なドメインロジックのカプセル化

ビジネスルールをアプリケーションのミドルウェアに漏洩させるのではなく、複雑なエネルギー・ロジックをリレーショナル・データ層に押し下げました。例えば、sp_ingest_iot_readingは、1回のトランザクションで読み取り値の挿入と条件付きの異常検知をアトミックに実行するPL/pgSQLストアド・プロシージャであり、trg_iotreading_auditは改ざん防止ログを保証します。

AIチャットのためのトランザクション境界

チャットボットはDjangoの@transaction.atomic()を使用して、コンテキストデータ(最近の請求書、異常イベント、およびリアルタイムのIoTワット数)の取得、外部LLM HTTP呼び出し、およびその結果としてのChatLogへの挿入を1つのトランザクションで安全にラップし、履歴の確実な保存を保証します。

レガシー文書におけるOCRパイプラインの精度

MERALCOの請求書は物理的に劣化していることがよくあります。バックエンドには、画像をTesseract OCRに渡す前に前処理(傾き補正、二値化、ノイズ低減)を行うOpenCVパイプラインが統合されており、物理的な紙の請求書を構造化されたJSONに確実に変換します。

厳格なデータプライバシーへの準拠

フィリピンデータプライバシー法(RA 10173)に厳格に準拠して構築されています。「忘れられる権利」をプログラムで保証するために、すべてのユーザー関連の外部キーにわたるON DELETE CASCADEなどのデータベースレベルの制約が実装されました。


成果

Bantay-Dagitabは、地域社会の社会経済的問題を解決するために、拡張性の高いマイクロサービス・ベースのインフラストラクチャを展開することの有効性を証明しました。

  • ビル・ショックの軽減: 非技術系のユーザーに対して自然言語で消費傾向を説明するインテリジェントなLLMチャットボットと、リアルタイムのテレメトリの可視化によって実現しました。
  • データベース主導の整合性: アプリケーションのエラーに対する堅牢なフォールバックとして、不可能な条件(請求されたマイナスのkWhや、最近の測定値と大きく乖離した異常など)がリレーショナル・データベース・レベルでブロックされることを保証しました。
  • オープンソースの青写真: 地方自治体や研究者が、UN SDG 7(手頃でクリーンなエネルギー)をサポートする地域規模の需要側エネルギー管理パイロットのために展開できる、機能的で軽量なDocker化されたリファレンス・アーキテクチャを提供しました。

オリジナルのリポジトリ (GitHub) を表示

← プロジェクト