From fedae2ea003c686163b5fc839047a1d6b3f96e2d Mon Sep 17 00:00:00 2001 From: Khalim Conn-Kowlessar Date: Wed, 1 Jul 2026 16:09:56 +0000 Subject: [PATCH] =?UTF-8?q?Resolve=20an=20electric-CPSU=20override=20to=20?= =?UTF-8?q?SAP=20192=20electric=20on=20an=20off-peak=20meter=20?= =?UTF-8?q?=F0=9F=9F=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 (1M context) --- .../main_heating_system_overlay.py | 13 ++++++++----- .../property_overrides/main_heating_system_type.py | 1 + 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/domain/epc/property_overlays/main_heating_system_overlay.py b/domain/epc/property_overlays/main_heating_system_overlay.py index e15aeeb3c..5d7c3b836 100644 --- a/domain/epc/property_overlays/main_heating_system_overlay.py +++ b/domain/epc/property_overlays/main_heating_system_overlay.py @@ -112,10 +112,10 @@ _CATEGORY_10_ROOM_HEATER_CODES = ( _ELECTRICITY_FUEL = 29 _HOUSE_COAL_FUEL = 33 _ELECTRIC_ROOM_HEATER_CODES = frozenset(range(691, 702)) -# Direct-acting electric boiler (SAP Table 4a 191) — unambiguously electric, so it -# drags electricity like the electric room heaters (ADR-0045, closing the prior -# no-fuel gap on 191). -_ELECTRIC_BOILER_CODE = 191 +# Electric boilers — SAP Table 4a 191 (direct-acting) and 192 (electric CPSU) — +# unambiguously electric, so they drag electricity like the electric room heaters +# (ADR-0045, closing the prior no-fuel gap on 191/192). +_ELECTRIC_BOILER_CODES = frozenset({191, 192}) # Heat pumps (SAP Table 4a 211-224 wet, 521-527 warm-air) are category 4 and # unambiguously electric (natural fuel 29). Modellable on the default code's SPF @@ -181,6 +181,9 @@ _MAIN_HEATING_CODES: dict[str, int] = { # (direct-acting electric boiler). Unambiguously electric, so it drags # electricity below (ADR-0045). "Electric boiler": 191, + # Electric CPSU — SAP Table 4a 192. Electric (drags 29), on an off-peak Dual + # meter (already in _ASSUMED_DUAL_METER_CODES; §12 Rule 1 10-hour) — ADR-0045. + "Electric CPSU": 192, "Electric room heaters": 691, "Solid fuel room heater, closed": 633, # Solid-fuel room heaters off the Gas CPSU dumping ground (ADR-0045). SAP @@ -260,7 +263,7 @@ def _natural_fuel_for(code: int) -> Optional[int]: code in _ELECTRIC_ROOM_HEATER_CODES or code in _HEAT_PUMP_CODES or code == _HHR_STORAGE_CODE - or code == _ELECTRIC_BOILER_CODE + or code in _ELECTRIC_BOILER_CODES ): return _ELECTRICITY_FUEL if code in _SOLID_FUEL_ROOM_HEATER_CODES: diff --git a/domain/epc/property_overrides/main_heating_system_type.py b/domain/epc/property_overrides/main_heating_system_type.py index aaa917df1..866767f4f 100644 --- a/domain/epc/property_overrides/main_heating_system_type.py +++ b/domain/epc/property_overrides/main_heating_system_type.py @@ -28,6 +28,7 @@ class MainHeatingSystemType(Enum): ) DIRECT_ELECTRIC = "Direct-acting electric" ELECTRIC_BOILER = "Electric boiler" + ELECTRIC_CPSU = "Electric CPSU" ELECTRIC_ROOM_HEATERS = "Electric room heaters" SOLID_FUEL_ROOM_HEATER_CLOSED = "Solid fuel room heater, closed" SOLID_FUEL_ROOM_HEATER_OPEN_FIRE = "Solid fuel room heater, open fire"