mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
removed electric boiler rec
This commit is contained in:
parent
36718ab3be
commit
c112d23c67
3 changed files with 91 additions and 4 deletions
|
|
@ -92,6 +92,12 @@ CONDENSING_BOILER_COSTS = {
|
|||
"40kw": 1625
|
||||
}
|
||||
|
||||
# Electric boiler prices base on
|
||||
# https://www.greenmatch.co.uk/boilers/combi-boilers/electric-combi-boilers
|
||||
# https://www.tlc-direct.co.uk/Products/ERMAC15.html
|
||||
# The unit is a 15kw boiler, capable of outputting between 3kw and 15kw. Costs seem to be around £1800
|
||||
ELECTRIC_BOILER_COSTS = 1800
|
||||
|
||||
# Assumes 3 hours to remove each heater (including re-decorating)
|
||||
ROOM_HEATER_REMOVAL_COST = 120
|
||||
ROOM_HEATER_REMOVAL_LABOUR_HOURS = 3
|
||||
|
|
@ -1285,7 +1291,7 @@ class Costs:
|
|||
estimated_radiators = max(total_radiators_based_on_power, base_radiators + additional_radiators)
|
||||
return round(estimated_radiators)
|
||||
|
||||
def boiler(self, 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, is_electric=False):
|
||||
"""
|
||||
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:
|
||||
|
|
@ -1293,7 +1299,10 @@ class Costs:
|
|||
:return:
|
||||
"""
|
||||
|
||||
unit_cost = CONDENSING_BOILER_COSTS[size]
|
||||
if not is_electric:
|
||||
unit_cost = CONDENSING_BOILER_COSTS[size]
|
||||
else:
|
||||
unit_cost = ELECTRIC_BOILER_COSTS
|
||||
# The unit cost is the cost without VAT
|
||||
# We now need to estimate the cost of the works
|
||||
labour_days = 2
|
||||
|
|
@ -1307,8 +1316,6 @@ class Costs:
|
|||
# Add contingency and preliminaries
|
||||
labour_cost = labour_cost * (1 + self.CONTINGENCY + self.PRELIMINARIES)
|
||||
|
||||
# labour_days = labour_days + (removal_labour_hours / 8)
|
||||
|
||||
vat = labour_cost * self.VAT_RATE
|
||||
|
||||
subtotal_before_vat = unit_cost + labour_cost
|
||||
|
|
|
|||
|
|
@ -35,6 +35,10 @@ class HeatingControlRecommender:
|
|||
|
||||
return
|
||||
|
||||
if heating_description in ["Boiler and radiators, electric"]:
|
||||
self.recommend_roomstat_programmer_trvs()
|
||||
return
|
||||
|
||||
if heating_description in ["Air source heat pump, radiators, electric"]:
|
||||
self.recommend_time_temperature_zone_controls()
|
||||
|
||||
|
|
|
|||
|
|
@ -119,6 +119,69 @@ class HeatingRecommender:
|
|||
|
||||
return
|
||||
|
||||
def recommend_electric_boiler_upgrade(self, phase):
|
||||
|
||||
# Small initial scope, just handles the case of properties that have electric boilers where the efficiency
|
||||
# is poor or very poor
|
||||
# We recommend upgrading to a new electric boiler
|
||||
|
||||
recommendation_phase = phase
|
||||
|
||||
if self.property.data["mainheat-energy-eff"] not in ["Poor", "Very Poor"]:
|
||||
return
|
||||
|
||||
hotwater_from_mains = self.property.hotwater["clean_description"] in ["From main system"]
|
||||
hotwater_from_cylinder = self.property.hotwater["clean_description"] in [
|
||||
"From main system, no cylinder thermostat"
|
||||
]
|
||||
# if the hotwater is from the mains, we probably have a combi boiler so we recommend a new electric boiler
|
||||
|
||||
if hotwater_from_mains:
|
||||
description = f"Upgrade to a higher efficiency electric boiler"
|
||||
|
||||
simulation_config = {
|
||||
"mainheat_energy_eff_ending": "Average",
|
||||
"hot_water_energy_eff_ending": "Average"
|
||||
}
|
||||
|
||||
boiler_costs = self.costs.boiler(
|
||||
size=None,
|
||||
exising_room_heaters=False,
|
||||
system_change=False,
|
||||
n_heated_rooms=self.property.data["number-heated-rooms"],
|
||||
n_rooms=self.property.number_of_rooms,
|
||||
is_electric=True
|
||||
)
|
||||
|
||||
already_installed = "heating" in self.property.already_installed
|
||||
if already_installed:
|
||||
boiler_costs = override_costs(boiler_costs)
|
||||
description = "Heating system has already been upgraded, no further action needed."
|
||||
|
||||
boiler_recommendation = {
|
||||
"phase": recommendation_phase,
|
||||
"parts": [],
|
||||
"type": "heating",
|
||||
"description": description,
|
||||
"starting_u_value": None,
|
||||
"new_u_value": None,
|
||||
"sap_points": None,
|
||||
"already_installed": already_installed,
|
||||
"simulation_config": simulation_config,
|
||||
**boiler_costs
|
||||
}
|
||||
|
||||
controls_recommender = HeatingControlRecommender(self.property)
|
||||
controls_recommender.recommend(heating_description="Boiler and radiators, electric")
|
||||
|
||||
self.heating_recommendations.extend([boiler_recommendation] + controls_recommender.recommendation)
|
||||
return
|
||||
|
||||
if hotwater_from_cylinder:
|
||||
# We recommend a change from a system boiler, with a cylinder to a combi boiler
|
||||
description = ("Replace the existing boiler and cylinder without a thermostat with a new electric combi "
|
||||
"boiler")
|
||||
|
||||
def is_ashp_valid(self):
|
||||
suitable_property_type = self.property.data["property-type"] in ["House", "Bungalow"]
|
||||
has_air_source_heat_pump = self.property.main_heating["has_air_source_heat_pump"]
|
||||
|
|
@ -458,6 +521,19 @@ class HeatingRecommender:
|
|||
|
||||
return closest_size
|
||||
|
||||
@staticmethod
|
||||
def estimate_electric_boiler_size(num_heated_rooms):
|
||||
"""
|
||||
We use the approach similar to as defined in
|
||||
https://www.greenmatch.co.uk/boilers/combi-boilers/electric-combi-boilers
|
||||
Instead of radiators as a proxy, we do the number of heated rooms
|
||||
|
||||
:param num_heated_rooms: The number of heated rooms in the property
|
||||
:return:
|
||||
"""
|
||||
|
||||
return max(num_heated_rooms * 1.5, 6)
|
||||
|
||||
def recommend_boiler_upgrades(self, phase, system_change, exising_room_heaters):
|
||||
"""
|
||||
This boiler recommendation will only recommend a like-for-like upgrade, since changing the system
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue