NAV Navbar
  • HTTP API for Smart Meter Integration
  • Base API URL
  • Versioning
  • Authentication
  • Devices
  • Metadata
  • VoltaScore
  • Disaggregation
  • Reports
  • HTTP API for Smart Meter Integration

    This API allows you to manage your Voltaware sensors or smart meters and carry out a variety of operations.

    The main operations that can be performed are to retrieve disaggregation results and set up metadata needed for our disaggregation algorithms for each device.

    This API is organised around JSON and REST.

    Base API URL

    https://reseller-api.voltaware.com

    Versioning

    Rolling releases with no breaking changes.

    Authentication

    You must use the credentials issued by Voltaware with the endpoint /auth/token to generate an access token.

    Authentication to the API is performed by submitting the access token in the request header Authorization: Bearer access_token.

    The access token will expire after 12 hours they are issued, after this period you will need to refresh it.

    To refresh the access token use the endpoint /auth/token/refresh.

    Access Token

    HTTP request

    POST /auth/token
    

    Request header

    Content-Type: application/json
    

    Request body

    {
      "grant_type": "client_credentials",
      "client_id": "YOUR_CLIENT_ID",
      "client_secret": "YOUR_CLIENT_SECRET"
    }
    

    Response body

    {
      "access_token": "2YotnFZFEjr1zCsicMWpAA",
      "token_type": "Bearer",
      "expires_in_secs": 43200,
      "refresh_token": "tGzv3JOkF0XG5Qx2TlKWIA"
    }
    

    Issues a new access token. This endpoint must be called before any other call to other endpoints are performed. You must reuse the token until it expires instead of creating a new one for each request.

    Refresh Token

    HTTP request

    POST /auth/token/refresh
    

    Request headers

    Content-Type: application/json
    

    Request body

    {
      "grant_type": "refresh_token",
      "client_id": "YOUR_CLIENT_ID",
      "refresh_token": "YOUR_REFRESH_TOKEN"
    }
    

    As the access token is valid for 12 hours, when the access token expires all requests with the expired acess token will receive an HTTP error code 401. You will need to refresh your token using this endpoint.

    Response body

    {
      "access_token": "2YotnFZFEjr1zCsicMWpAA",
      "token_type": "Bearer",
      "expires_in_secs": 43200
    }
    

    Devices

    Provides detailed information about devices.

    List all devices

    HTTP request

    GET /sensors
    

    Request headers

    Authorization: Bearer access_token
    

    Response body

    [
      0001, 
      0002, 
      0003
    ]
    

    Retrieves a list of IDs for all your available devices. The response includes all Smart Meters that have sent at least one data point to our backend, as well as any Voltaware sensors that belong to your account.

    View single sensor

    HTTP request

    GET /sensors/{device_id}
    

    Request headers

    Authorization: Bearer access_token
    

    Response body

    {
      "connection_state": "connected",
      "firmware": "112356",
      "last_event": "2020-12-08T15:23:05Z",
      "first_event": "2018-06-08T10:20:51.287Z",
      "locale": {
        "isoCountryCode": "DE",
        "isoLocaleCode": "de-DE",
        "timeZoneId": "Europe/Berlin",
        "userDefinedLanguage": "pt-BR"
      }
    }
    
    Field name Description
    connection_state enum, nullable Available for Voltaware sensors. Possible values are connected, disconnected, and never_connected
    firmware string, nullable Available for Voltaware sensors
    first_event ISO timestamp UTC Timestamp of the first data point received on our backend
    last_event ISO timestamp UTC Timestamp of the last data point received on our backend
    locale.isoCountryCode string Country code of the device
    locale.isoLocaleCode string Locale code of the device
    locale.timeZoneId string Time zone of the device
    locale.userDefinedLanguage string Deprecated field

    Metadata

    It is only possible to provide metadata for a smart meter after we receive at least one data point for consumption in our broker. Otherwise, the smart meter will not exist on our platform, and you will receive a 'Forbidden' response status.

    Property

    In order to provide you with more accurate Disaggregation results we need to get some information regarding the property where the sensor is installed and some information about the appliances owned by the end user.

    We remind you that the Voltaware algorithm is designed to work in households and that we currently do not support users that produce energy (solar pannels, batteries...)

    View property details

    GET /sensors/{device_id}/metadata/property

    Response body

    {
      "property_type": "HOME",
      "home_type": "FLAT",
      "home_size": 49.8,
      "bedroom_amount": 2,
      "power_generator_source": "SOLAR",
      "people_amount": 2,
      "people_amount_in_day_time": 0,
      "people": [
          {
              "age_range": "ADULT",
              "amount": 2
          }
        ],  
      "version": "1.0"
    }
    

    View property details.

    Set up property details

    PUT /sensors/{device_id}/metadata/property

    Request body for home_type house

    {
      "property_type": "HOME",
      "home_type": "HOUSE",
      "home_usage_type": "PRIMARY",
      "home_size": 80,
      "bedroom_amount": 2,
      "power_generator_source": "NONE",
      "people_amount": 3,
      "people_amount_in_day_time": 2,   
      "people": [
        {
            "age_range": "ADULT",
            "amount": 2
        },
        {
            "age_range": "ZERO_TO_FIVE",
            "amount": 1
        }
      ],
      "version": "1.0"
    }
    

    Request body for home_type office, commercial or industry

    {
      "property_type": "INDUSTRY",
      "power_generator_source": "SOLAR",
      "version": "1.0"
    }
    

    Setup the property details associated to a sensor by providing the following information:

    In case the property_type is OFFICE, COMMERCIAL, INDUSTRIAL, the following are the fields needed in the request body.

    Field name Description
    property_type string (enum), required OFFICE, COMMERCIAL, INDUSTRIAL
    power_generator_source string (enum), required SOLAR, HYDROELECTRICITY, WIND, BATTERY, OTHER, NONE
    version string, required The current version of the property information is 1.0

    In case the property_type is HOME, we will require a number of information in order to be able to classify people’s homes and create clusters to compare them to similar users.

    Field name Description
    property_type string (enum), required HOME
    home_type string (enum), required FLAT, HOUSE
    home_usage_type string (enum), required PRIMARY, SECONDARY
    home_size float, required Size of the house in square meters
    bedroom_amount int, required Minimum value is 1
    power_generator_source string (enum), required SOLAR, HYDROELECTRICITY, WIND, BATTERY, OTHER, NONE
    people_amount int, required Minimum value is 1
    people_amount_in_day_time int, required Minimum value is 0
    people array, required The field must be present in the JSON but it can receive an empty array.
    people[].age_range string (enum), required ZERO_TO_FIVE, SIX_TO_EIGHTEEN, ADULT, PENSIONER
    people[].amount int, required
    version string, required The current version of the property information is 1.0

    Appliances

    View property appliances

    GET /sensors/{device_id}/metadata/appliances

    Response body

    {
      "appliances": [
        {
          "key": "AC",
          "amount": 1,
          "type": "CENTRALISED",
          "usage_type": "SUMMER"
        },
        {
          "key": "AC",
          "amount": 1,
          "type": "WINDOW",
          "usage_type": "BOTH"
        },
        {
          "key": "ELECTRIC_BOILER",
          "amount": 1,
          "usage_type": "SPACE_HEATING",
          "coupled_with_solar_thermal_system": "NO",
          "water_tank": false
        },
        {
          "key": "ELECTRIC_BOILER",
          "amount": 1,
          "usage_type": "WATER_HEATING",
          "coupled_with_solar_thermal_system": "YES",
          "water_tank": true
        },
        {
          "key": "FRIDGE",
          "amount": 1,
          "type": "FRIDGE"
        },
        {
          "key": "GAS_HEATING",
          "amount": 1,
          "any_electric_heater": false
        },
        {
          "key": "ELECTRIC_OVEN",
          "amount": 1,
          "type": "REGULAR"
        },
        {
          "key": "OTHER",
          "amount": 1,
          "name": "A Electronic Device"
        },
        {
          "key": "OTHER",
          "amount": 1,
          "name": "A Different Electronic Device"
        }
      ],
      "version": "1.0"
    }
    

    View property appliances.

    Set up property appliances

    PUT /sensors/{device_id}/metadata/appliances

    Request body

    {
      "appliances": [
        {
            "key": "AC",
            "amount": 1,
            "type": "MINI_SPLIT",
            "usage_type": "BOTH"
        },
        {
            "key": "DEHUMIDIFIER",
            "amount": 1
        },
        {
            "key": "DISHWASHER",
            "amount": 1
        },
        {
            "key": "ELECTRIC_BOILER",
            "amount": 1,
            "usage_type": "WATER_HEATING",
            "coupled_with_solar_thermal_system": "NO",
            "water_tank": true
        },
        {
            "key": "ELECTRIC_HEATING",
            "amount": 1,
            "type": "UNDERFLOOR"
        },
        {
            "key": "ELECTRIC_LAWN_MOWER",
            "amount": 1
        },
        {
            "key": "ELECTRIC_OVEN",
            "amount": 1,
            "type": "INDUCTION"
        },
        {
            "key": "ELECTRIC_SHOWER",
            "amount": 2
        },
        {
            "key": "ELECTRIC_STOVE",
            "amount": 1
        },
        {
            "key": "ELECTRIC_VEHICLE",
            "amount": 1,
            "type": "CAR",
            "wattages": [7200]
        },
        {
            "key": "ELECTRIC_VEHICLE",
            "amount": 2,
            "type": "BIKE",
            "wattages": [750, 750]
        },
        {
            "key": "FRIDGE",
            "amount": 1,
            "type": "FRIDGE_AND_FREEZER"
        },
        {
            "key": "FRIDGE",
            "amount": 1,
            "type": "FREEZER"
        },
        {
            "key": "GAS_HEATING",
            "amount": 1,
            "any_electric_heater": true
        },
        {
            "key": "HUMIDIFIER",
            "amount": 1
        },
        {
            "key": "JACUZZI",
            "amount": 1
        },
        {
            "key": "KETTLE",
            "amount": 1
        },
        {
            "key": "POOL_PUMP",
            "amount": 1
        },
        {
            "key": "TUMBLE_DRYER",
            "amount": 1,
            "type": "I_DONT_KNOW",
            "usage_types": ["AUTUMN", "SPRING", "WINTER"]
        },
        {
            "key": "WASHING_MACHINE",
            "amount": 1
        },
        {
            "key": "OTHER",
            "amount": 3,
            "name": "Sprinklers"
        }
      ],
      "version": "1.0"
    }
    

    For each appliance object sent, all fields are required.

    In case a user doesn’t know an answer or if a question is too technical for them, they will always be able to select the option “I don’t know”. These information allow us to improve the accuracy of our algorithm and help us prioritize our future work.

    AC

    For the AC, we want to know what type of AC the user has as well as the season when the user uses it. In case the user uses an AC during cold months, this appliance will be displayed on the disaggregation results as Heating.

    • For the type, the accepted values are: CENTRALISED, MINI_SPLIT, WINDOW, OTHER or I_DONT_KNOW.

    • For the usage_type, the accepted values are: SUMMER, WINTER or BOTH.

    ELECTRIC BOILER (ELECTRIC WATER HEATER)

    For this appliance, we want to know how many units the user have, if the Boiler is used for heating up space or water (or both), if it is coupled with a solar thermal system and if it has a water tank or not.

    • For the usage_type, the accepted values are: SPACE_HEATING, WATER_HEATING or BOTH.

    • For the coupled_with_solar_thermal_system, the accepted values are: YES, NO or NOT_SURE.

    • For the water_tank, the accepted values must be of the type BOOLEAN.

    ELECTRIC HEATING (SPACE HEATING)

    With the Electric Heating questions we want to know if the user has an electric or gas main heating source, depending on this first answer, we will ask different questions to the user. In case they have an electric main heating source we will ask the type of Heater they have, in case they say it’s gas we will ask whether they have additional electric heating units.

    In case they say Electrical:

    • For the type, the accepted values are: HEAT_PUMP, HEAT_STORAGE, RADIATOR, UNDERFLOOR or OTHER.

    In case they say Gas:

    • For the any_electric_heater, the accepted values must be of the type BOOLEAN.

    ELECTRIC OVEN

    Regarding the electric oven question, we want to know what type of oven the user has and how many of each.

    • For the type, the accepted values are: MICROWAVE, MINI or REGULAR. Followed by each type’s quantity.

    ELECTRIC OR INDUCTION STOVE

    For the stove, we want to know what type of stove the user has.

    • For the type, the accepted values are: ELECTRIC or INDUCTION.

    ELECTRIC VEHICLE

    In case of the electric vehicles, we want to know the type of vehicle the user has, how many and if they know the wattage of their chargers.

    • For the type, the accepted values are: BIKE, CAR, MOTORBIKE, SCOOTER.

    • For the wattages, the accepted values are a list of integers of size equal to the amount of the corresponding vehicle.

    FRIDGE/FREEZER

    In case of the fridge (or cooling devices), we want to know the type of fridge the user has.

    • For the type, the accepted values, followed by their quantity as integers, are: FRIDGE, FREEZER, FRIDGE_AND_FREEZER, SMALL_ELECTRIC_WINE_CELLAR or LARGE_ELECTRIC_WINE_CELLAR.

    TUMBLE DRYER

    In case of the tumble dryer, we want to know how many units the user has and if they use the appliance all year long or only for some seasons.

    • For the type, the accepted values are: CONDENSER, HEAT_PUMP, VENTED or I_DONT_KNOW. Followed by each type’s quantity.

    • The usage_types several options can be clicked, this property is a list, and the accepted values are: AUTUMN, SPRING, SUMMER and/or WINTER.

    OTHER APPLIANCES

    Finally, we want to know if the user has any other appliances that are not shown in our list. This helps us to identify the most common ones in order to add them in the future to our disaggregation library. Please have in mind that any appliance added here won’t be displayed on the disaggregation results.

    • For the name, any text value can be accepted.

    The current version of the appliance list is 1.0.

    Meter geolocation

    It is important for us to know where the smart meter is located, that way we can have weather information that helps us to make most accurate disaggregation.

    View geolocation

    GET /sensors/{device_id}/metadata/geolocation

    Response body

    {
      "latitude": 51.509865,
      "longitude": -0.118092  
    }
    

    View geoloc info.

    Set up property details

    PUT /sensors/{device_id}/metadata/geolocation

    Request body

    {
      "latitude": 51.509865,
      "longitude": -0.118092  
    }
    

    Geolocation have both fields as mandatory and it must be a valid location.

    VoltaScore

    The VoltaScore is Voltaware's scoring system, ranging from 1 to 5, designed to show users how efficiently they are using their energy at home. This score is computed based on the user's historical usage, as well as by comparing it with that of similar users. The higher the score, the more efficient the user is being.

    The first VoltaScore results will be available 30 days after the sensor installation.

    VoltaScore is calculated monthly for each calendar month. The calculation takes place at the beginning of each month, using data from the previous month, and the results are available on the third day of the same month. Please note that results are only available for previous months, not the current month.

    View score

    GET /sensors/{device_id}/scores?year=2023&month=8

    {
      "p2p": {
        "consumption_percentile": 78.0,
        "consumption_score": 4.5,
        "cost_percentile": 68,
        "cost_score": 4.2
      },
      "historical": {
        "consumption_percentage": 35.5,
        "consumption_score": 3.8,
        "cost_percentage": 12.4,
        "cost_score": 2.8
      },
      "recommendations": [
        {
          "key": "AVOID_TUMBLE_DRYER",
          "type": "CONSUMPTION"
        },
        {
          "key": "ELECTRIC_VEHICLE_OFF_PEAK",
          "type": "CONSUMPTION",
          "start_time": "23:00:00",
          "end_time": "08:00:00"
        },
        {
          "key": "WASHING_MACHINE_OFF_PEAK",
          "type": "COST",
          "start_time": "23:00:00",
          "end_time": "08:00:00"
        }
      ],
      "overall_score": 3.5
    }
    

    Table describing the meanging of the response body:

    Field name Description
    p2p.consumption_percentile float Percentile rank for consumption in peer-to-peer comparison
    p2p.consumption_score float Peer-to-peer comparison score for consumption
    p2p.cost_percentile float Percentile rank for cost efficiency in peer-to-peer comparison
    p2p.cost_score float Peer-to-peer comparison score for cost efficiency
    historical object, nullable Results of historical data will be availabe after 60 days from sensor installation.
    historical.consumption_percentage float Percentage difference in consumption compared to historical data
    historical.consumption_score float Historical consumption score based on self-comparison
    historical.cost_percentage float Percentage difference in cost efficiency compared to historical data
    historical.cost_score float Historical cost efficiency score based on self-comparison
    recommendations array Personalized recommendations for improving energy consumption and cost efficiency
    recommendations[].key array Check table bellow.
    recommendations[].type array CONSUMPTION, COST, BOTH
    overall_score float Overall VoltaScore for the specified device
    version string This field may be present in the future

    Table describing all availabe recommendations:

    Recommendation key Type Meaning
    AVOID_TUMBLE_DRYER BOTH Minimize tumble dryer usage when possible
    ELECTRIC_VEHICLE_OFF_PEAK COST Charge your EV during off-peak hours
    ISOLATE_WINDOWS BOTH Ensure windows are properly insulated to prevent heat loss and reduce heating time
    LOWER_ALWAYS_ON BOTH Lower Always-on by unplugging electronics to reduce standby power waste and save electricity
    NO_RECOMMENDATION - Maintain current practices
    OPTIMIZE_DRIVING BOTH Practice eco-driving techniques to reduce electricity consumption while driving
    USE_ECO BOTH Utilize ECO settings if available on appliances to optimize energy usage
    USE_MICROWAVE BOTH Use the microwave for cooking when possible to save energy compared to an electric oven
    WASHING_MACHINE_LOW_TEMP BOTH Use washing programs between 30 and 40ºC to save energy and prolong clothes lifespan
    WASHING_MACHINE_OFF_PEAK COST Program washing appliances during off-peak hours

    Table describing only the recommendations that extra fields.

    ELECTRIC_VEHICLE_OFF_PEAK and WASHING_MACHINE_OFF_PEAK

    Field name Description
    recommendations[].start_time string, time Start of the time windown with cheapest tariff to use
    recommendations[].end_time string, time Etart of the time windown with cheapest tariff to use

    Disaggregation

    The disaggregation is calculated monthly for each calendar month. The calculation takes place at the beginning of each month, using data from the previous month, and the results are available on the third day of the same month. Please note that results are only available for previous months, not the current month.

    If there is a need to calculate data from the past for a recently integrated smart meter, disaggregation can be performed for data up to three months old. In such cases, the results will be ready within 24 to 36 hours after the data is received.

    Month

    GET /sensors/{device_id}/sm/disag/month?year=2022&month=8

    Response body

    {
      "total_consumption": 416951.0,
      "appliances": [
        {
          "appliance_key": "cooking",
          "consumption": 19057.0
        },
        {
          "appliance_key": "electric_vehicle",
          "consumption": 197148.0
        },
        {
          "appliance_key": "fridge",
          "consumption": 45081.336
        },
        {
          "appliance_key": "lights",
          "consumption": 59649.63
        },
        {
          "appliance_key": "others",
          "consumption": 12881.073
        },
        {
          "appliance_key": "standby",
          "consumption": 53491.2
        },
        {
          "appliance_key": "washing",
          "consumption": 29642.76
        }
      ]
    }
    

    Returns the disaggregation result for the requested year-month.

    Table describing the meanging of the response body:

    Field name Description
    total_consumption float Total consumption of all appliances in Wh
    appliances[] array It will only contain the appliances found in the disagregation
    appliances[].appliance_key enum Key of the appliance
    appliances[].consumption float Energy consumption of the appliance in Wh

    Table describing all disaggregated appliances available:

    Appliance key Description
    boiler The disaggregated consumption from Electric Water Heaters/Boilers
    cooking The disaggregated consumption from Electric Stove and/or Oven
    cooking_heating The combined disaggregated consumption from Electric Stove/Oven and Electric Heating. Note that this will be valid, instead of the individual Cooking and Heating consumptions, if a user-specified appliance list is not available
    cooling The disaggregated consumption from Air Conditioners
    electric_vehicle The disaggregated consumption for Electric Vehicle (EV). Note that the EV charging cycle times for each user are also available on this endpoint ADD ENDPOINT HERE
    fridge The disaggregated consumption from fridge/freezers and any wine chillers etc
    heating The disaggregated consumption from Electric Heating. Note that this may also include the disaggregated consumption from any AC that is being used for heating during the winter months
    lights The disaggregated consumption from lights and low-power electronic appliances (e.g. TVs, sounds systems, security cameras etc)
    others This is the consumption that is not assigned to any of the currently disaggregated appliances and may be (partly) attributable to specialized appliances present in the home, such as Jacuzzis, heat pumps, etc
    standby The disaggregated consumption due to appliances operating on Standby/Always ON mode around the house
    washing The combined disaggregated consumption from Washing Machine, Dishwasher and Tumble Dryer (as relevant to each home). Note that the separated consumptions for Washing Machine, Dishwasher and Tumble Dryer will also be made available in the near future

    Month by Weeks

    /sensors/{device_id}/sm/disag/month/weeks?year=2023&month=9

    Response body

    {
      "total_consumption": 550764.0,
      "weeks": [
        {
          "from": "2023-09-01",
          "to": "2023-09-03",
          "total_consumption": 58728.0,
          "appliances": [
            {
              "appliance_key": "cooking",
              "consumption": 2559.0
            },
            {
              "appliance_key": "fridge",
              "consumption": 7491.9155
            },
            {
              "appliance_key": "lights",
              "consumption": 26218.045
            },
            {
              "appliance_key": "others",
              "consumption": 11263.99
            },
            {
              "appliance_key": "standby",
              "consumption": 7027.2
            },
            {
              "appliance_key": "washing",
              "consumption": 4167.85
            }
          ]
        },
        {
          "from": "2023-09-04",
          "to": "2023-09-10",
          "total_consumption": 104123.0,
          "appliances": [
            {
              "appliance_key": "cooking",
              "consumption": 5242.0
            },
            {
              "appliance_key": "fridge",
              "consumption": 24488.803
            },
            {
              "appliance_key": "lights",
              "consumption": 37118.61
            },
            {
              "appliance_key": "others",
              "consumption": 20010.209
            },
            {
              "appliance_key": "standby",
              "consumption": 9945.6
            },
            {
              "appliance_key": "washing",
              "consumption": 7317.78
            }
          ]
        },
        {
          "from": "2023-09-11",
          "to": "2023-09-17",
          "total_consumption": 111977.0,
          "appliances": [
            {
              "appliance_key": "cooking",
              "consumption": 3511.0
            },
            {
              "appliance_key": "fridge",
              "consumption": 8521.274
            },
            {
              "appliance_key": "heating",
              "consumption": 15067.439
            },
            {
              "appliance_key": "lights",
              "consumption": 39018.01
            },
            {
              "appliance_key": "others",
              "consumption": 6457.474
            },
            {
              "appliance_key": "standby",
              "consumption": 27763.2
            },
            {
              "appliance_key": "washing",
              "consumption": 11125.6
            }
          ]
        },
        {
          "from": "2023-09-18",
          "to": "2023-09-24",
          "total_consumption": 135707.0,
          "appliances": [
            {
              "appliance_key": "cooking",
              "consumption": 3913.0
            },
            {
              "appliance_key": "fridge",
              "consumption": 10465.777
            },
            {
              "appliance_key": "lights",
              "consumption": 55525.742
            },
            {
              "appliance_key": "others",
              "consumption": 25831.58
            },
            {
              "appliance_key": "standby",
              "consumption": 26534.4
            },
            {
              "appliance_key": "washing",
              "consumption": 13436.5
            }
          ]
        },
        {
          "from": "2023-09-25",
          "to": "2023-09-30",
          "total_consumption": 140229.0,
          "appliances": [
            {
              "appliance_key": "cooking",
              "consumption": 5324.5
            },
            {
              "appliance_key": "fridge",
              "consumption": 8700.059
            },
            {
              "appliance_key": "lights",
              "consumption": 54820.223
            },
            {
              "appliance_key": "others",
              "consumption": 27706.46
            },
            {
              "appliance_key": "standby",
              "consumption": 21926.4
            },
            {
              "appliance_key": "washing",
              "consumption": 12920.36
            }
          ]
        }
      ]
    }
    

    This endpoint follows the same rules as the ones described in the Disaggregation documentation.

    Table describing the meanging of the response body:

    Field name Description
    from date Starting date of the month
    to date Ending date of the month
    total_consumption float Total consumption of all appliances in Wh for the month
    weeks[].from date Starting date of the week
    weeks[].to date Ending date of the week
    weeks[].total_consumption float Total consumption of all appliances in Wh for the week
    weeks[].appliances[] array It will only contain the appliances found in the disagregation
    weeks[].appliances[].appliance_key enum Key of the appliance. All keys will be the same as the ones described in the table above.
    weeks[].appliances[].consumption float Energy consumption of the appliance in Wh

    Appliance Cycles

    GET /sensors/{device_id}/sm/disag/cycles?date=2023-11-17

    Response body

    [
      {
        "appliance_key": "electric_vehicle",
        "total_consumption": 1917.0650024414062,
        "cycles": [
          {
            "from": "2022-04-12T00:32:53",
            "to": "2022-04-12T04:29:10",
            "consumption": 838.8944702148438
          },
          {
            "from": "2022-04-12T20:17:24",
            "to": "2022-04-12T22:48:14",
            "consumption": 1078.1705322265625
          }
        ]
      }
    ]
    

    Returns the cycles found per appliance.

    Currently, cycles are only implemented for electric_vehicle. Note that cycles for the other appliances will also be made available in the near future.

    Table describing the meanging of the response body:

    Field name Description
    appliance_key enum Key of the appliance
    total_consumption float Total consumption of all cycles in Wh
    cycles[].from local timestamp Start time of the cycle for the period in the device's local time zone
    cycles[].to local timestamp End time of the cycle for the period in the device's local time zone
    cycles[].consumption float Energy consumption of the cycle in Wh

    Reports

    Monthly

    GET /sensors/{device_id}/sm/reports/monthly?year=2022&month=8

    Response body

    {
      "day_by_day_metrics": {
        "days_without_consumption": 0,
        "total_consumed_on_week_days": 10.12829,
        "total_consumed_on_weekend_days": 3.57842,
        "total_month_consumption": 13.70671,
        "average_month_consumption": 0.44215,
        "max_month_consumption": {
          "day": "2022-08-23",
          "total_consumption": 0.46071,
          "weekend": false
        },
        "min_month_consumption": {
          "day": "2022-08-24",
          "total_consumption": 0.40534,
          "weekend": false
        },
        "days": [
          {
            "day": "2022-08-01",
            "total_consumption": 0.43057,
            "weekend": false
          },
          {
            "day": "2022-08-02",
            "total_consumption": 0.43952,
            "weekend": false
          },
          {
            "day": "2022-08-03",
            "total_consumption": 0.43464,
            "weekend": false
          },
          {
            "day": "2022-08-04",
            "total_consumption": 0.43959,
            "weekend": false
          },
          {
            "day": "2022-08-05",
            "total_consumption": 0.45704,
            "weekend": false
          },
          {
            "day": "2022-08-06",
            "total_consumption": 0.44674,
            "weekend": true
          },
          {
            "day": "2022-08-07",
            "total_consumption": 0.44807,
            "weekend": true
          },
          {
            "day": "2022-08-08",
            "total_consumption": 0.44821,
            "weekend": false
          },
          {
            "day": "2022-08-09",
            "total_consumption": 0.44122,
            "weekend": false
          },
          {
            "day": "2022-08-10",
            "total_consumption": 0.43846,
            "weekend": false
          },
          {
            "day": "2022-08-11",
            "total_consumption": 0.43126,
            "weekend": false
          },
          {
            "day": "2022-08-12",
            "total_consumption": 0.44193,
            "weekend": false
          },
          {
            "day": "2022-08-13",
            "total_consumption": 0.44847,
            "weekend": true
          },
          {
            "day": "2022-08-14",
            "total_consumption": 0.44093,
            "weekend": true
          },
          {
            "day": "2022-08-15",
            "total_consumption": 0.43711,
            "weekend": false
          },
          {
            "day": "2022-08-16",
            "total_consumption": 0.4269,
            "weekend": false
          },
          {
            "day": "2022-08-17",
            "total_consumption": 0.4326,
            "weekend": false
          },
          {
            "day": "2022-08-18",
            "total_consumption": 0.43151,
            "weekend": false
          },
          {
            "day": "2022-08-19",
            "total_consumption": 0.44437,
            "weekend": false
          },
          {
            "day": "2022-08-20",
            "total_consumption": 0.44731,
            "weekend": true
          },
          {
            "day": "2022-08-21",
            "total_consumption": 0.45208,
            "weekend": true
          },
          {
            "day": "2022-08-22",
            "total_consumption": 0.44326,
            "weekend": false
          },
          {
            "day": "2022-08-23",
            "total_consumption": 0.46071,
            "weekend": false
          },
          {
            "day": "2022-08-24",
            "total_consumption": 0.40534,
            "weekend": false
          },
          {
            "day": "2022-08-25",
            "total_consumption": 0.4514,
            "weekend": false
          },
          {
            "day": "2022-08-26",
            "total_consumption": 0.45477,
            "weekend": false
          },
          {
            "day": "2022-08-27",
            "total_consumption": 0.44927,
            "weekend": true
          },
          {
            "day": "2022-08-28",
            "total_consumption": 0.44555,
            "weekend": true
          },
          {
            "day": "2022-08-29",
            "total_consumption": 0.44724,
            "weekend": false
          },
          {
            "day": "2022-08-30",
            "total_consumption": 0.45135,
            "weekend": false
          },
          {
            "day": "2022-08-31",
            "total_consumption": 0.43929,
            "weekend": false
          }
        ]
      },
      "disaggregation_metrics": {
        "total_consumption": 13706.82,
        "appliances": [
          {
            "appliance_key": "cooling",
            "consumption": 0
          },
          {
            "appliance_key": "fridge",
            "consumption": 5413.5107
          },
          {
            "appliance_key": "heating",
            "consumption": 0
          },
          {
            "appliance_key": "lights",
            "consumption": 2918.9485
          },
          {
            "appliance_key": "others",
            "consumption": 2.2737368e-13
          },
          {
            "appliance_key": "standby",
            "consumption": 5374.361
          },
          {
            "appliance_key": "washing",
            "consumption": 0
          }
        ]
      },
      "carbon_footprint": {
        "kgco2": 7.11378249,
        "trees": 3.803064
      },
      "version": 1
    }
    

    This endpoint follows the same rules as the ones described in the Disaggregation documentation.