Merge pull request #1531 from Hestia-Homes/fix/sap-schema-15-0-mapper

Map SAP-Schema-15.0 certs (LIG-lodged, 2011-era reduced-field RdSAP shape)
This commit is contained in:
Jun-te Kim 2026-07-10 11:10:40 +01:00 committed by GitHub
commit 066cac8cb1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
31 changed files with 6456 additions and 0 deletions

View file

@ -385,3 +385,41 @@ Skip the 🚩 MVHR / 🚩 heat-pump-fuel and ⛔ sparse certs.
- [⚠] 10090343767 — SAP-17.0 · eng 79 / lodged 91 · 🚩 MVHR idx 500352 not credited (flagged)
- [ ] 10090845805 — SAP-17.0 · eng 82 / lodged 87
- [ ] 10013924858 — SAP-17.0 · eng 81 / lodged 84
# SAP-Schema-15.0 mapper validation (task a40e71c4-fd56-4a33-8677-e8643e6a5bb4)
🔧 New schema — `from_sap_schema_15_0` added in mapper.py (PR #1531). No
Elmhurst rebuild done for this batch — and unlike every other entry in this
file, **lodged is NOT the comparison target here**: these are 2011 SAP-2009
lodgements, but this calculator implements current RdSAP10, which has since
revised several U-value tables. A gap from lodged is expected either way and
is not, by itself, evidence of a mapper bug — nor is closeness to lodged
evidence of correctness. What this batch actually validates: all 20
structurally distinct real certs (different fuels, meters, secondary-heating
types, wall constructions) map without error and produce plausible scores
through `from_sap_schema_15_0`'s three schema-wide defaults. The 4 solid-brick
cases below show the largest gap from lodged; `u_wall` was spot-checked
directly against RdSAP10 Table 6 for that construction/age band and returns
the spec-correct value, so at minimum the wall U-value lookup isn't the
source. Real accuracy validation (engine vs Elmhurst on the SAME RdSAP10
methodology) is still open — see comment in test_real_cert_sap_accuracy.py.
All 20 pinned as `RealCertExpectation`s to the engine's OWN observed output.
- [x] 🔧 100010359769 — SAP-15.0 · eng 68 (2011 lodged 68, not a target)
- [x] 🔧 100010359788 — SAP-15.0 · eng 72 (2011 lodged 73, not a target)
- [x] 🔍 100010086084 — SAP-15.0 · eng 53, Elmhurst worksheet 51 (2011 lodged 45, not a target) · FULL Elmhurst RdSAP10 rebuild REDONE 2026-07-10 — the prior 46/48 readings were CONTAMINATED (stale open-chimneys=2 and wall-thickness=280mm carried over from a PRIOR cert build in the shared Elmhurst session; the build script never explicitly zeroed `TextBoxOpenChimneys`). Fixed the build script (explicit chimney zeroing + wall thickness set to 220mm, since `CheckBoxWallThicknessUnknown` doesn't persist via Playwright and leaving it blank makes the Walls section invalid) and a real build-script bug (`ref.input_value()` truthiness check treated the string `"0"` as truthy, causing spurious navigation to Home.aspx that broke the SpaceHeating nav). Clean rebuild: eng 53 vs Elmhurst 51 — only a ~2pt gap now (was ~5-7pt). No mapper.py change was needed/made — the gov-API mapper's open_chimneys_count=0 was correct all along; the register itself lodges open_fireplaces_count=0. Remaining ~2pt gap not chased further: single-window-orientation approximation (South, max solar gain) plus untriaged minor divergences. FOLLOW-UP (2026-07-10): root-caused + fixed the cylinder_size / boiler_flue_type mismatches, both (a) Elmhurst input errors (same silent-stale-value class as chimneys/wall-thickness) — build script's cylinder-size select assumed option VALUE==numeric code, but this DOM's option values are the visible litre-band text, so it silently no-opped and left a prior cert's "Medium" selected (fixed: match by text, "Normal"); the boiler-code dialog's combined "Balanced/Open Flue" category doesn't drive the separate FlueType field, which was left at a stale "Balanced" (fixed: explicit select to "Open"). Added mapper dict entries for the litre-suffixed cylinder labels (mapper.py `_ELMHURST_CYLINDER_SIZE_LABEL_TO_SAP10`). boiler_flue_type isn't consumed by the calculator at all (ML/generator-only), so zero SAP-score effect; cylinder fix moved Elmhurst-PDF-inputs SAP 46→47 only. gov-API SAP (53) and Elmhurst worksheet (51) unchanged. Full suite re-run clean (67 passed/67 skipped/1 xfailed). FOLLOW-UP (2026-07-10, multi-orientation window attempt): tried rebuilding Openings as 4 separate N/E/S/W rows (2.516 m² each, matching gov-API `sap_windows` codes 1/3/5/7) instead of 1 combined South row, to test whether it closes the residual ~2pt gap. CONFIRMED LIVE the documented `elmhurst_lib.py` window-grid limitation: adding a 2nd row wipes the previously-added row's width/height to 0.00 (reproduced with both same-session and fresh-session-per-window attempts) — not fixable via this tool's current Playwright automation. Assessment restored to the original single South 10.06 m² row (no PDFs re-downloaded, nothing changed on Elmhurst's side). Separately confirmed our OWN engine already models this cert's 4 windows per-orientation correctly from the gov-API `sap_windows` (N/E/S/W) via `solar_gains.py`'s `ORIENTATION_BY_SAP10_CODE` cascade — not an engine bug, purely an Elmhurst build-tooling ceiling. Conclusion: the ~2pt gap (eng 53 vs Elmhurst worksheet 51) is accepted as closed-out/final for this cert — a ground-truth construction limit, not a mapper or calculator defect. sap_score=53 expectation unchanged, no calculator/mapper code changes. See test_real_cert_sap_accuracy.py comment for full detail.
- [x] 🔧 100010090369 — SAP-15.0 · eng 53 (2011 lodged 47, not a target) · ditto
- [x] 🔧 100010074470 — SAP-15.0 · eng 46 (2011 lodged 39, not a target) · ditto
- [x] 🔧 100010100813 — SAP-15.0 · eng 59 (2011 lodged 47, not a target) · ditto
- [x] 🔧 77179816 — SAP-15.0 · eng 76 (2011 lodged 75, not a target)
- [x] 🔧 10070400619 — SAP-15.0 · eng 77 (2011 lodged 77, not a target)
- [x] 🔧 77179820 — SAP-15.0 · eng 77 (2011 lodged 77, not a target)
- [x] 🔧 10070394806 — SAP-15.0 · eng 78 (2011 lodged 77, not a target)
- [x] 🔧 77181233 — SAP-15.0 · eng 68 (2011 lodged 69, not a target)
- [x] 🔧 77180626 — SAP-15.0 · eng 68 (2011 lodged 68, not a target)
- [x] 🔧 10070400618 — SAP-15.0 · eng 70 (2011 lodged 69, not a target)
- [x] 🔧 100010350459 — SAP-15.0 · eng 65 (2011 lodged 65, not a target)
- [x] 🔧 100010350468 — SAP-15.0 · eng 66 (2011 lodged 66, not a target)
- [x] 🔧 100010333531 — SAP-15.0 · eng 73 (2011 lodged 74, not a target)
- [x] 🔧 100010341489 — SAP-15.0 · eng 65 (2011 lodged 64, not a target)
- [x] 🔧 100010341491 — SAP-15.0 · eng 62 (2011 lodged 59, not a target)
- [x] 🔧 100010347646 — SAP-15.0 · eng 75 (2011 lodged 75, not a target)
- [x] 🔧 100010347637 — SAP-15.0 · eng 72 (2011 lodged 72, not a target)

View file

@ -0,0 +1,299 @@
{
"uprn": 100010074470,
"roofs": [
{
"description": "Pitched, 75 mm loft insulation",
"energy_efficiency_rating": 3,
"environmental_efficiency_rating": 3
}
],
"walls": [
{
"description": "Solid brick, as built, no insulation (assumed)",
"energy_efficiency_rating": 1,
"environmental_efficiency_rating": 1
}
],
"floors": [
{
"description": "Solid, no insulation (assumed)",
"energy_efficiency_rating": 0,
"environmental_efficiency_rating": 0
}
],
"status": "entered",
"windows": [
{
"description": "Some double glazing",
"energy_efficiency_rating": 2,
"environmental_efficiency_rating": 2
}
],
"lighting": {
"description": "Low energy lighting in 78% of fixed outlets",
"energy_efficiency_rating": 5,
"environmental_efficiency_rating": 5
},
"postcode": "CW2 7RZ",
"hot_water": {
"description": "From main system, no cylinderstat",
"energy_efficiency_rating": 2,
"environmental_efficiency_rating": 2
},
"post_town": "CREWE",
"built_form": 2,
"created_at": "2012-02-28 17:44:26",
"glazed_area": 1,
"region_code": 9,
"report_type": 2,
"sap_heating": {
"cylinder_size": 2,
"water_heating_code": 901,
"water_heating_fuel": 26,
"cylinder_thermostat": "N",
"secondary_fuel_type": 26,
"main_heating_details": [
{
"main_fuel_type": 26,
"boiler_flue_type": 1,
"fan_flue_present": "N",
"heat_emitter_type": 1,
"main_heating_number": 1,
"main_heating_control": 2104,
"main_heating_category": 2,
"main_heating_fraction": 1,
"sap_main_heating_code": 119,
"main_heating_data_source": 2
}
],
"secondary_heating_type": 604,
"cylinder_insulation_type": 2,
"has_fixed_air_conditioning": "false",
"cylinder_insulation_thickness": 38
},
"sap_version": 9.9,
"schema_type": "SAP-Schema-15.0",
"uprn_source": "Energy Assessor",
"country_code": "EAW",
"main_heating": [
{
"description": "Boiler and radiators, mains gas",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 3
}
],
"dwelling_type": "Semi-detached house",
"language_code": 1,
"property_type": 0,
"address_line_1": "23, Davenham Crescent",
"schema_version": "LIG-15.0",
"assessment_type": "RdSAP",
"completion_date": "2012-02-28",
"inspection_date": "2012-02-28",
"extensions_count": 0,
"measurement_type": 2,
"total_floor_area": 87,
"transaction_type": 3,
"conservatory_type": 1,
"heated_room_count": 4,
"registration_date": "2012-02-28",
"restricted_access": 0,
"sap_energy_source": {
"main_gas": "Y",
"meter_type": 2,
"photovoltaic_supply": {
"percent_roof_area": 0
},
"wind_turbines_count": 0,
"wind_turbines_terrain_type": 2
},
"secondary_heating": {
"description": "Room heaters, mains gas",
"energy_efficiency_rating": 0,
"environmental_efficiency_rating": 0
},
"sap_building_parts": [
{
"identifier": "Main Dwelling",
"floor_heat_loss": 7,
"roof_construction": 4,
"wall_construction": 3,
"building_part_number": 1,
"sap_floor_dimensions": [
{
"floor": 0,
"room_height": 2.62,
"floor_insulation": 1,
"total_floor_area": 49.83,
"floor_construction": 1,
"heat_loss_perimeter": 22.56
},
{
"floor": 1,
"room_height": 2.5,
"total_floor_area": 48.18,
"heat_loss_perimeter": 21.36
}
],
"wall_insulation_type": 4,
"construction_age_band": "B",
"roof_insulation_location": 2,
"roof_insulation_thickness": "75mm"
}
],
"low_energy_lighting": 78,
"solar_water_heating": "N",
"bedf_revision_number": 317,
"habitable_room_count": 4,
"heating_cost_current": 1042,
"co2_emissions_current": 7.1,
"energy_rating_current": 39,
"lighting_cost_current": 57,
"main_heating_controls": [
{
"description": "Programmer and room thermostat",
"energy_efficiency_rating": 3,
"environmental_efficiency_rating": 3
}
],
"multiple_glazing_type": 3,
"open_fireplaces_count": 0,
"has_hot_water_cylinder": "true",
"heating_cost_potential": 762,
"hot_water_cost_current": 245,
"mechanical_ventilation": 0,
"suggested_improvements": [
{
"sequence": 1,
"typical_saving": 30,
"indicative_cost": "?100 - ?300",
"improvement_type": "A",
"improvement_details": {
"improvement_number": 5
},
"improvement_category": 1,
"energy_performance_rating": 40,
"environmental_impact_rating": 37
},
{
"sequence": 2,
"typical_saving": 30,
"indicative_cost": "?15 - ?30",
"improvement_type": "C",
"improvement_details": {
"improvement_number": 2
},
"improvement_category": 1,
"energy_performance_rating": 42,
"environmental_impact_rating": 38
},
{
"sequence": 3,
"typical_saving": 107,
"indicative_cost": "?200 - ?400",
"improvement_type": "F",
"improvement_details": {
"improvement_number": 4
},
"improvement_category": 1,
"energy_performance_rating": 46,
"environmental_impact_rating": 42
},
{
"sequence": 4,
"typical_saving": 32,
"indicative_cost": "?350 - ?450",
"improvement_type": "G",
"improvement_details": {
"improvement_number": 13
},
"improvement_category": 1,
"energy_performance_rating": 48,
"environmental_impact_rating": 43
},
{
"sequence": 5,
"typical_saving": 226,
"indicative_cost": "?1,500 - ?3,500",
"improvement_type": "I",
"improvement_details": {
"improvement_number": 20
},
"improvement_category": 2,
"energy_performance_rating": 58,
"environmental_impact_rating": 54
},
{
"sequence": 6,
"typical_saving": 33,
"indicative_cost": "?4,000 - ?6,000",
"improvement_type": "N",
"improvement_details": {
"improvement_number": 19
},
"improvement_category": 3,
"energy_performance_rating": 60,
"environmental_impact_rating": 56
},
{
"sequence": 7,
"typical_saving": 54,
"indicative_cost": "?2,500 - ?6,500",
"improvement_type": "O",
"improvement_details": {
"improvement_number": 8
},
"improvement_category": 3,
"energy_performance_rating": 62,
"environmental_impact_rating": 59
},
{
"sequence": 8,
"typical_saving": 243,
"indicative_cost": "?5,500 - ?14,500",
"improvement_type": "Q",
"improvement_details": {
"improvement_number": 7
},
"improvement_category": 3,
"energy_performance_rating": 72,
"environmental_impact_rating": 73
},
{
"sequence": 9,
"typical_saving": 219,
"indicative_cost": "?11,000 - ?20,000",
"improvement_type": "U",
"improvement_details": {
"improvement_number": 34
},
"improvement_category": 3,
"energy_performance_rating": 82,
"environmental_impact_rating": 82
}
],
"co2_emissions_potential": 4.6,
"energy_rating_potential": 58,
"lighting_cost_potential": 57,
"hot_water_cost_potential": 101,
"renewable_heat_incentive": {
"water_heating": 4086,
"space_heating_existing_dwelling": 17203,
"space_heating_with_loft_insulation": 16856,
"space_heating_with_loft_and_cavity_insulation": 16856
},
"seller_commission_report": "Y",
"energy_consumption_current": 421,
"has_fixed_air_conditioning": "false",
"multiple_glazed_proportion": 30,
"calculation_software_version": "1.3.1.0",
"energy_consumption_potential": 273,
"environmental_impact_current": 36,
"fixed_lighting_outlets_count": 9,
"current_energy_efficiency_band": "E",
"environmental_impact_potential": 54,
"has_heated_separate_conservatory": "false",
"potential_energy_efficiency_band": "D",
"co2_emissions_current_per_floor_area": 81,
"low_energy_fixed_lighting_outlets_count": 7
}

View file

@ -0,0 +1,286 @@
{
"uprn": 100010086084,
"roofs": [
{
"description": "Pitched, 300+ mm loft insulation",
"energy_efficiency_rating": 5,
"environmental_efficiency_rating": 5
}
],
"walls": [
{
"description": "Solid brick, as built, no insulation (assumed)",
"energy_efficiency_rating": 1,
"environmental_efficiency_rating": 1
}
],
"floors": [
{
"description": "Solid, no insulation (assumed)",
"energy_efficiency_rating": 0,
"environmental_efficiency_rating": 0
}
],
"status": "entered",
"windows": [
{
"description": "Partial double glazing",
"energy_efficiency_rating": 2,
"environmental_efficiency_rating": 2
}
],
"lighting": {
"description": "Low energy lighting in 43% of fixed outlets",
"energy_efficiency_rating": 3,
"environmental_efficiency_rating": 3
},
"postcode": "CW1 3SH",
"hot_water": {
"description": "From main system",
"energy_efficiency_rating": 3,
"environmental_efficiency_rating": 3
},
"post_town": "CREWE",
"built_form": 2,
"created_at": "2011-12-14 15:24:30",
"glazed_area": 1,
"region_code": 9,
"report_type": 2,
"sap_heating": {
"cylinder_size": 2,
"water_heating_code": 901,
"water_heating_fuel": 26,
"cylinder_thermostat": "Y",
"secondary_fuel_type": 26,
"main_heating_details": [
{
"main_fuel_type": 26,
"boiler_flue_type": 1,
"fan_flue_present": "N",
"heat_emitter_type": 1,
"main_heating_number": 1,
"main_heating_control": 2104,
"main_heating_category": 2,
"main_heating_fraction": 1,
"sap_main_heating_code": 115,
"main_heating_data_source": 2
}
],
"secondary_heating_type": 603,
"cylinder_insulation_type": 1,
"has_fixed_air_conditioning": "false",
"cylinder_insulation_thickness": 25
},
"sap_version": 9.9,
"schema_type": "SAP-Schema-15.0",
"uprn_source": "Energy Assessor",
"country_code": "EAW",
"main_heating": [
{
"description": "Boiler and radiators, mains gas",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 3
}
],
"dwelling_type": "Semi-detached house",
"language_code": 1,
"property_type": 0,
"address_line_1": "9, Pear Tree Avenue",
"schema_version": "LIG-15.0",
"assessment_type": "RdSAP",
"completion_date": "2011-12-14",
"inspection_date": "2011-12-13",
"extensions_count": 0,
"measurement_type": 2,
"total_floor_area": 68,
"transaction_type": 3,
"conservatory_type": 1,
"heated_room_count": 3,
"registration_date": "2011-12-14",
"restricted_access": 0,
"sap_energy_source": {
"main_gas": "Y",
"meter_type": 2,
"photovoltaic_supply": {
"percent_roof_area": 0
},
"wind_turbines_count": 0,
"wind_turbines_terrain_type": 2
},
"secondary_heating": {
"description": "Room heaters, mains gas",
"energy_efficiency_rating": 0,
"environmental_efficiency_rating": 0
},
"sap_building_parts": [
{
"identifier": "Main Dwelling",
"floor_heat_loss": 7,
"roof_construction": 4,
"wall_construction": 3,
"building_part_number": 1,
"sap_floor_dimensions": [
{
"floor": 0,
"room_height": 2.41,
"floor_insulation": 0,
"total_floor_area": 37.74,
"floor_construction": 1,
"heat_loss_perimeter": 21.05
},
{
"floor": 1,
"room_height": 2.45,
"total_floor_area": 39.48,
"heat_loss_perimeter": 18.45
}
],
"wall_insulation_type": 4,
"construction_age_band": "C",
"roof_insulation_location": 2,
"roof_insulation_thickness": "300mm+"
}
],
"low_energy_lighting": 43,
"solar_water_heating": "N",
"bedf_revision_number": 316,
"habitable_room_count": 3,
"heating_cost_current": 816,
"co2_emissions_current": 5.2,
"energy_rating_current": 45,
"lighting_cost_current": 59,
"main_heating_controls": [
{
"description": "Programmer and room thermostat",
"energy_efficiency_rating": 3,
"environmental_efficiency_rating": 3
}
],
"multiple_glazing_type": 1,
"open_fireplaces_count": 0,
"has_hot_water_cylinder": "true",
"heating_cost_potential": 647,
"hot_water_cost_current": 146,
"mechanical_ventilation": 0,
"suggested_improvements": [
{
"sequence": 1,
"typical_saving": 18,
"indicative_cost": "?10",
"improvement_type": "E",
"improvement_details": {
"improvement_number": 35
},
"improvement_category": 1,
"energy_performance_rating": 46,
"environmental_impact_rating": 43
},
{
"sequence": 2,
"typical_saving": 20,
"indicative_cost": "?350 - ?450",
"improvement_type": "G",
"improvement_details": {
"improvement_number": 13
},
"improvement_category": 1,
"energy_performance_rating": 47,
"environmental_impact_rating": 44
},
{
"sequence": 3,
"typical_saving": 193,
"indicative_cost": "?1,500 - ?3,500",
"improvement_type": "I",
"improvement_details": {
"improvement_number": 20
},
"improvement_category": 2,
"energy_performance_rating": 58,
"environmental_impact_rating": 54
},
{
"sequence": 4,
"typical_saving": 33,
"indicative_cost": "?4,000 - ?6,000",
"improvement_type": "N",
"improvement_details": {
"improvement_number": 19
},
"improvement_category": 3,
"energy_performance_rating": 59,
"environmental_impact_rating": 57
},
{
"sequence": 5,
"typical_saving": 40,
"indicative_cost": "?2,500 - ?6,500",
"improvement_type": "O",
"improvement_details": {
"improvement_number": 8
},
"improvement_category": 3,
"energy_performance_rating": 62,
"environmental_impact_rating": 59
},
{
"sequence": 6,
"typical_saving": 207,
"indicative_cost": "?5,500 - ?14,500",
"improvement_type": "Q",
"improvement_details": {
"improvement_number": 7
},
"improvement_category": 3,
"energy_performance_rating": 72,
"environmental_impact_rating": 73
},
{
"sequence": 7,
"typical_saving": 214,
"indicative_cost": "?11,000 - ?20,000",
"improvement_type": "U",
"improvement_details": {
"improvement_number": 34
},
"improvement_category": 3,
"energy_performance_rating": 84,
"environmental_impact_rating": 84
},
{
"sequence": 8,
"typical_saving": 18,
"indicative_cost": "?1,500 - ?4,000",
"improvement_type": "V",
"improvement_details": {
"improvement_number": 44
},
"improvement_category": 3,
"energy_performance_rating": 85,
"environmental_impact_rating": 85
}
],
"co2_emissions_potential": 3.9,
"energy_rating_potential": 58,
"lighting_cost_potential": 38,
"hot_water_cost_potential": 105,
"renewable_heat_incentive": {
"water_heating": 2634,
"space_heating_existing_dwelling": 13795,
"space_heating_with_loft_and_cavity_insulation": 13795
},
"seller_commission_report": "Y",
"energy_consumption_current": 396,
"has_fixed_air_conditioning": "false",
"multiple_glazed_proportion": 50,
"calculation_software_version": "1.3.1.0",
"energy_consumption_potential": 295,
"environmental_impact_current": 42,
"fixed_lighting_outlets_count": 7,
"current_energy_efficiency_band": "E",
"environmental_impact_potential": 54,
"has_heated_separate_conservatory": "false",
"potential_energy_efficiency_band": "D",
"co2_emissions_current_per_floor_area": 76,
"low_energy_fixed_lighting_outlets_count": 3
}

View file

@ -0,0 +1,305 @@
{
"uprn": 100010090369,
"roofs": [
{
"description": "Pitched, 200 mm loft insulation",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"walls": [
{
"description": "Solid brick, as built, no insulation (assumed)",
"energy_efficiency_rating": 1,
"environmental_efficiency_rating": 1
}
],
"floors": [
{
"description": "Suspended, no insulation (assumed)",
"energy_efficiency_rating": 0,
"environmental_efficiency_rating": 0
},
{
"description": "Solid, no insulation (assumed)",
"energy_efficiency_rating": 0,
"environmental_efficiency_rating": 0
}
],
"status": "entered",
"windows": [
{
"description": "Fully double glazed",
"energy_efficiency_rating": 3,
"environmental_efficiency_rating": 3
}
],
"lighting": {
"description": "No low energy lighting",
"energy_efficiency_rating": 1,
"environmental_efficiency_rating": 1
},
"postcode": "CW2 7RW",
"hot_water": {
"description": "From main system, no cylinder thermostat",
"energy_efficiency_rating": 2,
"environmental_efficiency_rating": 2
},
"post_town": "CREWE",
"built_form": 4,
"created_at": "2012-01-19 20:19:08",
"glazed_area": 1,
"region_code": 19,
"report_type": 2,
"sap_heating": {
"cylinder_size": 2,
"water_heating_code": 901,
"water_heating_fuel": 26,
"cylinder_thermostat": "N",
"secondary_fuel_type": 26,
"main_heating_details": [
{
"main_fuel_type": 26,
"boiler_flue_type": 2,
"heat_emitter_type": 1,
"main_heating_number": 1,
"main_heating_control": 2102,
"main_heating_category": 2,
"main_heating_fraction": 1,
"sap_main_heating_code": 119,
"main_heating_data_source": 2
}
],
"secondary_heating_type": 601,
"cylinder_insulation_type": 2,
"has_fixed_air_conditioning": "false",
"cylinder_insulation_thickness": 80
},
"sap_version": 9.9,
"schema_type": "SAP-Schema-15.0",
"uprn_source": "Energy Assessor",
"country_code": "EAW",
"main_heating": [
{
"description": "Boiler and radiators, mains gas",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"dwelling_type": "Mid-terrace house",
"language_code": 1,
"property_type": 0,
"address_line_1": "3, Stewart Street",
"schema_version": "LIG-15.0",
"assessment_type": "RdSAP",
"completion_date": "2012-01-19",
"inspection_date": "2012-01-19",
"extensions_count": 1,
"measurement_type": 1,
"total_floor_area": 80,
"transaction_type": 3,
"conservatory_type": 1,
"heated_room_count": 3,
"registration_date": "2012-01-19",
"restricted_access": 0,
"sap_energy_source": {
"main_gas": "Y",
"meter_type": 1,
"photovoltaic_supply": {
"percent_roof_area": 0
},
"wind_turbines_count": 0,
"wind_turbines_terrain_type": 1
},
"secondary_heating": {
"description": "Room heaters, mains gas",
"energy_efficiency_rating": 0,
"environmental_efficiency_rating": 0
},
"sap_building_parts": [
{
"identifier": "Main Dwelling",
"floor_heat_loss": 7,
"roof_construction": 4,
"wall_construction": 3,
"building_part_number": 1,
"sap_floor_dimensions": [
{
"floor": 0,
"room_height": 2.78,
"floor_insulation": 1,
"total_floor_area": 32.92,
"floor_construction": 2,
"heat_loss_perimeter": 6.48
},
{
"floor": 1,
"room_height": 2.71,
"total_floor_area": 33.2,
"heat_loss_perimeter": 6.48
}
],
"wall_insulation_type": 4,
"construction_age_band": "A",
"roof_insulation_location": 2,
"roof_insulation_thickness": "200mm"
},
{
"identifier": "Extension 1",
"floor_heat_loss": 7,
"roof_construction": 4,
"wall_construction": 3,
"building_part_number": 2,
"sap_floor_dimensions": [
{
"floor": 0,
"room_height": 2.75,
"floor_insulation": 1,
"total_floor_area": 6.91,
"floor_construction": 1,
"heat_loss_perimeter": 5.28
},
{
"floor": 1,
"room_height": 2.39,
"total_floor_area": 6.9,
"heat_loss_perimeter": 5.25
}
],
"wall_insulation_type": 4,
"construction_age_band": "A",
"roof_insulation_location": 2,
"roof_insulation_thickness": "200mm"
}
],
"low_energy_lighting": 0,
"solar_water_heating": "N",
"bedf_revision_number": 317,
"habitable_room_count": 4,
"heating_cost_current": 791,
"co2_emissions_current": 5.5,
"energy_rating_current": 47,
"lighting_cost_current": 95,
"main_heating_controls": [
{
"description": "Programmer, no room thermostat",
"energy_efficiency_rating": 1,
"environmental_efficiency_rating": 1
}
],
"multiple_glazing_type": 1,
"open_fireplaces_count": 0,
"has_hot_water_cylinder": "true",
"heating_cost_potential": 570,
"hot_water_cost_current": 212,
"mechanical_ventilation": 0,
"suggested_improvements": [
{
"sequence": 1,
"typical_saving": 39,
"indicative_cost": "\u00a325",
"improvement_type": "E",
"improvement_details": {
"improvement_number": 35
},
"improvement_category": 1,
"energy_performance_rating": 49,
"environmental_impact_rating": 45
},
{
"sequence": 2,
"typical_saving": 33,
"indicative_cost": "\u00a3200 - \u00a3400",
"improvement_type": "F",
"improvement_details": {
"improvement_number": 4
},
"improvement_category": 1,
"energy_performance_rating": 50,
"environmental_impact_rating": 46
},
{
"sequence": 3,
"typical_saving": 144,
"indicative_cost": "\u00a3350 - \u00a3450",
"improvement_type": "G",
"improvement_details": {
"improvement_number": 12
},
"improvement_category": 1,
"energy_performance_rating": 57,
"environmental_impact_rating": 53
},
{
"sequence": 4,
"typical_saving": 153,
"indicative_cost": "\u00a31,500 - \u00a33,500",
"improvement_type": "I",
"improvement_details": {
"improvement_number": 20
},
"improvement_category": 2,
"energy_performance_rating": 65,
"environmental_impact_rating": 63
},
{
"sequence": 5,
"typical_saving": 33,
"indicative_cost": "\u00a34,000 - \u00a36,000",
"improvement_type": "N",
"improvement_details": {
"improvement_number": 19
},
"improvement_category": 3,
"energy_performance_rating": 66,
"environmental_impact_rating": 65
},
{
"sequence": 6,
"typical_saving": 123,
"indicative_cost": "\u00a35,500 - \u00a314,500",
"improvement_type": "Q",
"improvement_details": {
"improvement_number": 7
},
"improvement_category": 3,
"energy_performance_rating": 72,
"environmental_impact_rating": 73
},
{
"sequence": 7,
"typical_saving": 227,
"indicative_cost": "\u00a311,000 - \u00a320,000",
"improvement_type": "U",
"improvement_details": {
"improvement_number": 34
},
"improvement_category": 3,
"energy_performance_rating": 83,
"environmental_impact_rating": 83
}
],
"co2_emissions_potential": 3.5,
"energy_rating_potential": 65,
"lighting_cost_potential": 48,
"hot_water_cost_potential": 111,
"renewable_heat_incentive": {
"water_heating": 3531,
"space_heating_existing_dwelling": 11202,
"space_heating_with_loft_and_cavity_insulation": 11202
},
"seller_commission_report": "Y",
"energy_consumption_current": 360,
"has_fixed_air_conditioning": "false",
"multiple_glazed_proportion": 100,
"calculation_software_version": "19.06r14",
"energy_consumption_potential": 225,
"environmental_impact_current": 44,
"fixed_lighting_outlets_count": 10,
"current_energy_efficiency_band": "E",
"environmental_impact_potential": 63,
"has_heated_separate_conservatory": "false",
"potential_energy_efficiency_band": "D",
"co2_emissions_current_per_floor_area": 69,
"low_energy_fixed_lighting_outlets_count": 0
}

View file

@ -0,0 +1,274 @@
{
"uprn": 100010100813,
"roofs": [
{
"description": "Pitched, 100 mm loft insulation",
"energy_efficiency_rating": 3,
"environmental_efficiency_rating": 3
}
],
"walls": [
{
"description": "Solid brick, as built, no insulation (assumed)",
"energy_efficiency_rating": 1,
"environmental_efficiency_rating": 1
}
],
"floors": [
{
"description": "Solid, no insulation (assumed)",
"energy_efficiency_rating": 0,
"environmental_efficiency_rating": 0
}
],
"status": "entered",
"windows": [
{
"description": "Fully double glazed",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"lighting": {
"description": "Low energy lighting in all fixed outlets",
"energy_efficiency_rating": 5,
"environmental_efficiency_rating": 5
},
"postcode": "CW5 5NJ",
"hot_water": {
"description": "From main system, no cylinderstat",
"energy_efficiency_rating": 2,
"environmental_efficiency_rating": 2
},
"post_town": "NANTWICH",
"built_form": 3,
"created_at": "2011-10-16 22:45:08",
"glazed_area": 1,
"region_code": 9,
"report_type": 2,
"sap_heating": {
"cylinder_size": 2,
"water_heating_code": 901,
"water_heating_fuel": 26,
"cylinder_thermostat": "N",
"secondary_fuel_type": 26,
"main_heating_details": [
{
"main_fuel_type": 26,
"boiler_flue_type": 2,
"fan_flue_present": "Y",
"heat_emitter_type": 1,
"main_heating_number": 1,
"main_heating_control": 2104,
"main_heating_category": 2,
"main_heating_fraction": 1,
"main_heating_data_source": 2
}
],
"secondary_heating_type": 603,
"cylinder_insulation_type": 1,
"has_fixed_air_conditioning": "false",
"cylinder_insulation_thickness": 25
},
"sap_version": 9.9,
"schema_type": "SAP-Schema-15.0",
"uprn_source": "Energy Assessor",
"country_code": "EAW",
"main_heating": [
{
"description": "Boiler and radiators, mains gas",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"dwelling_type": "End-Terrace house",
"language_code": 1,
"property_type": 0,
"address_line_1": "15, Weaver Road",
"schema_version": "LIG-15.0",
"assessment_type": "RdSAP",
"completion_date": "2011-10-16",
"inspection_date": "2011-10-14",
"extensions_count": 0,
"measurement_type": 1,
"total_floor_area": 67,
"transaction_type": 3,
"conservatory_type": 1,
"heated_room_count": 3,
"registration_date": "2011-10-16",
"restricted_access": 0,
"sap_energy_source": {
"main_gas": "Y",
"meter_type": 2,
"photovoltaic_supply": {
"percent_roof_area": 0
},
"wind_turbines_count": 0,
"wind_turbines_terrain_type": 2
},
"secondary_heating": {
"description": "Room heaters, mains gas",
"energy_efficiency_rating": 0,
"environmental_efficiency_rating": 0
},
"sap_building_parts": [
{
"identifier": "Main Dwelling",
"floor_heat_loss": 7,
"roof_construction": 4,
"wall_construction": 3,
"building_part_number": 1,
"sap_floor_dimensions": [
{
"floor": 0,
"room_height": 2.42,
"floor_insulation": 0,
"total_floor_area": 33.32,
"floor_construction": 1,
"heat_loss_perimeter": 16.6
},
{
"floor": 1,
"room_height": 2.58,
"total_floor_area": 33.32,
"heat_loss_perimeter": 16.6
}
],
"wall_insulation_type": 4,
"construction_age_band": "B",
"roof_insulation_location": 2,
"roof_insulation_thickness": "100mm"
}
],
"low_energy_lighting": 100,
"solar_water_heating": "N",
"bedf_revision_number": 314,
"habitable_room_count": 3,
"heating_cost_current": 742,
"co2_emissions_current": 4.9,
"energy_rating_current": 47,
"lighting_cost_current": 37,
"main_heating_controls": [
{
"description": "Programmer and room thermostat",
"energy_efficiency_rating": 3,
"environmental_efficiency_rating": 3
}
],
"multiple_glazing_type": 2,
"open_fireplaces_count": 0,
"has_hot_water_cylinder": "true",
"heating_cost_potential": 585,
"hot_water_cost_current": 197,
"mechanical_ventilation": 0,
"suggested_improvements": [
{
"sequence": 1,
"typical_saving": 85,
"indicative_cost": "?200 - ?400",
"improvement_type": "F",
"improvement_details": {
"improvement_number": 4
},
"improvement_category": 1,
"energy_performance_rating": 52,
"environmental_impact_rating": 48
},
{
"sequence": 2,
"typical_saving": 24,
"indicative_cost": "?350 - ?450",
"improvement_type": "G",
"improvement_details": {
"improvement_number": 13
},
"improvement_category": 1,
"energy_performance_rating": 53,
"environmental_impact_rating": 49
},
{
"sequence": 3,
"typical_saving": 139,
"indicative_cost": "?1,500 - ?3,500",
"improvement_type": "I",
"improvement_details": {
"improvement_number": 20
},
"improvement_category": 2,
"energy_performance_rating": 61,
"environmental_impact_rating": 58
},
{
"sequence": 4,
"typical_saving": 33,
"indicative_cost": "?4,000 - ?6,000",
"improvement_type": "N",
"improvement_details": {
"improvement_number": 19
},
"improvement_category": 3,
"energy_performance_rating": 63,
"environmental_impact_rating": 60
},
{
"sequence": 5,
"typical_saving": 177,
"indicative_cost": "?5,500 - ?14,500",
"improvement_type": "Q",
"improvement_details": {
"improvement_number": 7
},
"improvement_category": 3,
"energy_performance_rating": 72,
"environmental_impact_rating": 73
},
{
"sequence": 6,
"typical_saving": 214,
"indicative_cost": "?11,000 - ?20,000",
"improvement_type": "U",
"improvement_details": {
"improvement_number": 34
},
"improvement_category": 3,
"energy_performance_rating": 83,
"environmental_impact_rating": 84
},
{
"sequence": 7,
"typical_saving": 18,
"indicative_cost": "?1,500 - ?4,000",
"improvement_type": "V",
"improvement_details": {
"improvement_number": 44
},
"improvement_category": 3,
"energy_performance_rating": 84,
"environmental_impact_rating": 85
}
],
"co2_emissions_potential": 3.5,
"energy_rating_potential": 61,
"lighting_cost_potential": 37,
"hot_water_cost_potential": 105,
"renewable_heat_incentive": {
"water_heating": 3413,
"space_heating_existing_dwelling": 11875,
"space_heating_with_loft_insulation": 11728,
"space_heating_with_loft_and_cavity_insulation": 11728
},
"seller_commission_report": "Y",
"energy_consumption_current": 383,
"has_fixed_air_conditioning": "false",
"multiple_glazed_proportion": 100,
"calculation_software_version": "1.3.1.0",
"energy_consumption_potential": 271,
"environmental_impact_current": 44,
"fixed_lighting_outlets_count": 9,
"current_energy_efficiency_band": "E",
"environmental_impact_potential": 58,
"has_heated_separate_conservatory": "false",
"potential_energy_efficiency_band": "D",
"co2_emissions_current_per_floor_area": 74,
"low_energy_fixed_lighting_outlets_count": 9
}

View file

@ -0,0 +1,207 @@
{
"uprn": 100010333531,
"roofs": [
{
"description": "Pitched, 200 mm loft insulation",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"walls": [
{
"description": "Cavity wall, filled cavity",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"floors": [
{
"description": "(other premises below)",
"energy_efficiency_rating": 0,
"environmental_efficiency_rating": 0
}
],
"status": "entered",
"windows": [
{
"description": "Fully double glazed",
"energy_efficiency_rating": 3,
"environmental_efficiency_rating": 3
}
],
"lighting": {
"description": "Low energy lighting in 29% of fixed outlets",
"energy_efficiency_rating": 3,
"environmental_efficiency_rating": 3
},
"postcode": "BB10 4NX",
"hot_water": {
"description": "From main system",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
},
"post_town": "BURNLEY",
"built_form": 3,
"created_at": "2011-11-14 07:10:26",
"glazed_area": 1,
"region_code": 19,
"report_type": 2,
"sap_heating": {
"cylinder_size": 1,
"water_heating_code": 901,
"water_heating_fuel": 26,
"main_heating_details": [
{
"main_fuel_type": 26,
"boiler_flue_type": 2,
"fan_flue_present": "Y",
"heat_emitter_type": 1,
"boiler_index_number": 8358,
"main_heating_number": 1,
"main_heating_control": 2106,
"main_heating_category": 2,
"main_heating_fraction": 1,
"main_heating_data_source": 1
}
],
"has_fixed_air_conditioning": "false"
},
"sap_version": 9.9,
"schema_type": "SAP-Schema-15.0",
"uprn_source": "Energy Assessor",
"country_code": "EAW",
"main_heating": [
{
"description": "Boiler and radiators, mains gas",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"dwelling_type": "Top-floor maisonette",
"language_code": 1,
"property_type": 3,
"address_line_1": "13, Chatburn Avenue",
"schema_version": "LIG-15.0",
"assessment_type": "RdSAP",
"completion_date": "2011-11-14",
"inspection_date": "2011-11-14",
"extensions_count": 0,
"measurement_type": 1,
"sap_flat_details": {
"level": 3,
"top_storey": "Y",
"flat_location": 1,
"heat_loss_corridor": 0
},
"total_floor_area": 70,
"transaction_type": 3,
"conservatory_type": 1,
"heated_room_count": 2,
"registration_date": "2011-11-14",
"restricted_access": 0,
"sap_energy_source": {
"main_gas": "Y",
"meter_type": 2,
"photovoltaic_supply": {
"percent_roof_area": 0
},
"wind_turbines_count": 0,
"wind_turbines_terrain_type": 2
},
"secondary_heating": {
"description": "None",
"energy_efficiency_rating": 0,
"environmental_efficiency_rating": 0
},
"sap_building_parts": [
{
"identifier": "Main Dwelling",
"floor_heat_loss": 6,
"roof_construction": 4,
"wall_construction": 4,
"building_part_number": 1,
"sap_floor_dimensions": [
{
"floor": 0,
"room_height": 2.48,
"total_floor_area": 70,
"heat_loss_perimeter": 25.8
}
],
"wall_insulation_type": 2,
"construction_age_band": "E",
"roof_insulation_location": 2,
"roof_insulation_thickness": "200mm"
}
],
"low_energy_lighting": 29,
"solar_water_heating": "N",
"bedf_revision_number": 315,
"habitable_room_count": 2,
"heating_cost_current": 338,
"co2_emissions_current": 2.1,
"energy_rating_current": 74,
"lighting_cost_current": 69,
"main_heating_controls": [
{
"description": "Programmer, room thermostat and TRVs",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"multiple_glazing_type": 1,
"open_fireplaces_count": 0,
"has_hot_water_cylinder": "false",
"heating_cost_potential": 320,
"hot_water_cost_current": 92,
"mechanical_ventilation": 0,
"suggested_improvements": [
{
"sequence": 1,
"typical_saving": 24,
"indicative_cost": "\u00a313",
"improvement_type": "E",
"improvement_details": {
"improvement_number": 35
},
"improvement_category": 1,
"energy_performance_rating": 75,
"environmental_impact_rating": 77
},
{
"sequence": 2,
"typical_saving": 33,
"indicative_cost": "\u00a31,500 - \u00a33,500",
"improvement_type": "I",
"improvement_details": {
"improvement_number": 20
},
"improvement_category": 2,
"energy_performance_rating": 77,
"environmental_impact_rating": 79
}
],
"co2_emissions_potential": 1.8,
"energy_rating_potential": 77,
"lighting_cost_potential": 40,
"hot_water_cost_potential": 81,
"renewable_heat_incentive": {
"water_heating": 2005,
"space_heating_existing_dwelling": 4620,
"space_heating_with_loft_and_cavity_insulation": 4620
},
"seller_commission_report": "Y",
"energy_consumption_current": 158,
"has_fixed_air_conditioning": "false",
"multiple_glazed_proportion": 100,
"calculation_software_version": "19.05r18",
"energy_consumption_potential": 136,
"environmental_impact_current": 75,
"fixed_lighting_outlets_count": 7,
"current_energy_efficiency_band": "C",
"environmental_impact_potential": 79,
"has_heated_separate_conservatory": "false",
"potential_energy_efficiency_band": "C",
"co2_emissions_current_per_floor_area": 30,
"low_energy_fixed_lighting_outlets_count": 2
}

View file

@ -0,0 +1,198 @@
{
"uprn": 100010341489,
"roofs": [
{
"description": "(another dwelling above)",
"energy_efficiency_rating": 0,
"environmental_efficiency_rating": 0
}
],
"walls": [
{
"description": "Cavity wall, as built, no insulation (assumed)",
"energy_efficiency_rating": 2,
"environmental_efficiency_rating": 2
}
],
"floors": [
{
"description": "Suspended, no insulation (assumed)",
"energy_efficiency_rating": 0,
"environmental_efficiency_rating": 0
}
],
"status": "entered",
"windows": [
{
"description": "Fully double glazed",
"energy_efficiency_rating": 3,
"environmental_efficiency_rating": 3
}
],
"lighting": {
"description": "Low energy lighting in all fixed outlets",
"energy_efficiency_rating": 5,
"environmental_efficiency_rating": 5
},
"postcode": "BB11 4EB",
"hot_water": {
"description": "From main system",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
},
"post_town": "BURNLEY",
"built_form": 3,
"created_at": "2012-01-23 08:15:11",
"glazed_area": 1,
"region_code": 19,
"report_type": 2,
"sap_heating": {
"cylinder_size": 1,
"water_heating_code": 901,
"water_heating_fuel": 26,
"main_heating_details": [
{
"main_fuel_type": 26,
"boiler_flue_type": 2,
"fan_flue_present": "Y",
"heat_emitter_type": 1,
"boiler_index_number": 10110,
"main_heating_number": 1,
"main_heating_control": 2106,
"main_heating_category": 2,
"main_heating_fraction": 1,
"main_heating_data_source": 1
}
],
"has_fixed_air_conditioning": "false"
},
"sap_version": 9.9,
"schema_type": "SAP-Schema-15.0",
"uprn_source": "Energy Assessor",
"country_code": "EAW",
"main_heating": [
{
"description": "Boiler and radiators, mains gas",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"dwelling_type": "Ground-floor maisonette",
"language_code": 1,
"property_type": 3,
"address_line_1": "83, Harold Street",
"schema_version": "LIG-15.0",
"assessment_type": "RdSAP",
"completion_date": "2012-01-23",
"inspection_date": "2012-01-23",
"extensions_count": 0,
"measurement_type": 1,
"sap_flat_details": {
"level": 1,
"top_storey": "N",
"flat_location": 0,
"heat_loss_corridor": 0
},
"total_floor_area": 43,
"transaction_type": 3,
"conservatory_type": 1,
"heated_room_count": 3,
"registration_date": "2012-01-23",
"restricted_access": 0,
"sap_energy_source": {
"main_gas": "Y",
"meter_type": 2,
"photovoltaic_supply": {
"percent_roof_area": 0
},
"wind_turbines_count": 0,
"wind_turbines_terrain_type": 2
},
"secondary_heating": {
"description": "None",
"energy_efficiency_rating": 0,
"environmental_efficiency_rating": 0
},
"sap_building_parts": [
{
"identifier": "Main Dwelling",
"floor_heat_loss": 7,
"roof_construction": 3,
"wall_construction": 4,
"building_part_number": 1,
"sap_floor_dimensions": [
{
"floor": 0,
"room_height": 2.6,
"floor_insulation": 1,
"total_floor_area": 42.7,
"floor_construction": 2,
"heat_loss_perimeter": 23
}
],
"wall_insulation_type": 4,
"construction_age_band": "C",
"roof_insulation_location": "ND",
"roof_insulation_thickness": "ND"
}
],
"low_energy_lighting": 100,
"solar_water_heating": "N",
"bedf_revision_number": 317,
"habitable_room_count": 3,
"heating_cost_current": 408,
"co2_emissions_current": 2.3,
"energy_rating_current": 64,
"lighting_cost_current": 26,
"main_heating_controls": [
{
"description": "Programmer, room thermostat and TRVs",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"multiple_glazing_type": 1,
"open_fireplaces_count": 0,
"has_hot_water_cylinder": "false",
"heating_cost_potential": 321,
"hot_water_cost_current": 84,
"mechanical_ventilation": 0,
"suggested_improvements": [
{
"sequence": 1,
"typical_saving": 87,
"indicative_cost": "\u00a3100 - \u00a3300",
"improvement_type": "B",
"improvement_details": {
"improvement_number": 6
},
"improvement_category": 1,
"energy_performance_rating": 70,
"environmental_impact_rating": 73
}
],
"co2_emissions_potential": 1.8,
"energy_rating_potential": 70,
"lighting_cost_potential": 26,
"hot_water_cost_potential": 84,
"renewable_heat_incentive": {
"water_heating": 2051,
"space_heating_existing_dwelling": 6808,
"space_heating_with_cavity_insulation": 4625,
"space_heating_with_loft_and_cavity_insulation": 4625
},
"seller_commission_report": "Y",
"energy_consumption_current": 279,
"has_fixed_air_conditioning": "false",
"multiple_glazed_proportion": 100,
"calculation_software_version": "19.06r14",
"energy_consumption_potential": 217,
"environmental_impact_current": 65,
"fixed_lighting_outlets_count": 4,
"current_energy_efficiency_band": "D",
"environmental_impact_potential": 73,
"has_heated_separate_conservatory": "false",
"potential_energy_efficiency_band": "C",
"co2_emissions_current_per_floor_area": 54,
"low_energy_fixed_lighting_outlets_count": 4
}

View file

@ -0,0 +1,247 @@
{
"uprn": 100010341491,
"roofs": [
{
"description": "Pitched, 200 mm loft insulation",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"walls": [
{
"description": "Cavity wall, as built, no insulation (assumed)",
"energy_efficiency_rating": 1,
"environmental_efficiency_rating": 1
},
{
"description": "Timber frame, as built, no insulation (assumed)",
"energy_efficiency_rating": 1,
"environmental_efficiency_rating": 1
}
],
"floors": [
{
"description": "Suspended, no insulation (assumed)",
"energy_efficiency_rating": 0,
"environmental_efficiency_rating": 0
}
],
"status": "entered",
"windows": [
{
"description": "Fully double glazed",
"energy_efficiency_rating": 3,
"environmental_efficiency_rating": 3
}
],
"lighting": {
"description": "Low energy lighting in 88% of fixed outlets",
"energy_efficiency_rating": 5,
"environmental_efficiency_rating": 5
},
"postcode": "BB11 4EB",
"hot_water": {
"description": "From main system",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
},
"post_town": "BURNLEY",
"built_form": 2,
"created_at": "2012-01-26 20:02:54",
"glazed_area": 1,
"region_code": 19,
"report_type": 2,
"sap_heating": {
"cylinder_size": 1,
"water_heating_code": 901,
"water_heating_fuel": 26,
"secondary_fuel_type": 29,
"main_heating_details": [
{
"main_fuel_type": 26,
"boiler_flue_type": 2,
"fan_flue_present": "Y",
"heat_emitter_type": 1,
"boiler_index_number": 10315,
"main_heating_number": 1,
"main_heating_control": 2106,
"main_heating_category": 2,
"main_heating_fraction": 1,
"main_heating_data_source": 1
}
],
"secondary_heating_type": 691,
"has_fixed_air_conditioning": "false"
},
"sap_version": 9.9,
"schema_type": "SAP-Schema-15.0",
"uprn_source": "Energy Assessor",
"country_code": "EAW",
"main_heating": [
{
"description": "Boiler and radiators, mains gas",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"dwelling_type": "Semi-detached house",
"language_code": 1,
"property_type": 0,
"address_line_1": "87, Harold Street",
"schema_version": "LIG-15.0",
"assessment_type": "RdSAP",
"completion_date": "2012-01-26",
"inspection_date": "2012-01-26",
"extensions_count": 0,
"measurement_type": 1,
"total_floor_area": 63,
"transaction_type": 3,
"conservatory_type": 1,
"heated_room_count": 4,
"registration_date": "2012-01-26",
"restricted_access": 0,
"sap_energy_source": {
"main_gas": "Y",
"meter_type": 2,
"photovoltaic_supply": {
"percent_roof_area": 0
},
"wind_turbines_count": 0,
"wind_turbines_terrain_type": 2
},
"secondary_heating": {
"description": "Room heaters, electric",
"energy_efficiency_rating": 0,
"environmental_efficiency_rating": 0
},
"sap_building_parts": [
{
"identifier": "Main Dwelling",
"floor_heat_loss": 7,
"roof_construction": 4,
"wall_construction": 4,
"building_part_number": 1,
"sap_floor_dimensions": [
{
"floor": 0,
"room_height": 2.5,
"floor_insulation": 1,
"total_floor_area": 31.58,
"floor_construction": 2,
"heat_loss_perimeter": 16
},
{
"floor": 1,
"room_height": 2.5,
"total_floor_area": 31.58,
"heat_loss_perimeter": 16
}
],
"wall_insulation_type": 4,
"construction_age_band": "C",
"roof_insulation_location": 2,
"roof_insulation_thickness": "200mm"
},
{
"wall_area": 27.5,
"wall_location": 0,
"wall_construction": 5,
"wall_insulation_type": 4
}
],
"low_energy_lighting": 88,
"solar_water_heating": "N",
"bedf_revision_number": 317,
"habitable_room_count": 4,
"heating_cost_current": 614,
"co2_emissions_current": 3.3,
"energy_rating_current": 59,
"lighting_cost_current": 41,
"main_heating_controls": [
{
"description": "Programmer, room thermostat and TRVs",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"multiple_glazing_type": 1,
"open_fireplaces_count": 0,
"has_hot_water_cylinder": "false",
"heating_cost_potential": 534,
"hot_water_cost_current": 75,
"mechanical_ventilation": 0,
"suggested_improvements": [
{
"sequence": 1,
"typical_saving": 79,
"indicative_cost": "\u00a3100 - \u00a3300",
"improvement_type": "B",
"improvement_details": {
"improvement_number": 6
},
"improvement_category": 1,
"energy_performance_rating": 64,
"environmental_impact_rating": 65
},
{
"sequence": 2,
"typical_saving": 22,
"indicative_cost": "\u00a34,000 - \u00a36,000",
"improvement_type": "N",
"improvement_details": {
"improvement_number": 19
},
"improvement_category": 3,
"energy_performance_rating": 65,
"environmental_impact_rating": 67
},
{
"sequence": 3,
"typical_saving": 219,
"indicative_cost": "\u00a311,000 - \u00a320,000",
"improvement_type": "U",
"improvement_details": {
"improvement_number": 34
},
"improvement_category": 3,
"energy_performance_rating": 77,
"environmental_impact_rating": 78
},
{
"sequence": 4,
"typical_saving": 18,
"indicative_cost": "\u00a31,500 - \u00a34,000",
"improvement_type": "V",
"improvement_details": {
"improvement_number": 44
},
"improvement_category": 3,
"energy_performance_rating": 78,
"environmental_impact_rating": 79
}
],
"co2_emissions_potential": 2.8,
"energy_rating_potential": 64,
"lighting_cost_potential": 41,
"hot_water_cost_potential": 76,
"renewable_heat_incentive": {
"water_heating": 1910,
"space_heating_existing_dwelling": 9884,
"space_heating_with_cavity_insulation": 8246,
"space_heating_with_loft_and_cavity_insulation": 8246
},
"seller_commission_report": "Y",
"energy_consumption_current": 273,
"has_fixed_air_conditioning": "false",
"multiple_glazed_proportion": 100,
"calculation_software_version": "19.06r14",
"energy_consumption_potential": 238,
"environmental_impact_current": 59,
"fixed_lighting_outlets_count": 8,
"current_energy_efficiency_band": "D",
"environmental_impact_potential": 65,
"has_heated_separate_conservatory": "false",
"potential_energy_efficiency_band": "D",
"co2_emissions_current_per_floor_area": 52,
"low_energy_fixed_lighting_outlets_count": 7
}

View file

@ -0,0 +1,249 @@
{
"uprn": 100010347637,
"roofs": [
{
"description": "Pitched, 200 mm loft insulation",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"walls": [
{
"description": "System built, with external insulation",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
},
{
"description": "Cavity wall, filled cavity",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"floors": [
{
"description": "Solid, no insulation (assumed)",
"energy_efficiency_rating": 0,
"environmental_efficiency_rating": 0
}
],
"status": "entered",
"windows": [
{
"description": "Fully double glazed",
"energy_efficiency_rating": 3,
"environmental_efficiency_rating": 3
}
],
"lighting": {
"description": "Low energy lighting in 50% of fixed outlets",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
},
"postcode": "BB12 7DT",
"hot_water": {
"description": "From main system",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
},
"post_town": "BURNLEY",
"built_form": 3,
"created_at": "2011-10-17 19:02:44",
"glazed_area": 1,
"region_code": 19,
"report_type": 2,
"sap_heating": {
"cylinder_size": 1,
"water_heating_code": 901,
"water_heating_fuel": 26,
"main_heating_details": [
{
"main_fuel_type": 26,
"boiler_flue_type": 2,
"fan_flue_present": "Y",
"heat_emitter_type": 1,
"boiler_index_number": 10031,
"main_heating_number": 1,
"main_heating_control": 2106,
"main_heating_category": 2,
"main_heating_fraction": 1,
"main_heating_data_source": 1
}
],
"has_fixed_air_conditioning": "false"
},
"sap_version": 9.9,
"schema_type": "SAP-Schema-15.0",
"uprn_source": "Energy Assessor",
"country_code": "EAW",
"main_heating": [
{
"description": "Boiler and radiators, mains gas",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"dwelling_type": "End-terrace house",
"language_code": 1,
"property_type": 0,
"address_line_1": "45, Malvern Avenue",
"address_line_2": "Padiham",
"schema_version": "LIG-15.0",
"assessment_type": "RdSAP",
"completion_date": "2011-10-17",
"inspection_date": "2011-10-17",
"extensions_count": 1,
"measurement_type": 1,
"total_floor_area": 89,
"transaction_type": 3,
"conservatory_type": 1,
"heated_room_count": 5,
"registration_date": "2011-10-17",
"restricted_access": 0,
"sap_energy_source": {
"main_gas": "Y",
"meter_type": 2,
"photovoltaic_supply": {
"percent_roof_area": 0
},
"wind_turbines_count": 0,
"wind_turbines_terrain_type": 2
},
"secondary_heating": {
"description": "None",
"energy_efficiency_rating": 0,
"environmental_efficiency_rating": 0
},
"sap_building_parts": [
{
"identifier": "Main Dwelling",
"floor_heat_loss": 7,
"roof_construction": 4,
"wall_construction": 8,
"building_part_number": 1,
"sap_floor_dimensions": [
{
"floor": 0,
"room_height": 2.3,
"floor_insulation": 1,
"total_floor_area": 42.3,
"floor_construction": 1,
"heat_loss_perimeter": 18.47
},
{
"floor": 1,
"room_height": 2.3,
"total_floor_area": 42.37,
"heat_loss_perimeter": 21
}
],
"wall_insulation_type": 1,
"construction_age_band": "E",
"roof_insulation_location": 2,
"roof_insulation_thickness": "200mm"
},
{
"identifier": "Extension 1",
"floor_heat_loss": 7,
"roof_construction": 5,
"wall_construction": 4,
"building_part_number": 2,
"sap_floor_dimensions": [
{
"floor": 0,
"room_height": 1.9,
"floor_insulation": 1,
"total_floor_area": 4.28,
"floor_construction": 1,
"heat_loss_perimeter": 6
}
],
"wall_insulation_type": 2,
"construction_age_band": "E",
"roof_insulation_location": 4,
"roof_insulation_thickness": "NI"
}
],
"low_energy_lighting": 50,
"solar_water_heating": "N",
"bedf_revision_number": 313,
"habitable_room_count": 5,
"heating_cost_current": 472,
"co2_emissions_current": 2.9,
"energy_rating_current": 72,
"lighting_cost_current": 70,
"main_heating_controls": [
{
"description": "Programmer, room thermostat and TRVs",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"multiple_glazing_type": 1,
"open_fireplaces_count": 0,
"has_hot_water_cylinder": "false",
"heating_cost_potential": 476,
"hot_water_cost_current": 87,
"mechanical_ventilation": 0,
"suggested_improvements": [
{
"sequence": 1,
"typical_saving": 20,
"indicative_cost": "\u00a313",
"improvement_type": "E",
"improvement_details": {
"improvement_number": 35
},
"improvement_category": 1,
"energy_performance_rating": 73,
"environmental_impact_rating": 72
},
{
"sequence": 2,
"typical_saving": 25,
"indicative_cost": "\u00a34,000 - \u00a36,000",
"improvement_type": "N",
"improvement_details": {
"improvement_number": 19
},
"improvement_category": 3,
"energy_performance_rating": 74,
"environmental_impact_rating": 74
},
{
"sequence": 3,
"typical_saving": 214,
"indicative_cost": "\u00a311,000 - \u00a320,000",
"improvement_type": "U",
"improvement_details": {
"improvement_number": 34
},
"improvement_category": 3,
"energy_performance_rating": 83,
"environmental_impact_rating": 83
}
],
"co2_emissions_potential": 2.8,
"energy_rating_potential": 73,
"lighting_cost_potential": 47,
"hot_water_cost_potential": 87,
"renewable_heat_incentive": {
"water_heating": 2183,
"space_heating_existing_dwelling": 8680,
"space_heating_with_loft_insulation": 8455,
"space_heating_with_loft_and_cavity_insulation": 8455
},
"seller_commission_report": "Y",
"energy_consumption_current": 168,
"has_fixed_air_conditioning": "false",
"multiple_glazed_proportion": 100,
"calculation_software_version": "19.05r18",
"energy_consumption_potential": 163,
"environmental_impact_current": 71,
"fixed_lighting_outlets_count": 10,
"current_energy_efficiency_band": "C",
"environmental_impact_potential": 72,
"has_heated_separate_conservatory": "false",
"potential_energy_efficiency_band": "C",
"co2_emissions_current_per_floor_area": 32,
"low_energy_fixed_lighting_outlets_count": 5
}

View file

@ -0,0 +1,197 @@
{
"uprn": 100010347646,
"roofs": [
{
"description": "Pitched, 200 mm loft insulation",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"walls": [
{
"description": "System built, with external insulation",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"floors": [
{
"description": "(other premises below)",
"energy_efficiency_rating": 0,
"environmental_efficiency_rating": 0
}
],
"status": "entered",
"windows": [
{
"description": "Fully double glazed",
"energy_efficiency_rating": 3,
"environmental_efficiency_rating": 3
}
],
"lighting": {
"description": "Low energy lighting in 80% of fixed outlets",
"energy_efficiency_rating": 5,
"environmental_efficiency_rating": 5
},
"postcode": "BB12 7DT",
"hot_water": {
"description": "From main system",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
},
"post_town": "BURNLEY",
"built_form": 4,
"created_at": "2011-10-18 16:31:58",
"glazed_area": 1,
"region_code": 19,
"report_type": 2,
"sap_heating": {
"cylinder_size": 1,
"water_heating_code": 901,
"water_heating_fuel": 26,
"main_heating_details": [
{
"main_fuel_type": 26,
"boiler_flue_type": 2,
"fan_flue_present": "Y",
"heat_emitter_type": 1,
"boiler_index_number": 1749,
"main_heating_number": 1,
"main_heating_control": 2106,
"main_heating_category": 2,
"main_heating_fraction": 1,
"main_heating_data_source": 1
}
],
"has_fixed_air_conditioning": "false"
},
"sap_version": 9.9,
"schema_type": "SAP-Schema-15.0",
"uprn_source": "Energy Assessor",
"country_code": "EAW",
"main_heating": [
{
"description": "Boiler and radiators, mains gas",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"dwelling_type": "Top-floor flat",
"language_code": 1,
"property_type": 2,
"address_line_1": "62, Malvern Avenue",
"address_line_2": "Padiham",
"schema_version": "LIG-15.0",
"assessment_type": "RdSAP",
"completion_date": "2011-10-18",
"inspection_date": "2011-10-18",
"extensions_count": 0,
"measurement_type": 1,
"sap_flat_details": {
"level": 3,
"top_storey": "Y",
"flat_location": 1,
"heat_loss_corridor": 2,
"unheated_corridor_length": 2.8
},
"total_floor_area": 47,
"transaction_type": 3,
"conservatory_type": 1,
"heated_room_count": 2,
"registration_date": "2011-10-18",
"restricted_access": 0,
"sap_energy_source": {
"main_gas": "Y",
"meter_type": 2,
"photovoltaic_supply": {
"percent_roof_area": 0
},
"wind_turbines_count": 0,
"wind_turbines_terrain_type": 2
},
"secondary_heating": {
"description": "None",
"energy_efficiency_rating": 0,
"environmental_efficiency_rating": 0
},
"sap_building_parts": [
{
"identifier": "Main Dwelling",
"floor_heat_loss": 6,
"roof_construction": 4,
"wall_construction": 8,
"building_part_number": 1,
"sap_floor_dimensions": [
{
"floor": 0,
"room_height": 2.3,
"total_floor_area": 47.3,
"heat_loss_perimeter": 17.2
}
],
"wall_insulation_type": 1,
"construction_age_band": "E",
"roof_insulation_location": 2,
"roof_insulation_thickness": "200mm"
}
],
"low_energy_lighting": 80,
"solar_water_heating": "N",
"bedf_revision_number": 313,
"habitable_room_count": 2,
"heating_cost_current": 265,
"co2_emissions_current": 1.5,
"energy_rating_current": 75,
"lighting_cost_current": 33,
"main_heating_controls": [
{
"description": "Programmer, room thermostat and TRVs",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"multiple_glazing_type": 1,
"open_fireplaces_count": 0,
"has_hot_water_cylinder": "false",
"heating_cost_potential": 247,
"hot_water_cost_current": 79,
"mechanical_ventilation": 0,
"suggested_improvements": [
{
"sequence": 1,
"typical_saving": 30,
"indicative_cost": "\u00a31,500 - \u00a33,500",
"improvement_type": "I",
"improvement_details": {
"improvement_number": 20
},
"improvement_category": 2,
"energy_performance_rating": 77,
"environmental_impact_rating": 81
}
],
"co2_emissions_potential": 1.3,
"energy_rating_potential": 77,
"lighting_cost_potential": 33,
"hot_water_cost_potential": 67,
"renewable_heat_incentive": {
"water_heating": 1660,
"space_heating_existing_dwelling": 2877,
"space_heating_with_loft_and_cavity_insulation": 2877
},
"seller_commission_report": "Y",
"energy_consumption_current": 161,
"has_fixed_air_conditioning": "false",
"multiple_glazed_proportion": 100,
"calculation_software_version": "19.05r18",
"energy_consumption_potential": 143,
"environmental_impact_current": 79,
"fixed_lighting_outlets_count": 5,
"current_energy_efficiency_band": "C",
"environmental_impact_potential": 81,
"has_heated_separate_conservatory": "false",
"potential_energy_efficiency_band": "C",
"co2_emissions_current_per_floor_area": 31,
"low_energy_fixed_lighting_outlets_count": 4
}

View file

@ -0,0 +1,230 @@
{
"uprn": 100010350459,
"roofs": [
{
"description": "Pitched, 200 mm loft insulation",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"walls": [
{
"description": "Cavity wall, filled cavity",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"floors": [
{
"description": "Solid, no insulation (assumed)",
"energy_efficiency_rating": 0,
"environmental_efficiency_rating": 0
}
],
"status": "entered",
"windows": [
{
"description": "Fully double glazed",
"energy_efficiency_rating": 3,
"environmental_efficiency_rating": 3
}
],
"lighting": {
"description": "Low energy lighting in 40% of fixed outlets",
"energy_efficiency_rating": 3,
"environmental_efficiency_rating": 3
},
"postcode": "BB10 3NS",
"hot_water": {
"description": "From main system",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
},
"post_town": "BURNLEY",
"built_form": 2,
"created_at": "2011-09-22 14:53:31",
"glazed_area": 1,
"region_code": 19,
"report_type": 2,
"sap_heating": {
"cylinder_size": 1,
"water_heating_code": 901,
"water_heating_fuel": 26,
"secondary_fuel_type": 29,
"main_heating_details": [
{
"main_fuel_type": 26,
"boiler_flue_type": 2,
"fan_flue_present": "Y",
"heat_emitter_type": 1,
"boiler_index_number": 10030,
"main_heating_number": 1,
"main_heating_control": 2106,
"main_heating_category": 2,
"main_heating_fraction": 1,
"main_heating_data_source": 1
}
],
"secondary_heating_type": 691,
"has_fixed_air_conditioning": "false"
},
"sap_version": 9.9,
"schema_type": "SAP-Schema-15.0",
"uprn_source": "Energy Assessor",
"country_code": "EAW",
"main_heating": [
{
"description": "Boiler and radiators, mains gas",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"dwelling_type": "Semi-detached bungalow",
"language_code": 1,
"property_type": 1,
"address_line_1": "5, Old Hall Square",
"address_line_2": "Worsthorne",
"schema_version": "LIG-15.0",
"assessment_type": "RdSAP",
"completion_date": "2011-09-22",
"inspection_date": "2011-09-22",
"extensions_count": 0,
"measurement_type": 1,
"total_floor_area": 42,
"transaction_type": 3,
"conservatory_type": 1,
"heated_room_count": 2,
"registration_date": "2011-09-22",
"restricted_access": 0,
"sap_energy_source": {
"main_gas": "Y",
"meter_type": 2,
"photovoltaic_supply": {
"percent_roof_area": 0
},
"wind_turbines_count": 0,
"wind_turbines_terrain_type": 3
},
"secondary_heating": {
"description": "Room heaters, electric",
"energy_efficiency_rating": 0,
"environmental_efficiency_rating": 0
},
"sap_building_parts": [
{
"identifier": "Main Dwelling",
"floor_heat_loss": 7,
"roof_construction": 4,
"wall_construction": 4,
"building_part_number": 1,
"sap_floor_dimensions": [
{
"floor": 0,
"room_height": 2.3,
"floor_insulation": 1,
"total_floor_area": 41.5,
"floor_construction": 1,
"heat_loss_perimeter": 23.2
}
],
"wall_insulation_type": 2,
"construction_age_band": "D",
"roof_insulation_location": 2,
"roof_insulation_thickness": "200mm"
}
],
"low_energy_lighting": 40,
"solar_water_heating": "N",
"bedf_revision_number": 313,
"habitable_room_count": 2,
"heating_cost_current": 391,
"co2_emissions_current": 2.0,
"energy_rating_current": 65,
"lighting_cost_current": 39,
"main_heating_controls": [
{
"description": "Programmer, room thermostat and TRVs",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"multiple_glazing_type": 3,
"open_fireplaces_count": 0,
"has_hot_water_cylinder": "false",
"heating_cost_potential": 393,
"hot_water_cost_current": 62,
"mechanical_ventilation": 0,
"suggested_improvements": [
{
"sequence": 1,
"typical_saving": 12,
"indicative_cost": "\u00a38",
"improvement_type": "E",
"improvement_details": {
"improvement_number": 35
},
"improvement_category": 1,
"energy_performance_rating": 66,
"environmental_impact_rating": 70
},
{
"sequence": 2,
"typical_saving": 19,
"indicative_cost": "\u00a34,000 - \u00a36,000",
"improvement_type": "N",
"improvement_details": {
"improvement_number": 19
},
"improvement_category": 3,
"energy_performance_rating": 68,
"environmental_impact_rating": 72
},
{
"sequence": 3,
"typical_saving": 214,
"indicative_cost": "\u00a311,000 - \u00a320,000",
"improvement_type": "U",
"improvement_details": {
"improvement_number": 34
},
"improvement_category": 3,
"energy_performance_rating": 83,
"environmental_impact_rating": 86
},
{
"sequence": 4,
"typical_saving": 76,
"indicative_cost": "\u00a31,500 - \u00a34,000",
"improvement_type": "V",
"improvement_details": {
"improvement_number": 44
},
"improvement_category": 3,
"energy_performance_rating": 88,
"environmental_impact_rating": 91
}
],
"co2_emissions_potential": 2.0,
"energy_rating_potential": 66,
"lighting_cost_potential": 25,
"hot_water_cost_potential": 62,
"renewable_heat_incentive": {
"water_heating": 1571,
"space_heating_existing_dwelling": 5377,
"space_heating_with_loft_and_cavity_insulation": 5377
},
"seller_commission_report": "Y",
"energy_consumption_current": 255,
"has_fixed_air_conditioning": "false",
"multiple_glazed_proportion": 100,
"calculation_software_version": "19.05r15",
"energy_consumption_potential": 249,
"environmental_impact_current": 69,
"fixed_lighting_outlets_count": 5,
"current_energy_efficiency_band": "D",
"environmental_impact_potential": 70,
"has_heated_separate_conservatory": "false",
"potential_energy_efficiency_band": "D",
"co2_emissions_current_per_floor_area": 48,
"low_energy_fixed_lighting_outlets_count": 2
}

View file

@ -0,0 +1,275 @@
{
"uprn": 100010350468,
"roofs": [
{
"description": "Pitched, 100 mm loft insulation",
"energy_efficiency_rating": 3,
"environmental_efficiency_rating": 3
},
{
"description": "Flat, no insulation (assumed)",
"energy_efficiency_rating": 1,
"environmental_efficiency_rating": 1
}
],
"walls": [
{
"description": "Cavity wall, filled cavity",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"floors": [
{
"description": "Solid, no insulation (assumed)",
"energy_efficiency_rating": 0,
"environmental_efficiency_rating": 0
}
],
"status": "entered",
"windows": [
{
"description": "Fully double glazed",
"energy_efficiency_rating": 3,
"environmental_efficiency_rating": 3
}
],
"lighting": {
"description": "Low energy lighting in 38% of fixed outlets",
"energy_efficiency_rating": 3,
"environmental_efficiency_rating": 3
},
"postcode": "BB10 3NS",
"hot_water": {
"description": "From main system",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
},
"post_town": "BURNLEY",
"built_form": 3,
"created_at": "2011-05-25 20:30:10",
"glazed_area": 1,
"region_code": 19,
"report_type": 2,
"sap_heating": {
"cylinder_size": 1,
"water_heating_code": 901,
"water_heating_fuel": 26,
"secondary_fuel_type": 26,
"main_heating_details": [
{
"main_fuel_type": 26,
"boiler_flue_type": 2,
"fan_flue_present": "Y",
"heat_emitter_type": 1,
"boiler_index_number": 8358,
"main_heating_number": 1,
"main_heating_control": 2106,
"main_heating_category": 2,
"main_heating_fraction": 1,
"main_heating_data_source": 1
}
],
"secondary_heating_type": 603,
"has_fixed_air_conditioning": "false"
},
"sap_version": 9.9,
"schema_type": "SAP-Schema-15.0",
"uprn_source": "Energy Assessor",
"country_code": "EAW",
"main_heating": [
{
"description": "Boiler and radiators, mains gas",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"dwelling_type": "End-terrace house",
"language_code": 1,
"property_type": 0,
"address_line_1": "14, Old Hall Square",
"address_line_2": "Worsthorne",
"schema_version": "LIG-15.0",
"assessment_type": "RdSAP",
"completion_date": "2011-05-25",
"inspection_date": "2011-05-25",
"extensions_count": 1,
"measurement_type": 1,
"total_floor_area": 94,
"transaction_type": 5,
"conservatory_type": 1,
"heated_room_count": 5,
"registration_date": "2011-05-25",
"restricted_access": 0,
"sap_energy_source": {
"main_gas": "Y",
"meter_type": 2,
"photovoltaic_supply": {
"percent_roof_area": 0
},
"wind_turbines_count": 0,
"wind_turbines_terrain_type": 3
},
"secondary_heating": {
"description": "Room heaters, mains gas",
"energy_efficiency_rating": 0,
"environmental_efficiency_rating": 0
},
"sap_building_parts": [
{
"identifier": "Main Dwelling",
"floor_heat_loss": 7,
"roof_construction": 4,
"wall_construction": 4,
"building_part_number": 1,
"sap_floor_dimensions": [
{
"floor": 0,
"room_height": 2.5,
"floor_insulation": 1,
"total_floor_area": 43.7,
"floor_construction": 1,
"heat_loss_perimeter": 19.37
},
{
"floor": 1,
"room_height": 2.5,
"total_floor_area": 43.7,
"heat_loss_perimeter": 21.5
}
],
"wall_insulation_type": 2,
"construction_age_band": "D",
"roof_insulation_location": 2,
"roof_insulation_thickness": "100mm"
},
{
"identifier": "Extension 1",
"floor_heat_loss": 7,
"roof_construction": 1,
"wall_construction": 4,
"building_part_number": 2,
"sap_floor_dimensions": [
{
"floor": 0,
"room_height": 2.1,
"floor_insulation": 1,
"total_floor_area": 6.52,
"floor_construction": 1,
"heat_loss_perimeter": 8.12
}
],
"wall_insulation_type": 2,
"construction_age_band": "D",
"roof_insulation_location": 4,
"roof_insulation_thickness": "NI"
}
],
"low_energy_lighting": 38,
"solar_water_heating": "N",
"bedf_revision_number": 309,
"habitable_room_count": 5,
"heating_cost_current": 597,
"co2_emissions_current": 3.8,
"energy_rating_current": 66,
"lighting_cost_current": 77,
"main_heating_controls": [
{
"description": "Programmer, room thermostat and TRVs",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"multiple_glazing_type": 1,
"open_fireplaces_count": 0,
"has_hot_water_cylinder": "false",
"heating_cost_potential": 558,
"hot_water_cost_current": 97,
"mechanical_ventilation": 0,
"suggested_improvements": [
{
"sequence": 1,
"typical_saving": 25,
"indicative_cost": "\u00a313",
"improvement_type": "E",
"improvement_details": {
"improvement_number": 35
},
"improvement_category": 1,
"energy_performance_rating": 67,
"environmental_impact_rating": 64
},
{
"sequence": 2,
"typical_saving": 55,
"indicative_cost": "\u00a31,500 - \u00a33,500",
"improvement_type": "I",
"improvement_details": {
"improvement_number": 20
},
"improvement_category": 2,
"energy_performance_rating": 69,
"environmental_impact_rating": 68
},
{
"sequence": 3,
"typical_saving": 24,
"indicative_cost": "\u00a34,000 - \u00a36,000",
"improvement_type": "N",
"improvement_details": {
"improvement_number": 19
},
"improvement_category": 3,
"energy_performance_rating": 70,
"environmental_impact_rating": 69
},
{
"sequence": 4,
"typical_saving": 207,
"indicative_cost": "\u00a311,000 - \u00a320,000",
"improvement_type": "U",
"improvement_details": {
"improvement_number": 34
},
"improvement_category": 3,
"energy_performance_rating": 80,
"environmental_impact_rating": 78
},
{
"sequence": 5,
"typical_saving": 74,
"indicative_cost": "\u00a31,500 - \u00a34,000",
"improvement_type": "V",
"improvement_details": {
"improvement_number": 44
},
"improvement_category": 3,
"energy_performance_rating": 83,
"environmental_impact_rating": 81
}
],
"co2_emissions_potential": 3.4,
"energy_rating_potential": 69,
"lighting_cost_potential": 47,
"hot_water_cost_potential": 86,
"renewable_heat_incentive": {
"water_heating": 2212,
"space_heating_existing_dwelling": 10467,
"space_heating_with_loft_insulation": 10267,
"space_heating_with_loft_and_cavity_insulation": 10267
},
"seller_commission_report": "Y",
"energy_consumption_current": 210,
"has_fixed_air_conditioning": "false",
"multiple_glazed_proportion": 100,
"calculation_software_version": "19.03r10",
"energy_consumption_potential": 186,
"environmental_impact_current": 63,
"fixed_lighting_outlets_count": 8,
"current_energy_efficiency_band": "D",
"environmental_impact_potential": 68,
"has_heated_separate_conservatory": "false",
"potential_energy_efficiency_band": "C",
"co2_emissions_current_per_floor_area": 40,
"low_energy_fixed_lighting_outlets_count": 3
}

View file

@ -0,0 +1,255 @@
{
"uprn": 100010359769,
"roofs": [
{
"description": "Pitched, 250 mm loft insulation",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
},
{
"description": "Flat, limited insulation (assumed)",
"energy_efficiency_rating": 1,
"environmental_efficiency_rating": 1
}
],
"walls": [
{
"description": "Cavity wall, filled cavity",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"floors": [
{
"description": "Suspended, no insulation (assumed)",
"energy_efficiency_rating": 0,
"environmental_efficiency_rating": 0
},
{
"description": "Solid, no insulation (assumed)",
"energy_efficiency_rating": 0,
"environmental_efficiency_rating": 0
}
],
"status": "entered",
"windows": [
{
"description": "Fully double glazed",
"energy_efficiency_rating": 3,
"environmental_efficiency_rating": 3
}
],
"lighting": {
"description": "Low energy lighting in 91% of fixed outlets",
"energy_efficiency_rating": 5,
"environmental_efficiency_rating": 5
},
"postcode": "BB12 7BY",
"hot_water": {
"description": "From main system",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
},
"post_town": "BURNLEY",
"built_form": 4,
"created_at": "2011-07-25 16:35:41",
"glazed_area": 1,
"region_code": 19,
"report_type": 2,
"sap_heating": {
"cylinder_size": 1,
"water_heating_code": 901,
"water_heating_fuel": 26,
"secondary_fuel_type": 29,
"main_heating_details": [
{
"main_fuel_type": 26,
"boiler_flue_type": 2,
"fan_flue_present": "Y",
"heat_emitter_type": 1,
"boiler_index_number": 8358,
"main_heating_number": 1,
"main_heating_control": 2106,
"main_heating_category": 2,
"main_heating_fraction": 1,
"main_heating_data_source": 1
}
],
"secondary_heating_type": 691,
"has_fixed_air_conditioning": "false"
},
"sap_version": 9.9,
"schema_type": "SAP-Schema-15.0",
"uprn_source": "Energy Assessor",
"country_code": "EAW",
"main_heating": [
{
"description": "Boiler and radiators, mains gas",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"dwelling_type": "Mid-terrace house",
"language_code": 1,
"property_type": 0,
"address_line_1": "3, Warwick Drive",
"address_line_2": "Padiham",
"schema_version": "LIG-15.0",
"assessment_type": "RdSAP",
"completion_date": "2011-07-25",
"inspection_date": "2011-07-25",
"extensions_count": 1,
"measurement_type": 1,
"total_floor_area": 76,
"transaction_type": 3,
"conservatory_type": 1,
"heated_room_count": 5,
"registration_date": "2011-07-25",
"restricted_access": 0,
"sap_energy_source": {
"main_gas": "Y",
"meter_type": 2,
"photovoltaic_supply": {
"percent_roof_area": 0
},
"wind_turbines_count": 0,
"wind_turbines_terrain_type": 2
},
"secondary_heating": {
"description": "Room heaters, electric",
"energy_efficiency_rating": 0,
"environmental_efficiency_rating": 0
},
"sap_building_parts": [
{
"identifier": "Main Dwelling",
"floor_heat_loss": 7,
"roof_construction": 4,
"wall_construction": 4,
"building_part_number": 1,
"sap_floor_dimensions": [
{
"floor": 0,
"room_height": 2.58,
"floor_insulation": 1,
"total_floor_area": 35.59,
"floor_construction": 2,
"heat_loss_perimeter": 9
},
{
"floor": 1,
"room_height": 2.43,
"total_floor_area": 34.75,
"heat_loss_perimeter": 10.86
}
],
"wall_insulation_type": 2,
"construction_age_band": "C",
"roof_insulation_location": 2,
"roof_insulation_thickness": "250mm"
},
{
"identifier": "Extension 1",
"floor_heat_loss": 7,
"roof_construction": 1,
"wall_construction": 4,
"building_part_number": 2,
"sap_floor_dimensions": [
{
"floor": 0,
"room_height": 2.33,
"floor_insulation": 1,
"total_floor_area": 5.37,
"floor_construction": 1,
"heat_loss_perimeter": 4.66
}
],
"wall_insulation_type": 2,
"construction_age_band": "E",
"roof_insulation_location": 4,
"roof_insulation_thickness": "NI"
}
],
"low_energy_lighting": 91,
"solar_water_heating": "N",
"bedf_revision_number": 311,
"habitable_room_count": 5,
"heating_cost_current": 501,
"co2_emissions_current": 2.8,
"energy_rating_current": 68,
"lighting_cost_current": 45,
"main_heating_controls": [
{
"description": "Programmer, room thermostat and TRVs",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"multiple_glazing_type": 3,
"open_fireplaces_count": 0,
"has_hot_water_cylinder": "false",
"heating_cost_potential": 471,
"hot_water_cost_current": 95,
"mechanical_ventilation": 0,
"suggested_improvements": [
{
"sequence": 1,
"typical_saving": 41,
"indicative_cost": "\u00a31,500 - \u00a33,500",
"improvement_type": "I",
"improvement_details": {
"improvement_number": 20
},
"improvement_category": 2,
"energy_performance_rating": 70,
"environmental_impact_rating": 71
},
{
"sequence": 2,
"typical_saving": 24,
"indicative_cost": "\u00a34,000 - \u00a36,000",
"improvement_type": "N",
"improvement_details": {
"improvement_number": 19
},
"improvement_category": 3,
"energy_performance_rating": 71,
"environmental_impact_rating": 73
},
{
"sequence": 3,
"typical_saving": 214,
"indicative_cost": "\u00a311,000 - \u00a320,000",
"improvement_type": "U",
"improvement_details": {
"improvement_number": 34
},
"improvement_category": 3,
"energy_performance_rating": 82,
"environmental_impact_rating": 83
}
],
"co2_emissions_potential": 2.6,
"energy_rating_potential": 70,
"lighting_cost_potential": 45,
"hot_water_cost_potential": 83,
"renewable_heat_incentive": {
"water_heating": 2071,
"space_heating_existing_dwelling": 6949,
"space_heating_with_loft_and_cavity_insulation": 6949
},
"seller_commission_report": "Y",
"energy_consumption_current": 196,
"has_fixed_air_conditioning": "false",
"multiple_glazed_proportion": 100,
"calculation_software_version": "19.05r12",
"energy_consumption_potential": 180,
"environmental_impact_current": 69,
"fixed_lighting_outlets_count": 11,
"current_energy_efficiency_band": "D",
"environmental_impact_potential": 71,
"has_heated_separate_conservatory": "false",
"potential_energy_efficiency_band": "C",
"co2_emissions_current_per_floor_area": 37,
"low_energy_fixed_lighting_outlets_count": 10
}

View file

@ -0,0 +1,248 @@
{
"uprn": 100010359788,
"roofs": [
{
"description": "Pitched, 150 mm loft insulation",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
},
{
"description": "Flat, limited insulation (assumed)",
"energy_efficiency_rating": 2,
"environmental_efficiency_rating": 2
}
],
"walls": [
{
"description": "Cavity wall, filled cavity",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"floors": [
{
"description": "Solid, no insulation (assumed)",
"energy_efficiency_rating": 0,
"environmental_efficiency_rating": 0
}
],
"status": "entered",
"windows": [
{
"description": "Fully double glazed",
"energy_efficiency_rating": 3,
"environmental_efficiency_rating": 3
}
],
"lighting": {
"description": "Low energy lighting in 89% of fixed outlets",
"energy_efficiency_rating": 5,
"environmental_efficiency_rating": 5
},
"postcode": "BB12 7BY",
"hot_water": {
"description": "From main system",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
},
"post_town": "BURNLEY",
"built_form": 4,
"created_at": "2011-08-04 07:03:30",
"glazed_area": 1,
"region_code": 19,
"report_type": 2,
"sap_heating": {
"cylinder_size": 1,
"water_heating_code": 901,
"water_heating_fuel": 26,
"main_heating_details": [
{
"main_fuel_type": 26,
"boiler_flue_type": 2,
"fan_flue_present": "Y",
"heat_emitter_type": 1,
"boiler_index_number": 8358,
"main_heating_number": 1,
"main_heating_control": 2106,
"main_heating_category": 2,
"main_heating_fraction": 1,
"main_heating_data_source": 1
}
],
"has_fixed_air_conditioning": "false"
},
"sap_version": 9.9,
"schema_type": "SAP-Schema-15.0",
"uprn_source": "Energy Assessor",
"country_code": "EAW",
"main_heating": [
{
"description": "Boiler and radiators, mains gas",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"dwelling_type": "Mid-terrace house",
"language_code": 1,
"property_type": 0,
"address_line_1": "22, Warwick Drive",
"address_line_2": "Padiham",
"schema_version": "LIG-15.0",
"assessment_type": "RdSAP",
"completion_date": "2011-08-04",
"inspection_date": "2011-08-04",
"extensions_count": 1,
"measurement_type": 1,
"total_floor_area": 77,
"transaction_type": 3,
"conservatory_type": 1,
"heated_room_count": 5,
"registration_date": "2011-08-04",
"restricted_access": 0,
"sap_energy_source": {
"main_gas": "Y",
"meter_type": 2,
"photovoltaic_supply": {
"percent_roof_area": 0
},
"wind_turbines_count": 0,
"wind_turbines_terrain_type": 2
},
"secondary_heating": {
"description": "None",
"energy_efficiency_rating": 0,
"environmental_efficiency_rating": 0
},
"sap_building_parts": [
{
"identifier": "Main Dwelling",
"floor_heat_loss": 7,
"roof_construction": 4,
"wall_construction": 4,
"building_part_number": 1,
"sap_floor_dimensions": [
{
"floor": 0,
"room_height": 2.35,
"floor_insulation": 1,
"total_floor_area": 35,
"floor_construction": 1,
"heat_loss_perimeter": 8.3
},
{
"floor": 1,
"room_height": 2.4,
"total_floor_area": 35,
"heat_loss_perimeter": 11
}
],
"wall_insulation_type": 2,
"construction_age_band": "C",
"roof_insulation_location": 2,
"roof_insulation_thickness": "150mm"
},
{
"identifier": "Extension 1",
"floor_heat_loss": 7,
"roof_construction": 1,
"wall_construction": 4,
"building_part_number": 2,
"sap_floor_dimensions": [
{
"floor": 0,
"room_height": 2,
"floor_insulation": 1,
"total_floor_area": 6.63,
"floor_construction": 1,
"heat_loss_perimeter": 5.16
}
],
"wall_insulation_type": 2,
"construction_age_band": "F",
"roof_insulation_location": 4,
"roof_insulation_thickness": "NI"
}
],
"low_energy_lighting": 89,
"solar_water_heating": "N",
"bedf_revision_number": 312,
"habitable_room_count": 5,
"heating_cost_current": 409,
"co2_emissions_current": 2.4,
"energy_rating_current": 73,
"lighting_cost_current": 46,
"main_heating_controls": [
{
"description": "Programmer, room thermostat and TRVs",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"multiple_glazing_type": 1,
"open_fireplaces_count": 0,
"has_hot_water_cylinder": "false",
"heating_cost_potential": 379,
"hot_water_cost_current": 95,
"mechanical_ventilation": 0,
"suggested_improvements": [
{
"sequence": 1,
"typical_saving": 41,
"indicative_cost": "\u00a31,500 - \u00a33,500",
"improvement_type": "I",
"improvement_details": {
"improvement_number": 20
},
"improvement_category": 2,
"energy_performance_rating": 75,
"environmental_impact_rating": 76
},
{
"sequence": 2,
"typical_saving": 25,
"indicative_cost": "\u00a34,000 - \u00a36,000",
"improvement_type": "N",
"improvement_details": {
"improvement_number": 19
},
"improvement_category": 3,
"energy_performance_rating": 76,
"environmental_impact_rating": 77
},
{
"sequence": 3,
"typical_saving": 214,
"indicative_cost": "\u00a311,000 - \u00a320,000",
"improvement_type": "U",
"improvement_details": {
"improvement_number": 34
},
"improvement_category": 3,
"energy_performance_rating": 86,
"environmental_impact_rating": 87
}
],
"co2_emissions_potential": 2.2,
"energy_rating_potential": 75,
"lighting_cost_potential": 46,
"hot_water_cost_potential": 84,
"renewable_heat_incentive": {
"water_heating": 2080,
"space_heating_existing_dwelling": 6207,
"space_heating_with_loft_and_cavity_insulation": 6207
},
"seller_commission_report": "Y",
"energy_consumption_current": 166,
"has_fixed_air_conditioning": "false",
"multiple_glazed_proportion": 100,
"calculation_software_version": "19.05r15",
"energy_consumption_potential": 150,
"environmental_impact_current": 73,
"fixed_lighting_outlets_count": 9,
"current_energy_efficiency_band": "C",
"environmental_impact_potential": 76,
"has_heated_separate_conservatory": "false",
"potential_energy_efficiency_band": "C",
"co2_emissions_current_per_floor_area": 32,
"low_energy_fixed_lighting_outlets_count": 8
}

View file

@ -0,0 +1,253 @@
{
"uprn": 10070394806,
"roofs": [
{
"description": "Pitched, 300+ mm loft insulation",
"energy_efficiency_rating": 5,
"environmental_efficiency_rating": 5
}
],
"walls": [
{
"description": "System built, as built, insulated (assumed)",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
},
{
"description": "Cavity wall, as built, insulated (assumed)",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"floors": [
{
"description": "Suspended, insulated (assumed)",
"energy_efficiency_rating": 0,
"environmental_efficiency_rating": 0
}
],
"status": "entered",
"windows": [
{
"description": "Fully double glazed",
"energy_efficiency_rating": 3,
"environmental_efficiency_rating": 3
}
],
"lighting": {
"description": "Low energy lighting in all fixed outlets",
"energy_efficiency_rating": 5,
"environmental_efficiency_rating": 5
},
"postcode": "M11 4TL",
"hot_water": {
"description": "From main system",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
},
"post_town": "MANCHESTER",
"built_form": 4,
"created_at": "2011-05-17 16:23:24",
"glazed_area": 1,
"region_code": 19,
"report_type": 2,
"sap_heating": {
"cylinder_size": 1,
"water_heating_code": 901,
"water_heating_fuel": 26,
"main_heating_details": [
{
"main_fuel_type": 26,
"boiler_flue_type": 2,
"fan_flue_present": "Y",
"heat_emitter_type": 1,
"boiler_index_number": 10032,
"main_heating_number": 1,
"main_heating_control": 2106,
"main_heating_category": 2,
"main_heating_fraction": 1,
"main_heating_data_source": 1
}
],
"has_fixed_air_conditioning": "false"
},
"sap_version": 9.9,
"schema_type": "SAP-Schema-15.0",
"uprn_source": "Energy Assessor",
"country_code": "EAW",
"main_heating": [
{
"description": "Boiler and radiators, mains gas",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"dwelling_type": "Mid-terrace house",
"language_code": 1,
"property_type": 0,
"address_line_1": "4, Stillwater Drive",
"schema_version": "LIG-15.0",
"assessment_type": "RdSAP",
"completion_date": "2011-05-17",
"inspection_date": "2011-05-17",
"extensions_count": 0,
"measurement_type": 1,
"total_floor_area": 73,
"transaction_type": 3,
"conservatory_type": 1,
"heated_room_count": 4,
"registration_date": "2011-05-17",
"restricted_access": 1,
"sap_energy_source": {
"main_gas": "Y",
"meter_type": 3,
"photovoltaic_supply": {
"percent_roof_area": 0
},
"wind_turbines_count": 0,
"wind_turbines_terrain_type": 2
},
"secondary_heating": {
"description": "None",
"energy_efficiency_rating": 0,
"environmental_efficiency_rating": 0
},
"sap_building_parts": [
{
"identifier": "Main Dwelling",
"floor_heat_loss": 7,
"roof_construction": 4,
"wall_construction": 4,
"building_part_number": 1,
"sap_floor_dimensions": [
{
"floor": 0,
"room_height": 2.38,
"floor_insulation": 0,
"total_floor_area": 36.63,
"floor_construction": 2,
"heat_loss_perimeter": 10.81
},
{
"floor": 1,
"room_height": 2.36,
"total_floor_area": 36.63,
"heat_loss_perimeter": 10.81
}
],
"wall_insulation_type": 5,
"construction_age_band": "J",
"roof_insulation_location": 2,
"roof_insulation_thickness": "300mm+"
},
{
"wall_area": 20.33,
"wall_location": 0,
"wall_construction": 8,
"wall_insulation_type": 5
}
],
"low_energy_lighting": 100,
"solar_water_heating": "N",
"bedf_revision_number": 308,
"habitable_room_count": 4,
"heating_cost_current": {
"value": 315,
"currency": "GBP"
},
"co2_emissions_current": {
"value": 1.8,
"quantity": "tonnes per year"
},
"energy_rating_current": 77,
"lighting_cost_current": {
"value": 42,
"currency": "GBP"
},
"main_heating_controls": [
{
"description": "Programmer, room thermostat and TRVs",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"multiple_glazing_type": 3,
"open_fireplaces_count": 0,
"has_hot_water_cylinder": "false",
"heating_cost_potential": {
"value": 315,
"currency": "GBP"
},
"hot_water_cost_current": {
"value": 79,
"currency": "GBP"
},
"mechanical_ventilation": 0,
"suggested_improvements": [
{
"sequence": 1,
"typical_saving": {
"value": 23,
"currency": "GBP"
},
"indicative_cost": "\u00a34,000 - \u00a36,000",
"improvement_type": "N",
"improvement_details": {
"improvement_number": 19
},
"improvement_category": 3,
"energy_performance_rating": 78,
"environmental_impact_rating": 81
},
{
"sequence": 2,
"typical_saving": {
"value": 207,
"currency": "GBP"
},
"indicative_cost": "\u00a311,000 - \u00a320,000",
"improvement_type": "U",
"improvement_details": {
"improvement_number": 34
},
"improvement_category": 3,
"energy_performance_rating": 89,
"environmental_impact_rating": 91
}
],
"co2_emissions_potential": {
"value": 1.8,
"quantity": "tonnes per year"
},
"energy_rating_potential": 77,
"lighting_cost_potential": {
"value": 42,
"currency": "GBP"
},
"hot_water_cost_potential": {
"value": 79,
"currency": "GBP"
},
"renewable_heat_incentive": {
"water_heating": 2044,
"space_heating_existing_dwelling": 4689,
"space_heating_with_loft_and_cavity_insulation": 4689
},
"seller_commission_report": "Y",
"energy_consumption_current": 130,
"has_fixed_air_conditioning": "false",
"multiple_glazed_proportion": 100,
"calculation_software_version": 4.0,
"energy_consumption_potential": 130,
"environmental_impact_current": 79,
"fixed_lighting_outlets_count": 6,
"current_energy_efficiency_band": "C",
"environmental_impact_potential": 79,
"has_heated_separate_conservatory": "false",
"potential_energy_efficiency_band": "C",
"co2_emissions_current_per_floor_area": {
"value": 25,
"quantity": "kg/m2 per year"
},
"low_energy_fixed_lighting_outlets_count": 6
}

View file

@ -0,0 +1,261 @@
{
"uprn": 10070400618,
"roofs": [
{
"description": "Pitched, 300+ mm loft insulation",
"energy_efficiency_rating": 5,
"environmental_efficiency_rating": 5
}
],
"walls": [
{
"description": "Cavity wall, as built, partial insulation (assumed)",
"energy_efficiency_rating": 3,
"environmental_efficiency_rating": 3
}
],
"floors": [
{
"description": "Suspended, no insulation (assumed)",
"energy_efficiency_rating": 0,
"environmental_efficiency_rating": 0
}
],
"status": "entered",
"windows": [
{
"description": "Fully double glazed",
"energy_efficiency_rating": 3,
"environmental_efficiency_rating": 3
}
],
"lighting": {
"description": "Low energy lighting in all fixed outlets",
"energy_efficiency_rating": 5,
"environmental_efficiency_rating": 5
},
"postcode": "M11 4DN",
"hot_water": {
"description": "From main system",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
},
"post_town": "MANCHESTER",
"built_form": 3,
"created_at": "2011-10-24 15:47:53",
"glazed_area": 1,
"region_code": 19,
"report_type": 2,
"sap_heating": {
"cylinder_size": 4,
"water_heating_code": 901,
"water_heating_fuel": 26,
"cylinder_thermostat": "Y",
"main_heating_details": [
{
"main_fuel_type": 26,
"boiler_flue_type": 2,
"fan_flue_present": "Y",
"heat_emitter_type": 1,
"boiler_index_number": 10314,
"main_heating_number": 1,
"main_heating_control": 2106,
"main_heating_category": 2,
"main_heating_fraction": 1,
"main_heating_data_source": 1
}
],
"cylinder_insulation_type": 1,
"has_fixed_air_conditioning": "false",
"cylinder_insulation_thickness": 50
},
"sap_version": 9.9,
"schema_type": "SAP-Schema-15.0",
"uprn_source": "Energy Assessor",
"country_code": "EAW",
"main_heating": [
{
"description": "Boiler and radiators, mains gas",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"dwelling_type": "End-terrace house",
"language_code": 1,
"property_type": 0,
"address_line_1": "10, Stuart Street",
"schema_version": "LIG-15.0",
"assessment_type": "RdSAP",
"completion_date": "2011-10-24",
"inspection_date": "2011-10-24",
"extensions_count": 0,
"measurement_type": 1,
"total_floor_area": 79,
"transaction_type": 3,
"conservatory_type": 1,
"heated_room_count": 4,
"registration_date": "2011-10-24",
"restricted_access": 1,
"sap_energy_source": {
"main_gas": "Y",
"meter_type": 3,
"photovoltaic_supply": {
"percent_roof_area": 0
},
"wind_turbines_count": 0,
"wind_turbines_terrain_type": 2
},
"secondary_heating": {
"description": "None",
"energy_efficiency_rating": 0,
"environmental_efficiency_rating": 0
},
"sap_building_parts": [
{
"identifier": "Main Dwelling",
"floor_heat_loss": 7,
"roof_construction": 4,
"wall_construction": 4,
"building_part_number": 1,
"sap_floor_dimensions": [
{
"floor": 0,
"room_height": 2.37,
"floor_insulation": 0,
"total_floor_area": 39.46,
"floor_construction": 2,
"heat_loss_perimeter": 18.85
},
{
"floor": 1,
"room_height": 2.31,
"total_floor_area": 39.46,
"heat_loss_perimeter": 18.85
}
],
"wall_insulation_type": 4,
"construction_age_band": "F",
"roof_insulation_location": 2,
"roof_insulation_thickness": "300mm+"
}
],
"low_energy_lighting": 100,
"solar_water_heating": "N",
"bedf_revision_number": 314,
"habitable_room_count": 4,
"heating_cost_current": {
"value": 488,
"currency": "GBP"
},
"co2_emissions_current": {
"value": 3.0,
"quantity": "tonnes per year"
},
"energy_rating_current": 69,
"lighting_cost_current": {
"value": 43,
"currency": "GBP"
},
"main_heating_controls": [
{
"description": "Programmer, room thermostat and TRVs",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"multiple_glazing_type": 3,
"open_fireplaces_count": 0,
"has_hot_water_cylinder": "true",
"heating_cost_potential": {
"value": 413,
"currency": "GBP"
},
"hot_water_cost_current": {
"value": 109,
"currency": "GBP"
},
"mechanical_ventilation": 0,
"suggested_improvements": [
{
"sequence": 1,
"typical_saving": {
"value": 74,
"currency": "GBP"
},
"indicative_cost": "\u00a3100 - \u00a3300",
"improvement_type": "B",
"improvement_details": {
"improvement_number": 6
},
"improvement_category": 1,
"energy_performance_rating": 72,
"environmental_impact_rating": 73
},
{
"sequence": 2,
"typical_saving": {
"value": 37,
"currency": "GBP"
},
"indicative_cost": "\u00a34,000 - \u00a36,000",
"improvement_type": "N",
"improvement_details": {
"improvement_number": 19
},
"improvement_category": 3,
"energy_performance_rating": 74,
"environmental_impact_rating": 75
},
{
"sequence": 3,
"typical_saving": {
"value": 214,
"currency": "GBP"
},
"indicative_cost": "\u00a311,000 - \u00a320,000",
"improvement_type": "U",
"improvement_details": {
"improvement_number": 34
},
"improvement_category": 3,
"energy_performance_rating": 85,
"environmental_impact_rating": 85
}
],
"co2_emissions_potential": {
"value": 2.5,
"quantity": "tonnes per year"
},
"energy_rating_potential": 72,
"lighting_cost_potential": {
"value": 43,
"currency": "GBP"
},
"hot_water_cost_potential": {
"value": 110,
"currency": "GBP"
},
"renewable_heat_incentive": {
"water_heating": 2720,
"space_heating_existing_dwelling": 9003,
"space_heating_with_cavity_insulation": 7103,
"space_heating_with_loft_and_cavity_insulation": 7103
},
"seller_commission_report": "Y",
"energy_consumption_current": 196,
"has_fixed_air_conditioning": "false",
"multiple_glazed_proportion": 100,
"calculation_software_version": 4.0,
"energy_consumption_potential": 167,
"environmental_impact_current": 68,
"fixed_lighting_outlets_count": 7,
"current_energy_efficiency_band": "C",
"environmental_impact_potential": 73,
"has_heated_separate_conservatory": "false",
"potential_energy_efficiency_band": "C",
"co2_emissions_current_per_floor_area": {
"value": 38,
"quantity": "kg/m2 per year"
},
"low_energy_fixed_lighting_outlets_count": 7
}

View file

@ -0,0 +1,242 @@
{
"uprn": 10070400619,
"roofs": [
{
"description": "Pitched, 300+ mm loft insulation",
"energy_efficiency_rating": 5,
"environmental_efficiency_rating": 5
}
],
"walls": [
{
"description": "Cavity wall, as built, insulated (assumed)",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"floors": [
{
"description": "Suspended, insulated (assumed)",
"energy_efficiency_rating": 0,
"environmental_efficiency_rating": 0
}
],
"status": "entered",
"windows": [
{
"description": "Fully double glazed",
"energy_efficiency_rating": 3,
"environmental_efficiency_rating": 3
}
],
"lighting": {
"description": "Low energy lighting in all fixed outlets",
"energy_efficiency_rating": 5,
"environmental_efficiency_rating": 5
},
"postcode": "M11 4DN",
"hot_water": {
"description": "From main system",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
},
"post_town": "MANCHESTER",
"built_form": 4,
"created_at": "2011-06-22 16:05:03",
"glazed_area": 1,
"region_code": 19,
"report_type": 2,
"sap_heating": {
"cylinder_size": 1,
"water_heating_code": 901,
"water_heating_fuel": 26,
"main_heating_details": [
{
"main_fuel_type": 26,
"boiler_flue_type": 2,
"fan_flue_present": "Y",
"heat_emitter_type": 1,
"boiler_index_number": 10032,
"main_heating_number": 1,
"main_heating_control": 2104,
"main_heating_category": 2,
"main_heating_fraction": 1,
"main_heating_data_source": 1
}
],
"has_fixed_air_conditioning": "false"
},
"sap_version": 9.9,
"schema_type": "SAP-Schema-15.0",
"uprn_source": "Energy Assessor",
"country_code": "EAW",
"main_heating": [
{
"description": "Boiler and radiators, mains gas",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"dwelling_type": "Mid-terrace house",
"language_code": 1,
"property_type": 0,
"address_line_1": "12, Stuart Street",
"schema_version": "LIG-15.0",
"assessment_type": "RdSAP",
"completion_date": "2011-06-22",
"inspection_date": "2011-06-22",
"extensions_count": 0,
"measurement_type": 1,
"total_floor_area": 73,
"transaction_type": 3,
"conservatory_type": 1,
"heated_room_count": 3,
"registration_date": "2011-06-22",
"restricted_access": 1,
"sap_energy_source": {
"main_gas": "Y",
"meter_type": 3,
"photovoltaic_supply": {
"percent_roof_area": 0
},
"wind_turbines_count": 0,
"wind_turbines_terrain_type": 2
},
"secondary_heating": {
"description": "None",
"energy_efficiency_rating": 0,
"environmental_efficiency_rating": 0
},
"sap_building_parts": [
{
"identifier": "Main Dwelling",
"floor_heat_loss": 7,
"roof_construction": 4,
"wall_construction": 4,
"building_part_number": 1,
"sap_floor_dimensions": [
{
"floor": 0,
"room_height": 2.39,
"floor_insulation": 0,
"total_floor_area": 36.55,
"floor_construction": 2,
"heat_loss_perimeter": 10.79
},
{
"floor": 1,
"room_height": 2.28,
"total_floor_area": 36.55,
"heat_loss_perimeter": 10.79
}
],
"wall_insulation_type": 4,
"construction_age_band": "J",
"roof_insulation_location": 2,
"roof_insulation_thickness": "300mm+"
}
],
"low_energy_lighting": 100,
"solar_water_heating": "N",
"bedf_revision_number": 310,
"habitable_room_count": 3,
"heating_cost_current": {
"value": 324,
"currency": "GBP"
},
"co2_emissions_current": {
"value": 1.9,
"quantity": "tonnes per year"
},
"energy_rating_current": 77,
"lighting_cost_current": {
"value": 42,
"currency": "GBP"
},
"main_heating_controls": [
{
"description": "Programmer and room thermostat",
"energy_efficiency_rating": 3,
"environmental_efficiency_rating": 3
}
],
"multiple_glazing_type": 3,
"open_fireplaces_count": 0,
"has_hot_water_cylinder": "false",
"heating_cost_potential": {
"value": 324,
"currency": "GBP"
},
"hot_water_cost_current": {
"value": 79,
"currency": "GBP"
},
"mechanical_ventilation": 0,
"suggested_improvements": [
{
"sequence": 1,
"typical_saving": {
"value": 23,
"currency": "GBP"
},
"indicative_cost": "\u00a34,000 - \u00a36,000",
"improvement_type": "N",
"improvement_details": {
"improvement_number": 19
},
"improvement_category": 3,
"energy_performance_rating": 78,
"environmental_impact_rating": 80
},
{
"sequence": 2,
"typical_saving": {
"value": 207,
"currency": "GBP"
},
"indicative_cost": "\u00a311,000 - \u00a320,000",
"improvement_type": "U",
"improvement_details": {
"improvement_number": 34
},
"improvement_category": 3,
"energy_performance_rating": 89,
"environmental_impact_rating": 91
}
],
"co2_emissions_potential": {
"value": 1.9,
"quantity": "tonnes per year"
},
"energy_rating_potential": 77,
"lighting_cost_potential": {
"value": 42,
"currency": "GBP"
},
"hot_water_cost_potential": {
"value": 79,
"currency": "GBP"
},
"renewable_heat_incentive": {
"water_heating": 2042,
"space_heating_existing_dwelling": 4940,
"space_heating_with_loft_and_cavity_insulation": 4940
},
"seller_commission_report": "Y",
"energy_consumption_current": 135,
"has_fixed_air_conditioning": "false",
"multiple_glazed_proportion": 100,
"calculation_software_version": 4.0,
"energy_consumption_potential": 135,
"environmental_impact_current": 79,
"fixed_lighting_outlets_count": 7,
"current_energy_efficiency_band": "C",
"environmental_impact_potential": 79,
"has_heated_separate_conservatory": "false",
"potential_energy_efficiency_band": "C",
"co2_emissions_current_per_floor_area": {
"value": 26,
"quantity": "kg/m2 per year"
},
"low_energy_fixed_lighting_outlets_count": 7
}

View file

@ -0,0 +1,242 @@
{
"uprn": 77179816,
"roofs": [
{
"description": "Pitched, 300+ mm loft insulation",
"energy_efficiency_rating": 5,
"environmental_efficiency_rating": 5
}
],
"walls": [
{
"description": "Cavity wall, as built, insulated (assumed)",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"floors": [
{
"description": "Suspended, insulated (assumed)",
"energy_efficiency_rating": 0,
"environmental_efficiency_rating": 0
}
],
"status": "entered",
"windows": [
{
"description": "Fully double glazed",
"energy_efficiency_rating": 3,
"environmental_efficiency_rating": 3
}
],
"lighting": {
"description": "Low energy lighting in all fixed outlets",
"energy_efficiency_rating": 5,
"environmental_efficiency_rating": 5
},
"postcode": "M11 4NL",
"hot_water": {
"description": "From main system",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
},
"post_town": "MANCHESTER",
"built_form": 3,
"created_at": "2011-05-17 16:16:10",
"glazed_area": 1,
"region_code": 19,
"report_type": 2,
"sap_heating": {
"cylinder_size": 1,
"water_heating_code": 901,
"water_heating_fuel": 26,
"main_heating_details": [
{
"main_fuel_type": 26,
"boiler_flue_type": 2,
"fan_flue_present": "Y",
"heat_emitter_type": 1,
"boiler_index_number": 15710,
"main_heating_number": 1,
"main_heating_control": 2106,
"main_heating_category": 2,
"main_heating_fraction": 1,
"main_heating_data_source": 1
}
],
"has_fixed_air_conditioning": "false"
},
"sap_version": 9.9,
"schema_type": "SAP-Schema-15.0",
"uprn_source": "Energy Assessor",
"country_code": "EAW",
"main_heating": [
{
"description": "Boiler and radiators, mains gas",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"dwelling_type": "End-terrace house",
"language_code": 1,
"property_type": 0,
"address_line_1": "55, Canberra Street",
"schema_version": "LIG-15.0",
"assessment_type": "RdSAP",
"completion_date": "2011-05-17",
"inspection_date": "2011-05-17",
"extensions_count": 0,
"measurement_type": 1,
"total_floor_area": 71,
"transaction_type": 3,
"conservatory_type": 1,
"heated_room_count": 3,
"registration_date": "2011-05-17",
"restricted_access": 1,
"sap_energy_source": {
"main_gas": "Y",
"meter_type": 3,
"photovoltaic_supply": {
"percent_roof_area": 0
},
"wind_turbines_count": 0,
"wind_turbines_terrain_type": 2
},
"secondary_heating": {
"description": "None",
"energy_efficiency_rating": 0,
"environmental_efficiency_rating": 0
},
"sap_building_parts": [
{
"identifier": "Main Dwelling",
"floor_heat_loss": 7,
"roof_construction": 4,
"wall_construction": 4,
"building_part_number": 1,
"sap_floor_dimensions": [
{
"floor": 0,
"room_height": 2.77,
"floor_insulation": 0,
"total_floor_area": 38.12,
"floor_construction": 2,
"heat_loss_perimeter": 19.03
},
{
"floor": 1,
"room_height": 2.9,
"total_floor_area": 33.07,
"heat_loss_perimeter": 16.31
}
],
"wall_insulation_type": 5,
"construction_age_band": "K",
"roof_insulation_location": 2,
"roof_insulation_thickness": "300mm+"
}
],
"low_energy_lighting": 100,
"solar_water_heating": "N",
"bedf_revision_number": 308,
"habitable_room_count": 3,
"heating_cost_current": {
"value": 347,
"currency": "GBP"
},
"co2_emissions_current": {
"value": 2.0,
"quantity": "tonnes per year"
},
"energy_rating_current": 75,
"lighting_cost_current": {
"value": 41,
"currency": "GBP"
},
"main_heating_controls": [
{
"description": "Programmer, room thermostat and TRVs",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"multiple_glazing_type": 3,
"open_fireplaces_count": 0,
"has_hot_water_cylinder": "false",
"heating_cost_potential": {
"value": 347,
"currency": "GBP"
},
"hot_water_cost_current": {
"value": 78,
"currency": "GBP"
},
"mechanical_ventilation": 0,
"suggested_improvements": [
{
"sequence": 1,
"typical_saving": {
"value": 23,
"currency": "GBP"
},
"indicative_cost": "\u00a34,000 - \u00a36,000",
"improvement_type": "N",
"improvement_details": {
"improvement_number": 19
},
"improvement_category": 3,
"energy_performance_rating": 77,
"environmental_impact_rating": 79
},
{
"sequence": 2,
"typical_saving": {
"value": 207,
"currency": "GBP"
},
"indicative_cost": "\u00a311,000 - \u00a320,000",
"improvement_type": "U",
"improvement_details": {
"improvement_number": 34
},
"improvement_category": 3,
"energy_performance_rating": 88,
"environmental_impact_rating": 89
}
],
"co2_emissions_potential": {
"value": 2.0,
"quantity": "tonnes per year"
},
"energy_rating_potential": 75,
"lighting_cost_potential": {
"value": 41,
"currency": "GBP"
},
"hot_water_cost_potential": {
"value": 78,
"currency": "GBP"
},
"renewable_heat_incentive": {
"water_heating": 2020,
"space_heating_existing_dwelling": 5555,
"space_heating_with_loft_and_cavity_insulation": 5555
},
"seller_commission_report": "Y",
"energy_consumption_current": 147,
"has_fixed_air_conditioning": "false",
"multiple_glazed_proportion": 100,
"calculation_software_version": 4.0,
"energy_consumption_potential": 147,
"environmental_impact_current": 77,
"fixed_lighting_outlets_count": 5,
"current_energy_efficiency_band": "C",
"environmental_impact_potential": 77,
"has_heated_separate_conservatory": "false",
"potential_energy_efficiency_band": "C",
"co2_emissions_current_per_floor_area": {
"value": 28,
"quantity": "kg/m2 per year"
},
"low_energy_fixed_lighting_outlets_count": 5
}

View file

@ -0,0 +1,242 @@
{
"uprn": 77179820,
"roofs": [
{
"description": "Pitched, 300+ mm loft insulation",
"energy_efficiency_rating": 5,
"environmental_efficiency_rating": 5
}
],
"walls": [
{
"description": "Cavity wall, as built, insulated (assumed)",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"floors": [
{
"description": "Suspended, insulated (assumed)",
"energy_efficiency_rating": 0,
"environmental_efficiency_rating": 0
}
],
"status": "entered",
"windows": [
{
"description": "Fully double glazed",
"energy_efficiency_rating": 3,
"environmental_efficiency_rating": 3
}
],
"lighting": {
"description": "Low energy lighting in all fixed outlets",
"energy_efficiency_rating": 5,
"environmental_efficiency_rating": 5
},
"postcode": "M11 4NL",
"hot_water": {
"description": "From main system",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
},
"post_town": "MANCHESTER",
"built_form": 4,
"created_at": "2011-05-17 16:13:22",
"glazed_area": 1,
"region_code": 19,
"report_type": 2,
"sap_heating": {
"cylinder_size": 1,
"water_heating_code": 901,
"water_heating_fuel": 26,
"main_heating_details": [
{
"main_fuel_type": 26,
"boiler_flue_type": 2,
"fan_flue_present": "Y",
"heat_emitter_type": 1,
"boiler_index_number": 15710,
"main_heating_number": 1,
"main_heating_control": 2106,
"main_heating_category": 2,
"main_heating_fraction": 1,
"main_heating_data_source": 1
}
],
"has_fixed_air_conditioning": "false"
},
"sap_version": 9.9,
"schema_type": "SAP-Schema-15.0",
"uprn_source": "Energy Assessor",
"country_code": "EAW",
"main_heating": [
{
"description": "Boiler and radiators, mains gas",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"dwelling_type": "Mid-terrace house",
"language_code": 1,
"property_type": 0,
"address_line_1": "63, Canberra Street",
"schema_version": "LIG-15.0",
"assessment_type": "RdSAP",
"completion_date": "2011-05-17",
"inspection_date": "2011-05-17",
"extensions_count": 0,
"measurement_type": 1,
"total_floor_area": 74,
"transaction_type": 3,
"conservatory_type": 1,
"heated_room_count": 3,
"registration_date": "2011-05-17",
"restricted_access": 1,
"sap_energy_source": {
"main_gas": "Y",
"meter_type": 3,
"photovoltaic_supply": {
"percent_roof_area": 0
},
"wind_turbines_count": 0,
"wind_turbines_terrain_type": 2
},
"secondary_heating": {
"description": "None",
"energy_efficiency_rating": 0,
"environmental_efficiency_rating": 0
},
"sap_building_parts": [
{
"identifier": "Main Dwelling",
"floor_heat_loss": 7,
"roof_construction": 4,
"wall_construction": 4,
"building_part_number": 1,
"sap_floor_dimensions": [
{
"floor": 0,
"room_height": 2.85,
"floor_insulation": 0,
"total_floor_area": 40.7,
"floor_construction": 2,
"heat_loss_perimeter": 12.97
},
{
"floor": 1,
"room_height": 2.81,
"total_floor_area": 33.01,
"heat_loss_perimeter": 9.64
}
],
"wall_insulation_type": 5,
"construction_age_band": "K",
"roof_insulation_location": 2,
"roof_insulation_thickness": "300mm+"
}
],
"low_energy_lighting": 100,
"solar_water_heating": "N",
"bedf_revision_number": 308,
"habitable_room_count": 3,
"heating_cost_current": {
"value": 325,
"currency": "GBP"
},
"co2_emissions_current": {
"value": 1.9,
"quantity": "tonnes per year"
},
"energy_rating_current": 77,
"lighting_cost_current": {
"value": 42,
"currency": "GBP"
},
"main_heating_controls": [
{
"description": "Programmer, room thermostat and TRVs",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"multiple_glazing_type": 3,
"open_fireplaces_count": 0,
"has_hot_water_cylinder": "false",
"heating_cost_potential": {
"value": 325,
"currency": "GBP"
},
"hot_water_cost_current": {
"value": 79,
"currency": "GBP"
},
"mechanical_ventilation": 0,
"suggested_improvements": [
{
"sequence": 1,
"typical_saving": {
"value": 23,
"currency": "GBP"
},
"indicative_cost": "\u00a34,000 - \u00a36,000",
"improvement_type": "N",
"improvement_details": {
"improvement_number": 19
},
"improvement_category": 3,
"energy_performance_rating": 78,
"environmental_impact_rating": 80
},
{
"sequence": 2,
"typical_saving": {
"value": 207,
"currency": "GBP"
},
"indicative_cost": "\u00a311,000 - \u00a320,000",
"improvement_type": "U",
"improvement_details": {
"improvement_number": 34
},
"improvement_category": 3,
"energy_performance_rating": 89,
"environmental_impact_rating": 91
}
],
"co2_emissions_potential": {
"value": 1.9,
"quantity": "tonnes per year"
},
"energy_rating_potential": 77,
"lighting_cost_potential": {
"value": 42,
"currency": "GBP"
},
"hot_water_cost_potential": {
"value": 79,
"currency": "GBP"
},
"renewable_heat_incentive": {
"water_heating": 2049,
"space_heating_existing_dwelling": 4978,
"space_heating_with_loft_and_cavity_insulation": 4978
},
"seller_commission_report": "Y",
"energy_consumption_current": 134,
"has_fixed_air_conditioning": "false",
"multiple_glazed_proportion": 100,
"calculation_software_version": 4.0,
"energy_consumption_potential": 134,
"environmental_impact_current": 79,
"fixed_lighting_outlets_count": 5,
"current_energy_efficiency_band": "C",
"environmental_impact_potential": 79,
"has_heated_separate_conservatory": "false",
"potential_energy_efficiency_band": "C",
"co2_emissions_current_per_floor_area": {
"value": 26,
"quantity": "kg/m2 per year"
},
"low_energy_fixed_lighting_outlets_count": 5
}

View file

@ -0,0 +1,312 @@
{
"uprn": 77180626,
"roofs": [
{
"description": "Pitched, 100mm loft insulation",
"energy_efficiency_rating": 3,
"environmental_efficiency_rating": 3
}
],
"walls": [
{
"description": "Cavity wall, filled cavity",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"floors": [
{
"description": "Solid, no insulation (assumed)",
"energy_efficiency_rating": 0,
"environmental_efficiency_rating": 0
}
],
"status": "entered",
"windows": [
{
"description": "Fully double glazed",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"lighting": {
"description": "Low energy lighting in 40% of fixed outlets",
"energy_efficiency_rating": 3,
"environmental_efficiency_rating": 3
},
"postcode": "M11 4PG",
"hot_water": {
"description": "From main system",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
},
"post_town": "MANCHESTER",
"built_form": 4,
"created_at": "2011-11-29 20:16:44",
"glazed_area": 1,
"region_code": 19,
"report_type": 2,
"sap_heating": {
"cylinder_size": 1,
"water_heating_code": 901,
"water_heating_fuel": 26,
"main_heating_details": [
{
"main_fuel_type": 26,
"boiler_flue_type": 2,
"fan_flue_present": "Y",
"heat_emitter_type": 1,
"boiler_index_number": 8587,
"main_heating_number": 1,
"main_heating_control": 2107,
"main_heating_category": 2,
"main_heating_fraction": 1,
"main_heating_data_source": 1
}
],
"has_fixed_air_conditioning": "false"
},
"sap_version": 9.9,
"schema_type": "SAP-Schema-15.0",
"uprn_source": "Energy Assessor",
"country_code": "EAW",
"main_heating": [
{
"description": "Boiler and radiators, mains gas",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"dwelling_type": "Mid-terrace bungalow",
"language_code": 1,
"property_type": 0,
"address_line_1": "45, Seymour Road South",
"schema_version": "LIG-15.0",
"assessment_type": "RdSAP",
"completion_date": "2011-11-29",
"inspection_date": "2011-11-29",
"extensions_count": 0,
"measurement_type": 1,
"total_floor_area": 46,
"transaction_type": 3,
"conservatory_type": 1,
"heated_room_count": 2,
"registration_date": "2011-11-29",
"restricted_access": 1,
"sap_energy_source": {
"main_gas": "Y",
"meter_type": 2,
"photovoltaic_supply": {
"percent_roof_area": 0
},
"wind_turbines_count": 0,
"wind_turbines_terrain_type": 2
},
"secondary_heating": {
"description": "None",
"energy_efficiency_rating": 0,
"environmental_efficiency_rating": 0
},
"sap_building_parts": [
{
"identifier": "Main Dwelling",
"floor_heat_loss": 7,
"roof_construction": 4,
"wall_construction": 4,
"building_part_number": 1,
"sap_floor_dimensions": [
{
"floor": 0,
"room_height": 2.482,
"floor_insulation": 1,
"total_floor_area": 45.611,
"floor_construction": 0,
"heat_loss_perimeter": 13.73
}
],
"wall_insulation_type": 2,
"construction_age_band": "E",
"roof_insulation_location": 2,
"roof_insulation_thickness": "100mm"
}
],
"low_energy_lighting": 40,
"solar_water_heating": "N",
"bedf_revision_number": 314,
"habitable_room_count": 2,
"heating_cost_current": {
"value": 360,
"currency": "GBP"
},
"co2_emissions_current": {
"value": 2.0,
"quantity": "tonnes per year"
},
"energy_rating_current": 68,
"lighting_cost_current": {
"value": 43,
"currency": "GBP"
},
"main_heating_controls": [
{
"description": "Programmer, TRVs and bypass",
"energy_efficiency_rating": 3,
"environmental_efficiency_rating": 3
}
],
"multiple_glazing_type": 2,
"open_fireplaces_count": 0,
"has_hot_water_cylinder": "false",
"heating_cost_potential": {
"value": 300,
"currency": "GBP"
},
"hot_water_cost_current": {
"value": 75,
"currency": "GBP"
},
"mechanical_ventilation": 0,
"suggested_improvements": [
{
"sequence": 1,
"typical_saving": {
"value": 24,
"currency": "GBP"
},
"indicative_cost": "\u00a3100 - \u00a3300",
"improvement_type": "A",
"improvement_details": {
"improvement_number": 5
},
"improvement_category": 1,
"energy_performance_rating": 70,
"environmental_impact_rating": 72
},
{
"sequence": 2,
"typical_saving": {
"value": 13,
"currency": "GBP"
},
"indicative_cost": "\u00a38",
"improvement_type": "E",
"improvement_details": {
"improvement_number": 35
},
"improvement_category": 1,
"energy_performance_rating": 71,
"environmental_impact_rating": 73
},
{
"sequence": 3,
"typical_saving": {
"value": 18,
"currency": "GBP"
},
"indicative_cost": "\u00a3350 - \u00a3450",
"improvement_type": "G",
"improvement_details": {
"improvement_number": 14
},
"improvement_category": 1,
"energy_performance_rating": 72,
"environmental_impact_rating": 74
},
{
"sequence": 4,
"typical_saving": {
"value": 30,
"currency": "GBP"
},
"indicative_cost": "\u00a31,500 - \u00a33,500",
"improvement_type": "I",
"improvement_details": {
"improvement_number": 20
},
"improvement_category": 2,
"energy_performance_rating": 74,
"environmental_impact_rating": 77
},
{
"sequence": 5,
"typical_saving": {
"value": 21,
"currency": "GBP"
},
"indicative_cost": "\u00a34,000 - \u00a36,000",
"improvement_type": "N",
"improvement_details": {
"improvement_number": 19
},
"improvement_category": 3,
"energy_performance_rating": 75,
"environmental_impact_rating": 79
},
{
"sequence": 6,
"typical_saving": {
"value": 214,
"currency": "GBP"
},
"indicative_cost": "\u00a311,000 - \u00a320,000",
"improvement_type": "U",
"improvement_details": {
"improvement_number": 34
},
"improvement_category": 3,
"energy_performance_rating": 89,
"environmental_impact_rating": 92
},
{
"sequence": 7,
"typical_saving": {
"value": 18,
"currency": "GBP"
},
"indicative_cost": "\u00a31,500 - \u00a34,000",
"improvement_type": "V",
"improvement_details": {
"improvement_number": 44
},
"improvement_category": 3,
"energy_performance_rating": 90,
"environmental_impact_rating": 93
}
],
"co2_emissions_potential": {
"value": 1.6,
"quantity": "tonnes per year"
},
"energy_rating_potential": 74,
"lighting_cost_potential": {
"value": 27,
"currency": "GBP"
},
"hot_water_cost_potential": {
"value": 66,
"currency": "GBP"
},
"renewable_heat_incentive": {
"water_heating": 1634,
"space_heating_existing_dwelling": 4686,
"space_heating_with_loft_insulation": 4450,
"space_heating_with_loft_and_cavity_insulation": 4450
},
"seller_commission_report": "Y",
"energy_consumption_current": 231,
"has_fixed_air_conditioning": "false",
"multiple_glazed_proportion": 100,
"calculation_software_version": 4.0,
"energy_consumption_potential": 178,
"environmental_impact_current": 70,
"fixed_lighting_outlets_count": 5,
"current_energy_efficiency_band": "D",
"environmental_impact_potential": 77,
"has_heated_separate_conservatory": "false",
"potential_energy_efficiency_band": "C",
"co2_emissions_current_per_floor_area": {
"value": 44,
"quantity": "kg/m2 per year"
},
"low_energy_fixed_lighting_outlets_count": 2
}

View file

@ -0,0 +1,243 @@
{
"uprn": 77181233,
"roofs": [
{
"description": "Pitched, 100mm loft insulation",
"energy_efficiency_rating": 3,
"environmental_efficiency_rating": 3
}
],
"walls": [
{
"description": "Cavity wall, as built, insulated (assumed)",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"floors": [
{
"description": "Solid, no insulation (assumed)",
"energy_efficiency_rating": 0,
"environmental_efficiency_rating": 0
}
],
"status": "entered",
"windows": [
{
"description": "Fully double glazed",
"energy_efficiency_rating": 3,
"environmental_efficiency_rating": 3
}
],
"lighting": {
"description": "Low energy lighting in 90% of fixed outlets",
"energy_efficiency_rating": 5,
"environmental_efficiency_rating": 5
},
"postcode": "M11 4WU",
"hot_water": {
"description": "From main system",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
},
"post_town": "MANCHESTER",
"built_form": 1,
"created_at": "2011-09-06 16:39:42",
"glazed_area": 1,
"region_code": 19,
"report_type": 2,
"sap_heating": {
"cylinder_size": 1,
"water_heating_code": 901,
"water_heating_fuel": 26,
"main_heating_details": [
{
"main_fuel_type": 26,
"boiler_flue_type": 2,
"fan_flue_present": "Y",
"heat_emitter_type": 1,
"boiler_index_number": 10328,
"main_heating_number": 1,
"main_heating_control": 2106,
"main_heating_category": 2,
"main_heating_fraction": 1,
"main_heating_data_source": 1
}
],
"has_fixed_air_conditioning": "false"
},
"sap_version": 9.9,
"schema_type": "SAP-Schema-15.0",
"uprn_source": "Energy Assessor",
"country_code": "EAW",
"main_heating": [
{
"description": "Boiler and radiators, mains gas",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"dwelling_type": "Detached house",
"language_code": 1,
"property_type": 0,
"address_line_1": "48, Hackle Street",
"schema_version": "LIG-15.0",
"assessment_type": "RdSAP",
"completion_date": "2011-09-06",
"inspection_date": "2011-09-06",
"extensions_count": 0,
"measurement_type": 1,
"total_floor_area": 73,
"transaction_type": 3,
"conservatory_type": 1,
"heated_room_count": 5,
"registration_date": "2011-09-06",
"restricted_access": 1,
"sap_energy_source": {
"main_gas": "Y",
"meter_type": 2,
"photovoltaic_supply": {
"percent_roof_area": 0
},
"wind_turbines_count": 0,
"wind_turbines_terrain_type": 2
},
"secondary_heating": {
"description": "None",
"energy_efficiency_rating": 0,
"environmental_efficiency_rating": 0
},
"sap_building_parts": [
{
"identifier": "Main Dwelling",
"floor_heat_loss": 7,
"roof_construction": 4,
"wall_construction": 4,
"building_part_number": 1,
"sap_floor_dimensions": [
{
"floor": 0,
"room_height": 2.37,
"floor_insulation": 1,
"total_floor_area": 36.54,
"floor_construction": 1,
"heat_loss_perimeter": 25.8
},
{
"floor": 1,
"room_height": 2.36,
"total_floor_area": 36.54,
"heat_loss_perimeter": 25.8
}
],
"wall_insulation_type": 4,
"construction_age_band": "G",
"roof_insulation_location": 2,
"roof_insulation_thickness": "100mm"
}
],
"low_energy_lighting": 90,
"solar_water_heating": "N",
"bedf_revision_number": 312,
"habitable_room_count": 5,
"heating_cost_current": {
"value": 487,
"currency": "GBP"
},
"co2_emissions_current": {
"value": 2.8,
"quantity": "tonnes per year"
},
"energy_rating_current": 69,
"lighting_cost_current": {
"value": 44,
"currency": "GBP"
},
"main_heating_controls": [
{
"description": "Programmer, room thermostat and TRVs",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"multiple_glazing_type": 3,
"open_fireplaces_count": 0,
"has_hot_water_cylinder": "false",
"heating_cost_potential": {
"value": 487,
"currency": "GBP"
},
"hot_water_cost_current": {
"value": 83,
"currency": "GBP"
},
"mechanical_ventilation": 0,
"suggested_improvements": [
{
"sequence": 1,
"typical_saving": {
"value": 24,
"currency": "GBP"
},
"indicative_cost": "\u00a34,000 - \u00a36,000",
"improvement_type": "N",
"improvement_details": {
"improvement_number": 19
},
"improvement_category": 3,
"energy_performance_rating": 70,
"environmental_impact_rating": 70
},
{
"sequence": 2,
"typical_saving": {
"value": 214,
"currency": "GBP"
},
"indicative_cost": "\u00a311,000 - \u00a320,000",
"improvement_type": "U",
"improvement_details": {
"improvement_number": 34
},
"improvement_category": 3,
"energy_performance_rating": 81,
"environmental_impact_rating": 80
}
],
"co2_emissions_potential": {
"value": 2.8,
"quantity": "tonnes per year"
},
"energy_rating_potential": 69,
"lighting_cost_potential": {
"value": 44,
"currency": "GBP"
},
"hot_water_cost_potential": {
"value": 83,
"currency": "GBP"
},
"renewable_heat_incentive": {
"water_heating": 2082,
"space_heating_existing_dwelling": 9000,
"space_heating_with_loft_insulation": 8839,
"space_heating_with_loft_and_cavity_insulation": 8839
},
"seller_commission_report": "Y",
"energy_consumption_current": 201,
"has_fixed_air_conditioning": "false",
"multiple_glazed_proportion": 100,
"calculation_software_version": 4.0,
"energy_consumption_potential": 201,
"environmental_impact_current": 68,
"fixed_lighting_outlets_count": 10,
"current_energy_efficiency_band": "C",
"environmental_impact_potential": 68,
"has_heated_separate_conservatory": "false",
"potential_energy_efficiency_band": "C",
"co2_emissions_current_per_floor_area": {
"value": 39,
"quantity": "kg/m2 per year"
},
"low_energy_fixed_lighting_outlets_count": 9
}

View file

@ -1101,6 +1101,62 @@ class EpcPropertyDataMapper:
schema convention."""
return EpcPropertyDataMapper.from_sap_schema_17_1(schema)
@staticmethod
def from_sap_schema_15_0(data: Dict[str, Any]) -> EpcPropertyData:
"""Map a reduced-field `SAP-Schema-15.0` cert.
Structurally the same LIG-lodged reduced-field shape as the
`SAP-Schema-16.x` family (`schema_version: "LIG-15.0"`, `assessment_type:
"RdSAP"`) see `from_sap_schema_16_2`. One further gap on top of that
family's normalisation: these 2011-era certs never lodge `door_count`
at all (confirmed on two real certs, UPRNs 100010359769/100010359788
it is absent from the payload entirely, not blank). Unlike a 16.x cert
that omits `door_count` on an otherwise-complete lodgement (a per-cert
data gap the mapper correctly fails loud on), the whole 15.0 schema
never carried the field so default to 1 (a single external door,
the standard RdSAP assumption when unrecorded) rather than treating it
as insufficient data.
These certs also predate WWHRS and FGHRS lodging altogether
`sap_heating` has no `wwhrs` key for `_normalize_sap_schema_16_x` to
rename, and `main_heating_details[]` never carries `has_fghrs`. Both
default to "not present" ("N" / all-zero counts), the same
absence-means-none-fitted convention used elsewhere in this mapper
(e.g. the full-SAP mappers' bare `InstantaneousWwhrs()`).
"""
from datatypes.epc.schema.rdsap_schema_17_1 import RdSapSchema17_1
normalized = _normalize_sap_schema_16_x(data)
normalized.setdefault("door_count", 1)
# `energy_rating_average` is the fixed national-average marker (60 on
# every fixture in this repo, `RdSapSchema17_1`-required, inert
# metadata never read by the SAP calculator) — these certs omit it.
normalized.setdefault("energy_rating_average", 60)
# Draught-proofing extent is unrecorded on these certs; 0% is the same
# "assume none if unknown" convention the cascade already applies to
# `has_draught_lobby` (see `_has_draught_lobby` in cert_to_inputs.py) —
# conservative (no draught-proofing credit), not a guessed value.
normalized.setdefault("percent_draughtproofed", 0)
sap_heating: Any = normalized.get("sap_heating")
if isinstance(sap_heating, dict):
heating: Dict[str, Any] = cast(Dict[str, Any], sap_heating)
heating.setdefault(
"instantaneous_wwhrs",
{
"rooms_with_bath_and_or_shower": 0,
"rooms_with_mixer_shower_no_bath": 0,
"rooms_with_bath_and_mixer_shower": 0,
},
)
main_heating_details: Any = heating.get("main_heating_details") or []
for mh in cast(List[Any], main_heating_details):
if isinstance(mh, dict):
cast(Dict[str, Any], mh).setdefault("has_fghrs", "N")
return EpcPropertyDataMapper.from_rdsap_schema_17_1(
from_dict(RdSapSchema17_1, normalized)
)
@staticmethod
def from_sap_schema_16_0(data: Dict[str, Any]) -> EpcPropertyData:
"""Map a reduced-field `SAP-Schema-16.0` cert (see `from_sap_schema_16_2`)."""
@ -2974,6 +3030,10 @@ class EpcPropertyDataMapper:
mapped = EpcPropertyDataMapper.from_sap_schema_19_1_0(
from_dict(SapSchema17_1, data)
)
# SAP-Schema-15.0: same reduced-field (RdSAP-shaped) family as 16.x, one
# revision older — see `from_sap_schema_15_0`.
elif schema == "SAP-Schema-15.0":
mapped = EpcPropertyDataMapper.from_sap_schema_15_0(data)
# SAP-Schema-16.x family: reduced-field (RdSAP-shaped) certs. Each gets a
# dedicated mapper that normalises onto the RdSAP-17.1 shape via the
# shared `_normalize_sap_schema_16_x` and reuses `from_rdsap_schema_17_1`.
@ -7513,6 +7573,12 @@ _ELMHURST_CYLINDER_SIZE_LABEL_TO_SAP10: Dict[str, int] = {
"Normal": 2,
"Medium": 3,
"Large": 4,
# The live RdSAP10-Online tool renders the size band WITH its litre range
# suffix (observed on the SAP-Schema-15.0 UPRN 100010086084 build) rather
# than the bare label the cohort fixtures used above.
"Normal (Less than 130L)": 2,
"Medium (131-170L)": 3,
"Large (Greater than 171L)": 4,
}

View file

@ -0,0 +1,67 @@
"""SAP-Schema-15.0 — the same LIG-lodged reduced-field RdSAP-17.1 shape as
`SAP-Schema-16.x` (`schema_version: "LIG-15.0"`), one revision older, from a
2011 lodgement generation that predates `door_count`, WWHRS, and FGHRS
lodging entirely (unlike a 16.x cert omitting one of those fields, which is a
per-cert data gap, this is schema-wide see `from_sap_schema_15_0`).
`from_api_response` normalises it onto the RdSAP-17.1 shape via
`_normalize_sap_schema_16_x` plus the three extra defaults, then reuses that
mapper. Regression for the task that first surfaced this gap
(a40e71c4-fd56-4a33-8677-e8643e6a5bb4, portfolio 824 / scenario 1278,
property_id 748445 / 748451 "Unsupported EPC schema: 'SAP-Schema-15.0'").
"""
from typing import Any, Dict
import json
import os
from datatypes.epc.domain.epc_property_data import EpcPropertyData
from datatypes.epc.domain.mapper import EpcPropertyDataMapper
FIXTURES = os.path.join(os.path.dirname(__file__), "../../schema/tests/fixtures")
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 TestFromSapSchema15_0:
def test_dispatches_and_maps_via_rdsap_17_1(self) -> None:
# Arrange / Act — the raw 15.0 doc must dispatch (no "Unsupported
# schema") and map the 16.x-family seams plus the three schema-wide
# gaps unique to 15.0 (door_count, instantaneous_wwhrs, has_fghrs).
epc = EpcPropertyDataMapper.from_api_response(
load("sap_15_0_uprn_100010359769.json")
)
# Assert
assert isinstance(epc, EpcPropertyData)
assert epc.uprn == 100010359769
assert epc.dwelling_type == "Mid-terrace house"
assert epc.door_count == 1
mh = epc.sap_heating.main_heating_details[0]
assert mh.main_fuel_type == 26 # mains gas
def test_produces_a_sap_score(self) -> None:
# The mapped cert must run end-to-end through the SAP-10 engine.
from domain.sap10_calculator.calculator import Sap10Calculator
epc = EpcPropertyDataMapper.from_api_response(
load("sap_15_0_uprn_100010359769.json")
)
result = Sap10Calculator().calculate(epc)
# Lodged 68; engine also produces 68.
assert result.sap_score == 68
def test_second_property_produces_a_sap_score(self) -> None:
# Second real cert from the same failing task, confirms the fix isn't
# a one-cert coincidence.
from domain.sap10_calculator.calculator import Sap10Calculator
epc = EpcPropertyDataMapper.from_api_response(
load("sap_15_0_uprn_100010359788.json")
)
result = Sap10Calculator().calculate(epc)
# Lodged 73; engine produces 72 (Elmhurst validation not yet run).
assert result.sap_score == 72

View file

@ -0,0 +1,255 @@
{
"uprn": 100010359769,
"roofs": [
{
"description": "Pitched, 250 mm loft insulation",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
},
{
"description": "Flat, limited insulation (assumed)",
"energy_efficiency_rating": 1,
"environmental_efficiency_rating": 1
}
],
"walls": [
{
"description": "Cavity wall, filled cavity",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"floors": [
{
"description": "Suspended, no insulation (assumed)",
"energy_efficiency_rating": 0,
"environmental_efficiency_rating": 0
},
{
"description": "Solid, no insulation (assumed)",
"energy_efficiency_rating": 0,
"environmental_efficiency_rating": 0
}
],
"status": "entered",
"windows": [
{
"description": "Fully double glazed",
"energy_efficiency_rating": 3,
"environmental_efficiency_rating": 3
}
],
"lighting": {
"description": "Low energy lighting in 91% of fixed outlets",
"energy_efficiency_rating": 5,
"environmental_efficiency_rating": 5
},
"postcode": "BB12 7BY",
"hot_water": {
"description": "From main system",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
},
"post_town": "BURNLEY",
"built_form": 4,
"created_at": "2011-07-25 16:35:41",
"glazed_area": 1,
"region_code": 19,
"report_type": 2,
"sap_heating": {
"cylinder_size": 1,
"water_heating_code": 901,
"water_heating_fuel": 26,
"secondary_fuel_type": 29,
"main_heating_details": [
{
"main_fuel_type": 26,
"boiler_flue_type": 2,
"fan_flue_present": "Y",
"heat_emitter_type": 1,
"boiler_index_number": 8358,
"main_heating_number": 1,
"main_heating_control": 2106,
"main_heating_category": 2,
"main_heating_fraction": 1,
"main_heating_data_source": 1
}
],
"secondary_heating_type": 691,
"has_fixed_air_conditioning": "false"
},
"sap_version": 9.9,
"schema_type": "SAP-Schema-15.0",
"uprn_source": "Energy Assessor",
"country_code": "EAW",
"main_heating": [
{
"description": "Boiler and radiators, mains gas",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"dwelling_type": "Mid-terrace house",
"language_code": 1,
"property_type": 0,
"address_line_1": "3, Warwick Drive",
"address_line_2": "Padiham",
"schema_version": "LIG-15.0",
"assessment_type": "RdSAP",
"completion_date": "2011-07-25",
"inspection_date": "2011-07-25",
"extensions_count": 1,
"measurement_type": 1,
"total_floor_area": 76,
"transaction_type": 3,
"conservatory_type": 1,
"heated_room_count": 5,
"registration_date": "2011-07-25",
"restricted_access": 0,
"sap_energy_source": {
"main_gas": "Y",
"meter_type": 2,
"photovoltaic_supply": {
"percent_roof_area": 0
},
"wind_turbines_count": 0,
"wind_turbines_terrain_type": 2
},
"secondary_heating": {
"description": "Room heaters, electric",
"energy_efficiency_rating": 0,
"environmental_efficiency_rating": 0
},
"sap_building_parts": [
{
"identifier": "Main Dwelling",
"floor_heat_loss": 7,
"roof_construction": 4,
"wall_construction": 4,
"building_part_number": 1,
"sap_floor_dimensions": [
{
"floor": 0,
"room_height": 2.58,
"floor_insulation": 1,
"total_floor_area": 35.59,
"floor_construction": 2,
"heat_loss_perimeter": 9
},
{
"floor": 1,
"room_height": 2.43,
"total_floor_area": 34.75,
"heat_loss_perimeter": 10.86
}
],
"wall_insulation_type": 2,
"construction_age_band": "C",
"roof_insulation_location": 2,
"roof_insulation_thickness": "250mm"
},
{
"identifier": "Extension 1",
"floor_heat_loss": 7,
"roof_construction": 1,
"wall_construction": 4,
"building_part_number": 2,
"sap_floor_dimensions": [
{
"floor": 0,
"room_height": 2.33,
"floor_insulation": 1,
"total_floor_area": 5.37,
"floor_construction": 1,
"heat_loss_perimeter": 4.66
}
],
"wall_insulation_type": 2,
"construction_age_band": "E",
"roof_insulation_location": 4,
"roof_insulation_thickness": "NI"
}
],
"low_energy_lighting": 91,
"solar_water_heating": "N",
"bedf_revision_number": 311,
"habitable_room_count": 5,
"heating_cost_current": 501,
"co2_emissions_current": 2.8,
"energy_rating_current": 68,
"lighting_cost_current": 45,
"main_heating_controls": [
{
"description": "Programmer, room thermostat and TRVs",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"multiple_glazing_type": 3,
"open_fireplaces_count": 0,
"has_hot_water_cylinder": "false",
"heating_cost_potential": 471,
"hot_water_cost_current": 95,
"mechanical_ventilation": 0,
"suggested_improvements": [
{
"sequence": 1,
"typical_saving": 41,
"indicative_cost": "\u00a31,500 - \u00a33,500",
"improvement_type": "I",
"improvement_details": {
"improvement_number": 20
},
"improvement_category": 2,
"energy_performance_rating": 70,
"environmental_impact_rating": 71
},
{
"sequence": 2,
"typical_saving": 24,
"indicative_cost": "\u00a34,000 - \u00a36,000",
"improvement_type": "N",
"improvement_details": {
"improvement_number": 19
},
"improvement_category": 3,
"energy_performance_rating": 71,
"environmental_impact_rating": 73
},
{
"sequence": 3,
"typical_saving": 214,
"indicative_cost": "\u00a311,000 - \u00a320,000",
"improvement_type": "U",
"improvement_details": {
"improvement_number": 34
},
"improvement_category": 3,
"energy_performance_rating": 82,
"environmental_impact_rating": 83
}
],
"co2_emissions_potential": 2.6,
"energy_rating_potential": 70,
"lighting_cost_potential": 45,
"hot_water_cost_potential": 83,
"renewable_heat_incentive": {
"water_heating": 2071,
"space_heating_existing_dwelling": 6949,
"space_heating_with_loft_and_cavity_insulation": 6949
},
"seller_commission_report": "Y",
"energy_consumption_current": 196,
"has_fixed_air_conditioning": "false",
"multiple_glazed_proportion": 100,
"calculation_software_version": "19.05r12",
"energy_consumption_potential": 180,
"environmental_impact_current": 69,
"fixed_lighting_outlets_count": 11,
"current_energy_efficiency_band": "D",
"environmental_impact_potential": 71,
"has_heated_separate_conservatory": "false",
"potential_energy_efficiency_band": "C",
"co2_emissions_current_per_floor_area": 37,
"low_energy_fixed_lighting_outlets_count": 10
}

View file

@ -0,0 +1,248 @@
{
"uprn": 100010359788,
"roofs": [
{
"description": "Pitched, 150 mm loft insulation",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
},
{
"description": "Flat, limited insulation (assumed)",
"energy_efficiency_rating": 2,
"environmental_efficiency_rating": 2
}
],
"walls": [
{
"description": "Cavity wall, filled cavity",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"floors": [
{
"description": "Solid, no insulation (assumed)",
"energy_efficiency_rating": 0,
"environmental_efficiency_rating": 0
}
],
"status": "entered",
"windows": [
{
"description": "Fully double glazed",
"energy_efficiency_rating": 3,
"environmental_efficiency_rating": 3
}
],
"lighting": {
"description": "Low energy lighting in 89% of fixed outlets",
"energy_efficiency_rating": 5,
"environmental_efficiency_rating": 5
},
"postcode": "BB12 7BY",
"hot_water": {
"description": "From main system",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
},
"post_town": "BURNLEY",
"built_form": 4,
"created_at": "2011-08-04 07:03:30",
"glazed_area": 1,
"region_code": 19,
"report_type": 2,
"sap_heating": {
"cylinder_size": 1,
"water_heating_code": 901,
"water_heating_fuel": 26,
"main_heating_details": [
{
"main_fuel_type": 26,
"boiler_flue_type": 2,
"fan_flue_present": "Y",
"heat_emitter_type": 1,
"boiler_index_number": 8358,
"main_heating_number": 1,
"main_heating_control": 2106,
"main_heating_category": 2,
"main_heating_fraction": 1,
"main_heating_data_source": 1
}
],
"has_fixed_air_conditioning": "false"
},
"sap_version": 9.9,
"schema_type": "SAP-Schema-15.0",
"uprn_source": "Energy Assessor",
"country_code": "EAW",
"main_heating": [
{
"description": "Boiler and radiators, mains gas",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"dwelling_type": "Mid-terrace house",
"language_code": 1,
"property_type": 0,
"address_line_1": "22, Warwick Drive",
"address_line_2": "Padiham",
"schema_version": "LIG-15.0",
"assessment_type": "RdSAP",
"completion_date": "2011-08-04",
"inspection_date": "2011-08-04",
"extensions_count": 1,
"measurement_type": 1,
"total_floor_area": 77,
"transaction_type": 3,
"conservatory_type": 1,
"heated_room_count": 5,
"registration_date": "2011-08-04",
"restricted_access": 0,
"sap_energy_source": {
"main_gas": "Y",
"meter_type": 2,
"photovoltaic_supply": {
"percent_roof_area": 0
},
"wind_turbines_count": 0,
"wind_turbines_terrain_type": 2
},
"secondary_heating": {
"description": "None",
"energy_efficiency_rating": 0,
"environmental_efficiency_rating": 0
},
"sap_building_parts": [
{
"identifier": "Main Dwelling",
"floor_heat_loss": 7,
"roof_construction": 4,
"wall_construction": 4,
"building_part_number": 1,
"sap_floor_dimensions": [
{
"floor": 0,
"room_height": 2.35,
"floor_insulation": 1,
"total_floor_area": 35,
"floor_construction": 1,
"heat_loss_perimeter": 8.3
},
{
"floor": 1,
"room_height": 2.4,
"total_floor_area": 35,
"heat_loss_perimeter": 11
}
],
"wall_insulation_type": 2,
"construction_age_band": "C",
"roof_insulation_location": 2,
"roof_insulation_thickness": "150mm"
},
{
"identifier": "Extension 1",
"floor_heat_loss": 7,
"roof_construction": 1,
"wall_construction": 4,
"building_part_number": 2,
"sap_floor_dimensions": [
{
"floor": 0,
"room_height": 2,
"floor_insulation": 1,
"total_floor_area": 6.63,
"floor_construction": 1,
"heat_loss_perimeter": 5.16
}
],
"wall_insulation_type": 2,
"construction_age_band": "F",
"roof_insulation_location": 4,
"roof_insulation_thickness": "NI"
}
],
"low_energy_lighting": 89,
"solar_water_heating": "N",
"bedf_revision_number": 312,
"habitable_room_count": 5,
"heating_cost_current": 409,
"co2_emissions_current": 2.4,
"energy_rating_current": 73,
"lighting_cost_current": 46,
"main_heating_controls": [
{
"description": "Programmer, room thermostat and TRVs",
"energy_efficiency_rating": 4,
"environmental_efficiency_rating": 4
}
],
"multiple_glazing_type": 1,
"open_fireplaces_count": 0,
"has_hot_water_cylinder": "false",
"heating_cost_potential": 379,
"hot_water_cost_current": 95,
"mechanical_ventilation": 0,
"suggested_improvements": [
{
"sequence": 1,
"typical_saving": 41,
"indicative_cost": "\u00a31,500 - \u00a33,500",
"improvement_type": "I",
"improvement_details": {
"improvement_number": 20
},
"improvement_category": 2,
"energy_performance_rating": 75,
"environmental_impact_rating": 76
},
{
"sequence": 2,
"typical_saving": 25,
"indicative_cost": "\u00a34,000 - \u00a36,000",
"improvement_type": "N",
"improvement_details": {
"improvement_number": 19
},
"improvement_category": 3,
"energy_performance_rating": 76,
"environmental_impact_rating": 77
},
{
"sequence": 3,
"typical_saving": 214,
"indicative_cost": "\u00a311,000 - \u00a320,000",
"improvement_type": "U",
"improvement_details": {
"improvement_number": 34
},
"improvement_category": 3,
"energy_performance_rating": 86,
"environmental_impact_rating": 87
}
],
"co2_emissions_potential": 2.2,
"energy_rating_potential": 75,
"lighting_cost_potential": 46,
"hot_water_cost_potential": 84,
"renewable_heat_incentive": {
"water_heating": 2080,
"space_heating_existing_dwelling": 6207,
"space_heating_with_loft_and_cavity_insulation": 6207
},
"seller_commission_report": "Y",
"energy_consumption_current": 166,
"has_fixed_air_conditioning": "false",
"multiple_glazed_proportion": 100,
"calculation_software_version": "19.05r15",
"energy_consumption_potential": 150,
"environmental_impact_current": 73,
"fixed_lighting_outlets_count": 9,
"current_energy_efficiency_band": "C",
"environmental_impact_potential": 76,
"has_heated_separate_conservatory": "false",
"potential_energy_efficiency_band": "C",
"co2_emissions_current_per_floor_area": 32,
"low_energy_fixed_lighting_outlets_count": 8
}

View file

@ -0,0 +1,316 @@
"""Elmhurst build for UPRN 100010086084 (SAP-Schema-15.0, cert
8493-5079-7429-8996-5293, SEMI-DETACHED HOUSE, 9 Pear Tree Avenue, Crewe
CW1 3SH, band C 1930-1949, SOLID BRICK uninsulated (thickness not lodged --
UNKNOWN, not a specific mm value), pitched 300mm loft insulation, SOLID
ground floor uninsulated, mains-gas generic (no-PCDB) REGULAR boiler SAP
Table 4b code 115 (pre-1998, balanced/open flue, "BGL Pre 98 Wall mount
BF/OF") + programmer/room-thermostat control (2104/CBC) + radiators +
cylinder (size 2 = "Normal (Less than 130L)" on the live tool, foam, 25mm), gas
room-heater SECONDARY (603, approximated as RGB "Modern fire with open flue
post 1980" -- the cert gives no finer detail), TFA 68, single meter,
2-storey / 2 floor-dims (no extensions). Partial double glazing
(multiple_glazing_type 1, multiple_glazed_proportion 50 -- NOT modelled as
partial; this mapper's own `_api_cascade_glazing_type(1)` treats it as 100%
double too, so the Elmhurst build matches the mapper's own simplification),
glazed_area band 1 (Normal): 0.148*68=10.06 m^2 combined window.
2011 lodged 45; this RdSAP10 engine on gov-API inputs produces 53. Elmhurst's
OWN worksheet, built here, gives 46 (window South-facing: 48 -- see below).
NEITHER is the "right answer" to chase blindly -- see the investigation
write-up in tests/domain/sap10_calculator/test_real_cert_sap_accuracy.py
next to this cert's RealCertExpectation for the full comparison, what was
ruled out, and the two real-but-unfixed bugs this build surfaced (wall-
thickness-unknown U-value fallback mismatch; a window U-value divergence).
GOTCHAS specific to this build (fold into the next SAP-Schema-15.0 cert):
* The shared assessment WILL carry a stale PCDB boiler ref on Main Heating
1 from a prior build -- clear `TextBoxPCDFBoilerReference` to "0" (JS +
save) BEFORE `ButtonMainHeatingCode` becomes clickable (mirrors the
documented storage-heater "clear the PCDF boiler first" pattern).
* Wall thickness: use `CheckBoxWallThicknessUnknown`, NOT a blank/skipped
field -- an untouched thickness textbox silently keeps whatever a PRIOR
cert set (bit this build once: inherited a stale 280mm, landing on the
exact documented Table 13 200/280mm edge case).
* `set_single_window`'s orientation choice is NOT neutral for a cert this
reduced-field: North gave 46, South gave 48 (max solar gain) on this
cert. South is the fairer bound (this mapper's own N/E/S/W synthesis
spreads solar gain; a single North-facing pick is the worst case).
* The Roof/Cylinder thickness dropdowns need an EXACT option-text match
("300 mm" not "300 mm or more"; "25 mm" not "25") -- `set_select` fails
silently (no exception) on a non-matching value and leaves the field at
its previous/inherited state. ALWAYS verify with `.input_value()` after
setting, don't trust the call succeeded.
* Address/region are carried over from whatever cert built the shared
assessment last -- explicitly set them (see `address()` below) even
though region is provably inert for the SAP rating itself (UK-average
weather always, `_region_index` in cert_to_inputs.py) -- other summary
fields (post town) still read from it.
Run:
DISPLAY=:99 python scripts/hyde/build_100010086084.py <page>
"""
from __future__ import annotations
import sys
import elmhurst_lib as E
DIM = "TabContainer_TabPanelMain_WebUserControlDimensionsMain_"
WALL = ("TabContainer_TabPanelMain_InnerTabContainerMain_"
"TabPanelExternalWallMain_WebUserControlWallMain_")
PWALL = "TabContainer_TabPanelMain_InnerTabContainerMain_TabPanelPartyWallMain_WebUserControlPartyWallMain_"
ROOF = "TabContainer_TabPanelMain_WebUserControlRoofMain_"
FLOOR = "TabContainer_TabPanelMain_WebUserControlFloorsMain_"
DP = "TabContainer_TabPanelDoorsPanel_"
VP = "TabContainer_TabPanelVentilationPanel_"
APT = "TabContainer_TabPanelAirPressureTest_"
LP = "TabContainer_TabPanelLighting_"
MV = "TabContainer_TabPanelMechVent_"
WH = "TabContainer_TabPanelWaterHeating_"
MH1B = "TabContainer_TabPanelMainHeating1_WebUserControlMainHeating1_"
def _pick(page, suffix, contains):
val = page.evaluate(
"""(a)=>{const s=document.getElementById(a[0]);if(!s)return null;
for(const o of s.options){if(o.text.toLowerCase().includes(a[1].toLowerCase()))return o.value;}return null;}""",
[f"{E.FP}{suffix}", contains])
if val is not None:
E.set_select(page, suffix, val)
return val
def address(page):
page.goto(E.ENTRY_URL, wait_until="networkidle", timeout=60_000)
E.set_text(page, "TextBoxHouseNo", "9")
E.set_text(page, "TextBoxStreet", "Pear Tree Avenue")
E.set_text(page, "TextBoxTown", "Crewe")
E.set_text(page, "TextBoxPostCode", "CW1 3SH")
page.wait_for_timeout(300)
E.set_select(page, "DropDownListRegion", "West Pennines")
page.click("#ContentBody_ContentPlaceHolderNavigations_ButtonSaveClose", timeout=15_000)
page.wait_for_timeout(1000)
def property_description(page):
E.goto(page, "PropertyDescription", "WebFormPropertyDescription.aspx")
E.set_select(page, "DropDownListPropertyType1", "H House")
_pick(page, "DropDownListPropertyType2", "semi") # built_form 2
E.set_text(page, "TextBoxStoreys", "2")
E.set_text(page, "TextBoxHabitableRooms", "3")
E.set_text(page, "TextBoxHeatedHabitableRooms", "3")
print("date ->", _pick(page, "DropDownListDateBuiltMain", "1930-1949")) # band C
E.set_select(page, "DropDownListDateBuiltFirst", "")
E.set_select(page, "DropDownListRoomInRoofMain", "")
E.save_close(page)
def dimensions(page):
E.goto(page, "Dimensions", "WebFormDimensions.aspx")
# Ground floor: area 37.74, heat_loss_perimeter 21.05 -> geometry-derived
# party wall (the shared/depth side) ~4.58m.
E.set_text(page, f"{DIM}TextBoxFloorAreaLowestFloor", "37.74")
E.set_text(page, f"{DIM}TextBoxRoomHeightLowestFloor", "2.41")
E.set_text(page, f"{DIM}TextBoxWallPerimeterLowestFloor", "21.05")
E.set_text(page, f"{DIM}TextBoxPartyWallLengthLowestFloor", "4.58")
# First floor: area 39.48, heat_loss_perimeter 18.45 -> party wall ~6.75m.
E.set_text(page, f"{DIM}TextBoxFloorArea1stFloor", "39.48")
E.set_text(page, f"{DIM}TextBoxRoomHeight1stFloor", "2.45")
E.set_text(page, f"{DIM}TextBoxWallPerimeter1stFloor", "18.45")
E.set_text(page, f"{DIM}TextBoxPartyWallLength1stFloor", "6.75")
E.save_close(page)
def walls(page):
E.goto(page, "Walls", "WebFormWalls.aspx")
E.set_select(page, f"{WALL}DropDownListType", "SO Solid brick")
page.wait_for_timeout(400)
print("insulation ->", _pick(page, f"{WALL}DropDownListInsulation", "as built"))
# Thickness NOT lodged on this schema -- mark unknown explicitly, don't
# leave the textbox untouched (it silently inherits a stale value).
cb = page.locator(f"#{E.FP}{WALL}CheckBoxWallThicknessUnknown")
if cb.count() and not cb.is_checked():
E.commit(page, cb.check)
pw = _pick(page, f"{PWALL}DropDownListPartyWallType", "solid") \
or _pick(page, f"{PWALL}DropDownListPartyWallType", "determine")
print("party wall ->", pw)
E.save_close(page)
def roofs(page):
E.goto(page, "Roofs", "WebFormRoofs.aspx")
_pick(page, f"{ROOF}DropDownListType", "access to loft")
_pick(page, f"{ROOF}DropDownListInsulationAt", "joists")
E.set_select(page, f"{ROOF}DropDownListThickness", "300 mm") # exact match
print("roof thickness now:", page.locator(f"#{E.FP}{ROOF}DropDownListThickness").input_value())
E.save_close(page)
def floors(page):
E.goto(page, "Floors", "WebFormFloors.aspx")
E.set_select(page, f"{FLOOR}DropDownListLocation", "G Ground floor")
_pick(page, f"{FLOOR}DropDownListType", "solid")
E.set_select(page, f"{FLOOR}DropDownListInsulation", "A As built")
E.save_close(page)
def openings(page):
E.goto(page, "Openings", "WebFormOpenings.aspx")
E.click_tab(page, "TabContainer_TabPanelWindowsPanel")
# glazed_area band 1 (Normal): total = 0.148*68*1.00 = 10.06 m^2. multiple_
# glazing_type=1 -> this mapper's own _api_cascade_glazing_type(1) treats
# it as 100% double (ignores multiple_glazed_proportion=50 the same way),
# so "Double, unknown install date" matches the mapper's own assumption.
# South (not North) -- max solar gain, the fairer single-orientation
# bound against this mapper's own N/E/S/W synthesis (see module docstring).
E.set_single_window(page, 10.06, "South", "Double with unknown install date")
E.click_tab(page, "TabContainer_TabPanelDoorsPanel")
E.set_text(page, f"{DP}TextBoxDoors", "1")
E.set_text(page, f"{DP}TextBoxDoorsInsulated", "0")
E.set_text(page, f"{DP}TextBoxDraughtProofedDoors", "0")
E.save_close(page)
def ventilation(page):
E.goto(page, "VentilationAndCooling", "WebFormVentilationAndCooling.aspx")
E.click_tab(page, "TabContainer_TabPanelVentilationPanel")
# This cert's register lodges open_fireplaces_count=0 (epc.json) -- the
# shared assessment's ventilation tab silently inherits a stale
# TextBoxOpenChimneys="2" from a PRIOR cert build (same untouched-field-
# keeps-prior-value gotcha documented above for wall thickness) unless
# explicitly zeroed here.
E.set_text(page, f"{VP}TextBoxOpenChimneys", "0")
E.set_text(page, f"{VP}TextBoxChimneysFluesClosedFire", "0")
E.set_text(page, f"{VP}TextBoxBlockedChimneys", "0")
E.set_text(page, f"{VP}TextBoxIntermittentFans", "0")
cool = page.locator(f"#{E.FP}{VP}CheckBoxFixedSpaceCooling")
if cool.count() and cool.is_checked():
E.commit(page, cool.uncheck)
E.click_tab(page, "TabContainer_TabPanelMechVent")
mv = page.locator(f"#{E.FP}{MV}CheckBoxMechanicalVentilation")
if mv.count() and mv.is_checked():
E.commit(page, mv.uncheck)
E.click_tab(page, "TabContainer_TabPanelAirPressureTest")
E.set_select(page, f"{APT}DropDownListTestMethod", "Not available")
E.click_tab(page, "TabContainer_TabPanelLighting")
# low_energy_lighting 43% of 7 fixed outlets -> 3 low-energy.
E.set_text(page, f"{LP}TextBoxLightsTotal", "7")
E.set_text(page, f"{LP}TextBoxLedLightsTotal", "3")
E.set_text(page, f"{LP}TextBoxCflLightsTotal", "0")
E.save_close(page)
def space_heating(page):
# SAP Table 4b code 115: pre-1998 gas boiler, balanced/open flue, no PCDB
# index (main_heating_data_source=2). Regular boiler (has_hot_water_
# cylinder=true, water_heating_code 901 "from primary") + radiators
# (heat_emitter_type=1), fan_flue_present=N.
E.goto(page, "SpaceHeating", "WebFormSpaceHeating.aspx")
page.wait_for_timeout(1000)
# The shared assessment's Main Heating 1 slot carries a stale PCDB boiler
# ref from a prior build -- clear it first (JS + save) so the SAP-code
# button appears; mirrors the documented storage-heater pattern.
ref = page.locator(f"#{E.FP}{MH1B}TextBoxPCDFBoilerReference")
if ref.count() and ref.input_value() not in ("", "0"):
print(f"clearing leftover PCDF boiler ref {ref.input_value()}")
page.evaluate("""(id)=>{const e=document.getElementById(id);if(e){e.value='0';
e.dispatchEvent(new Event('change',{bubbles:true}));}}""", f"{E.FP}{MH1B}TextBoxPCDFBoilerReference")
page.wait_for_timeout(500)
E.save_close(page)
page.wait_for_load_state("networkidle", timeout=20_000)
page.wait_for_selector(
f"#{E.NAV}SpaceHeating_Link", state="visible", timeout=30_000
)
E.goto(page, "SpaceHeating", "WebFormSpaceHeating.aspx")
page.wait_for_timeout(1000)
mhc = page.locator(f"#{E.MH1}TextBoxMainHeatingCode")
code = mhc.input_value() if mhc.count() else ""
if code and code not in ("0",):
print(f"clearing leftover MainHeatingCode {code}")
page.evaluate("""(id)=>{const e=document.getElementById(id);if(e){e.value='';
e.dispatchEvent(new Event('change',{bubbles:true}));}}""", f"{E.MH1}TextBoxMainHeatingCode")
page.wait_for_timeout(400)
E.save_close(page)
return
# Generic (no-PCDB) mains-gas REGULAR boiler, pre-1998 balanced/open flue
# (matches boiler_flue_type=1, fan_flue_present=N) -> Gas -> Mains gas ->
# Boilers -> Pre 1998 - Balanced/Open Flue -> Wall mount (regular, not
# combi/back-boiler -- matches has_hot_water_cylinder=true).
E.set_heating_dialog(page, f"{MH1B}ButtonMainHeatingCode",
"^Gas", "Mains gas", "Boilers", "Balanced.*Open",
"Wall mount")
print("code:", page.locator(f"#{E.MH1}TextBoxMainHeatingCode").input_value())
# Control 2104 = "Programmer and room thermostat" (matches the cert's own
# main_heating_controls description) -- no TRVs. NB: CBC is "Programmer
# and room thermostat"; CBB is "Room thermostat and TRVs" -- do not swap.
E.set_heating_dialog(page, f"{MH1B}ButtonMainHeatingControls",
"^Boilers", "^Standard", "CBC Programmer and room thermostat")
print("control:", page.locator(f"#{E.MH1}TextBoxMainHeatingControls").input_value())
# Explicit flue type (BUG fixed): the "Balanced/Open Flue" boiler-code
# CATEGORY picked above is a combined Table 4b group name (BF/OF) that
# does NOT set the separate `RadioButtonListFlueType` select on this
# page -- that field kept its inherited/default "Balanced" from a
# prior cert (silent-stale-value class of bug, see docstring), which
# mismatches the lodged gov-API `boiler_flue_type=1` ("Open"). Set it
# explicitly to match.
E.set_select(page, f"{MH1B}RadioButtonListFlueType", "Open")
print("flue type:", page.locator(f"#{E.FP}{MH1B}RadioButtonListFlueType").input_value())
E.save_close(page)
def secondary(page):
# Lodged secondary: SAP 603 = room heaters, mains gas (no finer detail
# lodged -- RGB "Modern fire with open flue post 1980" is the generic
# approximation).
E.goto(page, "SpaceHeating", "WebFormSpaceHeating.aspx")
page.wait_for_timeout(600)
E.set_select(page, "DropDownListSecondaryHeatingPresent", "Yes")
page.wait_for_timeout(900)
E.set_heating_dialog(page, "ButtonSecondaryHeatingCode",
"^Gas", "Mains gas", "Room Heater", "RGB Modern fire with open flue")
tb = page.locator(f"#{E.FP}TextBoxSecondaryHeatingCode")
print("secondary code:", tb.input_value() if tb.count() else "?")
E.save_close(page)
def water_heating(page):
E.goto(page, "WaterHeating", "WebFormWaterHeating.aspx")
E.click_tab(page, "TabContainer_TabPanelWaterHeating")
page.wait_for_timeout(400)
E.set_heating_dialog(page, f"{WH}ButtonWaterHeatingCode",
"From Space Heating", "From the primary heating system")
print("water code:", page.locator(f"#{E.FP}{WH}TextBoxWaterHeatingCode").input_value())
# cylinder: lodged cylinder_size code 2 = SAP10 "Normal" (110 L; see
# cert_to_inputs.py _CYLINDER_SIZE_CODE_TO_LITRES). BUG (fixed): this
# dropdown's <option VALUE> IS its visible text on this build ("No
# Access" / "Normal (Less than 130L)" / "Medium (131-170L)" / "Large
# (Greater than 171L)" / "Value known") -- passing the bare numeric
# code "2" to `set_select` silently matched nothing (Playwright
# select_option no-ops on a non-matching value) and left the field at
# whatever a PRIOR cert's build had set ("Medium (131-170L)"), the
# same silent-failure/stale-value contamination class as the wall-
# thickness gotcha documented in this file's docstring. Match by the
# real option text instead.
E.select_by_contains(page, f"{WH}DropDownListCylinderSize", "Normal")
E.set_select(page, f"{WH}DropDownListInsulated", "Foam")
E.set_select(page, f"{WH}DropDownListInsulationThickness", "25 mm")
print("cylinder size:", page.locator(f"#{E.FP}{WH}DropDownListCylinderSize").input_value())
print("cylinder thickness:", page.locator(f"#{E.FP}{WH}DropDownListInsulationThickness").input_value())
E.save_close(page)
_ORDER = ["address", "property_description", "dimensions", "walls", "roofs",
"floors", "openings", "ventilation", "space_heating", "secondary",
"water_heating"]
def main():
if len(sys.argv) < 2 or sys.argv[1] not in _ORDER:
print("usage: build_100010086084.py <" + "|".join(_ORDER) + ">")
return 2
with E.session() as (ctx, page):
globals()[sys.argv[1]](page)
print("done:", sys.argv[1], "->", page.url)
return 0
if __name__ == "__main__":
raise SystemExit(main())

View file

@ -0,0 +1,51 @@
"""One-off: rebuild UPRN 100010086084's Openings page with 4 separate
per-orientation window rows (N/E/S/W, 2.516 m^2 each) instead of the single
combined South-facing row, to test whether it closes the ~2pt gap between
Elmhurst's own worksheet (51) and this engine on gov-API inputs (53).
Each window is added in its OWN fresh `E.session()` (fresh login, fresh page
load of Openings) to dodge the documented "each Add wipes the previous
row's editable cells" bug AND the flaky in-process re-navigation after
Save & Close observed in earlier runs.
Run once per window, e.g.:
DISPLAY=:99 python scripts/hyde/build_100010086084_multiwindow.py East
DISPLAY=:99 python scripts/hyde/build_100010086084_multiwindow.py South
DISPLAY=:99 python scripts/hyde/build_100010086084_multiwindow.py West
"""
from __future__ import annotations
import sys
from pathlib import Path
sys.path.insert(0, str(Path(__file__).parent))
import elmhurst_lib as E # noqa: E402
AREA = 2.516
def main() -> None:
if len(sys.argv) != 2:
raise SystemExit(f"usage: {sys.argv[0]} <Orientation>")
orientation = sys.argv[1]
with E.session() as (ctx, page):
E.goto(page, "Openings", "WebFormOpenings.aspx")
before = E.window_row_count(page)
print("before:", before)
E.add_combined_window(page, AREA, orientation)
page.wait_for_timeout(800)
after = E.window_row_count(page)
print("after add:", after)
rows = page.evaluate(
"""() => {
const cells = document.querySelectorAll("[id*='GridViewExtendedWidows'] tr");
return [...cells].map(r => r.innerText.replace(/\\s+/g, ' ').trim());
}"""
)
for r in rows:
print("ROW:", r)
E.save_close(page)
if __name__ == "__main__":
main()

View file

@ -0,0 +1,71 @@
"""Download the Input Summary + SAP Worksheets PDFs for UPRN 100010086084,
via a fresh-login `E.session()` (elmhurst_download.py's persistent-context
login is stale per elmhurst_lib's own documented auth gotcha).
SAFETY: clicks ONLY the two allow-listed report buttons below. NEVER clicks
Submit (`LinkButtonSubmitEPR`).
DISPLAY=:99 python scripts/hyde/download_100010086084.py
"""
from __future__ import annotations
from pathlib import Path
import elmhurst_lib as E
from playwright.sync_api import TimeoutError as PlaywrightTimeoutError
SAMPLE_DIR = (
Path(__file__).parent.parent.parent
/ "backend/epc_api/json_samples/real_life_examples"
/ "SAP-Schema-15.0/uprn_100010086084"
)
REPORTS = [
("ContentBody_ContentPlaceHolder1_LinkButtonSummary", "elmhurst_summary.pdf"),
("ContentBody_ContentPlaceHolder1_ButtonDebugInforPdf", "elmhurst_worksheet.pdf"),
]
_FORBIDDEN = {"ContentBody_ContentPlaceHolder1_LinkButtonSubmitEPR"}
def _download_one(page, button_id, out):
assert button_id not in _FORBIDDEN, f"refusing to click forbidden {button_id}"
print(f" clicking {button_id} -> {out.name} ...", flush=True)
try:
with page.expect_download(timeout=60_000) as dl:
page.click(f"#{button_id}", timeout=20_000)
dl.value.save_as(str(out))
except PlaywrightTimeoutError:
try:
with page.expect_popup(timeout=10_000) as pop:
page.click(f"#{button_id}", timeout=20_000)
popup = pop.value
with popup.expect_download(timeout=30_000) as dl2:
pass
dl2.value.save_as(str(out))
except PlaywrightTimeoutError:
print(f" !! no download/popup for {button_id}", flush=True)
return False
size = out.stat().st_size if out.exists() else 0
print(f" saved {out} ({size:,} bytes)", flush=True)
return out.exists() and size > 0
def main():
SAMPLE_DIR.mkdir(parents=True, exist_ok=True)
ok = True
with E.session() as (ctx, page):
print("navigating via Recommendations ...", flush=True)
with page.expect_navigation(wait_until="networkidle", timeout=60_000):
page.click("#ContentBody_buttonActionRecommendations_Link", timeout=15_000)
page.wait_for_timeout(600)
print("navigating to Energy Report Summary ...", flush=True)
with page.expect_navigation(wait_until="networkidle", timeout=60_000):
page.click("#ContentBody_buttonActionSummary_Link", timeout=15_000)
page.wait_for_timeout(600)
for button_id, fname in REPORTS:
ok = _download_one(page, button_id, SAMPLE_DIR / fname) and ok
page.wait_for_timeout(600)
print("DONE." if ok else "DONE (with errors).", flush=True)
return 0 if ok else 1
if __name__ == "__main__":
raise SystemExit(main())

View file

@ -1088,6 +1088,285 @@ _EXPECTATIONS: Final[tuple[RealCertExpectation, ...]] = (
cert_num="uprn-100031768368",
sap_score=61,
),
# SAP-Schema-15.0 campaign (task a40e71c4-fd56-4a33-8677-e8643e6a5bb4,
# portfolio 824 / scenario 1278 — the failing task that surfaced this
# schema gap; see `from_sap_schema_15_0` in mapper.py). 20 real 2011-era
# LIG-15.0 lodgements sampled across the failing portfolio.
#
# NOTE on what these pins do and don't validate: `sap_score` here is the
# ENGINE'S OWN observed output, not an accuracy claim against the lodged
# `energy_rating_current`. These are 2011 certs, assessed under the SAP
# 2009 methodology of the day; this calculator implements the CURRENT
# RdSAP10 methodology, which has since revised several U-value tables
# (solid-wall thickness bands among them — see `u_wall` §5.7 Table 13).
# A 2011-vs-2026-methodology delta is therefore EXPECTED and tells you
# nothing about mapper correctness either way — closeness to lodged is
# not evidence for the mapper, and a gap from lodged is not evidence
# against it. Real accuracy validation needs an Elmhurst RdSAP10 rebuild
# (the `validate-cert-sap-accuracy` skill) on the SAME methodology as the
# engine, which this batch did not do.
#
# What this batch DOES validate: all 20 structurally distinct real certs
# (different fuels, meter types, secondary-heating types, wall
# constructions, portfolios) map without error through the new
# `from_sap_schema_15_0` path and produce plausible SAP scores — i.e. the
# three schema-wide defaults (door_count=1, WWHRS/FGHRS "none fitted",
# percent_draughtproofed=0) don't crash or produce nonsense on a diverse
# sample. Four of the twenty (086084/090369/074470/100813, sharing
# solid-brick UNINSULATED walls / age band C) show the largest gap from
# lodged; spot-checked `u_wall(Country.ENG, "C", 3, None,
# wall_insulation_type=4)` directly and it returns 1.70, matching RdSAP10's
# own published Table 6 for that construction/age band — so at minimum
# the wall U-value lookup itself is not the source of any divergence.
# PINNED to the engine's observed value on every case (the file's
# standing convention) — not tuned to lodged, and not claimed as an
# accuracy match either.
RealCertExpectation(
schema="SAP-Schema-15.0",
sample="uprn_100010359769",
cert_num="0087-2885-6238-9729-0575",
sap_score=68,
),
RealCertExpectation(
schema="SAP-Schema-15.0",
sample="uprn_100010359788",
cert_num="0687-2894-6684-9009-7151",
sap_score=72,
),
# Full Elmhurst RdSAP10 rebuild done for this ONE cert (the others in this
# batch are unverified against Elmhurst — see the batch-level note above).
# UPDATE (2026-07-10): the prior 46/48 Elmhurst readings were CONTAMINATED
# — the shared Elmhurst assessment inherited stale field values from a
# PRIOR cert built in the same session (the documented untouched-field-
# keeps-prior-value gotcha, `scripts/hyde/build_100010086084.py`):
# * TextBoxOpenChimneys silently carried over "2" from an earlier build
# (scripts/hyde/build_100021969385.py) — this cert's actual register
# lodges open_fireplaces_count=0 (epc.json), which the gov-API mapper
# already reads correctly. The old build script's `ventilation()`
# never touched this field. Fixed: now explicitly zeroes
# TextBoxOpenChimneys/TextBoxChimneysFluesClosedFire/
# TextBoxBlockedChimneys.
# * Wall thickness 280mm was also a genuine carryover (already flagged),
# not a real "unknown thickness" case — `CheckBoxWallThicknessUnknown`
# turned out not to persist via Playwright automation in this tool
# version (checking it round-trips back to unchecked, and leaving the
# thickness textbox blank makes the Walls section invalid /
# "Incomplete", blocking Results and PDF export). Rebuilt with
# thickness explicitly set to 220mm (standard solid 9" brick — the
# RdSAP convention for an unrecorded solid-wall thickness), not 280mm.
# * A build-script bug was ALSO found and fixed while rebuilding: the
# stale-PCDB-ref-clearing code in `space_heating()` checked
# `ref.input_value()` truthiness, but Playwright's `input_value()`
# returns the STRING `"0"` when already cleared — which is truthy in
# Python — so it always re-triggered the "clear it" `save_close()`
# branch, which navigates to Home.aspx and breaks the next
# `E.goto(page, "SpaceHeating", ...)` (no left-rail nav on that page).
# Fixed to `not in ("", "0")`.
# Clean rebuild result: Elmhurst's OWN worksheet now gives SAP 51 (was the
# contaminated 46/48), vs this engine's 53 on gov-API inputs — a residual
# gap of only ~2pt (was ~5-7pt before de-contamination). This is within
# the accepted-approximation range for this cert given the remaining
# known, non-bug divergences below; no mapper.py change was needed or
# made — the gov-API mapper's open_chimneys_count=0 was correct all along.
# Ruled out (tested directly, no material effect): total_floor_area vs
# summed sap_floor_dimensions (zero effect); missing party_wall_length
# (this cert's party wall type is "Solid", U~=0, so near-zero effect
# either way); region/climate (SAP rating always uses UK-average weather
# per Appendix U, `_region_index` in cert_to_inputs.py -- regional choice
# is provably inert for this field); boiler/secondary efficiency (exact
# match both sides: 66% / 63%).
# Single-window orientation remains a confirmed partial contributor to
# the engine-on-Elmhurst-PDF-inputs path (SAP 46, a separate number from
# Elmhurst's own worksheet 51): the campaign's `set_single_window`
# collapses all glazing into ONE row (documented, accepted approximation
# — true multi-orientation entry does not reliably stick, see
# elmhurst_lib.py). South-facing (max solar gain) was used here as the
# fairer single-orientation bound.
# UPDATE (2026-07-10, multi-orientation window re-attempt): re-tried
# entering this cert's 4 real per-orientation windows (gov-API
# `sap_windows`: N/E/S/W, 2.516 m^2 each, codes 1/3/5/7 in epc.json) as 4
# separate Openings rows in Elmhurst instead of one combined South row.
# CONFIRMED the documented `elmhurst_lib.py` limitation is real, not
# theoretical: adding a 2nd window row (East, 2.52 m^2) via
# `add_combined_window` DID insert correctly, but simultaneously wiped
# the previously-added row's width/height to 0.00/0.00 (reproduced live,
# `window_row_count` stayed at 2 but one row was junk) — tried both
# same-session-with-save-between and fresh-session-per-window; both hit
# the same wipe. A 0.00-area row is invalid (would block the
# Recommendations gate), so the assessment was restored to the single
# combined South row (10.06 m^2, unchanged) and NOT left half-built; no
# new PDFs were downloaded (nothing changed from the prior 51 worksheet).
# Separately CONFIRMED our own engine already models this cert's windows
# per-orientation correctly on the gov-API path (not an engine bug): the
# gov-API mapper reads `sap_windows` as 4 distinct `SapWindow`s with
# orientations N/E/S/W, and `domain/sap10_calculator/worksheet/
# solar_gains.py` computes (74)-(83) per-orientation gain per window via
# `ORIENTATION_BY_SAP10_CODE`. So the ~2pt residual gap (gov-API 53 vs
# Elmhurst worksheet 51) is NOT closeable through this route — it is a
# ground-truth construction limit of the Elmhurst web tool's window grid
# (can't reliably enter >1 window row), not a mapper or calculator gap.
# Given this, and that total_floor_area (68 vs 77.22 m^2) and the
# omitted party-wall length remain open, non-inert-in-combination
# divergences (re-examined per the follow-up brief and still assessed as
# small/partially-offsetting rather than compounding to more than ~2pt),
# this cert's ~2pt residual gap is accepted as a genuine, honestly-
# documented ground-truth divergence, not a bug. No calculator/mapper
# code changes were made.
# UPDATE (2026-07-10, follow-up): the two flagged cylinder_size /
# boiler_flue_type mismatches were root-caused and fixed — both were (a)
# Elmhurst input errors, the same silent-stale-value contamination class
# as the chimneys/wall-thickness bugs above, NOT parser or mapper bugs:
# * cylinder_size: `water_heating()`'s `E.set_select(...,
# "DropDownListCylinderSize", "2")` assumed the <option> VALUE
# attribute was the bare numeric SAP code, but on this build's DOM
# the option VALUE *is* its visible text (`select_options()` dump:
# "No Access" / "Normal (Less than 130L)" / "Medium (131-170L)" /
# "Large (Greater than 171L)" / "Value known" — no "2" among them).
# Playwright's `select_option("2")` silently no-ops on a non-matching
# value, leaving the field at "Medium (131-170L)" inherited from a
# prior cert. Confirmed live: `.input_value()` read back "Medium
# (131-170L)" before the fix. Fixed the build script to match by
# visible text (`E.select_by_contains(..., "Normal")`) — verified
# `.input_value()` now reads "Normal (Less than 130L)", matching the
# lodged gov-API `cylinder_size=2` (Normal/110L per
# `cert_to_inputs.py` `_CYLINDER_SIZE_CODE_TO_LITRES`). Added the
# matching mapper dict entries for the litre-range-suffixed labels
# ("Normal (Less than 130L)": 2, "Large (Greater than 171L)": 4) next
# to the existing "Medium (131-170L)": 3 entry in
# `_ELMHURST_CYLINDER_SIZE_LABEL_TO_SAP10` (mapper.py) — a real
# mapper-coverage gap, since the calculator raises
# `UnmappedElmhurstLabel` rather than silently mis-mapping.
# * boiler_flue_type: the boiler-code SEARCH DIALOG's "Balanced/Open
# Flue" (matched via `"Balanced.*Open"`) is a combined Table 4b
# BOILER CATEGORY name (covers both flue types under one SAP code,
# 115) — it does NOT set the separate, independently-selectable
# `RadioButtonListFlueType` field on the SpaceHeating page (options:
# "Balanced" / "Open"). That field was left at its inherited/default
# "Balanced" from a prior cert (confirmed live via DOM dump: selected
# option was "Balanced" pre-fix), which the PDF/parser correctly read
# as code 2 — mismatching the lodged gov-API `boiler_flue_type=1`
# ("Open"). This field is NOT consumed by `Sap10Calculator`/
# `cert_to_inputs.py` (only by ML/recommendation-generator code), so
# it had zero effect on the SAP score either way — but fixed for data
# fidelity: `space_heating()` now explicitly sets
# `RadioButtonListFlueType` to "Open" after picking the boiler code.
# Both fixes applied, PDFs re-downloaded (Recommendations page confirmed
# clean beforehand). Elmhurst-PDF-inputs path moved 46 → 47 SAP (cylinder
# volume correction, `HW` 3436 kWh vs the prior smaller "Large" reading);
# this engine's gov-API SAP (53) and Elmhurst's own worksheet (51) are
# unaffected/unchanged by this follow-up — no calculator-input field for
# THIS reconciliation target actually depended on either mismatch.
# Full `test_real_cert_sap_accuracy.py` + `test_sap_accuracy_corpus.py`
# suites re-run clean after the mapper dict addition (67 passed, 67
# skipped, 1 xfailed — same as before the change).
RealCertExpectation(
schema="SAP-Schema-15.0",
sample="uprn_100010086084",
cert_num="8493-5079-7429-8996-5293",
sap_score=53,
),
RealCertExpectation(
schema="SAP-Schema-15.0",
sample="uprn_100010090369",
cert_num="8302-5919-9429-6696-2923",
sap_score=53,
),
RealCertExpectation(
schema="SAP-Schema-15.0",
sample="uprn_100010074470",
cert_num="8501-5989-9529-2326-0223",
sap_score=46,
),
RealCertExpectation(
schema="SAP-Schema-15.0",
sample="uprn_100010100813",
cert_num="8797-7949-0029-6396-4093",
sap_score=59,
),
RealCertExpectation(
schema="SAP-Schema-15.0",
sample="uprn_77179816",
cert_num="9438-5046-6215-8769-7934",
sap_score=76,
),
RealCertExpectation(
schema="SAP-Schema-15.0",
sample="uprn_10070400619",
cert_num="2628-6072-6296-8479-8940",
sap_score=77,
),
RealCertExpectation(
schema="SAP-Schema-15.0",
sample="uprn_77179820",
cert_num="9338-7036-6275-8969-7950",
sap_score=77,
),
RealCertExpectation(
schema="SAP-Schema-15.0",
sample="uprn_10070394806",
cert_num="0989-2863-6454-9799-9601",
sap_score=78,
),
RealCertExpectation(
schema="SAP-Schema-15.0",
sample="uprn_77181233",
cert_num="8159-6821-8860-6966-9902",
sap_score=68,
),
RealCertExpectation(
schema="SAP-Schema-15.0",
sample="uprn_77180626",
cert_num="2818-9993-6239-5699-2904",
sap_score=68,
),
RealCertExpectation(
schema="SAP-Schema-15.0",
sample="uprn_10070400618",
cert_num="8797-7349-1229-8826-7093",
sap_score=70,
),
RealCertExpectation(
schema="SAP-Schema-15.0",
sample="uprn_100010350459",
cert_num="8669-6321-9270-2022-7926",
sap_score=65,
),
RealCertExpectation(
schema="SAP-Schema-15.0",
sample="uprn_100010350468",
cert_num="8305-5058-8729-2926-8593",
sap_score=66,
),
RealCertExpectation(
schema="SAP-Schema-15.0",
sample="uprn_100010333531",
cert_num="8094-2349-1329-3996-9993",
sap_score=73,
),
RealCertExpectation(
schema="SAP-Schema-15.0",
sample="uprn_100010341489",
cert_num="2678-3089-6249-9142-9900",
sap_score=65,
),
RealCertExpectation(
schema="SAP-Schema-15.0",
sample="uprn_100010341491",
cert_num="2568-6062-6299-9052-1984",
sap_score=62,
),
RealCertExpectation(
schema="SAP-Schema-15.0",
sample="uprn_100010347646",
cert_num="8169-6020-9719-2148-6996",
sap_score=75,
),
RealCertExpectation(
schema="SAP-Schema-15.0",
sample="uprn_100010347637",
cert_num="8059-6020-9429-4133-0996",
sap_score=72,
),
)