Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
If you have followed the previous steps in this tutorial you should now have the following things ready for making your connection to the Open Charging Network:
The OCN Identity of your selected OCN Node, and a registration token (TOKEN_A in OCPI Terms)
Access the full OCN technical documentation here.
There are three methods of interacting with the OCN Registry:
If you are using the Command Line Interface provided in the OCN Registry Repository on GitHub, you can check the Public URL of your selected OCN Node by doing this:
ocn-registry get-node 0xEada1b2521115e07578DBD9595B52359E9900104
Where 0xEada1b2521115e07578DBD9595B52359E9900104
is the operator's public address.
You can find documentation on how to install and use the library here.
The Public URL could look something like this: https://test-node.emobilify.com
Please visit the OCN Registry Repository for further details about this step.
Once connected to the registry, you can use the getNode method to return the operator's public URL:
Use the documentation provided here to connect to the OCN Registry using the Java library.
We will first send a GET request to the OCN Node’s versions endpoint, using the TOKEN_A we received from the faucet. Note that curl requests can be imported into e.g. Postman or Insomnia if desired.
You should see a JSON response with OCPI status code 1000. The response data will tell you that version 2.2 can be found at https://test-node.emobilify.com/ocpi/2.2.
Do the same for this endpoint:
You should see a long list of OCPI version 2.2 endpoints implemented by the OCN Node. You will want to save these endpoints for future reference in your application’s database.
For now though, we just need one endpoint. Find the endpoint URL for the module identifier “credentials”. This will be the one we use to connect to the node:
During the credentials handshake, the OCN Node will attempt to request our own versions and endpoints, just as we did before in Step 2.
The OCN Node needs to know where to contact us in case there is a message from another party that needs to be routed to us. It can also help to filter requests, in the case that we have not implemented a specific OCPI module that another party is requesting from us.
If you have not already done so, we can spin up a quick server and execite a node script that will display our versions and endpoints as follows (note: requires NodeJS, Express and UUID):
This will create an authorization token that the OCN Node should use to access our own endpoints. It is logged on start. Be sure to make a note of the authorization token as we will need it later.
Note also the PUBLIC_IP
. We want the OCN Node to be able to access these endpoints from the outside, so we should make sure that the server is reachable via the public IP we set.
Now we are ready to connect to the OCN Node.
The credentials request is detailed below. Make sure to replace the variables TOKEN_A
, TOKEN_B
and PUBLIC_IP
, PARTY_ID
and COUNTRY_CODE
where described:
TOKEN_A
should match the one generated for you by the faucet
TOKEN_B
should match the authorization token that you have created
PUBLIC_IP
should point to your publicly accessible web service
PARTY_ID
and COUNTRY_CODE
refer to the same OCPI credentials that you used when generating the registration token and entering details to the OCN Registry
If the request is successful, you should see a response with OCPI status code 1000 and the OCN Node’s credentials returned in the body.
Now that we have connected to the Open Charging Network we can make use of OCPI to find point of interest data, issue remote commands at charge points and authorize RFID cards of any other OCPI party that is connected to the network.
The most common use case of the Open Charging Network describes an eMobility Service Provider (eMSP) or Charge Point Operator (CPO) connecting their backend service to an OCN Node. An OCN node provides an entry point into the system, so a party must connect to an OCN node in order to participate in the network.
Follow these steps in order to successfully connect your own backend service.
*Note that not only MSPs and CPOs can use the Open Charging Network, but these are the most common roles.
Access the full OCN technical documentation here
An OCN Service Provider develops and provides OCN services that can be used by CPOs, eMSPs and other parties to improve their charging services - such as contracting, billing, payment systems etc.
The OCN Service is - similar to any other OCPI role - an OCN Party. We make this distinction from other "Services" that might only require customers to send OCPI messages (including custom OCPI modules) directly.
To offer your OCN Service via the OCN Service Interface, make sure the following prerequisites are met:
Now you are ready to publish your OCN Service on the OCN Registry.
An OCN Service is an OCPI party that requires additional permissions from their customers. Such permissions could include the forwarding of session or charge detail record data, for example in a payment service.
Once a customer/user has agreed to the Service's permissions, the OCN Node tied to the customer will automate any such required permissions, lessening the cost of integration with a service.
To be granted the aforementioned permissions, you must then list your OCN Service and the permissions required in a separate smart contract, entitled "Permissions". Thereafter, a user can make their agreement explicit in the same smart contract. Learn more on how to list your OCN Service on our .
You can find a full list of currently implemented OCN Permissions .
Access the full OCN technical documentation .
The Open Charging Network allows you to exchange OCPI messages with anybody on the network with just one single OCPI connection, regardless of the OCN Node that you or your counterpart are connected to.
There are some cases in which you want to restrict the list of parties that can communicate with you. For this, the OCN Node provides you with a white- and blacklisting module, called OCN Rules.
Note: This service is an optional feature that needs to be enabled in your own OCN Node or by your OCN Node Operator.
Example: add party to blacklist
You can find a documentation of how you can use this service on the under OcnRules module.
See the source code for the OCN node Rules service .
Access the full OCN technical documentation .
Being part of the Open Charging Network requires participants to set up and manage a self-sovereign identity (OCN Identity).
A 'self-sovereign identity’ is an identity where an individual maintains control over their own credentials, as opposed to having them stored in a centralized server by a third-party. A user's self-sovereign identity could, for example, be partially derived from their cryptocurrency wallet address, which the user maintains control of at all times.
You can read more about self-sovereign identity in our documentation .
Secure identities are critical for the automated routing of OCPI-messages, and for being able to use applications on top of the Open Charging Network.
Below are details on how to complete the steps necessary to create your OCN identity:
(not required for node operators)
Access the full OCN technical documentation .
* This step is NOT required for OCN Node Operators
Your unique identity on the Open Charging Network is based on an compliant name constructed from a country_code (e.g. “CH”) and party_id (e.g. “SNC”).
Today, in many countries, national registries exist to ensure uniqueness of IDs. Please refer to the OCPI documentation for further information both on the Provider and Operator abbreviation as well as for a list of existing authorities: .
Note that currently not all countries have a national registry. To see a list of countries that currently have a national registry,
A public-private key pair is generated programmatically by a wallet through a cryptographic algorithm. The algorithm produces a private key and a corresponding public key. The public key can be exposed and shared with others (it is used to identify participants in the OCN Registry smart contract), but the private key should not be shared with anyone. The algorithm used to generate the key-pair makes it virtually impossible for any outsider to guess your private key.
As a neutral platform, the Energy Web Foundation holds the administration key to this smart contract. The initial implementation requires a centralized authority to have administration rights (e.g. for updates). As the governance of the OCN Registry is a crucial piece to ensure openness of the Open Charging Network, Energy Web Foundation will further develop this governance together with the community (e.g. enable decentralized administration).
The required information varies according to your role within the network and whether you are running a node or not.
You will need to determine your party's role. The most common roles are "CPO" (Charge Point Operator) and "MSP" (Mobility Service Provider).
If you have any issues with your OCN Identity, please reach out to us.
The Open Charging Network uses a cryptographic wallet structure to provide security and unique identities. Wallets are used to construct your OCN identity, and to sign (authorize) actions on the OCN, such as sending and receiving messages. Your wallet (or private/public key-pair), along with your country_code and party_id ( form your identity on the Open Charging Network.
As such, you must have an Ethereum-compatible wallet to create your OCN identity. If you do not already have an Ethereum-compatible cryptocurrency wallet, we recommend using .
You can read more about what cryptocurrency wallets are, and how they are used in the context of the Energy Web Chain .
After completing and , you are now ready to register your OCN Identity with the OCN Registry. This registry serves as the address book for all OCN Identities.
The OCN Registry is implemented as a deployed on the Energy Web Chain. Anyone is allowed to register with the OCN Registry.
There are several ways to manage your OCN Registry entry. We recommend using the , or provided in the
You can see a full list of supported roles within .
OCPI Party (CPO, eMSP) | Node Operator |
---|
As a a final preparation step, you need to fund your Ethereum wallet that you created in The funds will be used to enter our data into the registry. The transaction cost associated with entering the data into the registry is very low - less than 1 .
Depending on whether you want to connect to the or the there are two ways of getting funds for your wallet:
Public Test Network (Volta) | Production Network (Mainnet) |
---|
After funding your wallet, you are now ready to make OCN Registry entries. Please follow the technical instructions on thefor more detailed steps on how to do this using the , or .
Your OCN Identity is your key to participate in the Open Charging Network. Your private key from your cryptographic wallet () is required for managing your OCN Registry entry (your self-sovereign identity). Keep your private key safe! It is advised to follow best-practices for secure storage and usage (similar to API Token Management, management of cryptocurrencies, etc.)
In order for your backend service to be OCN-ready, it must:
Implement the OCPI 2.2 API, the shared communication protocol for the OCN
Implement the OCN Notary in order to sign and verify OCN messages
Access the full OCN technical documentation here.
The OCPI protocol is the common communication protocol for the OCN. Each OCN node implements the OCPI 2.2 API (see, for example, the Kotlin implementation of the OCPI 2.2 API for the OCN node here), and every backend-service that communicates with an OCN node must also implement the OCPI 2.2 API.
Using the OCN Bridge is an alternative to implementing the full OCPI 2.2 API in your backend service. The OCN Bridge provides an OCPI interface using pluggable backend APIs. You can instantiate an instance of the Bridge, which will proxy your requests and responses with other OCN parties.
In addition to the OCPI 2.2 implementation, the OCN Bridge also provides services to interact with an OCN node (i.e. register with a node, get connection status to a node) and the OCN Registry.
Examples:
You can view documentation on how to to implement the OCN Bridge here.
The OCN Bridge simplifies the implementation of the OCPI interface, but it is not required to use in your backend service. Note that the OCN Bridge can only be implemented in JavaScript environments.
The OCN Notary is a package that enables the verification of OCN signature, which are used to sign and verify OCN requests using public/private key-pairs.
Taking a cue from the blockchain community, we have developed a message signing and verifying system for the Open Charging Network.
Under the hood it uses the Elliptic Curve Digital Signature Algorithm (ECDSA) as implemented by Ethereum. The signature itself holds a JSON Object containing all the necessary data for the recipient to verify the data it is receiving.
Not only do requests need to be signed, but responses too.
For requests, the signature is appended to the outgoing OCPI 2.2 headers:
Authorization: Token 0ea32164-515f-418b-8bef-39f3817ea090
X-Request-ID: 71d62c5b-5017-493e-be00-3f5ad4e34fff
X-Correlation-ID: 9881b6f7-63aa-40d2-b9c2-d6daa69c11fb
OCPI-From-Country-Code: CH OCPI-From-Party-Id:
MSP OCPI-To-Country-Code: CH OCPI-To-Party-Id:
CPO OCN-Signature: eyJmaWVsZHMiOlsiJFsnaGVhZGVycyddWyd4L (truncated)...
For responses, the signature is appended to the outgoing OCPI 2.2 JSON response body:
{
"status_code": 1000,
"data": { "result": "ACCEPTED" },
"timestamp": "2020-03-02T12:48:33.005Z",
"ocn_signature": "eyJmaWVsZHMiOlsiJFsnaGVhZGVycyddWyd4L (truncated)..."
}
The idea is that the recipient can use this signature to verify that the message has been signed correctly and has not been modified by an unauthorized party.
For the OCN to function properly, there are cases where an intermediary (i.e. an OCN node) needs to modify the request/response. Such an example would be the response_url
in the JSON body of requests made to the receiver interface of the OCPI commands module. As the recipient does not have access to the response_url
defined by the sender, the OCN Node must modify the value. In an OCN signature, this is known as “stashing”. The signature object contains the history of rewrites, with the previous signature being stashed by the party modifying the data. When a recipient then verifies a signature, the rewrites are also verified.
Let’s take a closer look at what the signature actually is:
interface Signature {
val fields: Array val hash: String
val rsv: String
val signatory: String
val rewrites: Array
}
interface Rewrite {
val rewrittenFields: Map<String, Any?>
val hash: String
val rsv: String
val signatory: String
}
The signature itself contains everything needed to verify the most-recent version of the sent data, i.e. by the sender or OCN node depending on whether any values needed to be modified. Provided is a list of jsonpath fields which can be used to recreate the message as signed by the sender, with the original order of values preserved. The values are hashed using keccak-256, as implemented by Ethereum. The resultant hash is actually the message which is signed. The RSV is the signature, produced by ECDSA using an Ethereum wallet’s private key. The signatory refers to the address of the wallet that was used to sign the message.
The list of rewrites contains an object containing the previous hash, rsv and signatory. It also allows the original message to be recreated by storing the fields which have been rewritten. For example, a commands receiver request might have the following rewrite by the OCN node:
1Rewrite( 2 rewrittenFields = mapOf("$['body']['response_url']" to "https://emsp.net/ocpi/2.2/sender/commands/START_SESSION/acfbb8d2-bd49-4837-97e2-d2c38f6bae55"), 3 hash = "0x1ce93f156bc5b3a5c26c5f2499db7bfa2b38c37fd32616fc6487175b86f41eb2", 4 rsv = "0x16e8b9c4e44f4646235fca85a594b5a31057930676d338d111ae985a4f0d9d4214705a0a2ae18c4dfd014581e96eb4625137a937853d4b2d17a0f3a22750f6ac1c", 5 signatory = "0x25e4fca0a0e5107d06d71ed78f687827208d5ff9" 6)
Of course, the signatory of both the OCN Signature and its rewrites should be independently validated. The verification of the signature only tells us that the message was signed by the signatory provided. The signatory itself could be any Ethereum wallet address. The address of both the original sender and their OCN node can be found in the OCN Registry[link to repo]
.
Now that we know how the signature functions, how do we actually use it? Enter the OCN Notary.
The OCN Notary implements the above Signature and Rewrite interfaces. It can deserialize an incoming OCN Signature and verify its contents. It can be used to sign an OCPI request, and likewise to stash/rewrite values in a request.
Currently the Notary library is available as an NPM package and as a Maven package for languages targeting the JVM. See the OCN Notary repository to find more information for each package.
You can find the API specification document in the OCN Node repository, here: Open API 3.0 specs
Using this specification, it is possible to generate client code and test implementations. For more information, see https://swagger.io/docs/specification/about/.
Note that this document was generated using unmodified source code in the master branch. As such, certain features of the specification format might be missing, such as examples for HTTP requests and responses.
Required Information |
|
|
Optional Information |
Implemented OCPI modules. To see the full list of OCPI modules, and which modules each party typically implements, see the 2.3.1. Typical OCPI implementations per Role
Take your generated public wallet address and visit the . Enter the address and request 1 Volta Ether. This will be more than enough to pay for the transaction to add our details to the registry.
You can purchase Energy Web Token (EWT) at the , the and the . Create an account at the exchange, fund it with your preferred currency and purchase Energy Web Token. One token should be enough cover the transaction cost. Then, transfer the tokens to the wallet address of your OCN Identity.
In order to connect a service to the OCN, you must choose which OCN node you want to connect to, and know the node's public wallet address. You will then request a registration token (Token_A) from your selected node.
Access the full OCN technical documentation here.
In order to connect a service to the Open Charging Network, you must decide which OCN Node you want to connect to.
To view public nodes available on the public test network and their wallet address, see "Develop on the Test Network".
To view public nodes available on the public test network and their wallet address, see "Develop on the Production Network".
Once you select a node operator that you want to connect to, you must:
Know the OCN Identity (wallet address) of that OCN Node Operator (from Step One above).
Request a registration token (TOKEN_A in OCPI terms). Note that this token is only temporary and will become invalid once the registration is complete.
After you have the public address of your public node and your registration token, you are now ready to create / update your OCN Identity on the OCN Registry. Follow the steps provided here: Create and manage an OCN Identity
If an OCN user wants to make use a particular OCN Service, it has to agree on to the Service's permissions. The OCN Node tied to the customer will automate any such required permissions, lessening the cost of integration with a service
To make use of an OCN OCN Service via the OCN Service Interface, make sure the following pre-requisites are met
Your preferred OCN Service is connected to the OCN
You are now ready to give the OCN Service its required permissions.
Learn more about how to do that on our OCN Registry repository.
Access the full OCN technical documentation here.
The OCN Service Interface enables third-party services (such as billing, settlement, location data enrichment) to offer their products to the OCPI community by accessing communication between two OCPI parties on the Open Charging Network without the need for endless API development work.
This is done using OCN Permissions, and requires no additional integration work to be done by the OCPI parties.
It reduces the cost for integration work beyond the EV roaming use-case, helping everyone involved climbing the API mountain of Electric Vehicle charging.
We consider this as crucial to a seamless mass-consumer experience and an efficient EV charging value-chain.
A detailed description of the benefits and functionality of the OCN Service Interface can be found on our (based on a billing example)
Access the full OCN technical documentation .
Learn how to connect your OCN Service to the OCN and to define what OCPI-based information your service needs from OCN Parties / Service Users (OCN Permissions).
Learn how to sign up for an OCN Service by agreeing to OCN Permissions.
The development of the Open Charging Network is steered by community needs with the non-profit Energy Web Foundation curating the development.
For this purpose, transparency about the current feature set is required, which the following OCN maturity model (inspired by ) shall provide. The maturity model and the roadmap of the Open Charging Network development is discussed quarterly during the Share&Charge Foundation and Tech Call.
The maturity model is based on different categories (columns):
Messaging: How messages between OCN Parties are transmitted and secured
Service interfaces: Interfaces that can be used by OCN Parties to connect their services to the OCN
Connection & Community: Tools for the community to test and use the OCN
Maturity is indicated with different-sized black boxes or a heart:
Planned: Requirements are getting defined
Minimal: First implementations are tested
Viable: Can be used in production
Lovable: Functionality set is complete and used by community
A reference to the open source repositories is provided in parenthesis after the feature description.
An open and decentralized communication network for digital eMobility services.
The Open Charging Network (OCN) is a decentralized eRoaming hub.
Using the , the OCN provides the network for communication between , , and other industry players involved in EV charging services.
The primary purpose of the OCN is to make technical connection between these EV charging industry players as simple and secure as possible, without creating technical and commercial lock-in effects.
The two primary actors are eMobility Service Provider (eMSP) and Charge Point Operator.
eMobility Service Providers (eMSPs) provide EV drivers with network access to electric vehicle charge points, typically through software applications and platforms. Their primary end-user is the EV driver.
Charge Point Operators (CPOs) install and manage the physical charge point operation infrastructure and the network operations that allow for EV-charging. Their primary end-users are e-MSPs, who in turn make these charge points available to EV drivers through their products and services.
You can see a full list of roles in the .
The OCN is made up of a distributed network of server nodes running the . These nodes share a registry that stores network participant data, which exists as a that is deployed on the .
Below you will find an overview of OCN functionality and technical components, as well as how to using the OCN.
Access the full OCN technical documentation or download the PDF below:
Authorization
Reservation
Tariff Information
Billing Stating Charge Point Information
Real-time charge point status information
Real-time charge session information
Charge Detail Record (CDR) information
Remote start/stop
Smart charging
Calibration law (eichrect) support
Platform monitoring
These actors implement the OCPI on their back-end IT infrastructure.
This allows end-users to, for example, locate and use EV chargers that are managed by one CPO, even if they are using an application created by a different CPO or eMSP. It provides a broader network of access to services and charge points that are critical for eRoaming.
The OCPI is broken down into modules that provide the protocol's core functionality, which includes:
Bilateral (peer-to-peer) and multilateral communication
Real-time information about charge point locations, availability and pricing
Exchange of data related to charging services (i.e. Charging Data Records)
Mobile access to Charge Points
The OCN performs the role of communication hub as described by the OCPI 2.2, meaning OCN nodes handle the communication and message routing between relevant parties (CPOs, eMSPs, service providers).
The primary difference between the OCN and traditional hub networks is that the OCN is an open and decentralized network:
There is no centralized server that participants must connect to in order to use the network. The OCN is comprised of a distributed network of server nodes, and anyone is able to run or connect their service to a node. Nodes are responsible for brokering messages between parties.
A node consists of a message broker, blockchain wallet, and connection to an Energy Web Chain node. The network of nodes together constructs the Open Charging Network.
Anyone can run a node if they choose, or connect to a node remotely.
A participant is identified in the Registry by their public key, which is mapped to the public url of the OCN node that they are registered with:
Users can interact with the Registry smart contract to fetch, set or update their registered node or their party information.
Most implementations of OCPI are centralized applications, where a third-party platform provides the 'hub' network connection between multiple eMSPs and CPOs that enable actors to send and receive information.
This approach brings certain advantages and convenience, but also creates commercial and technical limitations:
Participant identities are siloed within a network, creating a lock-in effect to that specific network
Network service providers can choose to not provide particular services on a proprietary platform, creating commercial restraints for the network's users
Centralized networks are typically less resilient and scalable than decentralized networks
Participation can be restrictive due to cost or commercial agreements
A decentralized, open source architecture provides a solution for some of these challenges:
Network participant identities are accessible to anyone on the network through a public, shared registry, reducing network and user silos.
Provides an entry point to the network, which enables communication with other eRoaming parties using the Open Charge Point Interface 2.2.
A pluggable OCPI API interface for eRoaming parties with no OCPI API.
The shared address, identity and permissions system of the OCN.
Utilities to securely verify and sign OCN messages using public/private cryptographic key-pairs.
Currently targeting JavaScript and JVM only.
Common tools for aiding development of applications built on top of the OCN.
The Public Test Network is the pre-production test network of the Open Charging Network.
It should be used to test services and features in a robust quality assurance environment. To develop on the test network, you can connect to an OCN test node and the OCN Registry that is deployed on the Volta Test Network. See more details on this below:
Please note, that it is not advised to run a service in production on the Public Test Network. Energy Web Foundation reserves the right to make changes to the testing components on this environment, that could affect your service.
Access the full OCN technical documentation .
The Volta Test Network is the pre-production test network (testnet) of the Energy Web Chain. It is the blockchain equivalent of a test server or test environment in traditional software development.
The for the test network can be found on Volta under the following public key: 0xd57595D5FA1F94725C426739C449b15D92758D55.
You can view transactions and the log history for this contract on the Volta Block Explorer . If you're unfamiliar with the Block Explorer, you can read more .
The Public Test Network of the Open Charging Network provides you with some public test OCN Nodes that you can use for testing the features of the Open Charging Network.
The following test OCN test nodes are currently known to Energy Web Foundation:
The Public Test Network should give you the option to test your OCN Node operation in a QA environment.
The Open Charging Network provides mock OCPI parties for exchanging simple OCPI requests over the Public Test Network.
One Mock CPO and one Mock eMSP are available on the Public Test Network (i.e. registered in the Registry contract that is deployed on the Volta Testnet)
The Open Charging Network is a decentralized implementation of the hub concept. Unlike traditional, centralized hub architecture, the OCN does not rely on a centralized server - the network is made up of a distributed network of server nodes. Anybody can run an OCN node.
There are several benefits to running your own node of the network.
From an individual perspective, running a node makes you less dependent on external service providers
From a network perspective, the Open Charging Network becomes more reliable the more nodes that are running
The following steps below help you to successfully set up and run your own OCN Node:
Before running a node and connecting it to a local, test or production environment, it is recommended to become acquainted with how the network operates first.
After you have set up and configured your OCN Node, you can now set up administration and access restrictions, and allow others to access your node using the OCN Node APIs.
Outside of the full OCPI v2.2 API, OCN Nodes provide additional features, such as the custom OCPI module, OcnRules, as well as ways for admins to restrict use and users to query the OCN Registry.
Every OCN Node is a crucial part of the overall Open Charging Network. As soon as you run your own node, you are responsible for keeping it up to date. This helps to keep the Open Charging Network efficient and secure.
The Energy Web Foundation is steering the development of all Open Charging Network Open Source components, and will release regular updates.
To get started with the OCN Service Interface and to see how the above given example works in action, see our OCN Demo. It mocks a full set-up of an Open Charging Network with two OCN Nodes, two CPOs, one eMSP and one billing service and allows developers to run through the scenario outlined in this article. Get started .
The OCN supports all use-cases described in the , including:
The OCN implements the . This protocol provides a common communication infrastructure for , and other market participants involved in supplying and delivering electric vehicle charging services.
The OCPI protocol can be used for peer-to-peer (bilateral) communication, but is more widely used as a communication that connects multiple CPOs with multiple eMSPs.
Access the full OCPI technical documentation or download the PDF below:
There is no centralized database for storing participant user information. This data is stored in a on the , which is a public, decentralized blockchain. Anyone is able to register with this contract, provided they have required information. The OCN provides a to manage messaging preferences.
In the context of the OCN, a 'node' is a server running an instance of. Each node of the OCN forwards OCPI and OCN messages between parties based on a routing system and a shared registry that is anchored on the Energy Web Chain in a smart contract. As mentioned above, these parties are typically Charge Point Operators or eMobility Service Providers.
Read more about how to run a node . Read more about how to connect to a node
OCN parties (those who are using the network - eMSPs, CPOs, third party service providers) are identified in the that is deployed on the Energy Web Chain. Every node on the OCN has access to this smart contract.
Parties are required to sign messages that they send through the OCN with their private key as a means for security and verification. Learn more about how to create a public/private key pair and register as an OCN party .
Anyone can register and use the network for free. (Read more about how to create an OCN identity )
Anyone can run a node. This makes the network scalable, resilient, and reduces potential points of failure. Read more about how to run a node
The OCN is open-source. Anyone can build applications and provide services on top of the network for all to use. Read more about the OCN Service interface
To get started with the OCN, you first need to create your own OCN Identity. Follow the steps outlined here:.
To connect your EV charging service to an OCN Node (as a Charge Point Operator or an eMobility Service Provider), follow the steps outlined here: .
To operate your own OCN Node, follow the steps outlined here: .
To provide a service like settlement, payment, smart charging, etc. (OCN Service) to OCN Parties (Charge Point Operators, eMobility Service Providers, etc.), follow the steps outlined here:
Repository:
The OCN bridge can be used by CPO/eMSP backends to implement the OCPI protocol, which is a , however it is not required to use the OCN Bridge to do so. Manages the OCPI interfaces, connection to an OCN client and registration with the OCN registry. JavaScript implementation only.
Repository:
The OCN Registry is a on the that contains important identifying information about registered OCN Nodes, Parties and Services. It acts as the shared address, identity and permissions system of the OCN.
Repository:
Note that the already implements the OCN Notary. If you are connecting a party to an OCN node, and you are not implementing the , you will need to implement the OCN Notary in your backend setup.
Repository:
You can run a mock E-Mobility Service Provider (MSP) or Charge Point Operator (CPO) with these tools, which can be helpful for local development. Uses the as a dependency.
Repository:
eMobilify GmbH with OCN Identity 0x4174161e7B8f137De780C024D0e988f4039F8C70
- You can obtain a for this node here: Temporarily unavailable
- By using the Public Test node provided by eMobilify GmbH, you accept the Terms&Conditions and Data Protection Guidelines by eMobilify GmbH. Please visit the to learn more, or reach out to
Elaad NL with PublicURL (Reach out to to obtain the OCN Identity and the registration token)
Follow the steps outlined in the in order to connect your service to one of the nodes listed above.
The OCN-Registry for the Public Test Environment can be found on the under the following public key: 0xd57595D5FA1F94725C426739C449b15D92758D55
Follow the steps outlined in the for guidance on how to run a node.
Please note that the functionality of both mock parties is limited, and does not implement or cover all OCPI modules and use-cases. Details can be found on the Bitbucket repository: .
In the context of OCN, running a node means running and hosting an instance of the
Access the full OCN technical documentation .
For this, a demonstration of a network simulation with two OCN Nodes and mock parties ( and has been provided. Please visit this page to learn more and to find the necessary repositories for running the demo:
If you are familiar with the concept behind the Open Charging Network you can start the setup and configuration of your OCN Node. We recommend first running the node on the before moving to .
Visit the OCN Node README page in the GitHub repository for a step-by-step guide and all necessary resources:
The for the OCN Node describes the available endpoints which can be used by administrators and parties.
The release date of an update will be announced on our at least two weeks before it will come into effect (be pushed from its DEVELOP BRANCH to the MASTER BRANCH). It is planned to keep the components downwards compatible at least one version, but this may not always be possible. Please make sure that you update your OCN Node within 24 hours after the publication of a new release.
Mock | Country Code | Party ID |
Charge Point Operator | CH | CPO |
eMobility Service Provider | CH | MSP |
Monthly Developer Community Calls are being hosted to align the development of all Open Charging Network software components.
Anyone is invited to jointly discuss current status of development, upcoming releases, development contributions from the community, and other related topics.
Calls will take place every second Tuesday of the month via the video conferencing platform Zoom. The call will be recorded and published on this page.
Join the call via Zoom:
Meeting ID: 819 3980 1778
Passcode: 009142
Dial by your location
13.04.2021 - Watch recording on Youtube
09.03.2021 - Watch recording on Youtube
09.02.2021 - Watch recording on Youtube
12.01.2021 - Watch recording on Youtube
08.12.2020 - Watch recording on Youtube
10.11.2020 - Watch recording on Youtube
13.10.2020 - Watch recording on Youtube
08.09.2020 - Watch recording on Youtube
11.08.2020 - Watch recording on Youtube
The Production Network is the live network of the Open Charging Network. Services and features should only be used in a production network after performing robust quality assurance environment.
Access the full OCN technical documentation here.
The Energy Web Main Network (mainnet) is the production network of the Energy Web Chain.
The OCN Registry for the main network can be found under the following public key: 0x184aeD70F2aaB0Cd1FC62261C1170560cBfd0776
You can view transactions and the log history for this contract on the Block Explorer here. If you're unfamiliar with the Block Explorer, you can read more here.
Follow the steps outlined in the "Connect your Service to an OCN Node" in order to connect your service to one of the nodes listed below.
The following test OCN production network nodes are currently known to Energy Web Foundation:
eMobilify GmbH with OCN-Identity 0x34F160573b96D3Db5928Ae804D7d99DdD0aF222c
Reach out to eMobilify GmbH via info@emobilify.com to get connected.
eMobility Easy with OCN-Identity 0x79d2D88A1F668296c96150139366ff507eFeD618
Reach out to eMobility East via info@emobility-east.de to get connected.
Follow the steps outlined in the "Connect your Service to an OCN Node" in order to connect your service to one of the nodes listed above.
For the running of a production node, we advise that a few extra steps are taken. These include configuring HTTPS, enabling message signing, and running against a relational database.
You can see all OCN node configuration settings here.
Running the OCN Node in production mode (by default or with the configuration setting ocn.node.dev=false
) will require HTTPS. On startup in this mode, the OCN Node will look to see if HTTPS is enabled and properly working. If not, the node will shutdown.
We recommend using an Nginx reverse proxy and Let’s Encrypt certificate, but other solutions are not discouraged.
This feature allows recipients to verify the integrity of the data they are receiving. When the configuration setting ocn.node.signatures=true
, request senders should include an OCN-Signature
header that all entities that the request passes through (i.e. OCN Nodes and the recipient) sign to verify that the data has not been modified without consent. Likewise, for responses, an ”ocn_signature”
property should be placed in the JSON response body by the recipient.
Read more about OCN signatures here.
In some cases an OCN Node will need to modify data (typically to make URLs work for recipients). The signature can be modified by an OCN Node, but they must state the properties that they changed, and sign any new data. More information about message signing and verification can be found here.
By default message signing is turned on, but it can also be set with ocn.node.signatures=true
if it is not.
The default dev
properties configuration file only connects to an in-memory database, for ease of quickly testing the OCN Node. When running a Node on the test or production environment, a database should be set up to persist data across restarts. The example application.prod.properties
file provided with the OCN Node provides the configuration necessary to use PostgreSQL.
If necessary, the OCN Node can be load balanced. To do so, the nodes operating under the load balancer should have the same configuration:
The operator should also list the load balancer as the domain name using the same private key in the registry listing:
The OCN allows you to have simple, cost-efficient and secure technical connections to other EV charging players like Charge Point Operators and eMobility Service Providers. To run your EV charging service in production, you may need to enter into different legal relationships.
You might want to consider establishing the following agreements when setting up your charging service:
The OCN Node is responsible for your technical connection to other parties on the OCN. If you are not running your own OCN Node, but using the OCN Node of a third party (OCN Node Operator), you might want to sign a Service Level Agreement (SLA) with the OCN Node Operator. The agreement should make sure the OCN Node is hosted properly and has a high uptime.
Engaging with other parties on the Open Charging Network (like charge points or electric vehicles) requires in many cases a formal legal relationship between you and your counter party. An eRoaming Agreement stipulates the terms and conditions for the eRoaming connections between you and your counter party.
The Open Charging Network is a community project by and for the Electric Vehicle Charging community. Its mission is to provide the EV Charging industry players an open, secure and decentralized network for digital interoperability. This is why the core components are developed open source under the Apache license Version 2.0.
The development of the Open Charging Network is driven and steered by the non-profit Energy We Foundation. Many users and community members are contributing to it in the form of feedback, raised issues, pull requests and dedicated working groups. This article should provide you with some guidance on how you can contribute to this project.
Access the full OCN technical documentation here.
The production-ready version of every Open Charging Network component can be found in its MASTER BRANCH
Development of each component can be found in its DEVELOP BRANCH. Pull requests should therefore generally derive from the develop branch, which will be eventually merged into the master branch to coincide with the release of a new version.
Bare in mind that new features that are big enough may warrant their own feature branch so that multiple contributors can work on them before being merged into the development branch.
The current state of development is made transparent with a maturity model, which describes the current and planned feature set: Maturity Model, Feature Roadmap and Releases.
Monthly Developer Community Calls are being hosted to align the development of all software components. Anyone is invited to join. Learn more about it here.
If you need support in using or contributing to the Open Charging Network, use our Stack Overflow tag.
You can contribute fixes to bugs or new features by sending pull requests via the GitHub repository. Using the GitHub UI, a pull request can be initiated from a branch in a fork of repository.
Before we can include your contributions to the Open Charging Network code, you need to give us permission. As the author of any creative work (including source code, or documentation), you control the copyright for that work. Energy Web Foundation Foundation can’t legally use your contribution unless you allow us to.
To manage this process, we use a mechanism called a Developer Certificate of Origin (DCO) popularized by The Linux Foundation. The DCO is a legally binding statement that asserts that you are the creator of your contribution, and that you license the work under the Apache License Version 2.0.
Please take the following steps so that we can include your work:
Your sign-off certifies that you are either the author of the contribution or have the right to submit it under the Apache 2.0 license used by the Share&Charge project. The sign-off is done by adding the following line to your source code:
You must use your real name. Pseudonyms or anonymous contributions are not allowed.
If you set your user.name
and user.email
as part of your Git configuration, you can sign your commit automatically with git commit -s
.
More tips on how to sign-off your work with Git can be found on this website: DITA Open Toolkit
The full text of the DCO is:
The E-Mobility Dashboard is in a beta release, and is not recommended for production applications. The purpose of making the dashboard client publicly available is to provide an example of how the OCN can be used to develop new applications.
The EV Dashboard is an application which aggregates OCPI data (via the OCN) and Blockchain data for both EVs and charge points. It also facilitate the request and issuance process for credentials relating to a flexibility market.
The dashboard client is available on Github at https://github.com/energywebfoundation/ev-dashboard-client
| Messaging | Service interfaces | Community & Network tools |
Release 1.0.0 (03.03.2020) |
|
|
Release 1.1.0 (16.10.2020) |
On Roadmap |
|
|
|
Ideas / Requirements / Addons |
|
OCPI 2.2 messaging (OCN-Node)
Address book for message routing (OCN-Registry)
Signed OCPI messages (OCN-Notary)
White-/Blacklisting of OCPI parties (OCN-Node)
OCPI 2.2 CPO & eMSP interface (OCN-Node)
CPO & eMSP testing tools (OCN-Tools & OCN-Demo)
OCN Service Permissions (OCN-Registry)
OCPI 2.2 HubClientInfo Module (OCN-Node)
Custom OCN / OCPI message (OCN-Node)
OCN Service Interface (OCN-Node)
OCN Service Interface testing tools (OCN-Demo)
Non-OCPI API connections (OCN-Bridge)
Decentralized Identifiers for OCN Registry
OCN Service Interface with Interception / Changing functionality
ERC20 Token interface (Settlement & Token Bridge)
OCPI 2.1.1 bridge
OCN / OCPI 2.2 testkit