From 00f3a175faafb8b39d7dd9e5dcd631bc926c6c94 Mon Sep 17 00:00:00 2001 From: Khalim Conn-Kowlessar Date: Thu, 5 Sep 2024 14:10:57 +0100 Subject: [PATCH] Added trickle vents recommendation --- recommendations/Recommendations.py | 4 ++ recommendations/VentilationRecommendations.py | 39 +++++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/recommendations/Recommendations.py b/recommendations/Recommendations.py index d48cf6ed..d910ddfe 100644 --- a/recommendations/Recommendations.py +++ b/recommendations/Recommendations.py @@ -131,6 +131,10 @@ class Recommendations: if self.ventilation_recomender.recommendation: property_recommendations.append(self.ventilation_recomender.recommendation) + if "trickle_vents" in measures: + # This is a recommendatin that typically comes from an energy assessment + property_recommendations.append(self.ventilation_recomender.recommend_trickle_vents()) + if "floor_insulation" in measures: self.floor_recommender.recommend(phase=phase, measures=measures) if self.floor_recommender.recommendations: diff --git a/recommendations/VentilationRecommendations.py b/recommendations/VentilationRecommendations.py index 1120654a..31119168 100644 --- a/recommendations/VentilationRecommendations.py +++ b/recommendations/VentilationRecommendations.py @@ -81,3 +81,42 @@ class VentilationRecommendations(Definitions): "labour_days": labour_days # Assume 8 hour day } ] + + def recommend_trickle_vents(self): + """ + This is not something that we can identify completely non-invasively, however a recommendation which may come + about as a result of an energy assessment is the installation of trickle vents. This function handles that + """ + + trickle_vents_recommendation_config = [ + r for r in self.property.non_invasive_recommendations if r["type"] == "trickle_vents" + ][0] + + description = ( + "Install trickle vents to windows without them" if + not trickle_vents_recommendation_config.get("description") + else trickle_vents_recommendation_config["description"] + ) + + # We recommend installing two mechanical ventilation systems + self.recommendation = [ + { + "phase": None, + "parts": [], + "type": "trickle_vents", + "description": description, + "starting_u_value": None, + "new_u_value": None, + "already_installed": False, + "sap_points": trickle_vents_recommendation_config["sap_points"], + "heat_demand": 0, + "kwh_savings": 0, + "co2_equivalent_savings": 0, + "energy_cost_savings": 0, + "total": trickle_vents_recommendation_config["cost"], + # We use a very simple and rough estimate of 4 hours per unit + "labour_hours": trickle_vents_recommendation_config.get("labour_hours", 8), + "labour_days": trickle_vents_recommendation_config.get("labour_days", 1), # Assume 8 hour day + "survey": True + } + ]