SolarEdge Cloud Integrations - SolarNetwork/solarnetwork GitHub Wiki
This page descirbes the Cloud Integrations support for SolarEdge.
💡 Note this documentation is for the SolarEdge v2 API. The SolarEdge v1 page documents the legacy integration.
The SolarEdge integration service identifier is s10k.c2c.i9n.solaredge.v2. The following service
properties are supported:
| Property | Description |
|---|---|
apiKey |
The SolarEdge API key |
baseUrl |
An optional alternate URL to use to access the cloud service |
The SolarEdge integration supports the following Cloud Datum Stream Service implementations:
| Service | Identifier | Description |
|---|---|---|
| SolarEdge | s10k.c2c.ds.solaredge.v2 |
Polling datum stream using the SolarEdge API. |
The SolarEdge datum stream service identifier is s10k.c2c.ds.solaredge.v2. The following service
properties are supported:
| Property | Description |
|---|---|
resolution |
The resolution of the data to request. One of QUARTER_OF_AN_HOUR (default) or HOURLY
|
placeholders |
An optional Map of placeholder names with asscoiated values, to make available to Datum Stream Mapping Property value references |
upperCaseSourceId |
If true and sourceIdMap not configured, then use upper case device type values in the generated source IDs. For example instead of /inv for inverters, /INV would be used. |
indexBasedSourceId |
If true and sourceIdMap not configured, then use site inventory-based component numbers, starting from 1, in the generated source IDs. For example instead of something like /XYZ-123456 for the first inverter, /1 would be used. |
sourceIdMap |
A map or comma-delimited mapping list of component IDs to associated source ID values. See source ID mapping for more information. |
multiStreamMaximumLag |
A maximum amount of time to accommodate partially reported data across multiple datum streams before giving up. When resolving multiple datum streams within a request and any stream lags behind other streams, the polling reference time will not advance beyond the lagging stream's latest timestamp for at most this duration. Can be specified as an ISO duration like PT2H for "2 hours" or an integer number of seconds. Defaults to PT3H (3 hours). Configure as PT0S or 0 to disable. |
operationalDateRanges |
A map or comma-delimited mapping list of component IDs to associated date ranges representing the time span the component was operational. When equipment is replaced or added to a system, configuring this setting can improve the performance of the integration. See Operational date ranges for more information. |
timeGapValidationThreshold |
An optional time duration threshold to use by the time-gap validation. Can be specified as an ISO 8601 duration string or an whole number of seconds. Defaults to PT72H (72 hours). |
validationIgnore |
A list, or comma-delimited string, of validation types to disable. By default all validation types are enabled. |
virtualSourceIds |
A list or comma-delimited list of virtual source IDs. See Virtual datum streams for more information. |
The following placeholders are supported on the placeholders service property:
| Placeholder | Description |
|---|---|
siteId |
A single SolarEdge site ID value to associate with the datum stream |
deviceType |
A single SolarEdge device type value to associate with the datum stream, one of bat, inv, or met
|
componentId |
A single SolarEdge component ID value to associate with the datum stream |
The following Data Filters are supported:
| Filter Key | Description |
|---|---|
siteId |
A SolarEdge site ID value |
deviceType |
A SolarEdge device type, one of bat, inv, or met for battery, inverter, or meter |
componentId |
A SolarEdge component ID value |
The SolarEdge integration uses the following data value cloud-speicifc metadata keys (refer to the SolarEdge API documentation for more information on possible values):
| Key | Description |
|---|---|
activationStatus |
SolarEdge activation status. |
communicationType |
The communication type of the device. |
connectedOptimizers |
For inv devices, the number of power optimizers connected to the inverter. |
connectedTo |
For meters and batteries, the name of the SolarEdge device the meter is connected to. |
connectedToSerial |
For meters and batteries, the serial number of the inverter / gateway the device is connected to. |
form |
For met devices, whether the meter is a physical device or a virtual (calculated) meter. |
meterType |
For met devices, the type of measurement the meter performs. |
notes |
SolarEdge notes. |
The SolarEdge cloud data value model is represented in 4 levels:
- Site ID
- Device Type -- one of
inv,met,batfor inverter, meter, battery - Component ID
- Measurement (property)
Value references are formed as:
/{siteId}/{deviceType}/{componentId}/{measurementName}
For example:
/610000/inv/7E130000-01/Pdel
The SolarEdge API returns data for all devices within a site, and as such the Datum Stream Service
can generate SolarNetwork datum streams for multiple devices at once, if desired. To do so, the
valueReference for a Datum Stream Mapping
Property can use a *
wildcard for the 3nd-level identifier. This can be combined with the {siteId} placeholder.
SolarNetework will then take the sourceId defined on the Datum
Stream and append /TYPE/X to each device in the
site, where TYPE is a device type identifier like inv or met and X is the component identifier.
If the upperCaseSourceId service property is set to true, then the device type identifiers will
be changed to upper case, like INV or MET in the generated source IDs.
If the indexBasedSourceId service property is set to true, then the position of the component
within its device type in the site inventory will be used in the generated source IDs instead of
the component identifier. The positions start at 1, like /inv/1, /inv/2, and so on.
Imagine the Data Values
method returned an inverter 11111111 and meter Production for site 12345 like this:
{
"success": true,
"data": [
{
"name": "Inverters",
"identifiers": [
"12345",
"inv"
],
"children": [
{
"name": "Inverter 1",
"identifiers": [
"12345",
"inv",
"11111111"
],
"metadata": {
"serial": "11111111",
"manufacturer": "SolarEdge",
"model": "SE7600A-USS20NHY2",
"firmwareVersion": "DSP1: 1.210.1623, DSP2: 1.210.1623, CPU: 3.2724.0"
}
}
]
},
{
"name": "Meters",
"identifiers": [
"12345",
"met"
],
"children": [
{
"name": "Production Meter",
"identifiers": [
"12345",
"met",
"Production"
],
"metadata": {
"serial": "22222222",
"manufacturer": "SolarEdge",
"model": "SE-RGMTR-1D-240C-A",
"connectedTo": "Inverter 1",
"connectedToSerial": "11111111",
"firmwareVersion": "62"
}
}
]
}
]
}Assuming your Datum Stream was configured
with a sourceId of S01, you could configure mapping properties like this:
| Value Reference | SolarNetwork Property | Property Type |
|---|---|---|
/{siteId}/inv/*/Pdel |
watts |
i |
/{siteId}/inv/*/Edel |
wh |
i |
/{siteId}/met/*/Pdel |
watts |
i |
/{siteId}/met/*/Edel |
wh |
i |
Then SolarNetwork would generate 2 datum streams, both with watts and wattHours properties,
according to this table:
upperCaseSourceId |
indexBasedSourceId |
Inverter Source ID | Meter Source ID |
|---|---|---|---|
false |
false |
S01/inv/11111111 |
S01/met/Production |
true |
false |
S01/INV/11111111 |
S01/MET/Production |
false |
true |
S01/inv/1 |
S01/met/1 |
true |
true |
S01/INV/1 |
S01/MET/1 |
You can also define an explicit mapping of components to source IDs with a sourceIdMap service
property on a Datum Stream. This can be
specified as a map or comma-delimited mapping list of component IDs to associated source ID values.
For example in JSON, the sourceIdMap service property could be specified as an object like:
{"/12345/inv/11111111":"S1/INV/01", "/12345/met/Production":"S1/MET/01"}or a string like:
"/12345/inv/11111111=S1/INV/01, /12345/met/Production=S1/MET/01"A complete example of the Datum Stream could look like this:
{
"enabled": true,
"name": "SolarEdge Example",
"serviceIdentifier": "s10k.c2c.ds.solaredge.v1",
"integrationId": 1,
"schedule": "900",
"kind": "n",
"objectId": "123",
"sourceId": "unused",
"serviceProperties": {
"resolution": "QUARTER_OF_AN_HOUR",
"siteId": 12345,
"sourceIdMap": {
"/12345/inv/11111111": "S1/INV/01",
"/12345/met/Production": "S1/MET/01",
}
}
}Here the generated datum streams would be S1/INV/01 and S1/MET/01 because of the sourceIdMap
setting. The unused sourceId setting would not be used.
☝️ When
sourceIdMapis configured, only the devices explicitly included will be generated into datum streams, and all other devices will be ignored.
This service supports the Cloud Datum Stream import service.
The following validation types are supported, and can also be disabled by including on the validationIgnore service property:
| Validation type | Description |
|---|---|
time-gap |
Identify gaps of time in a datum stream. |