๐ OCPP Client
A lightweight, embedded-friendly Rust OCPP communication framework for building real charge points and CSMS integrations.
๐ Overview
OCPP Client is the communication layer of the Flowion Rust OCPP ecosystem, providing the networking and transport foundation required to build OCPP-enabled charge points and backend integrations.
The library handles the complexities of establishing and managing OCPP connections, including:
- Connection lifecycle management
- Transport handling
- Message routing
- Communication reliability
OCPP message types and protocol definitions are provided by ocpp-types, while OCPP Client focuses on the communication layer required to exchange messages between charge points and Charge Station Management Systems (CSMS).
Designed for both cloud/server environments and resource-constrained embedded systems, OCPP Client supports standard WebSocket connections as well as no_std compatible transports for STM32-based platforms.
The library currently supports OCPP 1.6J, OCPP 2.0.1, and OCPP 2.1.
โจ Features
- ๐ฆ Native Rust implementation
- ๐ OCPP communication layer
- โก OCPP 1.6J support
- ๐ OCPP 2.0.1 support
- โก OCPP 2.1 support
- ๐ WebSocket transport
- ๐ Secure WebSocket (WSS)
- ๐ STM32-compatible transport layer
- ๐ Connection lifecycle management
- ๐จ Message routing
- ๐งฉ Transport abstraction
- ๐ชถ Lightweight runtime
- ๐พ
no_stdsupport for embedded environments - ๐ฅ๏ธ
stdsupport enabled by default for desktop and server applications
๐ Supported Protocols
| Protocol | Status |
|---|---|
| OCPP 1.6J | โ Supported |
| OCPP 2.0.1 | โ Supported |
| OCPP 2.1 | โ Supported |
๐ Supported Transports
| Transport | Status |
|---|---|
| WebSocket | โ Supported |
| Secure WebSocket (WSS) | โ Supported |
| STM32 transport | โ Supported |
โ๏ธ Feature Flags
OCPP Client supports both standard Rust environments and embedded systems.
By default, the std feature is enabled:
[]
= "0.x"
For embedded targets or no_std environments:
[]
= { = "0.x", = false }
This allows the same OCPP communication foundation to run on resource-constrained devices such as STM32 microcontrollers while still supporting traditional server-side applications.
๐๏ธ Architecture
OCPP Client separates protocol definitions from communication.
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Your Application โ
โ Charge Point / CSMS Logic โ
โโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโ
โ
โ
โโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโ
โ ocpp-charge-point โ
โ โ
โ Complete charge point firmware framework โ
โ Add hardware bindings and deploy โ
โโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโ
โ
โ
โโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโ
โ ocpp-client โ
โ โ
โ OCPP communication runtime โ
โ Transport abstraction โ
โ WebSocket / embedded transports โ
โโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโ
โ
โ
โโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโ
โ ocpp-types โ
โ โ
โ OCPP message types โ
โ Protocol models โ
โ Serialization โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ Flowion OCPP Ecosystem
OCPP Client is designed as a modular building block within the Flowion Rust OCPP ecosystem.
Each project has a focused responsibility, allowing developers to choose the right level of abstraction for their application.
๐ฆ ocpp-types
OCPP protocol definitions and data models
ocpp-types provides the foundation for working with OCPP messages in Rust.
It contains:
- OCPP message types
- Protocol models
- Serialization and deserialization
- Version-specific protocol definitions
OCPP Client builds on top of ocpp-types to provide communication capabilities.
๐ ocpp-client
OCPP communication and transport layer
This repository provides the runtime required to connect OCPP-enabled systems.
It handles:
- Connection management
- Transport abstraction
- Message routing
- WebSocket communication
- Embedded-compatible transports
no_stdenvironments
It is designed to run in both:
- ๐ฅ๏ธ Server environments
- ๐ Embedded charge point environments
โก ocpp-charge-point
Complete charge point firmware framework
ocpp-charge-point provides a complete framework for building OCPP-enabled charge point firmware.
The goal is to make developing custom charging hardware as simple as implementing the required hardware bindings.
Developers provide hardware-specific implementations such as:
- GPIO control
- Contactor control
- Metering interfaces
- Connector handling
- LEDs and user interfaces
- Hardware drivers
while the framework handles:
- Charge point state management
- OCPP communication
- Charging workflows
- Backend communication
- Protocol integration
This allows manufacturers and developers to build custom OCPP-compatible chargers without implementing the complete protocol stack from scratch.
๐ฏ Use Cases
OCPP Client can be used for:
- ๐ Building EV charge point firmware
- ๐ญ Developing OCPP-enabled hardware
- ๐ฅ๏ธ Building CSMS integrations
- ๐งช Testing OCPP implementations
- ๐ Connecting embedded devices to charging platforms
- โก Creating custom charging solutions
- ๐ค Automated integration testing
๐ฆ Installation
Add the dependency to your Cargo.toml:
[]
= "0.x"
๐ Quick Example
use Client;
async
๐งช Testing
OCPP Client is designed for:
- Integration testing
- Charge point development
- Embedded testing
- CSMS validation
- Automated test environments
It can be combined with simulators and real charging hardware to validate complete OCPP workflows.
๐ฃ๏ธ Roadmap
Planned improvements:
- ๐ Additional embedded transports
- ๐ More examples
- ๐งช Expanded integration tests
- ๐ง Improved developer tooling
๐ค Contributing
Contributions are welcome!
You can help by:
- ๐ Reporting issues
- ๐ก Suggesting improvements
- ๐ Improving documentation
- ๐ง Submitting pull requests
๐ License
OCPP Client is dual licensed:
- MIT License
- Apache License 2.0
You may choose either license.
๐ข About Flowion
OCPP Client is developed by Flowion AB as part of our effort to make EV charging development more accessible through modern, open-source tooling.
Flowion builds software solutions for electric vehicle charging using open standards such as OCPP, helping developers and businesses build reliable and scalable charging infrastructure.
โญ Support the Project
If you find this library useful:
- โญ Star the repository
- ๐ Report issues
- ๐ก Suggest improvements
- ๐ค Contribute
Together we can make EV charging development easier and more accessible.