MaEVe is an EV charge station management system (CSMS). It began life as a simple proof of concept for implementing ISO-15118-2 Plug and Charge (PnC) functionality and remains a work in progress. It is hoped that over time it will become more complete, but already provides a useful basis for experimentation.
The system currently integrates with Hubject for PnC functionality.
MaEVe is implemented in Go 1.20. Learn more about MaEVe and its existing components through this High-level design document.
MaEVe runs in a set of Docker containers. This means you need to have docker
, docker-compose
and a docker daemon (e.g. docker desktop, colima
or rancher
) installed and running.
Scripts that fetch various tokens use jq
. Make sure you have it installed.
To get the system up and running:
(cd config/certificates && make)
- Run the ./scripts/run.sh script
Charge stations can connect to the CSMS using:
ws://localhost/ws/<cs-id>
wss://localhost/ws/<cs-id>
If the charge station is also running in a Docker container then the charge
station docker container can connect to the maeve-csms
network and the
charge station can connect to the CSMS using:
ws://gateway:9310/ws/<cs-id>
wss://gateway:9311/ws/<cs-id>
Charge stations can use either OCPP 1.6j or OCPP 2.0.1.
For TLS, the charge station should use a certificate provisioned using the Hubject CPO EST service.
A charge station must first be registered with the CSMS before it can be used. This can be done using the manager API. e.g. for TLS with client certificate, use:
$ curl http://localhost:9410/api/v0/cs/<cs-id> -H 'content-type: application/json' -d '{"securityProfile":2}'
Tokens, which identify a payment method for a non-contract charge, must also be registered with the CSMS before they can be used. This can also be done using the manager API. e.g.:
$ curl http://localhost:9410/api/v0/token -H 'content-type: application/json' -d '{
"countryCode": "GB",
"partyId": "TWK",
"type": "RFID",
"uid": "DEADBEEF",
"contractId": "GBTWK012345678V",
"issuer": "Thoughtworks",
"valid": true,
"cacheMode": "ALWAYS"
}'
Docker compose doesn't always rebuild the docker images which can cause all kinds of errors. If in doubt, force a rebuild by docker-compose build
before launching containers.
java.io.IOException: keystore password was incorrect
This error results from incompatibility between java version and openssl; try upgrading your java version.
The gateway is configured through command-line flags. The available flags can be viewed using the -h
flag.
The manager is configured through a TOML configuration file. An example configuration file can be found in ./config/manager/config.toml. Details of the available configuration options can be found in ./manager/config/README.md.
Learn more about how to contribute on this project through Contributing
MaEVe is Apache licensed.