Skip to content
Navid Haghdadi edited this page Apr 9, 2021 · 14 revisions

Files:

  • load_profile_estimator.py inputs: load profile (optional), demographic and previous usage (all in a single json file) as described later output: load profile for a “typical year”.

  • saving_estimator.py inputs: estimated load profile, PV profile and tariff, output the saving and other numbers for the graphs. Inside this, we have:

  • bill_calculator.py inputs: load profile and tariff , output: annual bill information (including components, etc)

Workflow of the SunSPoT:

When user selects the PV area and the PV annual hourly profile is created, a list of tariffs is shown in the dropdown list. To populate the list, get the list of tariffs from the API (http://api.ceem.org.au/Electricity-Tariffs/Retail). NB: we have put the API on the free version of the heroku server which sleeps when no one uses it and could takes 15s to wake up. But we will change it to the paid version to increase the speed). We will also add more tariffs later to this list. We also filter the list of tariffs to the user's DNSP when showing in the dropdown list (stored in key 'Distributor'). I have provided the geojson file for the area of each distribution network. We should first find the DNSP from this file (and based on the location of user) and then only show the tariffs in this area. The source of GeoJson file is AREMI website where you can also see the areas on the map: https://nationalmap.gov.au/renewables Select: Add data > Network Opportunities > Supporting Information > Distribution boundaries The name of tariffs are stored in key: Name. Please note the name of ActewAGL (the ACT's DNSP) is changed to Evoenergy this year, so in the list of tariffs we have Evoenergy but in the map (and the geojson file) it is still ActewAGL. So you would need to filter the tariff list to the Evoenergy when user is in this area (or you can replace the ActewAGL in the geojson file to Evoenergy). Here are the list of all DNSPs: {Ausgrid, Essential, Energex, TasNetworks, Jemena, Evoenergy, Endeavour, Citipower, PowerCor, Jemena, Energex, SAPN}

When user selects a tariff, a new json file is saved with just this tariff. Some of the items of this tariff should be shown to the user and user should be able to edit them. The items which should be shown are Name, Discount (%), FiT (Solar Feed-in tariff), Daily and Energy (Energy in Flat_rate has one Value, but in TOU (Time of use), it can have three values: Peak, off peak, shoulder). So first the type of selected tariff should be checked (stored in key:type) and then the appropriate panel should be shown (flat rate or ToU). When user selects a tariff (and optionally change the parameters) a new json file should be created which only has one tariff (which is a subset of original full list of tariffs got from the API, with potential changes to some parameters).

Bill calculator:

This tariff json file (or object) together with the load profile are the inputs for bill_calculator.py.

Load estimation:

When user selects the PV area and PV profile is generated, by default the average load profile (the load profile for a typical user with the most popular demographic info, i.e. default values) is considered for the user. But user has the option to provide more information to get a better estimation (with a button to expand field, something like: Provide more info to get a better estimation of your saving). So the user may or may not provide the information.

The actual format is given in another document: Website: https://www.aemo.com.au/Stakeholder-Consultation/Consultations/Meter-Data-File-Format-Specification-NEM12-and-NEM13 PDF: https://www.aemo.com.au/media/Files/Other/consultations/nem/Meter%20Data%20File%20Format%20Specification%20NEM12_NEM13/MDFF_Specification_NEM12_NEM13_Final_v102_clean.pdf

We'll provide more info and guidance to the user on how to get the load profile and then ask them to upload the load profile to the website. We should ask them if they are happy for us to use their load profile and possible demographic information to enhance our load profile estimation.

  • And then the following questions should be asked (inspired by Energymadeeasy.gov.au and SGSC dataset):
  1. Family size (options: '1', '2-3', '4+')
  2. Do you have pool ('yes', 'no')
  3. Do you have controlled load ('yes', 'no')
  4. Do you have air conditioner ('yes', 'no')
  5. Dwelling type ('house', 'unit')
  6. Do you have smart meter ('yes', 'no')
  7. Do you have previous electricity usage from a recent bill ('yes', 'no')
  8. if 'yes' to Q7 expand the filed and ask two questions:
  9. Do you have time of use usage (peak, off peak, shoulder) or flat rate (total usage)?
  10. Bill start date:
  11. Bill end date: 12.1. If said ToU in Q9: get the input for peak, offpeak , and shoulder (if any) 12.2. If said Flat rate in Q9: get the inputs for total usage (kWh)

These questions are not finalised yet and could be changed, but the format will be similar, i.e. we may want you to get more inputs from user and store it in the json file and we will update the load_profile_estimator function later. Currently this function is not ready and only a sample function is provided which returns a same load profile for any input. The load profile is stored in a csv file and further processing will be made on it using user_input_load_profile_process.py to ensure the quality has been met. All other inputs from user is stored in a json file which will be then used as an input for Load_profile_estimator.py. previous_usage could have zero or multiple bills. There will be a button to add another billing period. An example of the json file called (user_inputs.json) for a user is as follow: {'postcode': 2033, load_profile_provided':'yes', 'family_size': '2', 'pool': 'yes', 'controlled_load': 'yes', 'AC', 'yes', 'dwell': 'house', 'smart_meter': 'yes', 'previous_usage': {'bill1': {'total': '','peak' : '100', 'offpeak': '100', 'shoulder': '100', 'start_date': '2018-02-01', 'end_date': '2018-05-01'},'bill2': {'total': '','peak' : '80', 'offpeak': '70', 'shoulder': '30', 'start_date': '2018-01-01', 'end_date': '2018-01-31'}}}

When user is happy with the information and hit apply, the saving_estimator runs which first estimates the load profile for this user and then the function bill_calculator.py is called to calculate the bill.

Saving Estimator:

This function first runs the bill_calculator using the estimated_load_profile and then combine the load profile and PV profile to create the net_load_profile, and apply the bill_calculator again to estimate the new bill. The output of this function is total saving of the customer and any possible other insights (such as monthly saving, the percentage of self consumption, different components of bill, etc).

Clone this wiki locally