Edge Framework
AI at the edge, on every device
Plugin-based edge framework with on-device inference. Any hardware that connects to the grid runs Electra — chargers, inverters, ESS, meters.
Core Stack
Layers
Architecture
6-Layer Architecture
UI → Core → Service → Protocol → Edge AI → HAL. Upper layers call lower layers; lower layers notify upper layers via events/signals only.
Qt Quick/QML touch UI. Voice input, audio controller, and AI agent are optionally activated. Charging sessions survive GUI crashes.
State machine-based charging session management. ProcessManager and DeviceHalManager orchestrate lower layers. Communicates with UI via QLocalSocket IPC.
Local load balancer as on-demand process. Activated only when needed. Distributes charging sessions across multiple connectors.
OCPP 1.6/2.1 client (always-on). DR Handler and V2G Agent are on-demand processes for DR events and ISO 15118 V2G sessions.
EdgeAIBrain — on-device ML inference and anomaly detection. Real-time analysis with TF Lite & ONNX Runtime, no server required. Activated on demand.
Hardware Abstraction Layer. RFID, PLC, CAN, Payment controllers are isolated as separate processes. GPIO/Power are internal to app-core. Supports all hardware platforms.
Process Model
10 Always-On + 4 On-Demand Processes
Charging sessions survive GUI crashes. Independent per-process updates supported.
Design Principles
Architecture Principles
Plugin-First Design
All major features implemented as plugins. Selective activation via config change only. Create product variants without code modification.
Process Isolation
Major features run as isolated processes. Failure in one process doesn't affect the whole system. OCPP communication survives GUI crashes.
Qt6 Pure
Minimal external dependencies. Qt6-native features first. QLocalSocket IPC for UI-Core separation. No Boost or Poco.
Hardware Abstraction
HAL layer fully abstracts hardware. Supports RFID, PLC, CAN, IC-card, and more with a unified interface across all hardware platforms.
Tech Spec
Full Technology Stack
UI Isolation
gui-app has zero dependency on electra-* libraries
All UI ↔ Core communication goes through a single QLocalSocket channel (/var/run/electra/ui.sock). Supports both request/response and event push. UI uses pure Qt only.