NILM Status

The NILM Status Report is a new type of report implemented and integrated as NET2GRID NILM Service to communicate the results of the Training, up to that particular point in time, to the end-users. This process is responsible for retrieving the customer profile (as filled in within the mobile application), the installation model stored in NET2GRID Installation Model Library, and producing the status report.

There are three categories of information that are communicated back to the customer:

  • General NILM Status Information
  • Report Services Status
  • Non-Time and Time-Based Appliances Status

General NILM Status Information

There is some information provided that is related directly to a reporting service or an individual appliance. More specifically, the information pieces are:

  • NILM Status Phase: This number shows at which point in the Training Process the specific installation is situated currently, from 0 (no training process has run) to 3 (all training processes have been completed).
  • Number of Days with Good Quality Data: the number of days that the installation have provided good quality measurements, meaning no stuck metering equipment or low sampling events took place during those days.
  • Number of Days with Poor Quality Data: the number of days that the installation has provided poor quality measurements due to stuck metering equipment, weak connection signal, or low sampling granularity.

Report Services Status

This part of the NILM Status Report contains information on all the other Report Services that are provided by NET2GRID Solution. With this information, it is easy for the end-user to observe which services are enabled, if profile information is missing for certain reporting services, if more time is needed to provide a service, etc.

More specifically, these Report Services are:

A/AReport ServiceReport Service Key
1Daily Disaggregation Report ServicedailyDisaggregation
2Monthly Disaggregation Report ServicemonthlyDisaggregation
3Insights Report Serviceinsights
4Recommendations Report Servicerecommendations
5Appliance Efficiencies Report ServiceapplianceEfficiencies
6Hardware Parameters Report ServicehardwareParameters
7Solar Production Metrics Report ServicesolarProductionMetrics

The information that is provided for each one of the services mentioned above are:

  • Report Service Name: the name of the examined reporting process.
  • Availability: a flag that shows if the report service is available to the customer.
  • Profile Complete: a flag that signifies if the customer-provided profile is correctly filled to provide this service (to its full extent or at all).
  • Month Complete: a flag that signifies if 30 days of measurement are available from that specific installation.
  • Start Timestamp: The DateTime stamp that the service became available to the end customer if it is available.

Appliances Status

This section of the NILM Status report contains information on all the appliances supported by the NET2GRID Solution Services. Having this information readily available, the end-user can check for which appliances there are models created, if there is profile information missing for certain appliances, how many attempts have been done for training specific appliances, and many more.

As mentioned in the Appliance Events Report section, there are two types of appliances: non-time-based and time-based. The information that is provided for each one of the appliances mentioned above are:

  • Appliance Type: the type of appliance that is examined.
  • Availability: a flag that shows if the appliance models are available for the specific customer.
  • Profile Complete: a flag that signifies if the customer-provided profile is correctly filled for this appliance type if needed.
  • Profile Updated: a flag that signifies if the profile was updated from the customer on the current day if needed.
  • Number of Models: an integer number that shows the number of models stored in the Library for that specific appliance type.
  • Attempts Left: an integer number that shows the number of attempts left for the training of this appliance type if no models are available yet.
  • Appliance Model Version: The Analytics Platform version that was utilized for the training of the appliance models, if it is available.
  • Creation Timestamp: The DateTime stamp that the appliance was trained and became available to the end customer if it is available.

Fetching the current NILM Status for an installation

The Get NILM Status SDP 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 NILM Status endpoint looks like this:

GET /v2/nilm/status
Authorization: Bearer <access_token>

A successful request will return a response similar to the following:

