VOX — EV向け OCPP バックエンド

Web

概要

VOX は EV 充電インフラ向けの統合バックエンドで、OCPP 1.6 と 2.0.1 を同時に扱える点が最大の特徴です。複数プロトコルのチャージャーを一つのシステムで管理し、PostgreSQL による永続化と FastAPI による REST API を提供することで、ダッシュボードや課金系システム、モバイルアプリとの連携を容易にします。並列動作する WebSocket サーバーでプロトコルの違いを吸収し、kWh 単位の課金ロジックを内包しているため、現場運用に即した設計がされています。

GitHub

リポジトリの統計情報

  • スター数: 3
  • フォーク数: 0
  • ウォッチャー数: 3
  • コミット数: 4
  • ファイル数: 2
  • メインの言語: Python

主な特徴

  • OCPP 1.6 と OCPP 2.0.1 を同時サポート(レガシーと最新機器の共存対応)
  • 並列で動作する2つの WebSocket サーバーにより両プロトコルを同時に処理
  • PostgreSQL による単一データベースで状態管理と kWh ベースの課金を実装
  • FastAPI を用いた REST API を提供し外部システムと連携可能

技術的なポイント

VOX の技術的な核は「複数バージョンの OCPP を同一バックエンドで扱う」点にあります。OCPP 1.6 と 2.0.1 はメッセージ形式や機能が異なるため、それぞれのコネクション管理(認証、ハートビート、トランザクション開始/終了等)を別々に扱いつつ、一貫したデータモデルにマッピングする設計が想定されます。README の記載どおり「二つの WebSocket servers」が並列に動くことで、接続ごとに適切なプロトコルハンドラへ振り分け、内部では共通のイベント/テーブルへ集約するアプローチを取れるのが強みです。

課金(billing)は kWh 単位で計算・記録する必要があり、PostgreSQL を単一ソースオブトゥルースにすることでトランザクション性と整合性を確保できます。課金処理では、充電セッションの開始・終了や中断、再開時のメーター値の差分計算、二重請求回避のための idempotency 管理などが重要です。FastAPI による REST API はダッシュボードや会計システム向けに集計結果やセッション情報、チャージャー管理エンドポイントを提供する想定で、非同期処理(async/await)とコネクションプールを活かした高並列処理が合います。

運用面では、ログ・監視、TLS 保護された WebSocket(WSS)、接続数増加に備えた水平スケーリング、バックアップ/マイグレーション用のスキーマ管理が求められます。OCPP のメッセージの順序保証や再送、長時間オフライン後のデータ整合の問題に対する戦略(キューイングや差分リプレイ)も実装の重点になります。軽量リポジトリ構成ですが、ここから実運用向けに機能を追加して拡張していく土台として有用です。(約700字)

プロジェクトの構成

主要なファイルとディレクトリ:

  • README.md: file
  • main.py: file

まとめ

OCPP の複数バージョンを一本化して管理できる、実運用志向の EV 充電バックエンドの骨子を示すリポジトリです(約50字)。

リポジトリ情報:

READMEの抜粋:

VOX EV – OCPP Backend (1.6 + 2.0.1)

Backend unificado para operação de carregadores elétricos, com suporte simultâneo a OCPP 1.6 e OCPP 2.0.1, persistência em PostgreSQL e API REST para consumo por dashboards, apps e sistemas financeiros.


✨ Principais recursos

  • ✅ OCPP 1.6 (chargers legados)
  • ✅ OCPP 2.0.1 (chargers modernos)
  • ✅ Dois WebSocket servers rodando em paralelo
  • ✅ Banco único (PostgreSQL)
  • ✅ Billing por kWh
  • ✅ API REST (FastAPI)
  • ✅ Arquitetura pron…