diff --git a/datatypes/epc/domain/mapper.py b/datatypes/epc/domain/mapper.py index e3cdde0be..842bcc689 100644 --- a/datatypes/epc/domain/mapper.py +++ b/datatypes/epc/domain/mapper.py @@ -2985,6 +2985,13 @@ class EpcPropertyDataMapper: mapped = EpcPropertyDataMapper.from_sap_schema_16_2(data) elif schema == "SAP-Schema-16.3": mapped = EpcPropertyDataMapper.from_sap_schema_16_3(data) + # CEPC family: commercial/non-domestic certs (SBEM methodology). Out of + # scope for a single-dwelling SAP engine — see `NonDomesticSchema`. + elif schema in ("CEPC-7.0", "CEPC-7.1", "CEPC-8.0.0"): + raise NonDomesticSchema( + f"{schema!r} is a commercial (non-domestic) EPC and cannot be " + "mapped to EpcPropertyData, which models a single dwelling." + ) else: raise ValueError(f"Unsupported EPC schema: {schema!r}") @@ -4229,6 +4236,20 @@ def _elmhurst_party_wall_construction_int(coded: str) -> Optional[int]: return _ELMHURST_PARTY_WALL_CODE_TO_SAP10[code] +class NonDomesticSchema(ValueError): + """The cert is a commercial/non-domestic EPC (CEPC — SBEM methodology), + not a dwelling. `EpcPropertyData` models a single-dwelling SAP/RdSAP cert + (roofs/walls/floors, sap_heating, dwelling_type, ...); a CEPC cert has no + equivalent shape (asset_rating/BER instead of a SAP score, activities/ + hvac_systems instead of building elements) so there is nothing sensible + to map it onto. Raised explicitly at the `from_api_response` dispatch + boundary — added to `datatypes/epc/schema/` samples via the + epb-data-warehouse fixtures — so callers get a clear, typed signal + rather than falling through to the generic "Unsupported EPC schema" + ValueError. + """ + + class UnmappedApiCode(ValueError): """A GOV.UK API integer enum that the mapper does not yet know how to translate to the SAP10 cascade-domain value. diff --git a/datatypes/epc/domain/tests/test_from_cepc_schema.py b/datatypes/epc/domain/tests/test_from_cepc_schema.py new file mode 100644 index 000000000..2f3ae387b --- /dev/null +++ b/datatypes/epc/domain/tests/test_from_cepc_schema.py @@ -0,0 +1,35 @@ +"""CEPC (commercial/non-domestic EPC) certs are out of scope for this +single-dwelling SAP engine — `from_api_response` must reject them explicitly +via `NonDomesticSchema` rather than falling through to the generic +"Unsupported EPC schema" `ValueError`, or silently mis-mapping SBEM fields +onto `EpcPropertyData`. + +Fixtures are the epb-data-warehouse sample CEPC certs (also mirrored at +`backend/epc_api/json_samples/CEPC-*/cepc.json`). +""" + +import json +import os +from typing import Any, Dict + +import pytest + +from datatypes.epc.domain.mapper import EpcPropertyDataMapper, NonDomesticSchema + +FIXTURES = os.path.join(os.path.dirname(__file__), "../../schema/tests/fixtures") + +_CEPC_FIXTURES = ("cepc_7_0.json", "cepc_7_1.json", "cepc_8_0_0.json") + + +def load(filename: str) -> Dict[str, Any]: + with open(os.path.join(FIXTURES, filename)) as f: + return json.load(f) # type: ignore[no-any-return] + + +class TestCepcRejected: + @pytest.mark.parametrize("fixture", _CEPC_FIXTURES) + def test_raises_non_domestic_schema(self, fixture: str) -> None: + data = load(fixture) + + with pytest.raises(NonDomesticSchema): + EpcPropertyDataMapper.from_api_response(data) diff --git a/datatypes/epc/schema/tests/fixtures/cepc_7_0.json b/datatypes/epc/schema/tests/fixtures/cepc_7_0.json new file mode 100644 index 000000000..d65c34bf5 --- /dev/null +++ b/datatypes/epc/schema/tests/fixtures/cepc_7_0.json @@ -0,0 +1,285 @@ +{ + "ber": 67.09, + "ser": 42.07, + "ter": 23.2, + "tyr": 67.98, + "uprn": 12457, + "status": "entered", + "postcode": "SW1A 2AA", + "post_town": "Whitbury", + "issue_date": "2020-05-14", + "report_type": 3, + "schema_type": "CEPC-7.0", + "uprn_source": "Energy Assessor", + "valid_until": "2026-05-04", + "asset_rating": 80, + "language_code": 1, + "property_type": "B1 Offices and Workshop businesses", + "address_line_1": "Some Unit", + "address_line_2": "2 Lonely Street", + "address_line_3": "Some Area", + "address_line_4": "Some County", + "assessment_type": "CEPC", + "inspection_date": "2020-05-04", + "ac_questionnaire": { + "ac_present": "No", + "ac_rated_output": { + "ac_kw_rating": 100 + }, + "ac_estimated_output": 3, + "ac_inspection_commissioned": 1 + }, + "calculation_tool": "Casio fx-39", + "is_heritage_site": "N", + "or_building_data": { + "hvac_system": "Yes", + "other_hvac_system": "Yes", + "internal_environment": "Yes", + "assessment_period_alignment": "Yes" + }, + "transaction_type": 1, + "or_benchmark_data": { + "benchmarks": [ + { + "floor_area": 403, + "benchmark_id": 1 + } + ] + }, + "registration_date": "2020-05-04", + "building_complexity": "Level 3", + "new_build_benchmark": 28, + "or_usable_floor_area": { + "ufa_1": { + "floor_area": 100 + } + }, + "or_energy_consumption": { + "anthracite": { + "end_date": "2030-12-25", + "estimate": 3, + "start_date": "2019-12-25", + "consumption": 12.6 + } + }, + "technical_information": { + "floor_area": 403, + "building_level": 3, + "main_heating_fuel": "Natural Gas", + "renewable_sources": "Renewable sources test", + "special_energy_uses": "Test sp", + "building_environment": "Air Conditioning", + "or_availability_date": "2020-01-04", + "other_fuel_description": "Test" + }, + "or_assessment_end_date": "2030-05-14", + "summary_of_performance": { + "building_data": [ + { + "area": 402.6, + "weather": "LON", + "activities": [ + { + "id": 1005, + "area": 402.6 + } + ], + "building_w_k": 411.86, + "hvac_systems": [ + { + "area": 402.6, + "type": "Fan coil systems", + "fuel_type": "Natural Gas", + "activities": [ + { + "id": 1005, + "area": 402.6 + } + ], + "heat_source": "LTHW boiler", + "cooling_sseer": 1.963, + "heating_sseff": 0.827, + "kwh_m2_cooling": 25.3865, + "kwh_m2_heating": 41.0355, + "cooling_gen_seer": 2.5, + "heating_gen_seff": 0.89, + "kwh_m2_auxiliary": 39.0832, + "mj_m2_cooling_dem": 179.401, + "mj_m2_heating_dem": 122.171 + } + ], + "analysis_type": "ACTUAL", + "area_exterior": 1058.32, + "building_alpha": 18.3412, + "building_w_m2k": 0.389164, + "q50_infiltration": 10, + "global_performance": { + "kwh_m2_chp": 0, + "kwh_m2_dhw": 2.77834, + "kwh_m2_lpg": 0, + "kwh_m2_oil": 0, + "kwh_m2_pvs": 3.07665, + "kwh_m2_ses": 0.801605, + "kwh_m2_coal": 0, + "kwh_m2_wind": 3.02777, + "kwh_m2_biogas": 0, + "kwh_m2_biomass": 0, + "kwh_m2_cooling": 25.3865, + "kwh_m2_heating": 41.0355, + "kwh_m2_lighting": 54.0787, + "kwh_m2_supplied": 121.327, + "kwh_m2_auxiliary": 39.0832, + "kwh_m2_displaced": 6.10442, + "kwh_m2_dual_fuel": 0, + "kwh_m2_equipment": 42.185, + "kwh_m2_smokeless": 0, + "kwh_m2_anthracite": 0, + "kwh_m2_waste_heat": 0, + "kwh_m2_natural_gas": 41.0355, + "kwh_m2_district_heating": 0 + } + }, + { + "area": 402.6, + "weather": "LON", + "activities": [ + { + "id": 1005, + "area": 402.6 + } + ], + "building_w_k": 362.524, + "hvac_systems": [ + { + "area": 402.6, + "type": "Fan coil systems", + "fuel_type": "Natural Gas", + "activities": [ + { + "id": 1005, + "area": 402.6 + } + ], + "heat_source": "LTHW boiler", + "cooling_sseer": 3.6, + "heating_sseff": 0.819, + "kwh_m2_cooling": 7.46769, + "kwh_m2_heating": 18.1581, + "cooling_gen_seer": 0, + "heating_gen_seff": 0, + "kwh_m2_auxiliary": 14.0716, + "mj_m2_cooling_dem": 96.7814, + "mj_m2_heating_dem": 53.5375 + } + ], + "analysis_type": "NOTIONAL", + "area_exterior": 1058.32, + "building_alpha": 11.2489, + "building_w_m2k": 0.342547, + "q50_infiltration": 3, + "global_performance": { + "kwh_m2_chp": 0, + "kwh_m2_dhw": 3.33761, + "kwh_m2_lpg": 0, + "kwh_m2_oil": 3.33761, + "kwh_m2_pvs": 0, + "kwh_m2_ses": 0, + "kwh_m2_coal": 0, + "kwh_m2_wind": 0, + "kwh_m2_biogas": 0, + "kwh_m2_biomass": 0, + "kwh_m2_cooling": 7.46769, + "kwh_m2_heating": 18.1582, + "kwh_m2_lighting": 14.4489, + "kwh_m2_supplied": 35.9883, + "kwh_m2_auxiliary": 14.0716, + "kwh_m2_displaced": 0, + "kwh_m2_dual_fuel": 0, + "kwh_m2_equipment": 42.185, + "kwh_m2_smokeless": 0, + "kwh_m2_anthracite": 0, + "kwh_m2_waste_heat": 0, + "kwh_m2_natural_gas": 18.1582, + "kwh_m2_district_heating": 0 + } + }, + { + "area": 402.6, + "weather": "LON", + "activities": [ + { + "id": 1005, + "area": 402.6 + } + ], + "building_w_k": 718.761, + "hvac_systems": [ + { + "area": 402.6, + "type": "Fan coil systems", + "fuel_type": "Natural Gas", + "activities": [ + { + "id": 1005, + "area": 402.6 + } + ], + "heat_source": "LTHW boiler", + "cooling_sseer": 2.25, + "heating_sseff": 0.73, + "kwh_m2_cooling": 25.6538, + "kwh_m2_heating": 71.9516, + "cooling_gen_seer": 0, + "heating_gen_seff": 0, + "kwh_m2_auxiliary": 2.16062, + "mj_m2_cooling_dem": 207.795, + "mj_m2_heating_dem": 189.088 + } + ], + "analysis_type": "REFERENCE", + "area_exterior": 1058.32, + "building_alpha": 10, + "building_w_m2k": 0.679153, + "q50_infiltration": 10, + "global_performance": { + "kwh_m2_chp": 0, + "kwh_m2_dhw": 6.41192, + "kwh_m2_lpg": 0, + "kwh_m2_oil": 0, + "kwh_m2_pvs": 0, + "kwh_m2_ses": 0, + "kwh_m2_coal": 0, + "kwh_m2_wind": 0, + "kwh_m2_biogas": 0, + "kwh_m2_biomass": 0, + "kwh_m2_cooling": 25.6538, + "kwh_m2_heating": 71.9516, + "kwh_m2_lighting": 45.54, + "kwh_m2_supplied": 73.3544, + "kwh_m2_auxiliary": 2.16062, + "kwh_m2_displaced": 0, + "kwh_m2_dual_fuel": 0, + "kwh_m2_equipment": 42.185, + "kwh_m2_smokeless": 0, + "kwh_m2_anthracite": 0, + "kwh_m2_waste_heat": 0, + "kwh_m2_natural_gas": 78.3634, + "kwh_m2_district_heating": 0 + } + } + ] + }, + "renewable_energy_source": [ + { + "name": "Solar panel", + "end_date": "2030-12-25", + "generation": 20, + "start_date": "2019-12-25", + "energy_type": 2 + } + ], + "existing_stock_benchmark": 81, + "or_assessment_start_date": "2020-05-14", + "related_certificate_number": "4192-1535-8427-8844-6702", + "current_energy_efficiency_band": "D" +} \ No newline at end of file diff --git a/datatypes/epc/schema/tests/fixtures/cepc_7_1.json b/datatypes/epc/schema/tests/fixtures/cepc_7_1.json new file mode 100644 index 000000000..f89954e68 --- /dev/null +++ b/datatypes/epc/schema/tests/fixtures/cepc_7_1.json @@ -0,0 +1,288 @@ +{ + "ber": 67.09, + "ser": 42.07, + "ter": 23.2, + "tyr": 67.98, + "uprn": 12457, + "status": "entered", + "postcode": "BT4 3SR", + "post_town": "Whitbury", + "energy_use": { + "energy_consumption_current": 413.22 + }, + "issue_date": "2020-05-14", + "report_type": 3, + "schema_type": "CEPC-7.1", + "uprn_source": "Energy Assessor", + "valid_until": "2026-05-04", + "asset_rating": 80, + "language_code": 1, + "property_type": "B1 Offices and Workshop businesses", + "address_line_1": "Some Unit", + "address_line_2": "2 Lonely Street", + "address_line_3": "Some Area", + "address_line_4": "Some County", + "assessment_type": "CEPC", + "inspection_date": "2020-05-04", + "ac_questionnaire": { + "ac_present": "No", + "ac_rated_output": { + "ac_kw_rating": 100 + }, + "ac_estimated_output": 3, + "ac_inspection_commissioned": 1 + }, + "calculation_tool": "Casio fx-39", + "is_heritage_site": "N", + "or_building_data": { + "hvac_system": "Yes", + "other_hvac_system": "Yes", + "internal_environment": "Yes", + "assessment_period_alignment": "Yes" + }, + "transaction_type": 1, + "or_benchmark_data": { + "benchmarks": [ + { + "floor_area": 403, + "benchmark_id": 1 + } + ] + }, + "registration_date": "2020-05-04", + "building_complexity": "Level 3", + "new_build_benchmark": 28, + "or_usable_floor_area": { + "ufa_1": { + "floor_area": 100 + } + }, + "or_energy_consumption": { + "anthracite": { + "end_date": "2030-12-25", + "estimate": 3, + "start_date": "2019-12-25", + "consumption": 12.6 + } + }, + "technical_information": { + "floor_area": 403, + "building_level": 3, + "main_heating_fuel": "Natural Gas", + "renewable_sources": "Renewable sources test", + "special_energy_uses": "Test sp", + "building_environment": "Air Conditioning", + "or_availability_date": "2020-01-04", + "other_fuel_description": "Test" + }, + "or_assessment_end_date": "2030-05-14", + "summary_of_performance": { + "building_data": [ + { + "area": 402.6, + "weather": "LON", + "activities": [ + { + "id": 1005, + "area": 402.6 + } + ], + "building_w_k": 411.86, + "hvac_systems": [ + { + "area": 402.6, + "type": "Fan coil systems", + "fuel_type": "Natural Gas", + "activities": [ + { + "id": 1005, + "area": 402.6 + } + ], + "heat_source": "LTHW boiler", + "cooling_sseer": 1.963, + "heating_sseff": 0.827, + "kwh_m2_cooling": 25.3865, + "kwh_m2_heating": 41.0355, + "cooling_gen_seer": 2.5, + "heating_gen_seff": 0.89, + "kwh_m2_auxiliary": 39.0832, + "mj_m2_cooling_dem": 179.401, + "mj_m2_heating_dem": 122.171 + } + ], + "analysis_type": "ACTUAL", + "area_exterior": 1058.32, + "building_alpha": 18.3412, + "building_w_m2k": 0.389164, + "q50_infiltration": 10, + "global_performance": { + "kwh_m2_chp": 0, + "kwh_m2_dhw": 2.77834, + "kwh_m2_lpg": 0, + "kwh_m2_oil": 0, + "kwh_m2_pvs": 3.07665, + "kwh_m2_ses": 0.801605, + "kwh_m2_coal": 0, + "kwh_m2_wind": 3.02777, + "kwh_m2_biogas": 0, + "kwh_m2_biomass": 0, + "kwh_m2_cooling": 25.3865, + "kwh_m2_heating": 41.0355, + "kwh_m2_lighting": 54.0787, + "kwh_m2_supplied": 121.327, + "kwh_m2_auxiliary": 39.0832, + "kwh_m2_displaced": 6.10442, + "kwh_m2_dual_fuel": 0, + "kwh_m2_equipment": 42.185, + "kwh_m2_smokeless": 0, + "kwh_m2_anthracite": 0, + "kwh_m2_waste_heat": 0, + "kwh_m2_natural_gas": 41.0355, + "kwh_m2_district_heating": 0 + } + }, + { + "area": 402.6, + "weather": "LON", + "activities": [ + { + "id": 1005, + "area": 402.6 + } + ], + "building_w_k": 362.524, + "hvac_systems": [ + { + "area": 402.6, + "type": "Fan coil systems", + "fuel_type": "Natural Gas", + "activities": [ + { + "id": 1005, + "area": 402.6 + } + ], + "heat_source": "LTHW boiler", + "cooling_sseer": 3.6, + "heating_sseff": 0.819, + "kwh_m2_cooling": 7.46769, + "kwh_m2_heating": 18.1581, + "cooling_gen_seer": 0, + "heating_gen_seff": 0, + "kwh_m2_auxiliary": 14.0716, + "mj_m2_cooling_dem": 96.7814, + "mj_m2_heating_dem": 53.5375 + } + ], + "analysis_type": "NOTIONAL", + "area_exterior": 1058.32, + "building_alpha": 11.2489, + "building_w_m2k": 0.342547, + "q50_infiltration": 3, + "global_performance": { + "kwh_m2_chp": 0, + "kwh_m2_dhw": 3.33761, + "kwh_m2_lpg": 0, + "kwh_m2_oil": 3.33761, + "kwh_m2_pvs": 0, + "kwh_m2_ses": 0, + "kwh_m2_coal": 0, + "kwh_m2_wind": 0, + "kwh_m2_biogas": 0, + "kwh_m2_biomass": 0, + "kwh_m2_cooling": 7.46769, + "kwh_m2_heating": 18.1582, + "kwh_m2_lighting": 14.4489, + "kwh_m2_supplied": 35.9883, + "kwh_m2_auxiliary": 14.0716, + "kwh_m2_displaced": 0, + "kwh_m2_dual_fuel": 0, + "kwh_m2_equipment": 42.185, + "kwh_m2_smokeless": 0, + "kwh_m2_anthracite": 0, + "kwh_m2_waste_heat": 0, + "kwh_m2_natural_gas": 18.1582, + "kwh_m2_district_heating": 0 + } + }, + { + "area": 402.6, + "weather": "LON", + "activities": [ + { + "id": 1005, + "area": 402.6 + } + ], + "building_w_k": 718.761, + "hvac_systems": [ + { + "area": 402.6, + "type": "Fan coil systems", + "fuel_type": "Natural Gas", + "activities": [ + { + "id": 1005, + "area": 402.6 + } + ], + "heat_source": "LTHW boiler", + "cooling_sseer": 2.25, + "heating_sseff": 0.73, + "kwh_m2_cooling": 25.6538, + "kwh_m2_heating": 71.9516, + "cooling_gen_seer": 0, + "heating_gen_seff": 0, + "kwh_m2_auxiliary": 2.16062, + "mj_m2_cooling_dem": 207.795, + "mj_m2_heating_dem": 189.088 + } + ], + "analysis_type": "REFERENCE", + "area_exterior": 1058.32, + "building_alpha": 10, + "building_w_m2k": 0.679153, + "q50_infiltration": 10, + "global_performance": { + "kwh_m2_chp": 0, + "kwh_m2_dhw": 6.41192, + "kwh_m2_lpg": 0, + "kwh_m2_oil": 0, + "kwh_m2_pvs": 0, + "kwh_m2_ses": 0, + "kwh_m2_coal": 0, + "kwh_m2_wind": 0, + "kwh_m2_biogas": 0, + "kwh_m2_biomass": 0, + "kwh_m2_cooling": 25.6538, + "kwh_m2_heating": 71.9516, + "kwh_m2_lighting": 45.54, + "kwh_m2_supplied": 73.3544, + "kwh_m2_auxiliary": 2.16062, + "kwh_m2_displaced": 0, + "kwh_m2_dual_fuel": 0, + "kwh_m2_equipment": 42.185, + "kwh_m2_smokeless": 0, + "kwh_m2_anthracite": 0, + "kwh_m2_waste_heat": 0, + "kwh_m2_natural_gas": 78.3634, + "kwh_m2_district_heating": 0 + } + } + ] + }, + "renewable_energy_source": [ + { + "name": "Solar panel", + "end_date": "2030-12-25", + "generation": 20, + "start_date": "2019-12-25", + "energy_type": 2 + } + ], + "existing_stock_benchmark": 81, + "or_assessment_start_date": "2020-05-14", + "related_certificate_number": "4192-1535-8427-8844-6702", + "current_energy_efficiency_band": "D" +} \ No newline at end of file diff --git a/datatypes/epc/schema/tests/fixtures/cepc_8_0_0.json b/datatypes/epc/schema/tests/fixtures/cepc_8_0_0.json new file mode 100644 index 000000000..ec747ee76 --- /dev/null +++ b/datatypes/epc/schema/tests/fixtures/cepc_8_0_0.json @@ -0,0 +1,334 @@ +{ + "ber": 76.29, + "ser": 45.61, + "ter": 31.05, + "tyr": 90.98, + "uprn": 12457, + "status": "entered", + "postcode": "NE0 0AA", + "post_town": "Big Rock", + "energy_use": { + "energy_consumption_current": 451.27 + }, + "issue_date": "2021-03-19", + "methodology": "SBEM", + "report_type": 3, + "schema_type": "CEPC-8.0.0", + "uprn_source": "Energy Assessor", + "valid_until": "2031-03-18", + "asset_rating": 84, + "language_code": 1, + "output_engine": "EPCgen, v5.6.b.0", + "property_type": "A1/A2 Retail and Financial/Professional services", + "address_line_1": "60 Maple Syrup Road", + "address_line_2": "Candy Mountain", + "assessment_type": "CEPC", + "inspection_date": "2021-03-19", + "inspection_type": "Physical", + "ac_questionnaire": { + "ac_present": "No", + "ac_rated_output": { + "ac_kw_rating": 100, + "ac_rating_unknown_flag": 0 + }, + "ac_estimated_output": 3, + "ac_inspection_commissioned": 4 + }, + "calculation_tool": "G-ISBEM Ltd, G-ISBEM, v24.0, SBEM, v5.6.b.0", + "is_heritage_site": "N", + "transaction_type": 1, + "registration_date": "2021-03-19", + "building_complexity": "Level 3", + "new_build_benchmark": 34, + "technical_information": { + "floor_area": 951, + "building_level": 3, + "main_heating_fuel": "Grid Supplied Electricity", + "renewable_sources": "Renewable sources test", + "special_energy_uses": "Test sp", + "building_environment": "Air Conditioning", + "other_fuel_description": "Other fuel test" + }, + "summary_of_performance": { + "building_data": [ + { + "area": 951.34, + "weather": "NEW", + "activities": [ + { + "id": 1067, + "area": 81.32 + }, + { + "id": 1070, + "area": 13.9 + }, + { + "id": 1074, + "area": 258.42 + }, + { + "id": 1078, + "area": 76.99 + }, + { + "id": 1071, + "area": 490.62 + }, + { + "id": 1077, + "area": 30.09 + } + ], + "building_w_k": 193.204, + "hvac_systems": [ + { + "area": 353.64, + "type": "No Heating or Cooling", + "fuel_type": "Natural Gas", + "activities": [ + { + "id": 1067, + "area": 81.32 + }, + { + "id": 1070, + "area": 13.9 + }, + { + "id": 1074, + "area": 258.42 + } + ], + "heat_source": "LTHW boiler", + "cooling_sseer": 0, + "heating_sseff": 0, + "kwh_m2_cooling": 0, + "kwh_m2_heating": 0, + "cooling_gen_seer": 0, + "heating_gen_seff": 0, + "kwh_m2_auxiliary": 0, + "mj_m2_cooling_dem": 13.1255, + "mj_m2_heating_dem": 71.1616 + }, + { + "area": 567.61, + "type": "Split or multi-split system", + "fuel_type": "Natural Gas", + "activities": [ + { + "id": 1078, + "area": 76.99 + }, + { + "id": 1071, + "area": 490.62 + } + ], + "heat_source": "LTHW boiler", + "cooling_sseer": 2.25, + "heating_sseff": 0.73, + "kwh_m2_cooling": 49.5997, + "kwh_m2_heating": 6.49072, + "cooling_gen_seer": 0, + "heating_gen_seff": 0, + "kwh_m2_auxiliary": 2.47934, + "mj_m2_cooling_dem": 401.756, + "mj_m2_heating_dem": 17.0576 + }, + { + "area": 30.09, + "type": "Other local room heater - unfanned", + "fuel_type": "Natural Gas", + "activities": [ + { + "id": 1077, + "area": 30.09 + } + ], + "heat_source": "LTHW boiler", + "cooling_sseer": 2.25, + "heating_sseff": 0.73, + "kwh_m2_cooling": 25.4056, + "kwh_m2_heating": 84.553, + "cooling_gen_seer": 0, + "heating_gen_seff": 0, + "kwh_m2_auxiliary": 12.1545, + "mj_m2_cooling_dem": 205.785, + "mj_m2_heating_dem": 222.205 + } + ], + "analysis_type": "REFERENCE", + "area_exterior": 509.17, + "building_alpha": 10, + "building_w_m2k": 0.379449, + "q50_infiltration": 10, + "global_performance": { + "kwh_m2_chp": 0, + "kwh_m2_dhw": 2.7961, + "kwh_m2_lpg": 0, + "kwh_m2_oil": 0, + "kwh_m2_pvs": 0, + "kwh_m2_ses": 0, + "kwh_m2_coal": 0, + "kwh_m2_wind": 0, + "kwh_m2_biogas": 0, + "kwh_m2_biomass": 0, + "kwh_m2_cooling": 30.3968, + "kwh_m2_heating": 6.54699, + "kwh_m2_lighting": 78.7393, + "kwh_m2_supplied": 110.999, + "kwh_m2_auxiliary": 1.86372, + "kwh_m2_displaced": 0, + "kwh_m2_dual_fuel": 0, + "kwh_m2_equipment": 19.5261, + "kwh_m2_smokeless": 0, + "kwh_m2_anthracite": 0, + "kwh_m2_waste_heat": 0, + "kwh_m2_natural_gas": 9.34308, + "kwh_m2_district_heating": 0 + } + }, + { + "area": 951.34, + "weather": "NEW", + "activities": [ + { + "id": 1067, + "area": 81.32 + }, + { + "id": 1070, + "area": 13.9 + }, + { + "id": 1074, + "area": 258.42 + }, + { + "id": 1078, + "area": 76.99 + }, + { + "id": 1071, + "area": 490.62 + }, + { + "id": 1077, + "area": 30.09 + } + ], + "building_w_k": 193.204, + "hvac_systems": [ + { + "area": 353.64, + "type": "No Heating or Cooling", + "fuel_type": "Natural Gas", + "activities": [ + { + "id": 1067, + "area": 81.32 + }, + { + "id": 1070, + "area": 13.9 + }, + { + "id": 1074, + "area": 258.42 + } + ], + "heat_source": "LTHW boiler", + "cooling_sseer": 0, + "heating_sseff": 0, + "kwh_m2_cooling": 0, + "kwh_m2_heating": 0, + "cooling_gen_seer": 0, + "heating_gen_seff": 0, + "kwh_m2_auxiliary": 0, + "mj_m2_cooling_dem": 13.1255, + "mj_m2_heating_dem": 71.1616 + }, + { + "area": 567.61, + "type": "Split or multi-split system", + "fuel_type": "Natural Gas", + "activities": [ + { + "id": 1078, + "area": 76.99 + }, + { + "id": 1071, + "area": 490.62 + } + ], + "heat_source": "LTHW boiler", + "cooling_sseer": 2.25, + "heating_sseff": 0.73, + "kwh_m2_cooling": 49.5997, + "kwh_m2_heating": 6.49072, + "cooling_gen_seer": 0, + "heating_gen_seff": 0, + "kwh_m2_auxiliary": 2.47934, + "mj_m2_cooling_dem": 401.756, + "mj_m2_heating_dem": 17.0576 + }, + { + "area": 30.09, + "type": "Other local room heater - unfanned", + "fuel_type": "Natural Gas", + "activities": [ + { + "id": 1077, + "area": 30.09 + } + ], + "heat_source": "LTHW boiler", + "cooling_sseer": 2.25, + "heating_sseff": 0.73, + "kwh_m2_cooling": 25.4056, + "kwh_m2_heating": 84.553, + "cooling_gen_seer": 0, + "heating_gen_seff": 0, + "kwh_m2_auxiliary": 12.1545, + "mj_m2_cooling_dem": 205.785, + "mj_m2_heating_dem": 222.205 + } + ], + "analysis_type": "ACTUAL", + "area_exterior": 509.17, + "building_alpha": 10, + "building_w_m2k": 0.379449, + "q50_infiltration": 10, + "global_performance": { + "kwh_m2_chp": 0, + "kwh_m2_dhw": 2.7961, + "kwh_m2_lpg": 0, + "kwh_m2_oil": 0, + "kwh_m2_pvs": 0, + "kwh_m2_ses": 0, + "kwh_m2_coal": 0, + "kwh_m2_wind": 0, + "kwh_m2_biogas": 0, + "kwh_m2_biomass": 0, + "kwh_m2_cooling": 30.3968, + "kwh_m2_heating": 6.54699, + "kwh_m2_lighting": 78.7393, + "kwh_m2_supplied": 110.999, + "kwh_m2_auxiliary": 1.86372, + "kwh_m2_displaced": 0, + "kwh_m2_dual_fuel": 0, + "kwh_m2_equipment": 19.5261, + "kwh_m2_smokeless": 0, + "kwh_m2_anthracite": 0, + "kwh_m2_waste_heat": 0, + "kwh_m2_natural_gas": 9.34308, + "kwh_m2_district_heating": 0 + } + } + ] + }, + "existing_stock_benchmark": 100, + "current_energy_efficiency_band": "D" +} \ No newline at end of file