{
  "status": "ok",
  "data": {
    "nilmStatus": 3,
    "goodDataDays": 1619,
    "poorDataDays": 4,
    "services": {
      "dailyDisaggregation": {
        "available": true,
        "profileComplete": true
      },
      "solarProductionMetrics": {
        "available": true,
        "profileComplete": false
      },
      "monthlyDisaggregation": {
        "available": true,
        "profileComplete": true,
        "monthComplete": true
      },
      "insights": {
        "available": true,
        "profileComplete": true
      },
      "recommendations": {
        "available": true,
        "profileComplete": true
      },
      "hardwareParameters": {
        "available": true,
        "profileComplete": true
      },
      "applianceEfficiencies": {
        "available": true,
        "profileComplete": false
      }
    },
    "nonTimeBasedAppliances": {
      "alwaysOn": {
        "available": true,
        "profileComplete": true,
        "profileAdded": false,
        "models": 1
      },
      "refrigeration": {
        "available": true,
        "profileComplete": true,
        "profileAdded": false,
        "models": 1
      },
      "lighting": {
        "available": true,
        "profileComplete": true,
        "profileAdded": false,
        "models": 1
      },
      "entertainment": {
        "available": true,
        "profileComplete": true,
        "profileAdded": false,
        "models": 1
      },
      "waterBoiler": {
        "available": true,
        "profileComplete": true,
        "profileAdded": false,
        "models": 1
      },
      "heatPumps": {
        "available": false,
        "profileComplete": true,
        "profileAdded": false
      }
    },
    "timeBasedAppliances": {
      "washingMachine": {
        "available": true,
        "profileComplete": true,
        "profileAdded": false,
        "models": 1
      },
      "dishWasher": {
        "available": true,
        "profileComplete": true,
        "profileAdded": false,
        "models": 3
      },
      "oven": {
        "available": true,
        "profileComplete": true,
        "profileAdded": false,
        "models": 2
      },
      "dryer": {
        "available": true,
        "profileComplete": true,
        "profileAdded": false,
        "models": 1
      },
      "flowHeater": {
        "available": false,
        "profileComplete": true,
        "profileAdded": false,
        "attemptsLeft": 0
      },
      "immersionHeater": {
        "available": false,
        "profileComplete": false,
        "profileAdded": false,
        "attemptsLeft": 0
      },
      "electricVehicle": {
        "available": true,
        "profileComplete": true,
        "profileAdded": false,
        "models": 1,
        "timestamp": "2021-01-18T14:12:05+01:00"
      },
      "airConditioning": {
        "available": false,
        "profileComplete": false,
        "profileAdded": false,
        "attemptsLeft": 0
      }
    },
    "retrainSchedule": {
      "refrigeration": "20210706",
      "electricVehicle": "20210706",
      "airConditioning": "20210706"
    },
    "date": "20210706"
  }
}

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:

FieldTypeDescription
nilmStatusIntegerNILM Status 0: No Training Process has run up to this point in time. (This would be the default when no NILM status is available at all in the backend), NILM Status 1: Training Phase One has run at least once, and statistical appliance models are available. NILM Status 2: Phase Two's training process has run at least once, and some energy-intensive appliance models have been created. NILM Status 3: No automated training process is left for this installation.
goodDataDaysIntegerThe number of days with good data that can be used for analysis.
poorDataDaysIntegerThe number of days with poor data that cannot be used for analysis.
servicesDocumentA document containing the service status for all the NILM services. The list of services is provided above.
nonTimeBasedAppliancesDocumentA document containing the status of the non-time-based appliance models.
timeBasedAppliancesDocumentA document containing the status of the time-based appliance models.
retrainScheduleDocumentA document containing the list of appliances for which retraining is scheduled. If an appliance is not listed, then there is no retraining schedule in place for this appliance. It will contain the “applianceType” and the “date” for the retraining. The supported appliance types can be found in the Appliance Events section. The date is in YYYYMMDD format.

Within the Analytics Services documents, the following fields are contained:

FieldTypeDescription
availableBooleanThe flag shows the availability of the Analytics service.
profileCompleteBooleanThe flag shows the profile completeness for the Analytics service.
monthCompleteBooleanThe flag shows if 30 days of good data have passed for the specific process.

Within the Appliance Status documents, the following fields are contained:

FieldTypeDescription
availableBooleanThe flag shows the availability of an appliance model.
profileCompleteBooleanThe flag showing the profile completeness for an appliance model.
profileAddedBooleanThe flag signifies if the profile has been updated from the end-user after the latest NILM Status Report is sent and before sending the new one (the next day).
attemptsLeftIntegerThe number of training attempts left for a specific appliance model. Not present if models are already found for the appliance.
modelsIntegerThe number of appliance models created for a specific appliance.
timestampDateTimeThe date and time the appliance models were created in a YYYY-MM-DDThh:mm:ssTZD format.

The following image from the Ynni Mobile App shows a use of the NILM Status API.

1170