Resolve an electric-CPSU override to SAP 192 electric on an off-peak meter 🟩

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Khalim Conn-Kowlessar 2026-07-01 16:09:56 +00:00
parent 94a5e79067
commit fedae2ea00
2 changed files with 9 additions and 5 deletions

View file

@ -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:

View file

@ -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"