mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-30 13:10:47 +00:00
Added boiler upgrade recommendation
This commit is contained in:
parent
db25860615
commit
3593b7ae9e
3 changed files with 20 additions and 28 deletions
|
|
@ -34,8 +34,9 @@ def app():
|
||||||
low_memory=False
|
low_memory=False
|
||||||
)
|
)
|
||||||
|
|
||||||
z = epc_data.groupby(["WALLS_DESCRIPTION", "WALLS_ENERGY_EFF"]).size().reset_index(name="count")
|
z = epc_data[epc_data["MAINHEAT_DESCRIPTION"] == "Boiler and radiators, mains gas"]
|
||||||
z = z[z["MAINHEAT_DESCRIPTION"] == "Boiler and radiators, mains gas"]
|
z["HOTWATER_DESCRIPTION"].value_counts()
|
||||||
|
z["MAIN_FUEL"].value_counts()
|
||||||
|
|
||||||
# Filter on entries where we have a UPRN
|
# Filter on entries where we have a UPRN
|
||||||
epc_data = epc_data[~pd.isnull(epc_data["UPRN"])]
|
epc_data = epc_data[~pd.isnull(epc_data["UPRN"])]
|
||||||
|
|
|
||||||
|
|
@ -67,18 +67,12 @@ LOW_CARBON_COMBI_BOILER = 2200
|
||||||
# https://www.greenmatch.co.uk/boilers/35kw-boiler
|
# https://www.greenmatch.co.uk/boilers/35kw-boiler
|
||||||
# https://www.greenmatch.co.uk/boilers/40kw-boiler
|
# https://www.greenmatch.co.uk/boilers/40kw-boiler
|
||||||
# These are exclusive of installation costs
|
# These are exclusive of installation costs
|
||||||
COMBI_BOILER_COSTS = {
|
CONDENSING_BOILER_COSTS = {
|
||||||
"30kw": 1550,
|
"30kw": 1550,
|
||||||
"35kw": 1610,
|
"35kw": 1610,
|
||||||
"40kw": 1625
|
"40kw": 1625
|
||||||
}
|
}
|
||||||
|
|
||||||
CONVENTIONAL_BOILER_COSTS = {
|
|
||||||
"30kw": 1117,
|
|
||||||
"35kw": 1546,
|
|
||||||
"40kw": 1776
|
|
||||||
}
|
|
||||||
|
|
||||||
# Assumes 3 hours to remove each heater (including re-decorating)
|
# Assumes 3 hours to remove each heater (including re-decorating)
|
||||||
ROOM_HEATER_REMOVAL_COST = 120
|
ROOM_HEATER_REMOVAL_COST = 120
|
||||||
ROOM_HEATER_REMOVAL_LABOUR_HOURS = 3
|
ROOM_HEATER_REMOVAL_LABOUR_HOURS = 3
|
||||||
|
|
@ -1179,7 +1173,7 @@ class Costs:
|
||||||
estimated_radiators = max(total_radiators_based_on_power, base_radiators + additional_radiators)
|
estimated_radiators = max(total_radiators_based_on_power, base_radiators + additional_radiators)
|
||||||
return round(estimated_radiators)
|
return round(estimated_radiators)
|
||||||
|
|
||||||
def boiler(self, is_combi, size, exising_room_heaters, system_change, n_heated_rooms, n_rooms):
|
def boiler(self, size, exising_room_heaters, system_change, n_heated_rooms, n_rooms):
|
||||||
"""
|
"""
|
||||||
Based on a basic estimate of median value £2600 to install a low carbon combi boiler
|
Based on a basic estimate of median value £2600 to install a low carbon combi boiler
|
||||||
First time central heating vosts can als be found here:
|
First time central heating vosts can als be found here:
|
||||||
|
|
@ -1187,7 +1181,7 @@ class Costs:
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
|
|
||||||
unit_cost = COMBI_BOILER_COSTS[size] if is_combi else CONVENTIONAL_BOILER_COSTS[size]
|
unit_cost = CONDENSING_BOILER_COSTS[size]
|
||||||
# The unit cost is the cost without VAT
|
# The unit cost is the cost without VAT
|
||||||
# We now need to estimate the cost of the works
|
# We now need to estimate the cost of the works
|
||||||
labour_days = 2
|
labour_days = 2
|
||||||
|
|
|
||||||
|
|
@ -312,7 +312,15 @@ class HeatingRecommender:
|
||||||
simulation_config = {}
|
simulation_config = {}
|
||||||
boiler_costs = {}
|
boiler_costs = {}
|
||||||
boiler_recommendation = {}
|
boiler_recommendation = {}
|
||||||
if self.property.data["mainheat-energy-eff"] in ["Very Poor", "Poor", "Average"]:
|
|
||||||
|
has_inefficient_space_heating = self.property.data["mainheat-energy-eff"] in ["Very Poor", "Poor", "Average"]
|
||||||
|
|
||||||
|
has_inefficient_mains_water = (
|
||||||
|
self.property.hotwater["clean_description"] in ["From main system"] and
|
||||||
|
self.property.data["hot-water-energy-eff"] in ["Very Poor", "Poor", "Average"]
|
||||||
|
)
|
||||||
|
|
||||||
|
if has_inefficient_space_heating or has_inefficient_mains_water:
|
||||||
boiler_size = self.estimate_boiler_size(
|
boiler_size = self.estimate_boiler_size(
|
||||||
property_type=self.property.data["property-type"],
|
property_type=self.property.data["property-type"],
|
||||||
built_form=self.property.data["built-form"],
|
built_form=self.property.data["built-form"],
|
||||||
|
|
@ -321,22 +329,12 @@ class HeatingRecommender:
|
||||||
num_heated_rooms=self.property.data["number-heated-rooms"],
|
num_heated_rooms=self.property.data["number-heated-rooms"],
|
||||||
)
|
)
|
||||||
|
|
||||||
# We recommend a combi boiler under the following conditions
|
description = "Upgrade to a new condensing boiler"
|
||||||
# 1) If there are 4 or fewer rooms (we don't use heqted rooms because none of the rooms could be
|
|
||||||
# heated if there is no existing heating system).
|
|
||||||
# 2) There 1 or fewer bathrooms
|
|
||||||
# Otherwise, we recommend a gas condensing boiler, which will server a larger property, that has multiple
|
|
||||||
# bathrooms
|
|
||||||
is_combi = (
|
|
||||||
(self.property.number_of_rooms <= 4) and
|
|
||||||
(self.property.n_bathrooms in [None, 0, 1])
|
|
||||||
)
|
|
||||||
if is_combi:
|
|
||||||
description = "Upgrade to a new combi boiler"
|
|
||||||
else:
|
|
||||||
description = "Upgrade to a new gas condensing boiler"
|
|
||||||
|
|
||||||
simulation_config = {"mainheat_energy_eff_ending": "Good"}
|
simulation_config = {
|
||||||
|
"mainheat_energy_eff_ending": "Good",
|
||||||
|
"hot_water_energy_eff_ending": "Good"
|
||||||
|
}
|
||||||
if system_change:
|
if system_change:
|
||||||
# Installation of a boiler improves the hot water system so we need to reflect this in
|
# Installation of a boiler improves the hot water system so we need to reflect this in
|
||||||
# the outcome of the recommendation
|
# the outcome of the recommendation
|
||||||
|
|
@ -363,7 +361,6 @@ class HeatingRecommender:
|
||||||
}
|
}
|
||||||
|
|
||||||
boiler_costs = self.costs.boiler(
|
boiler_costs = self.costs.boiler(
|
||||||
is_combi=is_combi,
|
|
||||||
size=f"{boiler_size}kw",
|
size=f"{boiler_size}kw",
|
||||||
exising_room_heaters=exising_room_heaters,
|
exising_room_heaters=exising_room_heaters,
|
||||||
system_change=system_change,
|
system_change=system_change,
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue