Appliance Events
These reports correspond to a data feed that describes an appliance-level breakdown of electricity consumption for each customer for each calendar day. Thus, the customer can have an overview of the electricity consumption attributed to each appliance installed in the household, understanding its consumption behavior impact and how appliances operation affects the electricity bill.
The report includes two appliance events: (a) non-time based and (b) time-based events.
Non-time Based (NTB) events correspond to appliances operating throughout the day or having multiple switch-on events during the day, so identifying and reporting each one would not be convenient for reporting. Thus, the energy consumption is aggregated daily, in kWh, and the start and stop timestamps of the events are set to the beginning and the end of the day under examination.
On the other hand,Time Based (TB) events are mapped to appliances whose operation can be pinpointed at specific periods of the day using analytical methods, such as Washing Machine or Dishwasher appliance events. These events have specific start and stop timestamps and the energy usage corresponding to each specific event in kWh.
It is important to mention that not all of the existing electrical appliances are supported since (a) there are low-consumption appliances, with minimal participation in the daily consumption, that are nearly impossible to detect in that sampling granularity and (b) there are a lot of specific appliances with low penetration to the market. Thus, NET2GRID NILM Service focuses on the energy-intensive appliances found in most installations and participates heavily in the overall energy consumption. The appliances that are currently supported are the following:
A/A | Appliance Event Type | Appliance Event Report Key | Type of Events | Disaggregation Category (Activity) | Corresponding Appliances (Profile) |
---|---|---|---|---|---|
1 | Always On | AlwaysOn | NTB | Always On | - |
2 | Refrigeration | Refrigeration | NTB | Refrigeration | A.01 Fridge, A.02 Freezer, A.03 Combi fridge/freezer |
3 | Lighting | Lighting | NTB | Lighting | - |
4 | Entertainment | Entertainment | NTB | Entertainment | A.14 TV, A.15 DVD or Blu-ray, A.16 Digital TV Box, A.17 Game Console, A.18 Computer, A.19 Tablet |
5 | Washing Machine | WashingMachine | TB | Laundry | A.11 Washing Machine |
6 | Dishwasher | DishWasher | TB | Laundry | A.10 Dishwasher |
7 | Tumble Dryer | Dryer | TB | Laundry | A.12 Tumble Dryer |
8 | Oven / Grill / Stove | Oven | TB | Cooking | A.04 Oven, A.05 Grill, A.06 Hob |
9 | Heat Pumps | HeatPumps | NTB | SpaceHeating | Not applicable to appliances but rather to space heating types: A.30 Full electric or Hybrid Heat Pump, SH.04 Heat Pump, SH.08 Hybrid Heat Pump |
10 | Air Condition | AirConditioning | TB | SpaceHeating | A.25 Air Conditioning |
11 | Water Boiler | WaterBoiler | NTB | WaterHeating | Not applicable to appliances but rather to water heating types: WH.02 Electric |
12 | Electric Shower | FlowHeater | TB | WaterHeating | A.20 Electric Shower |
13 | Immersion Heater | ImmersionHeater | TB | WaterHeating | A.24 Immersion Heater |
14 | Electric Vehicle | ElectricVehicle | TB | ElectricVehicle | A.21 EV Charger |
15 | Solar Production | SolarProduction | NTB | Production | Not applicable to appliances but rather to the Photovoltaic attributes: SOL.01 Yes, SOL.02 No |
It should be noted that the Always On, Refrigeration, Lighting, and Entertainment (Non-Time Based) appliance events contain the aggregated consumption of all the appliances that participate in each activity daily.
Fetching Appliance Events for a given day
The Get daily appliance events CE API endpoint allows developers to retrieve all the appliance events for a specific day of interest. These appliance event details can then be used within the customer's solution.
A pseudo-code request to the Get daily appliance events endpoint looks like this:
GET /v2/events/daily/{year}/{month}/{day}
Authorization: Bearer <access_token>
A successful request will return a response similar to the following:
{
"status": "ok",
"data": {
"Refrigeration": {
"Refrigeration": {
"usage": 0.749,
"cost": 0.17
}
},
"Always On": {
"AlwaysOn": {
"usage": 0.48,
"cost": 0.1
}
},
"Entertainment": {
"Entertainment": {
"usage": 1.261,
"cost": 0.27
}
},
"Lighting": {
"Lighting": {
"usage": 1.1239999999999999,
"cost": 0.25
}
},
"Production": {
"SolarProduction": {
"usage": 0.8280000000000001,
"cost": 0.18
}
},
"Laundry": {
"WashingMachine": {
"usage": 0.015,
"cost": 0
}
},
"Total": 0.97
},
"timestamp": "2022-08-17T08:22:15+02:00",
"day": "2022-06-02"
}
As you'd probably expect, the response contains the standard JSON structure containing the status
field indicating whether or not the response was successful. If successful, the data
field will contain a list of appliance events for a specific day. Each message consists of the following properties:
Field | Type | Description |
---|---|---|
disaggregation_category | Enumeration | The disaggregation category that participated in the installation's consumption. The acceptable values of the disaggregation categories (activities) are included in the table above. |
appliance_event_report_key | Enumeration | The appliance event report key that participated in the installation's consumption. The acceptable values of the appliance event report keys are included in the table above. |
usage | Float | Indicates the appliance energy consumption for a specific appliance on the day of interest. |
cost | Float | Indicates the appliance energy consumption cost for a specific appliance on the day of interest. |
timestamp | DateTime | The date and time the report was created in a YYYY-MM-DDThh:mm:ssTZD format. |
day | String | The day under examination in a YYYY-MM-DD format. |
Fetching Appliance Events for a given hour
The Get hourly appliance events CE API endpoint allows developers to retrieve all the appliance events for a specific hour of interest. These appliance event details can then be used within the customer's solution.
A pseudo-code request to the Get hourly appliance events endpoint looks like this:
GET /v2/events/daily/{year}/{month}/{day}/{hour}
Authorization: Bearer <access_token>
A successful request will return a response similar to the following:
{
"status": "ok",
"data": {
"Refrigeration": {
"Refrigeration": [
{
"timestamp_start": "2022-06-01T23:00:00+02:00",
"timestamp_stop": "2022-06-02T22:59:59+02:00",
"usage": 0.023,
"cost": 0.005
}
]
},
"Always On": {
"AlwaysOn": [
{
"timestamp_start": "2022-06-01T23:00:00+02:00",
"timestamp_stop": "2022-06-02T22:59:59+02:00",
"usage": 0.158,
"cost": 0.035
}
]
},
"Entertainment": {
"Entertainment": [
{
"timestamp_start": "2022-06-01T23:00:00+02:00",
"timestamp_stop": "2022-06-02T22:59:59+02:00",
"usage": 0.834,
"cost": 0.184
}
]
},
"Lighting": {
"Lighting": [
{
"timestamp_start": "2022-06-01T23:00:00+02:00",
"timestamp_stop": "2022-06-02T22:59:59+02:00",
"usage": 0.169,
"cost": 0.037
}
]
},
"Production": {
"SolarProduction": [
{
"timestamp_start": "2022-06-01T23:00:00+02:00",
"timestamp_stop": "2022-06-02T22:59:59+02:00",
"usage": 0.155,
"cost": 0.034
}
]
},
"Total": 0.295
},
"timestamp": "2022-08-17T09:28:09+02:00"
}
As you'd probably expect, the response contains the standard JSON structure containing the status
field indicating whether or not the response was successful. If successful, the data
field will contain a list of appliance events participating in a specific hour of a specific day. Each message consists of the following properties:
Field | Type | Description |
---|---|---|
disaggregation_category | Enumeration | The disaggregation category that participated in the installation's consumption. The acceptable values of the disaggregation categories (activities) are included in the table above. |
appliance_event_report_key | Enumeration | The appliance event report key that participated in the installation's consumption. The acceptable values of the appliance event report keys are included in the table above. |
timestamp_start | String | The start timestamp for the appliance event contained within the hour of interest under examination in a YYYY-MM-DDThh:mm:ssTZD format. |
timestamp_stop | String | The stop timestamp for the appliance event contained within the hour of interest under examination in a YYYY-MM-DDThh:mm:ssTZD format. |
usage | Float | Indicates the appliance energy consumption for a specific appliance on the appliance event provided. |
cost | Float | Indicates the appliance energy consumption cost for a specific appliance on the appliance event provided. |
timestamp | DateTime | The date and time the report was created in a YYYY-MM-DDThh:mm:ssTZD format. |
Fetching Appliance Events for a given period
The Get period appliance events CE API endpoint allows developers to retrieve all the appliance events for a specific period of interest. These appliance event details can then be used within the customer's solution.
A pseudo-code request to the Get period appliance events endpoint looks like this:
GET /v2/events/summary/{startDate}/{endDate}
Authorization: Bearer <access_token>
It should be mentioned that the start and the end date parameters should be in a yyyy-MM-dd format.
A successful request will return a response similar to the following:
{
"status": "ok",
"data": {
"Refrigeration": {
"Refrigeration": {
"count": 3,
"usage": 0.989,
"cost": 0.22000000000000003,
"first_event": "2022-05-31T23:00:00+02:00",
"last_event": "2022-06-02T23:00:00+02:00"
}
},
"Always On": {
"AlwaysOn": {
"count": 3,
"usage": 0.52,
"cost": 0.11,
"first_event": "2022-05-31T23:00:00+02:00",
"last_event": "2022-06-02T23:00:00+02:00"
}
},
"Entertainment": {
"Entertainment": {
"count": 3,
"usage": 1.865,
"cost": 0.4,
"first_event": "2022-05-31T23:00:00+02:00",
"last_event": "2022-06-02T23:00:00+02:00"
}
},
"Lighting": {
"Lighting": {
"count": 3,
"usage": 2.014,
"cost": 0.45,
"first_event": "2022-05-31T23:00:00+02:00",
"last_event": "2022-06-02T23:00:00+02:00"
}
},
"Production": {
"SolarProduction": {
"count": 3,
"usage": 1.708,
"cost": 0.37,
"first_event": "2022-05-31T23:00:00+02:00",
"last_event": "2022-06-02T23:00:00+02:00"
}
},
"Laundry": {
"WashingMachine": {
"count": 3,
"usage": 1.621,
"cost": 0.35,
"first_event": "2022-06-01T12:10:00+02:00",
"last_event": "2022-06-03T12:10:00+02:00"
}
},
"count": 18,
"usage": 8.717,
"cost": 1.9,
"first_event": "2022-06-01T12:10:00+02:00",
"last_event": "2022-06-03T12:10:00+02:00"
},
"timestamp": "2022-08-17T08:57:11+02:00"
}
As you'd probably expect, the response contains the standard JSON structure containing the status
field indicating whether or not the response was successful. If successful, the data
field will contain a list of appliance events in the provided period. Each message consists of the following properties:
Field | Type | Description |
---|---|---|
disaggregation_category | Enumeration | The disaggregation category that participated in the installation's consumption. The acceptable values of the disaggregation categories (activities) are included in the table above. |
appliance_event_report_key | Enumeration | The appliance event report key that participated in the installation's consumption. The acceptable values of the appliance event report keys are included in the table above. |
count | Integer | The number of events included in the provided period. |
usage | Float | Indicates the appliance energy consumption for a specific appliance on the period of interest. |
cost | Float | Indicates the appliance energy consumption cost for a specific appliance on the period of interest. |
first_event | String | The start timestamp for the first appliance event contained within the period used as input in a YYYY-MM-DDThh:mm:ssTZD format. |
last_event | String | The start timestamp for the last appliance event contained within the period used as input in a YYYY-MM-DDThh:mm:ssTZD format. |
timestamp | DateTime | The date and time the report was created in a YYYY-MM-DDThh:mm:ssTZD format. |
The following screen from the Ynni Mobile App shows how this API call be integrated.
Updated 4 months ago