RESPCT
is an online web application that enables you simulate solar pre-cooling for a range of exsiting buildings
in Australian building stock.
Badges can go here
Pre-cooling means running the air conditioning (AC) before peak periods, and reducing the indoor temperautre below the temperature that is usaully set by occupants. The reduction of indoor temperature then reduces the temperature of thermal mass in the building, and the cooled down thermal mass results in lower cooling demand later in the day.
If the surplus PV generation from the rooftop PV system is used to pre-cool the building instead of the imported electricity from the grid, it is defined as solar pre-cooling. to learn more about pre-cooling and solar pre-cooling please refer to the following papers:
- Demand response via pre-cooling and solar pre-cooling: A review
- Consumer cost savings, improved thermal comfort, and reduced peak air conditioning demand through pre-cooling in Australian housing
RESPCT
is an online web application that allows you simulate pre-cooling and solar pre-cooling for a range of existing
buildings in Australian building stock. It has a database of the thermal behavior of the available buildings that allows
you simulate the AC demand, indoor temperature, electricity cost, and the thermal discomfort index.
The tool has two tabs. Be selecting the Solar pre-cooling potential in Australia
at the top left, the user can see
a range of statistics about the current building in Australia, and their solar pre-cooling potential.
By clicking on Simulation tool
tab in the top left, the simulation tool appears.
The user need to answer to a few questions.
The first step is to create the thermal model of the building. The user can choose the location, star rating, construction weight, dwelling type, and floor area.
There are fields for the user to enter their typical occupancy patterns. It is done easily be selecting the occupied periods in the checkbox.
The preferred indoor temperature during occupied hours and acceptable deviation from the ideal temperature is done under
the Ideal indoor temperature button
.
There is a database of the available tariffs in Australia, from which the user can choose.
There is a database of AC excluded net demand profiles from around 450 Australian households. The user can choose the demand profile that is similar to their consumption. The result of solar pre-cooling is sensitive to the demand profile, and you can try different demand profiles to understand the effect of changing the behaviour on the potential savings.
PV generation and the amount of surplus PV generation after meeting households demand must be available for simulating solar pre-cooling. For simulating the performance of the rooftop PV system, the user needs to enter the rated capacity of the PV system, and the orientaion of the panels.
After entering all the information, the user must choose a name for the case study, and click on Add the case study
.
The user can add as many case studies as they want. For example, two case that are similar from all aspects but they have different star rating. This helps the user
understand how much the solar pre-cooling potential changes if they renovate their building and implement some energy
efficient measures.
It is also possible to delete all the case studies by clicking on Clean all case studies
.
The last step is to run the solar pre-cooling simulation by clicking on Run solar pre-cooling
.
The user can choose different figures from the dropdown to visualize the result of solar pre-cooling. The avaialable figures are AC demand, monthly cost savings, thermal discomfort reduction, and surplus PV generation.
Nothing helps as much as examples.
- This is a great guide that provides a brief overview of all the tools we use in this template.
- All of the tooling is based on
UNSW CEEM Python Package Template
Check out the Documentation
to understand the algorithms and datasets used in RESPCT
, and for guide on to use RESPCT
.
Poetry is used for dependency management, dependency resolution and can also be used as a build tool.
- Install
poetry
- Edit the project info in
pyproject.toml
, or delete it and usepoetry init
to start from scratch (if you are proceeding to the next few sections, it is best not to delete the existigpyproject.toml
) - You can add dependencies in the
pyproject.toml
or use the command line:- You can add a core dependency via
poetry add
, e.g.poetry add pandas
- You can add dependencies to a group (adding to a group is optional) using
poetry add pytest --group test
- You can install the dependencies from
poetry.lock
, including optional groups, usingpoetry install --with=test
- You can update dependencies and create a
poetry.lock
file usingpoetry update
- You can add a core dependency via
- Run scripts with
poetry run
, or jsut spawn a shell in the poetry virtual environment usingpoetry shell
and then run your code - Commit
pyproject.toml
andpoetry.lock
to version control
- Edit the project info in
- To install testing dependencies, use
poetry install --with=test
- Put your tests in
tests/
- Run your tests by running
pytest
in the project directory - Test coverage will be in
tests/htmlcov/index.html
Because code shouldn't look awful. We will be using isort
(import sorting), flake8
(python linter) and black
(an autoformatter) via pre-commit
.
pre-commit
streamlines creating pre-commit hooks, which are run prior to a commit being accepted by git (locally). This way, your code won't be committed if there are style issues (some of which will be automatically addressed by black
or isort
, after which you must stage any further changes).
- Install the style packages using
poetry install --with=style
- (Optional) Configure any additional pre-commit hooks in the YAML
- Run
pre-commit install
to install the hooks - To run manually, you can run
pre-commit run -a
. Alternatively, these hooks will run as you try and commit changes - (Optional) Install
black
extensions that auto-format on save in your favourite IDE
Both of these can be achieved via GitHub Actions.
Note that some testing config is specified in the pyproject.toml
.
- The workflow is located here. It is commented to give you an understanding of what it does
- Automatically runs linting and autoformatting as above
- If that passes, then runs your code tests across Mac and Ubuntu for a couple of Python versions
- If a GitHub release is created based on a Git tag, it will build the package and upload to PyPI
- To get this to work, you will need to add your PyPI username and password as GitHub secrets
- Uncomment the lines specified. This should allow the workflow to run on a push, pull-request or when manually triggered. Note that publishing to PyPI is only triggered on a release
- Activate the workflow. Do this by navigating to the Actions tab, selecting
...
and activating it.
If you've made it this far, well done. Prepare for the most tricky bit: documentation
This section is a WIP. We will add to it as we come across good resources.
Documentation is located in the docs folder.
This project uses:
- Sphinx to generate documentation. Sphinx is based on reStructuredText.
- We use several Sphinx extensions that make using Sphinx easier
- Sphinx is configured in
conf.py
- MyST, a parser which optionally lets you write your documentation using Markdown. If you know Markdown, this can reduce, but not eliminate, the need for reStructuredText.
- readthedocs to host our documentation online. You'll need to link RtD to your repo (see here). Settings can be configured in the YAML
If you make changes to your docs, successfully build it locally (see below) or on RtD and then see that no change has been made, your browser may be caching the old version of the docs. Clear your browser cache and then try again.
First, install the packages required for buildings docs using poetry install --with=docs
You can test whether your documentation builds locally by using the commands offered by the Makefile. To do this, change directory to docs
and run make
to see build options. The easiest option is make html
.
There is a fair bit to learn to be able to write docs. Even if you use MyST, you will need to learn about roles and directives.
Here are some tutorials:
flake8
is configured by .flake8pytest
,isort
andmypy
(not included) can be configured in the pyproject.toml- See relevant sections above for config for
pre-commit
,read-the-docs
and Sphinx
Interested in contributing? Check out the contributing guidelines, which also includes steps to install your_package
for development.
Please note that this project is released with a Code of Conduct. By contributing to this project, you agree to abide by its terms.
RESPCT
was created by Shayan Naderi
. It is licensed under the terms of the MIT
.
This template was created using cookiecutter
, the py-pkgs-cookiecutter
template and using Marwan Debbiche's excellent walkthrough