Libraries for ocpp 1.6, 2.0.1 and 2.1
rust-ocpp
The rust-ocpp libs implements the Open Charge Point Protocol used in charging stations. You can read more on the official Open Charge Alliance website.
OCPP versions v1.6 and v2.0.1 are implemented and validated using the official json schemas from Open Charge Alliance. Work has begun on providing support for v2.1 (WIP). For official and up-to-date documentation please visit https://openchargealliance.org/download-ocpp/.
You can find the tests in schema_validation.rs for all supported versions.
repo structure
src/ : library files for v1.6, v2.0.1, and v2.1
How to Use
Add rust-ocpp as a dependency in your Cargo.toml. Note that there is no default version - you must explicitly specify which OCPP version(s) you want to use via feature flags.
[dependencies]
rust-ocpp = "3.0"
To use a specific version, specify it with a feature flag:
[dependencies]
rust-ocpp = { version = "2.0", features = ["v1_6"] } # For OCPP 1.6
rust-ocpp = { version = "2.0", features = ["v201"] } # For OCPP 2.0.1
rust-ocpp = { version = "2.0", features = ["wipv21"] } # For OCPP 2.1 (WIP)
You can also use multiple versions:
[dependencies]
rust-ocpp = { version = "2.0", features = ["v201"] }
How to Build
To build the rust-ocpp library, you need to have Rust and Cargo installed on your system. You can install them by following the instructions provided at the official Rust website.
Once you have Rust and Cargo installed, you can build the library using the following steps:
- Clone the
rust-ocpprepository:
git clone https://github.com/codelabsab/rust-ocpp.git
- Change into the
rust-ocppdirectory:
cd rust-ocpp
- Build the library using Cargo for all versions:
cargo build --all-features
This command will compile the library and its dependencies. If the build is successful, you will find the compiled artifacts in the target/debug directory.
- Run the tests on all versions:
cargo test --all-features
This command will execute the tests for all OCPP versions. If all tests pass, it means that the library is functioning correctly.
- Build a specific version:
rust-ocpp, you can use the appropriate feature flag when running the build command.
For example, to build v1_6:
cargo build --features v1_6
To build v201:
cargo build --features v201
To build wipv21:
> Note that 2.1 support remains a work in progress at this stage.
cargo build --features wipv21
- (Optional) Build for release:
cargo build --features v201 --release
The release build will produce optimized artifacts in the target/release directory.
- (Optional) Install the library:
cargo install --path .
This command will compile the library and its dependencies and install it in the Cargo binary directory, so you can use it as a dependency in other projects.
That's it! You have successfully built the rust-ocpp library. If you encounter any issues during the build process, please check the project's issue tracker on GitHub or open a new issue for assistance.
Testing
rust-ocpp provides testing against json schemas for all supported OCPP versions. To run the tests, you can use Cargo's built-in test runner.
Running Tests
To run the tests for a specific version, use the appropriate feature flag:
cargo test --features v1_6 # For OCPP 1.6 tests
cargo test --features v201 # For OCPP 2.0.1 tests
cargo test --features wipv21 # For OCPP 2.1 tests
To run all tests for all versions:
cargo test --all-features
Test Coverage
The test coverage for rust-ocpp is measured using Codecov. You can find the current test coverage report on codecov.
Contributing to Tests
Contributions to the test suite are very much appreciated. If you encounter any bugs, discover edge cases, or have ideas for additional test cases, feel free to open an issue or submit a pull request. We will be happy to review and incorporate your contributions.
Please ensure that you run the tests and maintain or improve the overall test coverage before submitting any changes. Additionally, adhere to the existing testing conventions and follow the code style guidelines to maintain consistency.
Contribute
Use rustfmt before you PR.
pre-commit config is available. You can read more about it at pre-commits website and checkout their repo on github
Releasing a new version
- Update the version of the library and push the changes to the main branch.
- Create a new release on GitHub with the new version number and some release notes (optional).