> For the complete documentation index, see [llms.txt](https://docs.net2grid.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.net2grid.com/net2grid-energy-ai-cloud-interface-specifications/monthly-grid-intelligence/output/der-detection.md).

# DER Detection

## DER Detection

The **DER Detection Report** identifies Distributed Energy Resources (DER) that may be present in an installation based on energy consumption and production patterns.

The report answers questions such as:

> “Which assets, such as solar panels, electric vehicles, HVAC systems, or batteries, appear to exist in this installation based on its energy behavior?”

The report focuses on detecting the following assets:

* Photovoltaics / Solar Panels
* Battery Energy Storage Systems (BESS)
* Electric Vehicles
* HVAC

These insights are intended to support advanced analytics, improve profile accuracy, and enable downstream services.

***

### Key Characteristics

* **DER asset detection**\
  The report detects the presence of specific distributed energy resources in an installation.
* **Data-driven execution**\
  Detection is based on measurement data and ideally on location information as well.
* **Rolling analysis period**\
  The report uses up to one year of available measurement data.
* **Service-specific insights**\
  When an asset is detected, additional details may be provided depending on the asset type.
* **NET2GRID EnergyAI® estimation**\
  Detection is based on energy pattern recognition and disaggregation algorithms.

***

### Supported DER Assets

| Asset                         | Report Key        | Description                                                          |
| ----------------------------- | ----------------- | -------------------------------------------------------------------- |
| Solar Panels / PV             | `solarPanel`      | Detection of photovoltaic production and production characteristics. |
| Battery Energy Storage System | `BESS`            | Detection of battery storage presence.                               |
| Electric Vehicle              | `electricVehicle` | Detection of EV charging behavior and charging events.               |
| HVAC                          | `HVAC`            | Detection of heating, cooling, or heating-and-cooling behavior.      |

***

### Report Generation Logic

DER Detection Reports are generated on a data-driven basis.

* A DER Detection execution is triggered only when new measurement data is uploaded.
* At least **one month** must have elapsed since the installation’s last successful DER Detection execution.
* If new measurement data is uploaded before one full month has passed since the last successful execution, no new execution is performed.
* Once one full month has elapsed, the next upload of measurement data triggers a new DER Detection execution.
* No execution is performed if no new measurement data is available, even if the one-month period has elapsed.

***

### Reporting Period

The reporting period depends on the amount of available measurement data:

* If a full year of measurement data is available, the report covers the complete year.
* If less than one year of measurement data is available, the report covers the entire available measurement period.

***

### Requirements

The DER Detection Report is generated only when the following requirements are met:

* Measurement data is available for the period for which the report will be generated.
* Measurement data is available for the installation for **more than 3 months**.
* Ideally, one full year of measurement data is available.

#### Measurement Requirements

The required metrics for DER Detection execution are:

* `CSD` consumption measurements
* `CSR` return-to-grid measurements, when applicable

Supported measurement granularities:

* 15 or 60 minutes

Energy injection (`CSR`) can be omitted if no energy is produced in the household.

***

### Installation Profile Impact

There is no strict installation profile requirement for the generation of the DER Detection Report.

The report is primarily **data-driven** and can be generated based solely on measurement data.

However, providing basic **location-related profile information** can significantly improve detection accuracy.

The following attributes are recommended:

* Country
* Timezone
* Postal Code

These attributes help increase overall detection accuracy for assets such as HVAC systems.

If this information is not available, the report will still be generated, but detection accuracy may be reduced.

***

## Technical Specifications

### Storage Location

The DER Detection reports are generated under the S3 export bucket using the following format:

`s3://{exportBucket}/{labelpartner}/reports/{installationIdentifier}/{serviceType}/ci-smart-insights/{filename}`

#### Path Parameters

* **exportBucket**: the name of the AWS S3 bucket that contains the reports
* **labelpartner**: the identifier of the label partner
* **installationIdentifier**: the external installation identifier provided during end-user provisioning
* **serviceType**: `SM`

#### Filename Format

`{internalInstallationIdentifier}_{reportStartDate}_{reportEndDate}_ci_smart_insights.json`

Where:

* **internalInstallationIdentifier**: the internal installation identifier used in NET2GRID EnergyAI®
* **reportStartDate**: the start date of the reporting period in `YYYYMMDD` format
* **reportEndDate**: the end date of the reporting period in `YYYYMMDD` format

***

### Report Format

The report is provided in **JSON format**.

#### Main Fields

| Field            | Type   | Description                                                                                   |
| ---------------- | ------ | --------------------------------------------------------------------------------------------- |
| startDate        | string | Start date of the period over which the detection process was executed, in `YYYYMMDD` format. |
| stopDate         | string | Stop date of the period over which the detection process was executed, in `YYYYMMDD` format.  |
| timestamp        | long   | UNIX timestamp in milliseconds indicating when the report was produced and published.         |
| version          | string | Service version, e.g. `2.3`.                                                                  |
| servicesInsights | map    | Map containing the DER detection results per service.                                         |

***

#### servicesInsights Object

The `servicesInsights` object contains one entry per DER service under examination.

Allowed keys:

* `solarPanel`
* `BESS`
* `electricVehicle`
* `HVAC`

Each key maps to a `CIServiceObject`.

***

#### CIServiceObject

The `CIServiceObject` contains the detection result and, when available, additional service-specific insights.

| Field          | Type    | Description                                                                  |
| -------------- | ------- | ---------------------------------------------------------------------------- |
| detection      | boolean | Detection status. Valid for `solarPanel`, `BESS`, and `HVAC`.                |
| detectionScore | double  | EV confidence score in the range `[0, 1]`. Valid only for `electricVehicle`. |
| insights       | object  | Service-specific insights. The object type depends on the detected service.  |

The `insights` object can be one of the following:

* `SolarPanelDetectionObject`
* `ElectricVehicleDetectionObject`
* `HVACDetectionObject`

Currently, no detailed `insights` object is provided for `BESS` detection.

***

#### SolarPanelDetectionObject

The `SolarPanelDetectionObject` contains solar production characteristics detected for the installation.

| Field                      | Type                               | Description                                                                                                                                                                                                             |
| -------------------------- | ---------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| capacity                   | integer                            | Estimated capacity of the detected solar panel system.                                                                                                                                                                  |
| solarProductionGranularity | integer                            | Solar production granularity in minutes.                                                                                                                                                                                |
| solarProductionPerDay      | map\<string, array>                | Solar production per day. The key is the date in `YYYYMMDD` format and the value is an array of doubles with solar production for each interval of the day. The interval is defined by `solarProductionGranularity`.    |
| maxProductionOfMonth       | map\<string, map\<string, double>> | Maximum solar production per month. The key is the month in `YYYY-MM` format and the value is a map where the key is the date of maximum production in `YYYYMMDD` format and the value is the maximum solar production. |

***

#### ElectricVehicleDetectionObject

The `ElectricVehicleDetectionObject` contains EV charging characteristics detected for the installation.

| Field          | Type                | Description                                                                                                                            |
| -------------- | ------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| chargingType   | string              | Charging type of the most common detected EV model found in the examined period.                                                       |
| eventsPerMonth | map\<string, array> | Charging events grouped by month. The key is the month in `YYYY-MM` format and the value is an array of `ChargingEventObject` objects. |

**Supported Charging Types**

| Value            | Description                  |
| ---------------- | ---------------------------- |
| `L1`             | Level 1 charging             |
| `L2`             | Level 2 charging             |
| `L2-multi-phase` | Level 2 multi-phase charging |

***

**ChargingEventObject**

Each `ChargingEventObject` represents one detected EV charging event.

| Field     | Type   | Description                                                          |
| --------- | ------ | -------------------------------------------------------------------- |
| usage     | double | Energy consumption of the charging event in kWh.                     |
| startTime | long   | Start timestamp of the charging event, as UNIX timestamp in seconds. |
| stopTime  | long   | Stop timestamp of the charging event, as UNIX timestamp in seconds.  |

***

#### HVACDetectionObject

The `HVACDetectionObject` contains the detected HVAC type.

| Field | Type   | Description                                            |
| ----- | ------ | ------------------------------------------------------ |
| type  | string | Type of HVAC behavior detected in the examined period. |

**Supported HVAC Types**

| Value               | Description                                 |
| ------------------- | ------------------------------------------- |
| `cooling`           | Cooling behavior detected.                  |
| `heating`           | Heating behavior detected.                  |
| `heatingAndCooling` | Both heating and cooling behavior detected. |

***

### Example Report File

A DER Detection report may be generated in a location such as:

`s3://s3-export-ABC/labelpartnerB/reports/abc123456/SM/ci-smart-insights/abc123456_20220401_20230331_ci_smart_insights.json`

Example data:

```json
{
    "startDate": "20220401",
    "stopDate": "20230331",
    "timestamp": 1682478369683,
    "version": "1.3",
    "servicesInsights":
    {
        "solarPanel":
        {
            "detection": true,
            "insights":
            {
                "capacity": 2972,
                "solarProductionGranularity": 60,
                "maxProductionOfMonth":
                {
                    "2022-04": {"20220426": 0.345},
                    "2022-05": {"20220523": 0.297},
                    "2022-06": {"20220622": 0.303},
                    "2022-07": {"20220710": 0.214},
                    "2022-08": {"20220823": 0.446},
                    "2022-09": {"20220911": 0.342},
                    "2022-10": {"20221026": 10.628},
                    "2022-11": {"20221102": 10.249},
                    "2022-12": {"20221213": 4.81},
                    "2023-01": {"20230118": 5.48},
                    "2023-02": {"20230227": 15.397},
                    "2023-03": {"20230301": 15.345}
                },
                "solarProductionPerDay":
                {
                    "20230301": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.079, 0.124, 0.271, 0.304, 0.354, 0.331, 0.276, 0.169, 0.181, 0.093, 0.043, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
                    "20230302": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.079, 0.124, 0.271, 0.304, 0.354, 0.331, 0.276, 0.169, 0.181, 0.093, 0.043, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
                }
            }
        },
        "BESS":
        {
            "detection": false
        },
        "electricVehicle":
        {
            "detectionScore": 0.674,
            "insights":
            {
                "chargingType": "L1",
                "eventsPerMonth":
                {
                    "2023-02":
                    [
                        {
                            "usage": 5.64,
                            "startTime": 1676004421,
                            "stopTime": 1676013618
                        },
                        {
                            "usage": 5.001,
                            "startTime": 1676445618,
                            "stopTime": 1676460018
                        }
                    ],
                    "2023-03":
                    [
                        {
                            "usage": 5.64,
                            "startTime": 1678879218,
                            "stopTime": 1678889118
                        }
                    ]
                }
            }
        },
        "HVAC":
        {
            "detection": true,
            "insights":
            {
                "type": "cooling"
            }
        }
    }
}
```

***

### Notification Mechanism

A message is published when a DER Detection report is generated.

Queue: `ci_smart_insights_energy_reports_{labelpartner}`

#### Message Format

```json
{
  "bucket": "s3-export-customerA",
  "filename": "labelpartnerB/reports/abc123456/SM/ci-smart-insights/abc123456_20220401_20230331_ci_smart_insights.json"
}
```

Routing key:

`{installationIdentifier}.ci_smart_insights_energy_reports`


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.net2grid.com/net2grid-energy-ai-cloud-interface-specifications/monthly-grid-intelligence/output/der-detection.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
