OpenADR at Voltus
This page provides a general description of OpenADR and how it is used at Voltus.
What is OpenADR?
Open Automated Demand Response (OpenADR) is an open protocol for exchanging information about Demand Response (DR) and Distributed Energy Resources (DER). Voltus supports OpenADR 2.0a, which specifies a protocol for retrieving and acknowledging grid events.
The OpenADR protocol relies on two servers: Virtual Top Nodes (VTN) and Virtual End Nodes (VEN). A VTN transmits OpenADR signals to end devices or other intermediate servers. A VEN is typically a "client" and can be an Energy Management System (EMS) or other end device that accepts the OpenADR signal from the VTN. In our case, Voltus provides a VTN, and our partners run one or more VENs. Our partners are usually able to use existing VEN implementations.
FAQ
What versions of OpenADR does Voltus support?
Voltus supports OpenADR2.0a via Simple HTTP (PULL). This means your VEN will make regular requests to our VTN to receive dispatch signals over HTTPS. We recommend polling on a 1-minute cadence. Upon receipt of a DR event, your VEN should send an acknowledgement request.
Why don't you support OpenADR 2.0b or 3.0?
Neither are widely supported enough for Voltus to commit to developing an integration.
Can I see an example payload?
yes, please see our API reference docs.
I have multiple sites. Do I need one VEN for each site?
No. You only need one VEN. Each OpenADR signal includes a list of targeted sites.
If you prefer to have multiple VENs, discuss your needs with our team so we can configure your integration appropriately.
How does authentication work?
OpenADR uses mutual TLS (mTLS) authentication. To set up your initial integration, you will have to send us a Certificate Signing Request (CSR). We will send you a certificate, and you will include this Voltus certificate with every VEN request.
How can I identify which site is participating in a dispatch?
As per the specification, we use the resourceID
field to identify sites affected by a dispatch. it will contain the customer_location_id
of the site. As the name indicates, the customer can choose what value this is.
Can I send telemetry via OpenADR?
No. The Voltus API provides an endpoint for sending telemetry data.
Further Reading
The full OpenADR2.0 specification can be downloaded from the official openADR website. You will need to make an account to download the files.
OADR Dispatch Sandbox
Make a request to our Sandbox environment. No authentication is required:
curl --url https://sandbox-vtn.voltus.co/sandbox/OpenADR2/Simple/EiEvent --data \
'<ns3:oadrRequestEvent xmlns="http://docs.oasis-open.org/ns/energyinterop/201110/payloads" xmlns:ns2="http://docs.oasis-open.org/ns/energyinterop/201110" xmlns:ns3="http://openadr.org/oadr-2.0a/2012/07">
<eiRequestEvent>
<requestID>d1ea6d65-4998-4e1f-959d-40e765588b5d</requestID>
<ns2:venID>fake_test_ven</ns2:venID>
</eiRequestEvent>
</ns3:oadrRequestEvent>'
You will get an empty OK response that looks something like this:
<?xml version='1.0' encoding='utf-8'?>
<oadr:oadrDistributeEvent xmlns:ei="http://docs.oasis-open.org/ns/energyinterop/201110" xmlns:oadr="http://openadr.org/oadr-2.0a/2012/07" xmlns:pyld="http://docs.oasis-open.org/ns/energyinterop/201110/payloads">
<ei:eiResponse>
<ei:responseCode>
200
</ei:responseCode>.
<ei:responseDescription>
OK
</ei:responseDescription>
<pyld:requestID>
d1ea6d65-4998-4e1f-959d-40e765588b5d
</pyld:requestID>
</ei:eiResponse>
<pyld:requestID>
87c39338-2290-4db0-9788-63ac706aed64
</pyld:requestID>.
<ei:vtnID>
voltus_sandbox_vtn
</ei:vtnID>
</oadr:oadrDistributeEvent>