6 CSIP IEEE 2030.5 Implementation
6.1 Utility Server Operation
This section describes the operation of the IEEE 2030.5 utility server. For the most part, the operations of the utility sever are the same whether communicating with an Aggregator or a DER. Where there are differences, sub-sections for Aggregator operation vs. DER operation will be provided.
6.1.1 Server and Resource Discovery
6.1.2 Registration
In IEEE 2030.5, registration is the process of creating an EndDevice instance for the device being registered. The utility server SHOULD only register authorized devices. The utility server SHOULD NOT allow access to critical resources to un-registered devices. The utility SHOULD return an HTTP error code (e.g. 404 – Not Found) for un-authorized accesses by un-registered devices.
6.1.3 Out-Of-Band DER Registration
In the out-of-band registration model, the utility server creates EndDevice instances corresponding to authorized devices at start-up, prior to any client device connecting to the server. The utility server receives a list of authorized devices via an out-of-band process. For example, a utility may generate this list internally, or receive it from an Aggregator. Each utility may have their own procedure for creating and updating this list, and these procedures are outside the scope of CSIP.
When an authorized DER queries the utility server’s EndDeviceList, the utility server SHOULD return an
EndDeviceList containing 1 entry – the EndDevice instance of the authorized device making the query.
When an unauthorized DER queries the utility server’s EndDeviceList, the utility server SHOULD return an HTTP error code (e.g. 404 – Not Found).
If a device tries to perform in-band registration by POSTing to the EndDeviceList, the server SHOULD return an HTTP error code (e.g. 403 – Forbidden).
6.1.4 In-Band DER Registration
In the in-band registration model, the utility server has a list of authorized devices, but does not create and EndDevice instance for the authorized devices at start-up. The utility server receives a list of authorized devices via an out-of-band process. For example, a utility may generate this list internally, or receive it from an Aggregator. Each utility may have their own procedure for creating and updating this list, and these procedures are outside the scope of CSIP.
When an authorized DER initially queries the utility server’s EndDeviceList, the utility server returns an empty EndDeviceList. The authorized DER tries to perform in-band registration by POSTing its EndDevice instance to the EndDeviceList. The utility server receives this POST and verifies the DER is in the authorized devices list. If it is, the utility server creates the EndDevice instance and returns an HTTP success code of 201 – Created, along with the location (i.e. URL) of the created EndDevice instance. Once created, any subsequent GETs of the EndDeviceList by this device returns an EndDeviceList containing a single entry – the EndDevice instance of the authorized device making the query.
If the device is not on the authorized list, the utility server SHOULD return an HTTP error code (e.g. 403 –
Forbidden).
The in-band registration model may be more convenient for installers that have a pool of authorized devices in its inventory and only needs to register them when they are installed at the customer site.
6.1.5 Aggregator Registration
An Aggregator is a special EndDevice to the utility server. The utility will likely use the out-of-band method to register an Aggregator though in-band registration is possible. As described in 6.1.3 and 6.1.4, the utility has a list of all the authorized devices managed by the Aggregator and has created EndDevice instances for those devices.
When the Aggregator starts up, it initially queries the server’s EndDeviceList. The server returns an EndDeviceList consisting of the Aggregator’s instance as well as the instances of all the authorized DERs under the Aggregator’s management. The Aggregator gets all the EndDevice instances to discover the group assignments of each EndDevice under its management.
6.1.6 Group Assignment of Inverters
The utility server is responsible for assigning an EndDevice to its groups. As a reminder, a group ultimately maps to a DERProgram. The DERProgram provides a reference to the controls and curves associated with a specific DER management program. The key components of the DERProgram are the primacy value (which sets the priority of this program) and the links to the DefaultDERControl, the DERControlList, and the DERCurveList. The utility server creates a DERProgram for each group in the system. Figure 5 shows an example DERProgram for the System A1 group of Figure 3.
<DERProgram href="/sep2/A1/derp/1">
<mRID>B01000000</mRID>
<description>SYS-A1</description>
<ActiveDERControlListLink href="/sep2/A1/derp/1/actderc" all="0"/>
<DefaultDERControlLink href="/sep2/A1/derp/1/dderc"/>
<DERControlListLink href="/sep2/A1/derp/1/derc" all="0"/>
<DERCurveListLink href="/sep2/A1/derp/1/dc" all="0"/>
<primacy>89</primacy>
</DERProgram>
Figure 5 - Example DERProgram
Once all the DERPrograms have been created, each EndDevice needs to be assigned to their appropriate groups. CSIP uses one FSA for topology groups and a second FSA for non-topology groups as described in section 5.2.3.1 to create the group assignments for each EndDevice. A DERProgramList is created for each of the FSAs, and group assignment simply consists of populating these lists with all the topology and non-topology DERPrograms (i.e. group assignments) for that EndDevice. An example of the DERProgramLists for Inverter-A of Figure 3 is shown in Figure 6.
<DERProgramList href="/sep2/edev/1/derpF1" subscribable="1" pollRate="3600" all="7" results="7" xmlns="urn:ieee:std:2030.5:ns">
<DERProgram href="/sep2/A1/derp/1">
<mRID>B01000000</mRID>
<description>SYS-A1</description>
<ActiveDERControlListLink href="/sep2/A1/derp/1/actderc" all="0"/>
<DefaultDERControlLink href="/sep2/A1/derp/1/dderc"/>
<DERControlListLink href="/sep2/A1/derp/1/derc" all="0"/>
<DERCurveListLink href="/sep2/A1/derp/1/dc" all="0"/>
<primacy>89</primacy>
</DERProgram>
<DERProgram href="/sep2/A1-B1/derp/1">
<mRID>B01100000</mRID>
<description>SUBTX-A1-B1</description>
<ActiveDERControlListLink href="/sep2/A1-B1/derp/1/actderc" all="0"/>
<DefaultDERControlLink href="/sep2/A1-B1/derp/1/dderc"/>
<DERControlListLink href="/sep2/A1-B1/derp/1/derc" all="0"/>
<DERCurveListLink href="/sep2/A1-B1/derp/1/dc" all="0"/>
<primacy>88</primacy>
</DERProgram>
: : : : : : : : : : :
: : : : : : : : : : :
<DERProgram href="/sep2/A1-B1-C1-D1-E1-F1/derp/1">
<mRID>B01111110</mRID>
<description>TRANS-A1-B1-C1-D1-E1-F1</description>
<ActiveDERControlListLink href="/sep2/A1-B1-C1-D1-E1-F1/derp/1/actderc" all="0"/>
<DefaultDERControlLink href="/sep2/A1-B1-C1-D1-E1-F1/derp/1/dderc"/>
<DERControlListLink href="/sep2/A1-B1-C1-D1-E1-F1/derp/1/derc" all="0"/>
<DERCurveListLink href="/sep2/A1-B1-C1-D1-E1-F1/derp/1/dc" all="0"/>
<primacy>84</primacy>
</DERProgram>
<DERProgram href="/sep2/A1-B1-C1-D1-E1-F1-G1/derp/1">
<mRID>B01111111</mRID>
<description>SP-A1-B1-C1-D1-E1-F1-G1</description>
<ActiveDERControlListLink href="/sep2/A1-B1-C1-D1-E1-F1-G1/derp/1/actderc" all="0"/>
<DefaultDERControlLink href="/sep2/A1-B1-C1-D1-E1-F1-G1/derp/1/dderc"/>
<DERControlListLink href="/sep2/A1-B1-C1-D1-E1-F1-G1/derp/1/derc" all="0"/>
<DERCurveListLink href="/sep2/A1-B1-C1-D1-E1-F1-G1/derp/1/dc" all="0"/>
<primacy>83</primacy>
</DERProgram>
</DERProgramList>
<DERProgramList href="/sep2/edev/1/derpF2" subscribable="1" pollRate="3600" all="1" results="1" xmlns="urn:ieee:std:2030.5:ns">
<DERProgram href="/sep2/Z/derp/1">
<mRID>B10000000</mRID>
<description>Group-Z</description>
<ActiveDERControlListLink href="/sep2/Z/derp/1/actderc" all="0"/>
<DefaultDERControlLink href="/sep2/Z/derp/1/dderc"/>
<DERControlListLink href="/sep2/Z/derp/1/derc" all="0"/>
<DERCurveListLink href="/sep2/Z/derp/1/dc" all="0"/>
<primacy>81</primacy>
</DERProgram>
</DERProgramList>
Figure 6 - Example DERProgramLists for Inverter-A
The utility server then creates the FunctionSetAssignmentsList to link the DERProgramList with the appropriate EndDevice. An example FunctionSetAssignmentsList for Inverter-A shown in Figure 7. The EndDevice instance for the device will contain a link to this FunctionSetAssignmentsList.
<FunctionSetAssignmentsList href="/sep2/edev/1/fsa" subscribable="1" all="2" results="2" xmlns="urn:ieee:std:2030.5:ns">
<FunctionSetAssignments href="/sep2/edev/1/fsa/1">
<mRID>A1000000</mRID>
<description>Inverter-A Topology FSA</description>
<DERProgramListLink href="/sep2/edev/1/derpF1" all="7"/>
<TimeLink href="/sep2/tm"/>
</FunctionSetAssignments>
<FunctionSetAssignments href="/sep2/edev/1/fsa/2">
<mRID>A1000001</mRID>
<description>Inverter-A Non-Topology FSA</description>
<DERProgramListLink href="/sep2/edev/1/derpF2" all="1"/>
<TimeLink href="/sep2/tm"/>
</FunctionSetAssignments>
</FunctionSetAssignmentsList>
Figure 7 - Example FunctionSetAssignmentsList for Inverter-A
6.1.7 EndDevice Creation
The utility server then creates the EndDevice instance that links to the appropriate FunctionSetAssignmentsList. An example EndDevice instance for Inverter-A is shown in Figure 8. Note that the FunctionSetAssignmentsListLink points to the list in Figure 7.
<EndDevice href="/sep2/edev/1">
<lFDI>12a4a4b406ad102e7421019135ffa2805235a21c</lFDI>
<LogEventListLink href="/sep2/edev/1/log" all="0"/>
<sFDI>050044792964</sFDI>
<changedTime>1514836800</changedTime>
<enabled>1</enabled>
<FunctionSetAssignmentsListLink href="/sep2/edev/1/fsa" all="2"/>
<RegistrationLink href="/sep2/edev/1/rg"/>
</EndDevice>
Figure 8 - Example EndDevice for Inverter-A
If the utility is using an Aggregator, an EndDevice instance for the Aggregator also needs to be created. There are a couple of differences between an Aggregator EndDevice instance and a DER EndDevice instance. First, the Aggregator uses IEEE 2030.5 subscription/notification, so it needs a SubscriptionListLink, and second, the Aggregator itself is not a DER, so it does not need a FunctionSetAssignmentsListLink. An example of an Aggregator EndDevice instance is shown in Figure 9.
<EndDevice href="/sep2/edev/1000">
<lFDI>9dfdd56f6128cdc894a1e42c690cab197184a8e9</lFDI>
<LogEventListLink href="/sep2/edev/1000/log" all="0"/>
<sFDI>424105305501</sFDI>
<changedTime>1514837000</changedTime>
<enabled>1</enabled>
<RegistrationLink href="/sep2/edev/1000/rg"/>
<SubscriptionListLink href="/sep2/edev/1000/sub" all="0"/>
</EndDevice>
Figure 9 - Example EndDevice for Aggregator
6.1.7.1 EndDevice Access
DERs or Aggregators get access to EndDevices through an EndDeviceListLink that is available via the
server’s DeviceCapability resource. The utility server should return a custom EndDeviceList for each device making the request. If the querying device is a DER, the server should return an EndDeviceList consisting of a single entry – the EndDevice instance of the requesting DER. An example of a DER EndDeviceList is shown in Figure 10.
<EndDeviceList href="/sep2/edev" subscribable="1" pollRate="86400" all="1" results="1" xmlns="urn:ieee:std:2030.5:ns">
<EndDevice href="/sep2/edev/1">
<DERListLink href="/sep2/edev/1/der" all="0"/>
<lFDI>12a4a4b406ad102e7421019135ffa2805235a21c</lFDI>
<LogEventListLink href="/sep2/edev/1/log" all="0"/>
<sFDI>050044792964</sFDI>
<changedTime>1514836800</changedTime>
<enabled>1</enabled>
<FunctionSetAssignmentsListLink href="/sep2/edev/1/fsa" all="1"/>
<RegistrationLink href="/sep2/edev/1/rg"/>
</EndDevice>
</EndDeviceList>
Figure 10 - Example EndDeviceList for Inverter-A
If the querying device is an Aggregator, the server should return an EndDeviceList consisting of an entry for the Aggregator and entries for each DER under the Aggregator’s control. An example of an Aggregator EndDeviceList is shown in Figure 11.
<EndDeviceList href="/sep2/edev" subscribable="1" all="3" results="3" xmlns="urn:ieee:std:2030.5:ns">
<EndDevice href="/sep2/edev/1000">
<lFDI>9dfdd56f6128cdc894a1e42c690cab197184a8e9</lFDI>
<LogEventListLink href="/sep2/edev/1000/log" all="0"/>
<sFDI>424105305501</sFDI>
<changedTime>1514837000</changedTime>
<enabled>1</enabled>
<RegistrationLink href="/sep2/edev/1000/rg"/>
<SubscriptionListLink href="/sep2/edev/1000/sub" all="0"/>
</EndDevice>
<EndDevice href="/sep2/edev/1">
<DERListLink href="/sep2/edev/1/der" all="0"/>
<lFDI>12a4a4b406ad102e7421019135ffa2805235a21c</lFDI>
<LogEventListLink href="/sep2/edev/1/log" all="0"/>
<sFDI>050044792964</sFDI>
<changedTime>1514836800</changedTime>
<enabled>1</enabled>
<FunctionSetAssignmentsListLink href="/sep2/edev/1/fsa" all="2"/>
<RegistrationLink href="/sep2/edev/1/rg"/>
</EndDevice>
<EndDevice href="/sep2/edev/2">
<DERListLink href="/sep2/edev/2/der" all="0"/>
<lFDI>5509d69f8b353595206ad71b47e27906318ea367</lFDI>
<LogEventListLink href="/sep2/edev/2/log" all="0"/>
<sFDI>228273300409</sFDI>
<changedTime>1514836800</changedTime>
<enabled>1</enabled>
<FunctionSetAssignmentsListLink href="/sep2/edev/2/fsa" all="2"/>
<RegistrationLink href="/sep2/edev/2/rg"/>
</EndDevice>
</EndDeviceList>
Figure 11 - Example EndDeviceList for Aggregator
If the querying device is not authorized, the server should return an HTTP error code of (404 – Not Found) or (403 – Forbidden).
6.1.8 DER Control Management
The utility server sends controls to groups by creating a new DERControl and adding it to the DERControlList of the group’s DERProgram. CSIP uses three types of controls: immediate controls, default-only controls, and curve controls.
6.1.8.1 Immediate Controls
An immediate control is an IEEE 2030.5 DER event used to change the value of a control at a scheduled time for a scheduled duration. Table 9 shows the list of CSIP immediate controls. Immediate controls may have an optional default value that is applied when there are no events active. Figure 12 shows an example DERControlList containing a DERControl with the opModMaxLimW immediate control along with the opModVoltVar Curve control.
<DERControlList href="/sep2/A1/derp/1/derc" subscribable="1" all="1" results="1" xmlns="urn:ieee:std:2030.5:ns">
<DERControl href="/sep2/A1/derp/1/derc/1" replyTo="/rsps/1/rsp" responseRequired="03">
<mRID>D0000001</mRID>
<description>Scheduled DERC</description>
<creationTime>1514838000</creationTime>
<EventStatus>
<currentStatus>0</currentStatus>
<dateTime>1514838000</dateTime>
<potentiallySuperseded>false</potentiallySuperseded>
</EventStatus>
<interval>
<duration>3600</duration>
<start>1514926800</start>
</interval>
<DERControlBase>
<opModMaxLimW>9500</opModMaxLimW>
<opModVoltVar href="/sep2/dc/1"/>
</DERControlBase>
</DERControl>
</DERControlList>
Figure 12 - Example Immediate and Curve DER Control
6.1.8.2 Default-Only Controls
A default-only control is a control that cannot be scheduled – it only exists in the DefaultDERControl of the DERProgram. This type of control is intended for settings that have an indefinite duration and are not expected to change often. Table 9 shows the list of CSIP default-only controls. Figure 13 shows an example DefaultDERControl with the setGradW and setSoftGradW default-only controls.
<DefaultDERControl href="/sep2/A1/derp/1/dderc" xmlns="urn:ieee:std:2030.5:ns">
<mRID>E0000001</mRID>
<description>Default DERC</description>
<DERControlBase>
<opModMaxLimW>10000</opModMaxLimW>
<opModVoltVar href="/sep2/dc/1"/>
<setGradW>0</setGradW>
<setSoftGradW>0</setSoftGradW>
</DERControlBase>
</DefaultDERControl>
Figure 13 - Example of DefaultDERControl
6.1.8.3 Curve Controls
A curve control uses a series of (x, y) points to define the behavior of a dependent variable (y) based on the value of the independent variable (x). Table 9 shows the list of CSIP curve controls. A Curve control is an IEEE 2030.5 DER event which can be scheduled and can have an optional default curve that is applied when there are no events active. Figure 14 shows an example of DERCurveList containing two Volt-VAr curves. Figure 12 shows an example of DERControl scheduling Volt-VAr Curve 1.
<DERCurveList href="/sep2/A1/derp/1/dc" all="2" results="2" xmlns="urn:ieee:std:2030.5:ns">
<DERCurve href="/sep2/dc/2">
<mRID>C0000002</mRID>
<description>Volt-VAr Curve 2</description>
<creationTime>1514836801</creationTime>
<CurveData> <xvalue>90</xvalue> <yvalue>60</yvalue> </CurveData>
<CurveData> <xvalue>93</xvalue> <yvalue>0</yvalue> </CurveData>
<CurveData> <xvalue>107</xvalue> <yvalue>0</yvalue> </CurveData>
<CurveData> <xvalue>110</xvalue> <yvalue>-60</yvalue> </CurveData>
<curveType>0</curveType>
<xMultiplier>0</xMultiplier> <yMultiplier>0</yMultiplier>
<yRefType>3</yRefType>
</DERCurve>
<DERCurve href="/sep2/dc/1">
<mRID>C0000001</mRID>
<description>Volt-VAr Curve 1</description>
<creationTime>1514836800</creationTime>
<CurveData> <xvalue>91</xvalue> <yvalue>61</yvalue> </CurveData>
<CurveData> <xvalue>94</xvalue> <yvalue>1</yvalue> </CurveData>
<CurveData> <xvalue>108</xvalue> <yvalue>1</yvalue> </CurveData>
<CurveData> <xvalue>111</xvalue> <yvalue>-61</yvalue> </CurveData>
<curveType>0</curveType>
<xMultiplier>0</xMultiplier> <yMultiplier>0</yMultiplier>
<yRefType>3</yRefType>
</DERCurve>
</DERCurveList>
Figure 14 - Example DER Curve List
6.2 Aggregator Operations
This informative section describes the typical operations of an Aggregator. Keep in mind that CSIP only addresses the utility to Aggregator communications. Communications between the Aggregator and its DERs is outside the scope of this document.
6.2.1 Host and Service Discovery
For this section, discovery is the process whereby the Aggregator obtains enough information to get the utility server’s DeviceCapability resource. There are many methods for the Aggregator to get this information, and the exact method to use is determined by the utility. Two methods are presented, but other methods could be used by mutual consent of the utility and Aggregator.
6.2.1.1 Out-Of-Band Discovery
In this model, the Aggregator is provisioned with all the information below by some out-of-band method (e.g. configuration file, webpage, user interface, etc.):
• The IP Address or DNS name of the utility server. If a DNS name is provided, the Aggregator performs a name resolution using unicast DNS.
• The HTTPS port to use. HTTP is not permitted for utility to Aggregator communications.
• The path to the DeviceCapability resource. This URL is the starting point for the Aggregator to
discover the utility server’s resources.
6.2.1.2 Unicast-DNS and DNS-SD
In this mode, the Aggregator is provisioned with the DNS name of the utility server. The Aggregator performs name resolution using unicast DNS to obtain the server’s IP address. The Aggregator uses DNS- based service discovery (DNS-SD) to obtain the port, scheme (HTTP or HTTPS), and the path to the DeviceCapability resource. Refer to the IEEE 2030.5 specification for more details pertaining to DNS-SD.
6.2.2 Security, Authentication, and Authorization
Once the Aggregator has determined the location (URL) of the utility server’s DeviceCapability resource, the Aggregator performs an HTTP GET of this resource. This action initiates a TLS handshake to establish a secure connection. Certificates are exchanged between the utility server and the Aggregator during
the handshake. The utility server authenticates the Aggregator’s certificate and verifies whether it is
authorized.
Once the utility server authenticates and authorizes the Aggregator, it returns the contents of the DCAP resource with an HTTP response code of 200 – OK. If the Aggregator fails to authenticate or is not authorized, the utility server can abort the TLS connection by sending a TLS Alert message, or it can complete the TLS connection but return an HTTP response code of 403 – Forbidden.
6.2.3 Getting Server Resources
Once a secure connection has been established, the Aggregator can get resources from the utility server.
6.2.3.1 DeviceCapability
The DeviceCapability resource is the starting point for discovering resources on the server. It provides links to the entry point of function sets supported by the server. An example DeviceCapability resource is shown in Figure 15.
<DeviceCapability href="/sep2/dcap" xmlns="urn:ieee:std:2030.5:ns">
<ResponseSetListLink href="/sep2/rsps" all="0"/>
<TimeLink href="/sep2/tm"/>
<UsagePointListLink href="/sep2/upt" all="0"/>
<EndDeviceListLink href="/sep2/edev" all="3"/>
<MirrorUsagePointListLink href="/sep2/mup" all="0"/>
</DeviceCapability>
Figure 15 - Example Aggregator DeviceCapability
6.2.3.2 EndDeviceList
Once the Aggregator obtains DeviceCapability, it then gets the EndDeviceListLink to get its EndDevice instance along with the EndDevice instances of all the DERs under its control. An example of this EndDeviceList was shown in Figure 11. An example of the Aggregator instance was shown in Figure 9, and an example of a DER instance was shown in Figure 8.
6.2.3.3 Subscriptions
The Aggregator instance contains the SubscriptionListLink. The Aggregator posts to this link to create subscriptions to resources for which it wants to receive notifications. The Aggregator subscribes to the following resources:
• EndDeviceList – to detect additions/deletions and enabling/disabling of DERs
• DERProgramList – to detect changes to the group assignments of each DER and to detect changes in the priority of each DERProgram
• DERControlList – to detect the creation of a DERControl and changes to its status
• DefaultDERControl – to detect changes in the default controls of each DERProgram
The Aggregator may subscribe to other resources if allowed by the server. Figure 16 shows and example subscription to the EndDeviceList resource requesting a list limit of up to 1 entries.
<Subscription xmlns="urn:ieee:std:2030.5:ns">
<subscribedResource>/sep2/edev</subscribedResource>
<encoding>0</encoding>
<level>+S1</level>
<limit>1</limit>
<notificationURI>https://12.34.56.78:443/ntfy</notificationURI>
</Subscription>
Figure 16 - Example EndDeviceList Subscription
The Aggregator acts on behalf of all the DERs it manages. It is highly likely these DERs belong to many of the same groups, and there are significant overlaps in the resources the Aggregator is monitoring on behalf of the DERs. The Aggregator needs to keep track of these overlaps so that it only subscribes to a shared resource once.
6.2.3.4 Notifications
When a subscribed resource changes, the utility server posts a Notification to the Aggregator. For list resources, the Notification payload may contain entries from the list, depending on the limit setting of the requested by the Aggregator and the policy of the server. The Aggregator may need to perform additional list queries to get all changes to the list. Refer to the IEEE 2030.5 specification for details about subscription/notification behavior. An example of a Notification to an EndDeviceList subscription is shown in Figure 17.
<Notification xmlns="urn:ieee:std:2030.5:ns">
<subscribedResource>/sep2/edev</subscribedResource>
<status>0</status>
<subscriptionURI>https://98.76.54.32/sep2/edev/1000/sub/1</subscriptionURI>
<EndDeviceList href="/sep2/edev" subscribable="1" all="4" results="1">
<EndDevice href="/sep2/edev/3">
<DERListLink href="/sep2/edev/3/der" all="0"/>
<lFDI>bdd7bb2babe673a3fc603d433125291971a88ac0</lFDI>
<LogEventListLink href="/sep2/edev/3/log" all="0"/>
<sFDI>509605116746</sFDI>
<changedTime>1514837100</changedTime>
<enabled>1</enabled>
<FunctionSetAssignmentsListLink href="/sep2/edev/3/fsa" all="2"/>
<RegistrationLink href="/sep2/edev/3/rg"/>
</EndDevice>
</EndDeviceList>
</Notification>
Figure 17 - Example EndDeviceList Notification
6.2.4 Acting on DER Controls
Once the Aggregator has retrieved and/or subscribed to the necessary DER resources, it waits for Notifications of new DERControl events. The new DERControl may be sent with the Notification. Otherwise, the Aggregator uses the Notification to trigger a GET of the DERControlList containing the new DERControl. At the start time of the event, the Aggregator activates the control for all the targeted DERs, and at the end of the event, the Aggregator de-activates the control returning the control to its default value, if a default was specified. How the Aggregator activates/de-activates the control for all the targeted DERs is outside the scope of CSIP.
If Responses are enabled for the DERControl, the Aggregator must post the appropriate Responses on behalf of each targeted DER.
6.2.5 Reporting DER Data
6.2.5.1 Reporting Monitor Data
For every DER under its control, the Aggregator reports monitor data described in 5.2.5.1. For each DER, the Aggregator creates a MirrorUsagePoint (MUP) instance for the DER by posting to the utility server’s MirrorUsagePointListLink specified in the DeviceCapability resource. The location of this newly created instance is returned in the server response (e.g. /mup/1). An example of the contents of a MUP post for Inverter A is shown in Figure 18. This MUP post contains the definition of a MirrorMeterReading for reporting a Real Power set. Every 24 hours, the Aggregator posts a new Real Power reading set for each DER. An example of this reading set post is shown in Figure 19. The Aggregator makes similar posts for all type of metrology specified in Table 2.
<MirrorUsagePoint xmlns="urn:ieee:std:2030.5:ns">
<mRID>5509D69F8B3535950000000000009182</mRID>
<description>DER [Inverter A]</description>
<roleFlags>49</roleFlags>
<serviceCategoryKind>0</serviceCategoryKind >
<status>1</status>
<deviceLFDI>12a4a4b406ad102e7421019135ffa2805235a21c</deviceLFDI>
<MirrorMeterReading>
<mRID>5509D69F8B3535950001000000009182</mRID>
<description>Real Power(W) Set</description>
<ReadingType>
<accumulationBehaviour>4</accumulationBehaviour>
<dataQualifier>2</dataQualifier>
<intervalLength>300</intervalLength>
<powerOfTenMultiplier>0</powerOfTenMultiplier>
<uom>38</uom>
</ReadingType>
</MirrorMeterReading>
</MirrorUsagePoint>
Figure 18 - Example MirrorUsagePoint POST
<MirrorMeterReading xmlns="urn:ieee:std:2030.5:ns">
<mRID>5509D69F8B3535950001000000009182</mRID>
<description>Real Power(W) Set</description>
<MirrorReadingSet>
<mRID>5509D69F8B3535950001100000009182</mRID>
<timePeriod>
<duration>86400</duration>
<start>1514880000</start>
</timePeriod>
<Reading> <value>1</value> </Reading>
<Reading> <value>2</value> </Reading>
<Reading> <value>3</value> </Reading>
:
<Reading> <value>288</value> </Reading>
</MirrorReadingSet>
</MirrorMeterReading>
Figure 19 - Example MirrorMeterReading POST
6.2.5.2 Reporting Status Information
For every DER under its control, the Aggregator reports status data described in 5.2.5.2. Figure 20 shows an example DERCapability post, Figure 21Figure 21 shows an example DERSettings post, and Figure 22 shows an example of a DERStatus post. For DERCapability and DERSettings, the Aggregator posts these resources at device start-up and on any changes. For DERStatus, the Aggregator posts at the rate specified in DERList:pollRate.
<DERCapability xmlns="urn:ieee:std:2030.5:ns">
<modesSupported>3FFFFF</modesSupported>
<rtgA> <multiplier>0</multiplier> <value>20</value> </rtgA>
<rtgW> <multiplier>0</multiplier> <value>5000</value> </rtgW>
<type>4</type>
</DERCapability>
Figure 20 - Example DERCapability POST
<DERSettings xmlns="urn:ieee:std:2030.5:ns">
<setGradW>0</setGradW>
<setMaxA> <multiplier>0</multiplier> <value>20</value> </setMaxA>
<setMaxW> <multiplier>0</multiplier> <value>5000</value> </setMaxW>
<updatedTime>1483257600</updatedTime>
</DERSettings>
Figure 21 - Example DERSettings POST
<DERStatus xmlns="urn:ieee:std:2030.5:ns">
<genConnectStatus>
<dateTime>1456345000</dateTime>
<value>0</value>
</genConnectStatus>
<readingTime>1456345000</readingTime>
</DERStatus>
Figure 22 - Example DERStatus POST
6.2.5.3 Reporting Alarms
For every DER under its control, the Aggregator reports alarm data using the LogEvent function set described in 5.2.5.3 as they occur. Figure 23 shows an example LogEvent post for an over-current fault condition.
<LogEvent xmlns="urn:ieee:std:2030.5:ns">
<createdDateTime>1514934000</createdDateTime>
<details>Over-Current-Alarm</details>
<functionSet>11</functionSet>
<logEventCode>0</logEventCode>
<logEventID>1</logEventID>
<logEventPEN>40732</logEventPEN>
<profileID>2</profileID>
</LogEvent>
Figure 23 – Example LogEvent POST
This informative section describes the typical operations of a DER Client when communicating directly with the utility server.
6.3.1 Host and Service Discovery
For this section, discovery is the process whereby the DER Client obtains enough information to get the
utility server’s DeviceCapability resource. There are many methods for the DER Client to get this
information, and the exact method to use is determined by the utility. Two methods are presented, but other methods could be used by mutual consent of the utility and DER.
6.3.1.1 Out-Of-Band Discovery
In this model, the DER Client is provisioned with all the information below by some out-of-band method (e.g. configuration file, webpage, user interface, …):
• The IP Address or DNS name of the utility server. If a DNS name is provided, the DER performs a name resolution using unicast DNS.
• The HTTPS port to use. HTTP is not permitted for utility to DER communications.
• The path to the DeviceCapability resource. This URL is the starting point for the DER to discover
the utility server’s resources.
6.3.1.2 Unicast-DNS and DNS-SD
In this mode, the DER Client is provisioned with the DNS name of the utility server. The DER Client performs name resolution using unicast DNS to obtain the server’s IP address. The DER Client uses DNS- based service discovery (DNS-SD) to obtain the port, scheme (HTTP or HTTPS), and the path to the DeviceCapability resource. Refer to the IEEE 2030.5 specification for more details pertaining to DNS-SD.
6.3.2 Security, Authentication, and Authorization
Once the DER Client has determined the location (URL) of the utility server’s DeviceCapability resource, the DER Client performs an HTTP GET of this resource. This action initiates a TLS handshake to establish a secure connection. Certificates are exchanged between the utility server and the DER Client during the handshake. The utility server authenticates the DER Client’s certificate and verifies whether it is authorized.
Once the utility server authenticates and authorizes the DER Client, it returns the contents of the DeviceCapability resource with an HTTP response code of 200 – OK. If the DER fails to authenticate or is not authorized, the utility server can abort the TLS connection by sending a TLS Alert message, or it can complete the TLS connection but return an HTTP response code of 403 – Forbidden.
6.3.3 Getting Server Resources
Once a secure connection has been established, the DER Client can get resources from the utility server.
6.3.3.1 DeviceCapability
The DeviceCapability resource is the starting point for discovering resources on the server. It provides links to the entry point of function sets supported by the server. An example DeviceCapability resource is shown in Figure 24. It is similar to the Aggregator version shown in Figure 15 except the length of the EndDeviceList is 1.
<DeviceCapability href="/sep2/dcap" xmlns="urn:ieee:std:2030.5:ns">
<ResponseSetListLink href="/sep2/rsps" all="0"/>
<UsagePointListLink href="/sep2/upt" all="0"/>
<TimeLink href="/sep2/tm"/>
<EndDeviceListLink href="/sep2/edev" all="1"/>
<MirrorUsagePointListLink href="/sep2/mup" all="0"/>
</DeviceCapability>
Figure 24 - Example DER Client DeviceCapability
6.3.3.2 EndDeviceList
Once the DER Client obtains DeviceCapability, it then gets the EndDeviceListLink to get its EndDevice
instance. An example of this EndDeviceList was shown in Figure 10Figure 11.
6.3.3.3 Polling for Resources
Once the DER Client gets its EndDevice instance, it finds its group assignments by following the FunctionSetAssignmentsListLink. From there, the DER finds the DERProgramListLink, the DERProgramList, all its assigned DERPrograms, DERControlLists, DefaultDERControls, DERCurveLists, etc. The DER Client periodically polls these resources at a rate specified by the DERProgramList:pollRate setting.
6.3.4 Acting on DER Controls
Once the DER Client has retrieved the necessary DER resources, it waits for new DERControl events. At the start time of the event, the DER Client activates the control, and at the end of the event, the DER Client de-activates the control returning the control to its default value, if a default was specified.
If Responses are enabled for the DERControl, the DER Client posts the appropriate Responses.
6.3.5 Reporting DER Data
6.3.5.1 Reporting Monitor Data
The DER Client reports monitor data described in 5.2.5.1. The DER Client creates a MirrorUsagePoint (MUP) instance by posting to the utility server’s MirrorUsagePointListLink specified in the DeviceCapability resource. The location of this newly created instance is returned in the server response (e.g. /mup/1). An example of the contents of a MUP post for Inverter A is shown in Figure 19. This MUP post contains the definition of a MirrorMeterReading for reporting a Real Power set. Every 24 hours, the DER posts a new Real Power reading set. An example of this reading set post is shown in Figure 19. The DER makes similar posts for all type of metrology specified in Table 10.
6.3.5.2 Reporting Status Information
The DER Client reports status data described in 5.2.5.2. Figure 20 shows an example DERCapability post, Figure 21 shows an example DERSettings post, and Figure 22 shows an example of a DERStatus post. For DERCapability and DERSettings, the DER posts these resources at device start-up and on any changes.
For DERStatus, the DER posts at the rate specified in DERList:pollRate.
6.3.5.3 Reporting Alarms
The DER reports alarm data using the LogEvent function set described in 5.2.5.3 as they occur. Figure 23 shows an example LogEvent post for an over-voltage fault condition.