Merge pull request #1288 from Hestia-Homes/feature/per-cert-mapper-validation

Feature/per cert mapper validation
This commit is contained in:
KhalimCK 2026-06-24 12:04:00 +01:00 committed by GitHub
commit f7f74ea72b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
28 changed files with 2591 additions and 105 deletions

Binary file not shown.

Binary file not shown.

View file

@ -4082,20 +4082,19 @@ def _api_sheltered_sides(built_form: object) -> Optional[int]:
# loft-sourced PIV as natural
# (no added system air change)
# 6 positive input from outside → EXTRACT_OR_PIV_OUTSIDE (24c)
# Code 4 (MVHR, 24a) is DEFERRED: its (24a)m formula needs the lodged
# heat-recovery efficiency (`mvhr_efficiency_pct`, PCDB Table 326) which the
# API→cascade path does not yet plumb; mapping it to MVHR with a null
# efficiency would mis-model it as MV (no recovery), so it stays NATURAL
# until the efficiency is wired. The extract systems (2/3/6) carry no
# efficiency, so this slice closes the clean +1.90 SAP over-rate on the
# MEV/PIV-outside cohort (n=20, 5% within 0.5) — they were silently
# defaulting to NATURAL, under-stating ventilation heat loss.
# Code 4 (MVHR, 24a) resolves to MVHR: `cert_to_inputs` reads the lodged
# heat-recovery efficiency from PCDB Table 323 (per wet-room count) ×
# Table 329 in-use factor and feeds the §2.6.6 equation (2) credit. The
# 3 corpus MVHR certs carry a PCDF index (`mechanical_ventilation_index_
# number`) + wet-room + duct lodgements; an MVHR lodged with no PCDF index
# falls back to the SAP 10.2 Table 4g default (efficiency 66% × 0.70).
# The extract systems (2/3/6) carry no efficiency.
_API_MECHANICAL_VENTILATION_TO_KIND: Final[dict[int, Optional[str]]] = {
0: None,
1: "MV",
2: "EXTRACT_OR_PIV_OUTSIDE",
3: "EXTRACT_OR_PIV_OUTSIDE",
4: None, # MVHR — efficiency plumbing deferred; treat as natural
4: "MVHR", # balanced whole-house MV with heat recovery (24a)
5: None,
6: "EXTRACT_OR_PIV_OUTSIDE",
}
@ -6011,6 +6010,21 @@ def _is_elmhurst_roof_window(
# room-in-roof. The §11 row alone can't separate them; the room-in-roof
# context is the discriminator (the location string is a §11 lodging
# artifact, so it is not a reliable vertical signal either).
# KNOWN LIMIT (falls through to vertical below) — a roof window on a PLAIN
# PITCHED roof (not a room-in-roof, BP roof type not A/NR) with a normal
# U <= 3.0 is UNDETECTABLE from the Elmhurst Summary §11. The Summary has
# no roof/window "Type" column (that exists only in the U985/P960
# *worksheet* input echo, which this pipeline does not read), and such
# rooflights lodge with Location "External wall" and the vertical U —
# byte-identical to ordinary wall windows. Khalim's "simulated case 46"
# exercises this: 2 of its 6 openings are roof windows (worksheet (27a),
# combined area 1.70, U_eff 2.1062) yet opening 1 (wall) and opening 2
# (roof) read character-for-character the same in §11, so the extractor
# cannot separate them. The residual is 29.58 vs Elmhurst 29.68 (both round
# to 30) — accepted as a lossy-Summary limit, not a bug. The gov-API path
# is unaffected: roof windows carry a dedicated signal there
# (`window_wall_type == 4`, see `_api_is_roof_window`; 55 corpus certs /
# 124 roof windows routed correctly, worksheet-validated U/solar treatment).
if not _elmhurst_bp_has_room_in_roof(w, survey):
return False
return w.u_value > _ELMHURST_ROOF_WINDOW_U_THRESHOLD
@ -7317,6 +7331,22 @@ def _map_elmhurst_main_heating_2(
and mh2.main_heating_sap_code in _ELECTRIC_SAP_MAIN_HEATING_CODES
):
main_fuel_int = _STANDARD_ELECTRICITY_FUEL_CODE
# A fuel-fired second main (room-heater SAP code) whose §14.1 omits the
# Fuel Type cell must derive its fuel from the SAP code's Table 4a CATEGORY
# — NOT inherit Main 1's fuel below. Mirrors `_elmhurst_secondary_fuel_
# from_sap_code` (same modal-fuel + sub-fuel caveat): a wood/coal solid
# second main (633) billed at Main 1's electric rate is the dual-main
# over-cost (simulated case 47: electric room heaters + solid room heaters
# 633). Boiler codes (<601) fall through to the Main-1 inherit (case 6:
# one oil boiler feeding rads + underfloor).
if main_fuel_int is None:
_sc = mh2.main_heating_sap_code
if _sc in _ELMHURST_SECONDARY_SOLID_CODES:
main_fuel_int = _SECONDARY_FUEL_HOUSE_COAL
elif _sc in _ELMHURST_SECONDARY_GAS_CODES:
main_fuel_int = _SECONDARY_FUEL_MAINS_GAS
elif _sc in _ELMHURST_SECONDARY_LIQUID_CODES:
main_fuel_int = _SECONDARY_FUEL_HEATING_OIL
# §14.1 Main Heating2 often omits the "Fuel Type" cell when the
# second main system shares Main 1's fuel (simulated case 6: one oil
# boiler feeding radiators + underfloor, so the Summary lodges the
@ -7687,6 +7717,7 @@ _ELMHURST_MV_TYPE_TO_KIND: Dict[str, str] = {
# formula choice; the cascade resolves enum name → enum value when
# picking which (25)m formula to apply.
"Mechanical extract, decentralised (MEV dc)": "EXTRACT_OR_PIV_OUTSIDE",
"Mechanical ventilation with heat recovery (MVHR)": "MVHR",
}

View file

@ -559,7 +559,10 @@ class TestFromSapSchema16_2:
epc = EpcPropertyDataMapper.from_api_response(load("sap_18_0_0.json"))
assert isinstance(epc, EpcPropertyData)
assert epc.uprn == 10094601287
assert Sap10Calculator().calculate(epc).sap_score == 80 # lodged 84
# 80 -> 81 (closer to lodged 84) after the dMEV intermittent-fan fix:
# this cert is EXTRACT_OR_PIV_OUTSIDE with a lodged 0 fans, so the
# Table 5 age-band default is no longer substituted (SAP 10.2 §2 (7a)).
assert Sap10Calculator().calculate(epc).sap_score == 81 # lodged 84
def test_16_0_dispatches_via_16_x_path_with_tenure_default(self) -> None:
# SAP-Schema-16.0 is the same reduced-field 16.x shape; it omits the

View file

@ -301,6 +301,13 @@ class CalculatorInputs:
secondary_heating_fraction: float = 0.0
secondary_heating_efficiency: float = 1.0
secondary_heating_fuel_cost_gbp_per_kwh: float = 0.0
# Main heating system 2's fuel cost per kWh (legacy/off-peak scalar path).
# main system 2 may burn a DIFFERENT fuel from main 1 (e.g. wood logs vs
# electric room heaters) — pricing its kWh at main 1's rate grossly mis-
# costs it. Defaults to 0.0; cert_to_inputs sets it to main 2's own rate
# when a second main is lodged (the term is multiplied by main 2's kWh,
# which is 0 when no second main exists, so the default is inert).
main_2_heating_fuel_cost_gbp_per_kwh: float = 0.0
# SAP10.2 (107)m — space cooling requirement kWh per month from §8c
# orchestrator `space_cooling_monthly_kwh`. Includes spec Jun-Aug
# inclusion mask + 1-kWh clamp. Default (0,)*12 for backwards
@ -579,7 +586,18 @@ def calculate_sap_from_inputs(inputs: CalculatorInputs) -> SapResult:
inputs.pv_generation_kwh_per_yr
* inputs.pv_export_credit_gbp_per_kwh
)
main_heating_cost = main_fuel_kwh * inputs.space_heating_fuel_cost_gbp_per_kwh
# `main_fuel_kwh` aggregates main systems 1 and 2 (see (211)+(213)
# above). Bill main 2 at ITS OWN fuel rate, not main 1's — a dual-fuel
# pair (e.g. electric room heaters + wood logs) is mis-costed otherwise
# (the §10a standard path already splits these; this is the legacy/
# off-peak scalar path). main 2's kWh is 0 when no second main is
# lodged, so the default 0.0 rate is inert.
main_2_fuel_kwh = inputs.energy_requirements.main_2_fuel_kwh_per_yr
main_1_fuel_kwh = main_fuel_kwh - main_2_fuel_kwh
main_heating_cost = (
main_1_fuel_kwh * inputs.space_heating_fuel_cost_gbp_per_kwh
+ main_2_fuel_kwh * inputs.main_2_heating_fuel_cost_gbp_per_kwh
)
secondary_heating_cost = (
secondary_fuel_kwh * inputs.secondary_heating_fuel_cost_gbp_per_kwh
)

View file

@ -427,12 +427,25 @@ secondary heating (1.5715) on the same certs, but flat Table 12 for the
"low-rate cost" line items (SH main 1 + HW). It's an Elmhurst
implementation choice, not a documented spec exception.
**Cascade rule (post-S0380.163):**
**Cascade rule (post-S0380.163, refined for whc-903 immersion):**
| Tariff | HW PE / CO2 factor source |
|---|---|
| STANDARD | Table 12e / 12d monthly, weighted by HW demand seasonality (per spec literal) |
| 7-hour / 10-hour / 18-hour / 24-hour | Table 12 annual flat (1.501 PE / 0.136 CO2) |
| Tariff | HW system | HW PE / CO2 factor source |
|---|---|---|
| STANDARD | any | Table 12e / 12d monthly, weighted by HW demand seasonality (per spec literal) |
| 7-hour / 10-hour | whc-903 electric immersion (Table 13 split) | Table 12d/12e high- + low-rate codes (32/31 or 34/33), kWh-weighted, blended by the Table 13 high-rate fraction — the SAME split the cost path applies |
| 7-hour / 10-hour / 18-hour / 24-hour | all other (HW-from-main "low-rate cost", or 18h/24h immersion) | Table 12 annual flat (1.501 PE / 0.136 CO2) |
**whc-903 immersion carve-out (simulated case 50).** The original S0380.163
rule applied flat annual 0.136/1.501 to *every* dual-rate electric HW. That
was validated only against HW-from-main "low-rate cost" certs (100% low, no
high-rate split). The hand-built **case-50** worksheet (whc-903 dual electric
immersion, 7-hour) bills HW CO2/PE as a split — "Water heating - high rate
cost" (CO2 0.1475 / PE 1.5514, code 32) + "low rate cost" (CO2 0.1238 / PE
1.4429, code 31), weighted by the Table 13 fraction 0.1009 — NOT flat 0.136.
So flat-0.136 for immersion HW was a *spec gap on our side*, not an Elmhurst
divergence. `_electric_immersion_hw_high_rate_fraction` threads the Table 13
fraction into the CO2/PE helpers; the flat rule still holds for everything
else (the 41-variant cases below are unaffected — they are HW-from-main).
The SH main factor (`_main_heating_primary_factor`) already
matches Elmhurst by accident: for dual-rate tariffs the

View file

@ -61,3 +61,26 @@ class MissingMainFuelType(ValueError):
)
self.value = value
self.sap_main_heating_code = sap_main_heating_code
class UnpricedFuelCode(ValueError):
"""A concrete (non-None) fuel code reached the Table 32 unit-price
lookup but resolves to neither a Table 32 price code nor a gov-API
enum that translates to one.
Raised instead of silently falling back to the mains-gas price
(3.48 p/kWh): an unrecognised fuel billed at the gas rate produces a
misleading cost (e.g. the dual-main wood-vs-electric over-cost on
cert 10032957680). Surface the gap at the price boundary so the fuel
is either added to `UNIT_PRICE_P_PER_KWH` / `API_FUEL_TO_TABLE_32`
or canonicalised upstream. A `None` code (no fuel lodged) is NOT an
error callers resolve "no system" before pricing.
"""
def __init__(self, fuel_code: object) -> None:
super().__init__(
f"no Table 32 unit price for fuel code {fuel_code!r}; add it to "
f"UNIT_PRICE_P_PER_KWH or API_FUEL_TO_TABLE_32, or canonicalise "
f"the code upstream before pricing"
)
self.fuel_code = fuel_code

View file

@ -75,10 +75,13 @@ from domain.sap10_calculator.tables.pcdb import (
gas_oil_boiler_record,
heat_pump_record,
mv_in_use_factors_record,
mvhr_record,
)
from domain.sap10_calculator.tables.pcdb.parser import (
GasOilBoilerRecord,
HeatPumpRecord,
MvhrDataPoint,
MvhrRecord,
)
from domain.sap10_calculator.tables.pcdb.postcode_weather import (
PostcodeClimate,
@ -197,6 +200,7 @@ from domain.sap10_calculator.worksheet.water_heating import (
PIPEWORK_INSULATED_UNINSULATED,
TABLE_J1_TCOLD_FROM_MAINS_C,
WaterHeatingResult,
combi_loss_monthly_kwh_table_3a_keep_hot_time_clock,
combi_loss_monthly_kwh_table_3a_row_1_no_keep_hot,
combi_loss_monthly_kwh_table_3a_row_4_keep_hot_no_time_clock,
combi_loss_monthly_kwh_table_3b_row_1_instantaneous,
@ -525,6 +529,9 @@ def _table_4f_additive_components(epc: EpcPropertyData) -> float:
"""
total = 0.0
total += _mev_decentralised_kwh_per_yr_from_cert(epc)
# (230a) balanced MVHR fan electricity — SFP × 1.22 × V (SAP 10.2
# §2.6.6). Costed here but kept out of the Table 5a gains.
total += _mvhr_fan_kwh_per_yr_from_cert(epc)
details = epc.sap_heating.main_heating_details if epc.sap_heating else []
if details:
main_1 = details[0]
@ -709,6 +716,106 @@ def _mev_decentralised_kwh_per_yr_from_cert(epc: EpcPropertyData) -> float:
sfp_av_w_per_l_per_s=sfp_av,
dwelling_volume_m3=dimensions.volume_m3,
)
# PCDB Table 329 / 323 system_type 3 = balanced whole-house MV (with or
# without heat recovery).
_MV_BALANCED_SYSTEM_TYPE: Final[int] = 3
# SAP 10.2 Table 4g (PDF p.176) defaults for an MVHR system NOT in the
# PCDB: raw heat-recovery efficiency 66% + raw SFP 2.0 W/(l/s). Each is
# then multiplied by the default-data in-use factor (Table 329
# system_type 10 — efficiency 0.70 inside the envelope, SFP 2.5).
_TABLE_4G_DEFAULT_MVHR_EFFICIENCY_PCT: Final[float] = 66.0
_TABLE_4G_DEFAULT_MVHR_SFP_W_PER_L_PER_S: Final[float] = 2.0
@dataclass(frozen=True)
class _MvhrSystemValues:
"""In-use SFP + heat-recovery efficiency for an MVHR dwelling, with
the PCDB Table 329 in-use factors already folded in."""
in_use_sfp_w_per_l_per_s: float
in_use_efficiency_pct: float
def _select_mvhr_data_point(record: MvhrRecord, wet_rooms_count: int) -> MvhrDataPoint:
"""SAP 10.2 §2.6.4: select the MVHR data point by the dwelling's
wet-room count (each Table 323 group is keyed by wet rooms). Exact
match where lodged; otherwise clamp to the tested range. Falls back
to the smallest-wet-room group when the cert lodges 0 (unlodged)."""
points = sorted(record.data_points, key=lambda p: p.num_wet_rooms)
target = wet_rooms_count if wet_rooms_count > 0 else points[0].num_wet_rooms
for point in points:
if point.num_wet_rooms == target:
return point
if target < points[0].num_wet_rooms:
return points[0]
return points[-1]
def _mvhr_system_values(epc: EpcPropertyData) -> Optional[_MvhrSystemValues]:
"""Resolve the in-use SFP + heat-recovery efficiency for an MVHR
dwelling, or None when the cert is not MVHR.
PCDB path (index lodged + Table 323 hit): select the data point whose
wet-room count matches the lodgement, then apply the Table 329
system_type-3 in-use factors SFP per the lodged duct type (rigid
1.4 / flexible 1.7); heat-recovery efficiency for ducts inside the
heated envelope (0.90). Worksheet-proven on simulated case 49 (000565,
2 wet rooms, Vent Axia 500140 raw SFP 0.88 × 1.4 = 1.232; raw
efficiency 91 × 0.90 = 81.9% = worksheet (23c)).
Default path (no PCDB record, e.g. an MVHR lodged with no PCDF index):
SAP 10.2 Table 4g raw SFP 2.0 / efficiency 66%, × the default-data
in-use factors (Table 329 system_type 10 SFP 2.5, efficiency 0.70).
Duct type defaults to rigid when unlodged (the Elmhurst Summary path
captures it but not all sources do); semi-rigid maps to rigid per
SAP 10.2 §2.6.8. Only the ducts-inside-envelope efficiency factor is
worksheet-validated (all corpus + worksheet MVHR certs lodge it).
"""
sv = epc.sap_ventilation
if sv is None or sv.mechanical_ventilation_kind != MechanicalVentilationKind.MVHR.name:
return None
pcdf_id = epc.mechanical_ventilation_index_number
record = mvhr_record(pcdf_id) if pcdf_id is not None else None
if record is not None and record.data_points:
point = _select_mvhr_data_point(record, epc.wet_rooms_count)
raw_sfp = point.sfp_w_per_l_per_s
raw_efficiency_pct = point.efficiency_pct
iuf_record = mv_in_use_factors_record(_MV_BALANCED_SYSTEM_TYPE)
else:
raw_sfp = _TABLE_4G_DEFAULT_MVHR_SFP_W_PER_L_PER_S
raw_efficiency_pct = _TABLE_4G_DEFAULT_MVHR_EFFICIENCY_PCT
iuf_record = mv_in_use_factors_record(_MEV_DEFAULT_DATA_SYSTEM_TYPE)
if iuf_record is None or raw_sfp is None or raw_efficiency_pct is None:
return None
if epc.mechanical_vent_duct_type == _MV_DUCT_TYPE_FLEXIBLE:
sfp_iuf = iuf_record.sfp_iuf_flexible_no_scheme
else:
sfp_iuf = iuf_record.sfp_iuf_rigid_no_scheme
efficiency_iuf = iuf_record.mvhr_efficiency_iuf_inside_no_scheme
if sfp_iuf is None or efficiency_iuf is None:
return None
return _MvhrSystemValues(
in_use_sfp_w_per_l_per_s=raw_sfp * sfp_iuf,
in_use_efficiency_pct=raw_efficiency_pct * efficiency_iuf,
)
def _mvhr_fan_kwh_per_yr_from_cert(epc: EpcPropertyData) -> float:
"""SAP 10.2 §5 Table 4f line (230a) annual fan electricity for an
MVHR dwelling: in-use SFP × 1.22 × V (the same (230a) shape as
decentralised MEV). Returns 0.0 when the cert is not MVHR. Per SAP
10.2 §2.6.6 this electricity is costed but NOT added to the Table 5a
gains (its effect is already in the heat-recovery efficiency)."""
values = _mvhr_system_values(epc)
if values is None:
return 0.0
return mev_decentralised_kwh_per_yr(
sfp_av_w_per_l_per_s=values.in_use_sfp_w_per_l_per_s,
dwelling_volume_m3=dimensions_from_cert(epc).volume_m3,
)
# SAP10.2 Table 6d note 1: "average or unknown" overshading is the
# default for existing dwellings. RdSAP doesn't lodge a per-dwelling
# overshading code so §5 always uses AVERAGE → Z_L = 0.83.
@ -1741,12 +1848,24 @@ def _rdsap_tariff(epc: EpcPropertyData) -> Tariff:
and heat_pump_record(detail.main_heating_index_number) is not None
)
# §12 Unknown-meter exception: "water heating ... intended to run off an
# off-peak tariff" via the text-box "dual electric immersion" system —
# whc 903 (HW from a separate electric immersion) lodged as dual
# (`_immersion_is_single` is False). This makes an Unknown-meter dwelling
# "dual" even when the main is a single-rate-capable system (e.g. room
# heaters), per RdSAP 10 §12 (PDF p.62).
water_dual_immersion = (
_int_or_none(epc.sap_heating.water_heating_code) == _WHC_ELECTRIC_IMMERSION
and _immersion_is_single(epc) is False
)
return rdsap_tariff_for_cert(
epc.sap_energy_source.meter_type,
main_1_sap_code=main_1.sap_main_heating_code if main_1 else None,
main_2_sap_code=main_2.sap_main_heating_code if main_2 else None,
main_1_is_heat_pump_database=_hp_db(main_1),
main_2_is_heat_pump_database=_hp_db(main_2),
water_is_off_peak_dual_immersion=water_dual_immersion,
)
@ -2401,6 +2520,25 @@ _ELECTRIC_ROOM_HEATER_SAP_CODES: Final[frozenset[int]] = frozenset(
{691, 692, 693, 694, 699}
)
# SAP 10.2 Table 4a electric boilers (PDF p.170, codes 191-196) → their
# Table 12a Grid 1 SH rows (PDF p.191). NOTE the boiler families do NOT all
# share a row — read the spec exactly:
# 191 Direct-acting electric boiler → "Direct-acting electric boiler
# (a)" row: 7-hour 0.90, 10-hour 0.50 (NOT the "Other direct-acting
# electric heating" 1.00/0.50 room-heater row).
# 192 Electric CPSU → "Electric CPSU" row: Appendix F
# (no flat Table 12a fraction — left as a documented gap, see below).
# 193/194 Electric dry core storage boiler → "Electric dry core or water
# 195/196 Electric water storage boiler storage boiler" row: 7-hour
# 0.00 (charged wholly off-peak — identical to the 100%-low-rate the
# None fallback already gave; mapped EXPLICITLY so the spec-correct
# 0.00 is pinned and can't be "fixed" up to a wrong direct-acting 1.00).
_DIRECT_ACTING_ELECTRIC_BOILER_CODES: Final[frozenset[int]] = frozenset({191})
_ELECTRIC_STORAGE_BOILER_CODES: Final[frozenset[int]] = frozenset(
{193, 194, 195, 196}
)
_ELECTRIC_CPSU_CODES: Final[frozenset[int]] = frozenset({192})
def _table_12a_system_for_main(
main: Optional[MainHeatingDetail],
@ -2420,8 +2558,9 @@ def _table_12a_system_for_main(
- Storage heaters (cat 7): 408 INTEGRATED_STORAGE_DIRECT (0.20),
all others OTHER_STORAGE_HEATERS (0.00) wired
- Underfloor heating (421-422) TODO
- Direct-acting electric (191) / CPSU (192) / electric storage
boiler (193, 195) TODO
- Direct-acting electric boiler (191) 0.90/0.50; electric storage
boilers (193/194/195/196) 0.00 wired
- Electric CPSU (192) Appendix F high-rate cascade still TODO
"""
if main is None:
return None
@ -2482,6 +2621,19 @@ def _table_12a_system_for_main(
if code == 408:
return Table12aSystem.INTEGRATED_STORAGE_DIRECT
return Table12aSystem.OTHER_STORAGE_HEATERS
# Electric boilers (Table 4a codes 191-196) — resolve the misleading TODO
# that lumped them as one "direct-acting" family. They split across THREE
# distinct Table 12a Grid 1 rows (see `_DIRECT_ACTING_ELECTRIC_BOILER_CODES`
# et al). 191 alone is direct-acting (0.90/0.50); 193-196 are storage
# boilers (0.00 = 100% low, the spec-correct value the None fallback gave —
# so this is a forward guard, not a corpus mover); 192 CPSU needs Appendix F
# and is left to fall through to None (the off-peak-low fallback) until the
# Appendix-F high-rate cascade is implemented.
if code is not None and _is_electric_main(main):
if code in _DIRECT_ACTING_ELECTRIC_BOILER_CODES:
return Table12aSystem.DIRECT_ACTING_ELECTRIC_BOILER
if code in _ELECTRIC_STORAGE_BOILER_CODES:
return Table12aSystem.ELECTRIC_DRY_CORE_OR_WATER_STORAGE
return None
@ -2511,6 +2663,33 @@ def _space_heating_fuel_cost_gbp_per_kwh(
return blended * _PENCE_TO_GBP
def _main_2_space_heating_fuel_cost_gbp_per_kwh(
epc: EpcPropertyData,
tariff: Tariff,
prices: PriceTable,
) -> float:
"""Main heating system 2's space-heating fuel rate (£/kWh) for the
legacy/off-peak scalar cost path. Keyed on main 2's OWN fuel via the same
`_space_heating_fuel_cost_gbp_per_kwh` logic (off-peak Table 12a split when
main 2 is electric, flat Table 32 rate otherwise) so a wood-log or other
non-electric second main is not billed at main 1's electric rate. Returns
0.0 when no second main is lodged (multiplied by main 2's 0 kWh).
Scoped to a NON-electric second main (the unambiguous correction): a wood/
oil/coal second main billed at main 1's rate is plainly wrong. An ELECTRIC
second main keeps main 1's space-heating scalar — its off-peak Table 12a
high/low split is the deferred §10a off-peak slice, and applying the split
per-system here regresses the off-peak electric cohort (certs 13 Parkers
Hill / 34 Dunley Road)."""
details = epc.sap_heating.main_heating_details if epc.sap_heating else None
if not details or len(details) < 2:
return 0.0
main_2 = details[1]
if _is_electric_main(main_2):
return _space_heating_fuel_cost_gbp_per_kwh(details[0], tariff, prices)
return _space_heating_fuel_cost_gbp_per_kwh(main_2, tariff, prices)
def _main_space_heating_high_rate_fraction(
main: Optional[MainHeatingDetail],
tariff: Tariff,
@ -3814,6 +3993,8 @@ def _hot_water_co2_factor_kg_per_kwh(
epc: EpcPropertyData,
hw_monthly_kwh: tuple[float, ...],
tariff: Tariff,
*,
immersion_high_rate_fraction: Optional[float] = None,
) -> float:
"""SAP 10.2 Table 12 / 12d (p.195) per-end-use CO2 factor for the
cert's lodged water-heating fuel.
@ -3877,6 +4058,25 @@ def _hot_water_co2_factor_kg_per_kwh(
else _table_12_factor_fuel_code(fuel)
)
if tariff is not Tariff.STANDARD:
# whc-903 electric IMMERSION with a Table 13 high-rate split: the
# Elmhurst worksheet bills HW CO2 as two lines — "Water heating -
# high rate cost" at the Table 12d high-rate code + "low rate cost"
# at the low-rate code, weighted by the SAME Table 13 fraction the
# COST path uses (simulated case 50: high 0.1475 + low 0.1238,
# frac 0.1009). The flat-annual S0380.163 rule below was validated
# only on HW-from-main "low-rate cost" certs (100% low) where no
# high-rate split exists; it does NOT hold for the immersion split.
if immersion_high_rate_fraction is not None:
codes = _TARIFF_HIGH_LOW_FUEL_CODES_TABLE_12.get(tariff)
if codes is not None:
high_code, low_code = codes
f_high = _effective_monthly_co2_factor(hw_monthly_kwh, high_code)
f_low = _effective_monthly_co2_factor(hw_monthly_kwh, low_code)
if f_high is not None and f_low is not None:
return (
immersion_high_rate_fraction * f_high
+ (1.0 - immersion_high_rate_fraction) * f_low
)
return co2_factor_kg_per_kwh(table_12_code)
monthly = _effective_monthly_co2_factor(hw_monthly_kwh, table_12_code)
if monthly is not None:
@ -3888,6 +4088,8 @@ def _hot_water_primary_factor(
epc: EpcPropertyData,
hw_monthly_kwh: tuple[float, ...],
tariff: Tariff,
*,
immersion_high_rate_fraction: Optional[float] = None,
) -> float:
"""SAP 10.2 Table 12 / 12e (p.196) per-end-use PE factor for the
cert's lodged water-heating fuel. PE-side mirror of
@ -3941,6 +4143,21 @@ def _hot_water_primary_factor(
else _table_12_factor_fuel_code(fuel)
)
if tariff is not Tariff.STANDARD:
# whc-903 immersion Table 13 split — PE mirror of the CO2 helper.
# Elmhurst splits HW PE into Table 12e high-/low-rate electricity
# weighted by the Table 13 fraction; the flat-annual S0380.163 rule
# only holds for HW-from-main "low-rate cost" certs (no split).
if immersion_high_rate_fraction is not None:
codes = _TARIFF_HIGH_LOW_FUEL_CODES_TABLE_12.get(tariff)
if codes is not None:
high_code, low_code = codes
f_high = _effective_monthly_pe_factor(hw_monthly_kwh, high_code)
f_low = _effective_monthly_pe_factor(hw_monthly_kwh, low_code)
if f_high is not None and f_low is not None:
return (
immersion_high_rate_fraction * f_high
+ (1.0 - immersion_high_rate_fraction) * f_low
)
return primary_energy_factor(table_12_code)
monthly = _effective_monthly_pe_factor(hw_monthly_kwh, table_12_code)
if monthly is not None:
@ -3948,6 +4165,43 @@ def _hot_water_primary_factor(
return primary_energy_factor(fuel)
def _electric_immersion_hw_high_rate_fraction(
epc: EpcPropertyData,
tariff: Tariff,
*,
cylinder_volume_l: Optional[float],
occupancy_n: Optional[float],
immersion_single: Optional[bool],
) -> Optional[float]:
"""SAP 10.2 Table 13 HW high-rate fraction for a whc-903 electric
immersion on a 7-/10-hour off-peak tariff the SAME split the cost
path (`_hot_water_fuel_cost_gbp_per_kwh`) applies. The CO2/PE factor
helpers blend the Table 12d/12e high- and low-rate electricity factors
by this fraction, mirroring the worksheet's split "Water heating -
high/low rate cost" lines (simulated case 50). Returns None when not a
dual-rate immersion, when the cylinder/occupancy data Table 13 needs is
missing, or on 18-/24-hour tariffs (no Table 12d/12e high/low split)
callers then keep the flat-annual S0380.163 factor."""
if tariff is Tariff.STANDARD:
return None
if epc.sap_heating.water_heating_code != _WHC_ELECTRIC_IMMERSION:
return None
if (
cylinder_volume_l is None
or occupancy_n is None
or immersion_single is None
):
return None
if _TARIFF_HIGH_LOW_FUEL_CODES_TABLE_12.get(tariff) is None:
return None
return electric_dhw_high_rate_fraction(
cylinder_volume_l=cylinder_volume_l,
occupancy_n=occupancy_n,
single_immersion=immersion_single,
tariff=tariff,
)
def _secondary_fuel_code(epc: EpcPropertyData) -> int:
"""SAP 10.2 secondary fuel code, resolved through the API mapper's
Appendix M Table 4a spec-fuel routing. When no `secondary_fuel_type`
@ -5064,6 +5318,34 @@ def ventilation_from_cert(
# can override via a future plumbing slice; the spec default
# is what every MEV / MV / MVHR cohort cert lodges today.
mv_system_ach = 0.5
# For a whole-house mechanical EXTRACT (MEV / dMEV) OR balanced-
# with-heat-recovery (MVHR) system the lodged intermittent extract-
# fan count (7a) is taken AS-IS — the Table 5 age-band default must
# NOT be substituted for a lodged 0. On such a dwelling the fan
# count is explicit (the mechanical system IS the ventilation), so
# 0 means 0, not "unknown". Worksheet-proven on three 000565 builds:
# "case 48" (dMEV) lodges (7a)=0 → SAP 57 exact; "case 49" (MVHR,
# Vent Axia 500140) lodges (7a)=0 → the worksheet (8) openings line
# is 0.0000 (our default had added 20 m³/h = 0.0723 ach, inflating
# (22b)/(25)/(38) and the demand). The original 000565 fixture
# lodges (7a)=2 → unchanged. MV-without-HR (mechanical_ventilation
# =1) is EXCLUDED: forcing its lodged 0 regressed 47 Howsman / 18
# Jutland and is not worksheet-validated.
if mv_kind in (
MechanicalVentilationKind.EXTRACT_OR_PIV_OUTSIDE,
MechanicalVentilationKind.MVHR,
):
intermittent_fans = vc.intermittent_fans
# SAP 10.2 §2.6.6 equation (2): the (24a) MVHR effective-air-change
# credit needs the in-use heat-recovery efficiency (23c) = raw PCDB
# efficiency × Table 329 in-use factor (or the Table 4g default when
# no PCDB record). None for non-MVHR kinds → ventilation_from_inputs
# leaves the heat-recovery term at zero.
mvhr_efficiency_pct: Optional[float] = None
if mv_kind is MechanicalVentilationKind.MVHR:
mvhr_values = _mvhr_system_values(epc)
if mvhr_values is not None:
mvhr_efficiency_pct = mvhr_values.in_use_efficiency_pct
return ventilation_from_inputs(
volume_m3=vol,
storey_count=storeys,
@ -5086,6 +5368,7 @@ def ventilation_from_cert(
air_permeability_ap4=ap4,
mv_kind=mv_kind,
mv_system_ach=mv_system_ach,
mvhr_efficiency_pct=mvhr_efficiency_pct,
**wind_kwargs,
)
@ -5224,10 +5507,11 @@ def pcdb_combi_loss_override(
)
if kh == 1:
if timer == 1:
# SAP 10.2 Table 3a row 3: 600 × n_m / 365. Cascade's
# `water_heating_from_cert` default — return None so the
# default fires.
return None
# SAP 10.2 Table 3a row 3: 600 × n_m / 365 (keep-hot, time
# clock). Returned EXPLICITLY — the cascade default is now
# the "without keep-hot" row, so the keep-hot value must be
# delivered here rather than leaned on the default.
return combi_loss_monthly_kwh_table_3a_keep_hot_time_clock()
# SAP 10.2 Table 3a row 4: 900 × n_m / 365 (no time-clock).
return combi_loss_monthly_kwh_table_3a_row_4_keep_hot_no_time_clock()
# kh ∈ {2, 3} — electric or mixed keep-hot. Table 3a Note 2 routes
@ -6379,11 +6663,14 @@ def _water_heating_worksheet_and_gains(
main
):
# SAP 10.2 §4 line 7702 fallback: non-combi main heating → (61)m
# = 0. Without this gate the cascade falls through to `combi_
# loss_monthly_kwh_table_3a_keep_hot_time_clock()` (600 kWh/yr)
# on every cert lacking a PCDB Table 105 boiler record —
# including all heat pump certs.
# = 0. Without this gate the cascade falls through to the Table 3a
# "without keep-hot" default on every cert lacking a PCDB Table
# 105 boiler record — including all heat pump certs.
combi_loss_override = zero_monthly
# A non-PCDB combi (override still None here) has no PCDB-declared
# keep-hot facility → `water_heating_from_cert` applies the Table 3a
# "without keep-hot" row (600 × fu × n/365). Keep-hot rides only on the
# PCDB boiler record, resolved above by `pcdb_combi_loss_override`.
# SAP 10.2 §4 lines 7670-7693 + Tables 2/2a/2b — cylinder storage loss
# (56)m. Spec p.135 instructs entering 0 in (47) for instantaneous /
# combi systems, so the override is only built when the cert explicitly
@ -6940,6 +7227,26 @@ def _fuel_cost(
main_1_high_rate_gbp_per_kwh = (
table_32_unit_price_p_per_kwh(main_fuel_code) * _PENCE_TO_GBP
)
# Main heating system 2 is costed at ITS OWN fuel price (SAP 10.2 §10a
# worksheet line (213) bills main system 2's fuel separately from main 1's
# (211)) — Table 32 unit price keyed on main 2's fuel code. Pre-fix this
# column reused `main_1_high_rate_gbp_per_kwh`, charging a dual-fuel second
# main (e.g. wood logs SAP code 633, fuel 6 @ 4.23 p/kWh) at the main-1
# electric rate (13.19 p/kWh), grossly over-costing electric+wood
# room-heater dwellings (cert 10032957680 "Copse Cottage" +£850/yr ->
# SAP -23). Falls back to main 1's price only when no second main is lodged.
main_2_detail = (
epc.sap_heating.main_heating_details[1]
if epc.sap_heating
and len(epc.sap_heating.main_heating_details or []) >= 2
else None
)
main_2_fuel_code = _main_fuel_code(main_2_detail)
main_2_high_rate_gbp_per_kwh = (
table_32_unit_price_p_per_kwh(main_2_fuel_code) * _PENCE_TO_GBP
if main_2_fuel_code is not None
else main_1_high_rate_gbp_per_kwh
)
water_high_rate_gbp_per_kwh = (
table_32_unit_price_p_per_kwh(water_heating_fuel_code)
* _PENCE_TO_GBP
@ -6989,7 +7296,7 @@ def _fuel_cost(
main_1_low_rate_gbp_per_kwh=0.0,
main_1_high_rate_fraction=1.0,
main_2_kwh_per_yr=main_2_kwh,
main_2_high_rate_gbp_per_kwh=main_1_high_rate_gbp_per_kwh,
main_2_high_rate_gbp_per_kwh=main_2_high_rate_gbp_per_kwh,
main_2_low_rate_gbp_per_kwh=0.0,
main_2_high_rate_fraction=1.0 if main_2_kwh > 0.0 else 0.0,
secondary_kwh_per_yr=secondary_kwh,
@ -7099,10 +7406,21 @@ def cert_to_inputs(
pumps_fans_kwh += _table_4f_circulation_pump_kwh(_pumps_main_2)
pumps_fans_kwh += _table_4f_additive_components(epc)
# Track the MEV/MVHR-fan portion separately so the cost cascade can
# apply Table 12a Grid 2 `FANS_FOR_MECH_VENT` (0.58 high-frac on
# 10-hour) instead of `ALL_OTHER_USES` (0.80) — see
# `_pumps_fans_fuel_cost_gbp_per_kwh`. Zero when no MEV is lodged.
mev_kwh_for_cost_split = _mev_decentralised_kwh_per_yr_from_cert(epc)
# apply Table 12a Grid 2 `FANS_FOR_MECH_VENT` (0.71 high-frac on
# 7-hour, 0.58 on 10-hour) instead of `ALL_OTHER_USES` (0.90 / 0.80)
# — see `_pumps_fans_fuel_cost_gbp_per_kwh`. Must mirror the
# mechanical-ventilation fan terms summed into the total pumps/fans
# at `_table_4f_additive_components` (230b decentralised MEV/extract)
# + the (230a) MVHR fan: both are "Fans for mechanical ventilation
# systems" in Grid 2, while flue fans / circulation pumps / solar HW
# pump are "All other uses". The MVHR term was omitted when MVHR
# landed, so an MVHR dwelling on off-peak billed its fan electricity
# at 0.90 instead of 0.71 (case 50: +£5.87/yr, -0.23 SAP). Zero when
# no mechanical-ventilation fan is lodged.
mev_kwh_for_cost_split = (
_mev_decentralised_kwh_per_yr_from_cert(epc)
+ _mvhr_fan_kwh_per_yr_from_cert(epc)
)
primary_age = _dwelling_age_band(epc)
# SAP 10.2 Appendix D2.1: if the cert lodges a PCDB index number that
@ -7797,11 +8115,22 @@ def cert_to_inputs(
occupancy_n=wh_result.occupancy if wh_result is not None else None,
immersion_single=_immersion_is_single(epc),
)
# whc-903 immersion Table 13 high-rate fraction — same split the
# cost path applies above; threaded into the CO2/PE factor helpers
# so the worksheet's high/low HW lines reconcile (simulated case 50).
_hw_immersion_high_frac = _electric_immersion_hw_high_rate_fraction(
epc, _rdsap_tariff(epc),
cylinder_volume_l=_hot_water_cylinder_volume_l(epc),
occupancy_n=wh_result.occupancy if wh_result is not None else None,
immersion_single=_immersion_is_single(epc),
)
hw_co2_factor = _hot_water_co2_factor_kg_per_kwh(
epc, hw_monthly_kwh_for_factors, _rdsap_tariff(epc),
immersion_high_rate_fraction=_hw_immersion_high_frac,
)
hw_pe_factor = _hot_water_primary_factor(
epc, hw_monthly_kwh_for_factors, _rdsap_tariff(epc),
immersion_high_rate_fraction=_hw_immersion_high_frac,
)
_hw_extra_standing = 0.0
_heat_network_standing = _heat_network_standing_charge_gbp(epc, main)
@ -7892,6 +8221,11 @@ def cert_to_inputs(
space_heating_fuel_cost_gbp_per_kwh=_space_heating_fuel_cost_gbp_per_kwh(
main, _rdsap_tariff(epc), prices
),
main_2_heating_fuel_cost_gbp_per_kwh=(
_main_2_space_heating_fuel_cost_gbp_per_kwh(
epc, _rdsap_tariff(epc), prices
)
),
hot_water_fuel_cost_gbp_per_kwh=hw_cost_rate,
other_fuel_cost_gbp_per_kwh=_other_fuel_cost_gbp_per_kwh(
_rdsap_tariff(epc), prices

View file

@ -32,7 +32,10 @@ from domain.sap10_calculator.tables.pcdb.parser import (
GasOilBoilerRecord,
HeatPumpRecord,
MevFanConfig,
MvhrDataPoint,
MvhrRecord,
MvInUseFactorsRecord,
parse_centralised_mv_row,
parse_decentralised_mev_row,
parse_heat_pump_row_raw,
parse_mv_in_use_factors_row,
@ -43,11 +46,14 @@ __all__ = [
"GasOilBoilerRecord",
"HeatPumpRecord",
"MevFanConfig",
"MvhrDataPoint",
"MvhrRecord",
"MvInUseFactorsRecord",
"decentralised_mev_record",
"gas_oil_boiler_record",
"heat_pump_record",
"mv_in_use_factors_record",
"mvhr_record",
]
@ -58,6 +64,9 @@ _TABLE_105_JSONL: Final[Path] = (
_TABLE_322_JSONL: Final[Path] = (
_PCDB_DATA_DIR / "pcdb_table_322_decentralised_mev.jsonl"
)
_TABLE_323_JSONL: Final[Path] = (
_PCDB_DATA_DIR / "pcdb_table_323_centralised_mev_mvhr.jsonl"
)
_TABLE_329_JSONL: Final[Path] = (
_PCDB_DATA_DIR / "pcdb_table_329_mv_in_use_factors.jsonl"
)
@ -181,6 +190,37 @@ def decentralised_mev_record(pcdb_id: int) -> Optional[DecentralisedMevRecord]:
return _TABLE_322_BY_ID.get(pcdb_id)
def _load_table_323() -> dict[int, MvhrRecord]:
"""Read the Table 323 NDJSON at import time and build a by-pcdb-id
dict of typed `MvhrRecord`s (centralised MEV + MVHR). Returns an
empty dict when the jsonl is missing (ETL bootstrap concession;
production callers always observe the committed file)."""
records_by_id: dict[int, MvhrRecord] = {}
if not _TABLE_323_JSONL.exists():
return records_by_id
with _TABLE_323_JSONL.open(encoding="utf-8") as f:
for line in f:
line = line.strip()
if not line:
continue
data = json.loads(line)
raw_fields = tuple(data["raw"])
record = parse_centralised_mv_row(",".join(raw_fields))
records_by_id[record.pcdb_id] = record
return records_by_id
_TABLE_323_BY_ID: Final[dict[int, MvhrRecord]] = _load_table_323()
def mvhr_record(pcdb_id: int) -> Optional[MvhrRecord]:
"""Table 323 lookup by `MV PCDF Reference Number` (cert lodgement
field) for centralised MEV / MVHR systems. Returns None when the
index is not in Table 323 caller falls back to the SAP 10.2 Table
4g default data (MVHR raw SFP 2.0, efficiency 66%)."""
return _TABLE_323_BY_ID.get(pcdb_id)
def _load_table_329() -> dict[int, MvInUseFactorsRecord]:
"""Read the Table 329 NDJSON at import time and build a by-system-
type dict of typed `MvInUseFactorsRecord`s. Returns empty when the

View file

@ -0,0 +1,822 @@
{"pcdb_id": 500002, "raw": ["500002", "020002", "0", "2013/Oct/02 17:18", "Vent Axia Ltd", "Vent Axia", "MVDC - MS", "", "", "2012", "", "1", "0", "2", "1", "", "3", "1", "21.0", "0.24", "", "2", "29.0", "0.18", "", "3", "37.0", "0.21"]}
{"pcdb_id": 500003, "raw": ["500003", "020003", "0", "2007/Oct/18 08:54", "The Nuaire Group", "Nuaire", "ES MEV", "", "2006", "2007", "", "1", "0", "2", "2", "", "3", "1", "21.0", "0.34", "", "2", "29.0", "0.31", "", "3", "37.0", "0.33"]}
{"pcdb_id": 500004, "raw": ["500004", "020004", "0", "2014/Jun/18 12:30", "Greenwood Air Management Ltd", "Greenwood", "CMFe", "", "", "current", "", "1", "0", "2", "1", "", "3", "1", "21.0", "0.50", "", "2", "29.0", "0.34", "", "3", "37.0", "0.38"]}
{"pcdb_id": 500005, "raw": ["500005", "020004", "0", "2016/May/18 18:36", "Greenwood Air Management Ltd", "Greenwood", "MVHR 90R", "", "2007", "2013", "", "3", "0", "2", "1", "3", "3", "1", "15.0", "0.78", "81", "2", "21.0", "0.84", "81", "3", "27.0", "0.97", "80"]}
{"pcdb_id": 500007, "raw": ["500007", "020002", "0", "2015/Nov/11 10:34", "Vent Axia Ltd", "Vent Axia", "HRE 350", "", "", "2010", "", "3", "0", "2", "1", "1", "3", "1", "15.0", "0.96", "90", "2", "21.0", "0.96", "90", "3", "27.0", "0.99", "86"]}
{"pcdb_id": 500011, "raw": ["500011", "020083", "0", "2015/Nov/11 10:34", "Applied Energy Products Ltd", "Xpelair", "Xcell 270 DC", "", "", "current", "", "3", "0", "2", "1", "1", "4", "1", "15.0", "1.06", "91", "2", "21.0", "1.34", "91", "3", "27.0", "1.30", "90", "4", "33.0", "1.84", "89"]}
{"pcdb_id": 500012, "raw": ["500012", "020004", "0", "2016/May/18 18:34", "Greenwood Air Management Ltd", "Greenwood", "Fusion HRV1", "", "2007", "2013", "", "3", "0", "2", "1", "1", "2", "1", "15.0", "0.72", "63", "2", "21.0", "0.78", "63"]}
{"pcdb_id": 500013, "raw": ["500013", "020003", "0", "2015/Nov/11 10:34", "The Nuaire Group", "Nuaire", "NU-MVHR 70", "", "2007", "2007", "", "3", "0", "2", "1", "1", "3", "1", "15.0", "0.79", "69", "2", "21.0", "0.89", "69", "3", "27.0", "1.07", "65"]}
{"pcdb_id": 500021, "raw": ["500021", "020008", "0", "2016/Jul/14 15:48", "Passivent Ltd", "Passivent", "A151 DC", "", "2007", "2013", "", "1", "0", "2", "1", "", "3", "1", "21.0", "0.36", "", "2", "29.0", "0.30", "", "3", "37.0", "0.29"]}
{"pcdb_id": 500022, "raw": ["500022", "020007", "0", "2015/Nov/11 10:34", "Titon Hardware Ltd", "Titon", "WHR 350", "", "2007", "2007", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "1.10", "89", "2", "21.0", "1.16", "89", "3", "27.0", "1.30", "87", "4", "33.0", "1.48", "86", "5", "39.0", "1.68", "85", "6", "45.0", "1.89", "83"]}
{"pcdb_id": 500023, "raw": ["500023", "020002", "0", "2015/Nov/11 10:34", "Vent Axia Ltd", "Vent Axia", "LoWatt HR204", "", "", "2011", "", "3", "0", "2", "2", "1", "1", "1", "15.0", "1.05", "57"]}
{"pcdb_id": 500024, "raw": ["500024", "020009", "0", "2013/Oct/24 09:06", "Vortice Ltd", "Vortice", "CVE ECO 2", "", "2007", "current", "", "1", "0", "2", "1", "", "4", "1", "21.0", "0.22", "", "2", "29.0", "0.20", "", "3", "37.0", "0.21", "", "4", "45.0", "0.24"]}
{"pcdb_id": 500025, "raw": ["500025", "020009", "0", "2015/Nov/11 10:34", "Vortice Ltd", "Vortice", "HRU ECO 3 RF", "", "", "current", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "0.56", "92", "2", "21.0", "0.62", "93", "3", "27.0", "0.72", "88", "4", "33.0", "0.86", "87", "5", "39.0", "1.00", "85", "6", "45.0", "1.16", "84"]}
{"pcdb_id": 500026, "raw": ["500026", "020078", "0", "2015/Nov/11 10:34", "Villavent Ltd", "Villavent", "VM2", "", "", "current", "", "3", "0", "2", "1", "1", "4", "2", "21.0", "0.91", "84", "3", "27.0", "0.91", "84", "4", "33.0", "1.02", "82", "5", "39.0", "1.18", "83"]}
{"pcdb_id": 500027, "raw": ["500027", "020003", "0", "2007/Oct/18 08:53", "The Nuaire Group", "Nuaire", "MEVDC-ES", "", "2007", "current", "", "1", "0", "2", "2", "", "3", "1", "21.0", "0.34", "", "2", "29.0", "0.31", "", "3", "37.0", "0.33"]}
{"pcdb_id": 500028, "raw": ["500028", "020003", "0", "2015/Nov/11 10:34", "The Nuaire Group", "Nuaire", "MRXBOX70", "", "2007", "current", "", "3", "0", "2", "1", "1", "3", "1", "15.0", "0.79", "69", "2", "21.0", "0.89", "69", "3", "27.0", "1.07", "65"]}
{"pcdb_id": 500029, "raw": ["500029", "020003", "0", "2015/Nov/11 10:34", "The Nuaire Group", "Nuaire", "MRXBOX90L", "", "2007", "current", "", "3", "0", "2", "1", "1", "5", "1", "15.0", "1.12", "89", "2", "21.0", "1.13", "89", "3", "27.0", "1.26", "86", "4", "33.0", "1.44", "85", "5", "39.0", "1.65", "85"]}
{"pcdb_id": 500030, "raw": ["500030", "020007", "0", "2016/Feb/22 15:19", "Titon Hardware Ltd", "Titon", "Q Plus WCME 100", "", "2007", "2009", "", "1", "0", "2", "1", "", "3", "1", "21.0", "0.20", "", "2", "29.0", "0.18", "", "3", "37.0", "0.18"]}
{"pcdb_id": 500031, "raw": ["500031", "020011", "3", "2022/Jan/27 07:28", "Vectaire Ltd", "Vectaire", "MBOX 125/2DC", "", "", "obsolete", "", "1", "0", "2", "1", "", "4", "1", "21.0", "0.38", "", "2", "29.0", "0.41", "", "3", "37.0", "0.49", "", "4", "45.0", "0.65"]}
{"pcdb_id": 500032, "raw": ["500032", "020083", "0", "2016/Jun/20 12:41", "Applied Energy Products Ltd", "Xpelair", "Xplus 340", "", "", "current", "", "1", "0", "2", "1", "", "3", "1", "21.0", "0.38", "", "2", "29.0", "0.30", "", "3", "37.0", "0.24"]}
{"pcdb_id": 500033, "raw": ["500033", "020083", "0", "2016/Jun/20 12:41", "Applied Energy Products Ltd", "Xpelair", "Xplus 250DC 8CV", "", "", "current", "", "1", "0", "2", "1", "", "4", "1", "21.0", "0.52", "", "2", "29.0", "0.27", "", "3", "37.0", "0.34", "", "4", "45.0", "0.50"]}
{"pcdb_id": 500034, "raw": ["500034", "020007", "0", "2016/Feb/22 14:32", "Titon Hardware Ltd", "Titon", "Q Plus WHR 350", "", "", "2007", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "1.10", "89", "2", "21.0", "1.16", "89", "3", "27.0", "1.30", "87", "4", "33.0", "1.48", "86", "5", "39.0", "1.68", "85", "6", "45.0", "1.89", "83"]}
{"pcdb_id": 500035, "raw": ["500035", "020007", "0", "2015/Nov/11 10:34", "Titon Hardware Ltd", "Titon", "Q Plus WHR 180", "", "", "current", "", "3", "0", "2", "1", "1", "2", "1", "15.0", "1.00", "84", "2", "21.0", "1.06", "84"]}
{"pcdb_id": 500036, "raw": ["500036", "020012", "0", "2015/Nov/11 10:34", "MTD Solutions Ltd", "MTD Solutions", "MTD-ERV 140 L", "", "2007", "current", "", "3", "0", "2", "1", "1", "2", "1", "15.0", "1.03", "81", "2", "21.0", "1.48", "81"]}
{"pcdb_id": 500037, "raw": ["500037", "020012", "0", "2015/Nov/11 10:34", "MTD Solutions Ltd", "MTD Solutions", "MTD-ERV 350", "", "2007", "current", "", "3", "0", "2", "1", "1", "5", "1", "15.0", "0.70", "85", "2", "21.0", "0.71", "84", "3", "27.0", "0.81", "83", "4", "33.0", "0.94", "82", "5", "39.0", "1.08", "82"]}
{"pcdb_id": 500038, "raw": ["500038", "020024", "0", "2015/Nov/11 10:34", "Itho BV", "Xpelair", "Xcell 301DC", "", "2008", "current", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "0.55", "91", "2", "21.0", "0.61", "91", "3", "27.0", "0.72", "87", "4", "33.0", "0.84", "86", "5", "39.0", "0.97", "84", "6", "45.0", "1.11", "83"]}
{"pcdb_id": 500039, "raw": ["500039", "020003", "0", "2015/Nov/11 10:34", "The Nuaire Group", "Nuaire", "MRXBOX90S", "", "2008", "current", "", "3", "0", "2", "1", "1", "4", "1", "15.0", "1.06", "83", "2", "21.0", "1.13", "85", "3", "27.0", "1.37", "82", "4", "33.0", "1.69", "79"]}
{"pcdb_id": 500040, "raw": ["500040", "020013", "0", "2013/Oct/24 09:06", "Johnson & Starley Ltd", "Johnson & Starley", "CE300 Premier", "", "2007", "current", "", "1", "0", "2", "1", "", "5", "1", "21.0", "0.26", "", "2", "29.0", "0.24", "", "3", "37.0", "0.29", "", "4", "45.0", "0.36", "", "5", "53.0", "0.46"]}
{"pcdb_id": 500041, "raw": ["500041", "020013", "0", "2008/May/03 10:29", "Johnson & Starley Ltd", "Johnson & Starley", "CE180 Premier", "", "2007", "current", "", "1", "0", "2", "2", "", "4", "1", "21.0", "0.40", "", "2", "29.0", "0.45", "", "3", "37.0", "0.75", "", "4", "45.0", "1.03"]}
{"pcdb_id": 500042, "raw": ["500042", "020014", "0", "2013/Oct/24 09:06", "Itho Ventilation Ltd", "Itho", "CVE ECO 2 HP", "", "2009", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.18", "", "2", "29.0", "0.17", "", "3", "37.0", "0.18", "", "4", "45.0", "0.20", "", "5", "53.0", "0.22", "", "6", "61.0", "0.27"]}
{"pcdb_id": 500043, "raw": ["500043", "020014", "0", "2013/Oct/24 09:06", "Itho Ventilation Ltd", "Itho", "CVE ECO 2", "", "2008", "current", "", "1", "0", "2", "1", "", "5", "1", "21.0", "0.18", "", "2", "29.0", "0.17", "", "3", "37.0", "0.18", "", "4", "45.0", "0.20", "", "5", "53.0", "0.22"]}
{"pcdb_id": 500044, "raw": ["500044", "020014", "0", "2015/Nov/11 10:34", "Itho Ventilation Ltd", "Itho", "HRU ECO 4", "", "2008", "current", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "0.47", "90", "2", "21.0", "0.53", "90", "3", "27.0", "0.65", "87", "4", "33.0", "0.79", "87", "5", "39.0", "0.94", "87", "6", "45.0", "1.10", "88"]}
{"pcdb_id": 500047, "raw": ["500047", "020016", "0", "2015/Nov/11 10:34", "ProAir Heat Recovery and Ventilation Systems Ltd", "ProAir", "PA600", "", "2007", "2012", "", "3", "0", "2", "1", "1", "4", "1", "15.0", "0.97", "90", "2", "21.0", "0.90", "90", "3", "27.0", "1.00", "89", "4", "33.0", "1.18", "88"]}
{"pcdb_id": 500048, "raw": ["500048", "020017", "0", "2013/Oct/24 09:06", "Airflow Developments Ltd", "Airflow", "HVS-10", "", "2008", "current", "", "1", "0", "2", "1", "", "4", "1", "21.0", "0.26", "", "2", "29.0", "0.21", "", "3", "37.0", "0.24", "", "4", "45.0", "0.26"]}
{"pcdb_id": 500049, "raw": ["500049", "020017", "0", "2015/Nov/11 10:34", "Airflow Developments Ltd", "Airflow", "Duplexvent 230 EC", "", "2007", "current", "", "3", "0", "2", "1", "1", "4", "1", "15.0", "1.20", "83", "2", "21.0", "1.63", "83", "3", "27.0", "1.62", "78", "4", "33.0", "1.90", "75"]}
{"pcdb_id": 500050, "raw": ["500050", "020012", "0", "2015/Nov/11 10:34", "MTD Solutions Ltd", "MTD Solutions", "MTD-ERV 300", "", "2007", "current", "", "3", "0", "2", "1", "1", "5", "1", "15.0", "1.10", "85", "2", "21.0", "0.97", "85", "3", "27.0", "0.97", "86", "4", "33.0", "1.04", "85", "5", "39.0", "1.15", "85"]}
{"pcdb_id": 500051, "raw": ["500051", "020016", "0", "2015/Nov/11 10:34", "ProAir Heat Recovery and Ventilation Systems Ltd", "ProAir", "PA300", "", "2007", "current", "", "3", "0", "2", "1", "1", "2", "1", "15.0", "1.00", "74", "2", "21.0", "1.07", "74"]}
{"pcdb_id": 500052, "raw": ["500052", "020004", "0", "2016/May/18 18:37", "Greenwood Air Management Ltd", "Greenwood", "HRV95", "", "2007", "2012", "", "3", "0", "2", "1", "3", "6", "1", "15.0", "0.73", "86", "2", "21.0", "0.76", "86", "3", "27.0", "0.87", "85", "4", "33.0", "1.00", "83", "5", "39.0", "1.15", "81", "6", "45.0", "1.32", "78"]}
{"pcdb_id": 500053, "raw": ["500053", "020013", "0", "2015/Nov/11 10:34", "Johnson & Starley Ltd", "Johnson & Starley", "LE155", "125 mm ducts", "2007", "current", "", "3", "0", "2", "1", "1", "4", "1", "15.0", "0.65", "62", "2", "21.0", "0.84", "62", "3", "27.0", "1.14", "58", "4", "33.0", "1.48", "55"]}
{"pcdb_id": 500054, "raw": ["500054", "020013", "0", "2015/Nov/11 10:34", "Johnson & Starley Ltd", "Johnson & Starley", "LE155", "100 mm ducts", "2007", "current", "", "3", "0", "2", "2", "1", "3", "1", "15.0", "0.94", "62", "2", "21.0", "1.64", "62", "3", "27.0", "2.60", "60"]}
{"pcdb_id": 500055, "raw": ["500055", "020017", "0", "2013/Oct/24 09:06", "Airflow Developments Ltd", "Airflow", "WHV-8", "", "2008", "current", "", "1", "0", "2", "1", "", "5", "1", "21.0", "0.55", "", "2", "29.0", "0.83", "", "3", "37.0", "0.65", "", "4", "45.0", "0.54", "", "5", "53.0", "0.45"]}
{"pcdb_id": 500056, "raw": ["500056", "020018", "0", "2013/Oct/24 09:06", "National Ventilation", "National Ventilation", "MVS10", "", "2008", "current", "", "1", "0", "2", "1", "", "4", "1", "21.0", "0.41", "", "2", "29.0", "0.33", "", "3", "37.0", "0.29", "", "4", "45.0", "0.27"]}
{"pcdb_id": 500059, "raw": ["500059", "020017", "0", "2015/Nov/11 10:34", "Airflow Developments Ltd", "Airflow", "150 Effect Duplexvent", "", "2008", "current", "", "3", "0", "2", "1", "1", "5", "1", "15.0", "0.88", "79", "2", "21.0", "0.90", "79", "3", "27.0", "0.99", "82", "4", "33.0", "1.13", "82", "5", "39.0", "1.28", "83"]}
{"pcdb_id": 500060, "raw": ["500060", "020017", "0", "2015/Nov/11 10:34", "Airflow Developments Ltd", "Airflow", "90 Duplexvent", "", "2008", "current", "", "3", "0", "2", "1", "1", "5", "1", "15.0", "0.75", "82", "2", "21.0", "0.86", "82", "3", "27.0", "1.07", "82", "4", "33.0", "1.32", "82", "5", "39.0", "1.59", "80"]}
{"pcdb_id": 500061, "raw": ["500061", "020019", "0", "2015/Nov/11 10:34", "Intervent Ventilation Systems Ltd", "Intervent Ventilation Systems", "HRC300-4B", "", "2008", "current", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "1.04", "86", "2", "21.0", "0.91", "86", "3", "27.0", "0.93", "85", "4", "33.0", "1.02", "85", "5", "39.0", "1.15", "86", "6", "45.0", "1.30", "87"]}
{"pcdb_id": 500062, "raw": ["500062", "020015", "0", "2015/Nov/11 10:34", "Helios Ventilation Systems Ltd", "Helios", "KWL EC 450", "", "2008", "current", "", "3", "0", "2", "1", "1", "7", "1", "15.0", "0.99", "77", "2", "21.0", "1.01", "77", "3", "27.0", "1.10", "80", "4", "33.0", "1.22", "81", "5", "39.0", "1.35", "81", "6", "45.0", "1.49", "82", "7", "51.0", "1.64", "82"]}
{"pcdb_id": 500063, "raw": ["500063", "020015", "0", "2015/Nov/11 10:34", "Helios Ventilation Systems Ltd", "Helios", "KWL EC 300", "", "2008", "current", "", "3", "0", "2", "1", "1", "5", "1", "15.0", "0.79", "79", "2", "21.0", "0.93", "79", "3", "27.0", "1.15", "78", "4", "33.0", "1.42", "77", "5", "39.0", "1.72", "76"]}
{"pcdb_id": 500064, "raw": ["500064", "020003", "0", "2015/Nov/11 10:34", "The Nuaire Group", "Nuaire", "LPXBOX DC-2", "", "2008", "current", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "0.71", "65", "2", "21.0", "0.80", "65", "3", "27.0", "1.07", "62", "4", "33.0", "1.43", "60", "5", "39.0", "1.84", "59", "6", "45.0", "2.27", "57"]}
{"pcdb_id": 500065, "raw": ["500065", "020020", "0", "2015/Nov/11 10:34", "Orcon B.V.", "Orcon", "HRC300-4B", "", "2008", "current", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "1.04", "86", "2", "21.0", "0.91", "86", "3", "27.0", "0.93", "85", "4", "33.0", "1.02", "85", "5", "39.0", "1.15", "86", "6", "45.0", "1.30", "87"]}
{"pcdb_id": 500066, "raw": ["500066", "020021", "0", "2016/May/18 18:30", "Paul Waermerueckgewinnung Gmbh", "Paul", "Atmos 175 DC", "", "2006", "2008", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "0.55", "86", "2", "21.0", "0.53", "86", "3", "27.0", "0.61", "86", "4", "33.0", "0.73", "87", "5", "39.0", "0.88", "87", "6", "45.0", "1.04", "88"]}
{"pcdb_id": 500067, "raw": ["500067", "020021", "0", "2016/May/18 18:30", "Paul Waermerueckgewinnung Gmbh", "Paul", "Thermos 200 DC", "", "2006", "2012", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "0.52", "90", "2", "21.0", "0.55", "90", "3", "27.0", "0.65", "89", "4", "33.0", "0.78", "88", "5", "39.0", "0.92", "88", "6", "45.0", "1.08", "88"]}
{"pcdb_id": 500068, "raw": ["500068", "020021", "0", "2016/May/18 18:30", "Paul Waermerueckgewinnung Gmbh", "Paul", "Thermos 300 DC", "", "2006", "2012", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "0.49", "91", "2", "21.0", "0.53", "91", "3", "27.0", "0.62", "90", "4", "33.0", "0.75", "89", "5", "39.0", "0.90", "89", "6", "45.0", "1.05", "88"]}
{"pcdb_id": 500069, "raw": ["500069", "020021", "0", "2016/May/18 18:30", "Paul Waermerueckgewinnung Gmbh", "Paul", "Multi 100 DC", "", "2006", "2014", "", "3", "0", "2", "1", "1", "1", "1", "15.0", "0.94", "87"]}
{"pcdb_id": 500070, "raw": ["500070", "020022", "0", "2015/Nov/11 10:34", "Vallox Oy", "Vallox", "150 Effect", "", "2008", "current", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "0.87", "79", "2", "21.0", "0.88", "79", "3", "27.0", "0.97", "82", "4", "33.0", "1.11", "82", "5", "39.0", "1.26", "83", "6", "45.0", "1.42", "83"]}
{"pcdb_id": 500071, "raw": ["500071", "020022", "0", "2015/Nov/11 10:34", "Vallox Oy", "Vallox", "90", "", "2008", "current", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "0.73", "82", "2", "21.0", "0.85", "82", "3", "27.0", "1.05", "82", "4", "33.0", "1.29", "82", "5", "39.0", "1.56", "80", "6", "45.0", "1.84", "78"]}
{"pcdb_id": 500072, "raw": ["500072", "020083", "0", "2015/Nov/11 10:34", "Applied Energy Products Ltd", "Xpelair", "Xcell 350V EC BP", "", "2008", "current", "", "3", "0", "2", "1", "1", "5", "1", "15.0", "0.72", "93", "2", "21.0", "0.75", "93", "3", "27.0", "0.85", "91", "4", "33.0", "0.98", "91", "5", "39.0", "1.13", "90"]}
{"pcdb_id": 500073, "raw": ["500073", "020083", "0", "2015/Nov/11 10:34", "Applied Energy Products Ltd", "Xpelair", "Xcell 150U EC BP", "", "2008", "current", "", "3", "0", "2", "1", "1", "4", "1", "15.0", "1.17", "87", "2", "21.0", "1.26", "87", "3", "27.0", "1.54", "85", "4", "33.0", "1.90", "85"]}
{"pcdb_id": 500074, "raw": ["500074", "020023", "0", "2026/Feb/25 10:50", "Ubbink (UK) Ltd", "Ubbink", "HRV Compact", "", "2008", "obsolete", "", "3", "0", "2", "1", "1", "4", "1", "15.0", "1.09", "86", "2", "21.0", "1.23", "86", "3", "27.0", "1.48", "84", "4", "33.0", "1.77", "82"]}
{"pcdb_id": 500075, "raw": ["500075", "020023", "0", "2026/Feb/25 10:50", "Ubbink (UK) Ltd", "Ubbink", "HRV Medio", "", "2008", "obsolete", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "0.80", "84", "2", "21.0", "0.82", "84", "3", "27.0", "0.94", "83", "4", "33.0", "1.09", "81", "5", "39.0", "1.27", "79", "6", "45.0", "1.46", "77"]}
{"pcdb_id": 500076, "raw": ["500076", "020023", "0", "2026/Feb/25 10:50", "Ubbink (UK) Ltd", "Ubbink", "HVR Grande", "", "2008", "obsolete", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "0.97", "82", "2", "21.0", "0.99", "83", "3", "27.0", "1.11", "82", "4", "33.0", "1.28", "81", "5", "39.0", "1.48", "80", "6", "45.0", "1.69", "79"]}
{"pcdb_id": 500077, "raw": ["500077", "020002", "0", "2013/Oct/02 17:18", "Vent Axia Ltd", "Vent Axia", "Sentinel Multivent", "", "2008", "2012", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.19", "", "2", "29.0", "0.20", "", "3", "37.0", "0.24", "", "4", "45.0", "0.27", "", "5", "53.0", "0.32", "", "6", "61.0", "0.38"]}
{"pcdb_id": 500082, "raw": ["500082", "020007", "0", "2015/Nov/11 10:34", "Titon Hardware Ltd", "Titon", "HRV1 Q Plus", "", "2008", "current", "", "3", "0", "2", "1", "1", "4", "1", "15.0", "0.73", "90", "2", "21.0", "0.84", "89", "3", "27.0", "1.01", "87", "4", "33.0", "1.21", "87"]}
{"pcdb_id": 500083, "raw": ["500083", "020026", "0", "2015/Nov/11 10:34", "EDPAC International Ltd", "Edpac", "HR200 EC", "", "2008", "current", "", "3", "0", "2", "1", "1", "4", "1", "15.0", "0.74", "79", "2", "21.0", "0.83", "79", "3", "27.0", "0.97", "79", "4", "33.0", "1.12", "78"]}
{"pcdb_id": 500084, "raw": ["500084", "020002", "0", "2015/Nov/11 10:34", "Vent Axia Ltd", "Vent Axia", "Air Minder Plus Maxi FB", "", "2007", "2010", "", "3", "0", "2", "1", "1", "2", "2", "21.0", "1.01", "86", "3", "27.0", "1.04", "86"]}
{"pcdb_id": 500085, "raw": ["500085", "020009", "0", "2015/Nov/11 10:34", "Vortice Ltd", "Vortice", "Vort Prometeo HR400", "", "2008", "current", "", "3", "0", "2", "1", "1", "7", "1", "15.0", "0.55", "91", "2", "21.0", "0.59", "91", "3", "27.0", "0.68", "89", "4", "33.0", "0.80", "88", "5", "39.0", "0.93", "88", "6", "45.0", "1.08", "87", "7", "51.0", "1.23", "86"]}
{"pcdb_id": 500086, "raw": ["500086", "020027", "0", "2015/Nov/11 10:34", "EnviroVent Ltd", "EnviroVent", "Energivent Q", "", "2008", "2013", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "0.69", "87", "2", "21.0", "0.71", "88", "3", "27.0", "0.83", "88", "4", "33.0", "0.98", "87", "5", "39.0", "1.15", "86", "6", "45.0", "1.34", "85"]}
{"pcdb_id": 500087, "raw": ["500087", "020028", "0", "2015/Nov/11 10:34", "Enervent Oy Ab", "Enervent", "Plaza", "", "2008", "current", "", "3", "0", "2", "1", "1", "5", "1", "15.0", "1.31", "77", "2", "21.0", "1.36", "78", "3", "27.0", "1.60", "77", "4", "33.0", "1.93", "76", "5", "39.0", "2.30", "73"]}
{"pcdb_id": 500096, "raw": ["500096", "020027", "0", "2015/Nov/11 10:34", "EnviroVent Ltd", "EnviroVent", "HR180Q", "", "2008", "2012", "", "3", "0", "2", "1", "1", "4", "1", "15.0", "1.09", "86", "2", "21.0", "1.23", "86", "3", "27.0", "1.48", "84", "4", "33.0", "1.77", "82"]}
{"pcdb_id": 500097, "raw": ["500097", "020027", "0", "2015/Nov/11 10:34", "EnviroVent Ltd", "EnviroVent", "HR300Q", "", "2008", "2012", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "0.80", "84", "2", "21.0", "0.82", "84", "3", "27.0", "0.94", "83", "4", "33.0", "1.09", "81", "5", "39.0", "1.27", "79", "6", "45.0", "1.46", "77"]}
{"pcdb_id": 500098, "raw": ["500098", "020027", "0", "2015/Nov/11 10:34", "EnviroVent Ltd", "EnviroVent", "HR400Q", "", "2008", "2012", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "0.97", "82", "2", "21.0", "0.99", "83", "3", "27.0", "1.11", "82", "4", "33.0", "1.28", "81", "5", "39.0", "1.48", "80", "6", "45.0", "1.69", "79"]}
{"pcdb_id": 500099, "raw": ["500099", "020030", "0", "2015/Nov/11 10:34", "Aldes", "Aldes", "DeeFly 90 Microwatt", "", "2007", "current", "", "3", "0", "2", "1", "1", "5", "2", "21.0", "0.88", "85", "3", "27.0", "0.97", "85", "4", "33.0", "1.16", "84", "5", "39.0", "1.39", "82", "6", "45.0", "1.66", "79"]}
{"pcdb_id": 500101, "raw": ["500101", "020031", "0", "2013/Oct/24 09:06", "NIBE Energy Systems Ltd", "NIBE", "Fighter 360P", "", "2008", "current", "", "1", "1", "2", "1", "", "6", "1", "21.0", "2.00", "", "2", "29.0", "1.05", "", "3", "37.0", "0.82", "", "4", "45.0", "0.86", "", "5", "53.0", "0.83", "", "6", "61.0", "0.81"]}
{"pcdb_id": 500102, "raw": ["500102", "020013", "0", "2015/Nov/11 10:34", "Johnson & Starley Ltd", "Johnson & Starley", "LE250-1", "", "2008", "current", "", "3", "0", "2", "1", "1", "4", "1", "15.0", "0.62", "58", "2", "21.0", "0.83", "57", "3", "27.0", "1.13", "54", "4", "33.0", "1.48", "54"]}
{"pcdb_id": 500103, "raw": ["500103", "020011", "0", "2015/Nov/11 10:34", "Vectaire Ltd", "Vectaire", "WHHR100/90DC", "", "2008", "current", "", "3", "0", "2", "1", "1", "5", "1", "15.0", "0.79", "79", "2", "21.0", "0.97", "79", "3", "27.0", "1.19", "78", "4", "33.0", "1.45", "77", "5", "39.0", "1.71", "77"]}
{"pcdb_id": 500104, "raw": ["500104", "020011", "0", "2015/Nov/11 10:34", "Vectaire Ltd", "Vectaire", "WHHR150DC", "", "2007", "current", "", "3", "0", "2", "2", "1", "3", "1", "15.0", "0.94", "62", "2", "21.0", "1.64", "62", "3", "27.0", "2.60", "60"]}
{"pcdb_id": 500105, "raw": ["500105", "020011", "0", "2015/Nov/11 10:34", "Vectaire Ltd", "Vectaire", "WHHR250DC", "", "2008", "current", "", "3", "0", "2", "1", "1", "4", "1", "15.0", "0.61", "58", "2", "21.0", "0.81", "57", "3", "27.0", "1.11", "54", "4", "33.0", "1.45", "54"]}
{"pcdb_id": 500106, "raw": ["500106", "020004", "0", "2014/Jun/18 12:30", "Greenwood Air Management Ltd", "Greenwood", "CMEV.4", "", "2009", "current", "", "1", "0", "2", "1", "", "5", "1", "21.0", "0.80", "", "2", "29.0", "0.59", "", "3", "37.0", "0.72", "", "4", "45.0", "0.60", "", "5", "53.0", "0.51"]}
{"pcdb_id": 500107, "raw": ["500107", "020004", "0", "2014/Jun/18 12:30", "Greenwood Air Management Ltd", "Greenwood", "CMEV.4e", "", "2009", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.17", "", "2", "29.0", "0.16", "", "3", "37.0", "0.17", "", "4", "45.0", "0.18", "", "5", "53.0", "0.22", "", "6", "61.0", "0.24"]}
{"pcdb_id": 500108, "raw": ["500108", "020002", "0", "2015/Nov/11 10:34", "Vent Axia Ltd", "Vent Axia", "Air Minder Plas Midi FB", "", "2007", "2010", "", "3", "0", "2", "1", "1", "5", "1", "15.0", "1.16", "84", "2", "21.0", "1.28", "82", "3", "27.0", "1.41", "84", "4", "33.0", "1.54", "88", "5", "39.0", "1.67", "94"]}
{"pcdb_id": 500109, "raw": ["500109", "020032", "0", "2015/Nov/11 10:34", "Utek srl", "Utek", "HRE 350-EC-V CTR", "", "2008", "current", "", "3", "0", "2", "1", "1", "5", "1", "15.0", "0.93", "89", "2", "21.0", "0.98", "89", "3", "27.0", "1.12", "88", "4", "33.0", "1.31", "87", "5", "39.0", "1.51", "85"]}
{"pcdb_id": 500110, "raw": ["500110", "020028", "0", "2015/Nov/11 10:34", "Enervent Oy Ab", "Enervent", "LTR-3 eco EC", "", "2008", "current", "", "3", "0", "2", "1", "1", "5", "1", "15.0", "1.11", "76", "2", "21.0", "1.05", "76", "3", "27.0", "1.09", "79", "4", "33.0", "1.18", "80", "5", "39.0", "1.30", "81"]}
{"pcdb_id": 500113, "raw": ["500113", "020033", "0", "2015/Nov/11 10:34", "Vaillant Group UK Ltd", "Vaillant", "recoVAIR VAR 275/3", "", "2008", "current", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "0.90", "83", "2", "21.0", "0.91", "85", "3", "27.0", "1.04", "86", "4", "33.0", "1.23", "85", "5", "39.0", "1.44", "83", "6", "45.0", "1.68", "79"]}
{"pcdb_id": 500114, "raw": ["500114", "020033", "0", "2015/Nov/11 10:34", "Vaillant Group UK Ltd", "Vaillant", "recoVAIR VAR 350/3", "", "2008", "current", "", "3", "0", "2", "1", "1", "7", "1", "15.0", "0.88", "81", "2", "21.0", "0.87", "81", "3", "27.0", "1.00", "83", "4", "33.0", "1.19", "84", "5", "39.0", "1.42", "84", "6", "45.0", "1.68", "84", "7", "51.0", "1.94", "83"]}
{"pcdb_id": 500117, "raw": ["500117", "020027", "0", "2009/May/16 16:32", "EnviroVent Ltd", "EnviroVent", "Spider MEV", "", "2009", "current", "", "1", "0", "2", "2", "", "6", "1", "21.0", "0.45", "", "2", "29.0", "0.34", "", "3", "37.0", "0.33", "", "4", "45.0", "0.34", "", "5", "53.0", "0.37", "", "6", "61.0", "0.40"]}
{"pcdb_id": 500118, "raw": ["500118", "020009", "0", "2009/Jun/18 08:37", "Vortice Ltd", "Vortice", "Vort Platt ES", "", "2009", "current", "", "1", "0", "2", "2", "", "3", "1", "21.0", "0.20", "", "2", "29.0", "0.20", "", "3", "37.0", "0.21"]}
{"pcdb_id": 500119, "raw": ["500119", "020009", "0", "2011/Sep/12 08:31", "Vortice Ltd", "Vortice", "Vort Penta ES", "", "2009", "current", "", "1", "0", "2", "2", "", "5", "1", "21.0", "0.20", "", "2", "29.0", "0.18", "", "3", "37.0", "0.19", "", "4", "45.0", "0.20", "", "5", "53.0", "0.23"]}
{"pcdb_id": 500122, "raw": ["500122", "020034", "0", "2015/Nov/11 10:34", "REC Indovent AB", "Rec Indovent", "RT250S-EC", "", "2008", "current", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "0.85", "79", "2", "21.0", "0.85", "79", "3", "27.0", "0.95", "76", "4", "33.0", "1.09", "75", "5", "39.0", "1.25", "75", "6", "45.0", "1.43", "75"]}
{"pcdb_id": 500123, "raw": ["500123", "020034", "0", "2015/Nov/11 10:34", "REC Indovent AB", "Rec Indovent", "RT400S-EC", "", "2008", "current", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "0.98", "78", "2", "21.0", "0.92", "80", "3", "27.0", "0.98", "75", "4", "33.0", "1.08", "74", "5", "39.0", "1.21", "74", "6", "45.0", "1.36", "74"]}
{"pcdb_id": 500124, "raw": ["500124", "020035", "0", "2015/Nov/11 10:34", "Rega Ventilation Ltd", "RegaVent", "325DC", "", "2009", "current", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "0.82", "71", "2", "21.0", "0.62", "71", "3", "27.0", "0.65", "70", "4", "33.0", "0.78", "68", "5", "39.0", "0.96", "65", "6", "45.0", "1.19", "61"]}
{"pcdb_id": 500125, "raw": ["500125", "020011", "0", "2015/Nov/11 10:34", "Vectaire Ltd", "Vectaire", "WHHR100/60DC", "", "2009", "current", "", "3", "0", "2", "1", "1", "5", "1", "15.0", "0.71", "61", "2", "21.0", "0.78", "61", "3", "27.0", "0.93", "54", "4", "33.0", "1.12", "52", "5", "39.0", "1.33", "50"]}
{"pcdb_id": 500126, "raw": ["500126", "020002", "0", "2016/May/18 14:58", "Vent Axia Ltd", "Vent Axia", "Sentinel 200", "", "2009", "current", "", "3", "0", "2", "1", "3", "3", "1", "15.0", "0.78", "85", "2", "21.0", "0.89", "85", "3", "27.0", "1.03", "82"]}
{"pcdb_id": 500127, "raw": ["500127", "020078", "0", "2015/Nov/11 10:34", "Villavent Ltd", "Villavent", "VR400 DC", "", "2009", "current", "", "3", "0", "2", "1", "1", "5", "3", "27.0", "1.38", "83", "4", "33.0", "1.45", "82", "5", "39.0", "1.56", "84", "6", "45.0", "1.70", "84", "7", "51.0", "1.86", "84"]}
{"pcdb_id": 500128, "raw": ["500128", "020078", "0", "2015/Nov/11 10:34", "Villavent Ltd", "Villavent", "VR700 DC", "", "2009", "current", "", "3", "0", "2", "1", "1", "4", "4", "33.0", "1.99", "84", "5", "39.0", "2.01", "83", "6", "45.0", "2.03", "83", "7", "51.0", "2.03", "82"]}
{"pcdb_id": 500129, "raw": ["500129", "020036", "0", "2015/Nov/11 10:34", "Glow-worm", "Glow-worm", "Atmosorb HRD 275", "", "2008", "current", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "0.90", "83", "2", "21.0", "0.91", "85", "3", "27.0", "1.04", "86", "4", "33.0", "1.23", "85", "5", "39.0", "1.44", "83", "6", "45.0", "1.68", "79"]}
{"pcdb_id": 500130, "raw": ["500130", "020036", "0", "2015/Nov/11 10:34", "Glow-worm", "Glow-worm", "Atmosorb HRD 350", "", "2008", "current", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "0.88", "81", "2", "21.0", "0.87", "81", "3", "27.0", "1.00", "83", "4", "33.0", "1.19", "84", "5", "39.0", "1.42", "84", "6", "45.0", "1.68", "84"]}
{"pcdb_id": 500131, "raw": ["500131", "020007", "0", "2016/Feb/22 15:19", "Titon Hardware Ltd", "Titon", "CME 1 Q Plus", "125 mm ducts", "2009", "2015", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.20", "", "2", "29.0", "0.18", "", "3", "37.0", "0.18", "", "4", "45.0", "0.19", "", "5", "53.0", "0.22", "", "6", "61.0", "0.25"]}
{"pcdb_id": 500132, "raw": ["500132", "020007", "0", "2016/Feb/22 15:19", "Titon Hardware Ltd", "Titon", "CME 1 Q Plus", "100 mm ducts", "2009", "2015", "", "1", "0", "2", "2", "", "5", "1", "21.0", "0.25", "", "2", "29.0", "0.22", "", "3", "37.0", "0.23", "", "4", "45.0", "0.25", "", "5", "53.0", "0.30"]}
{"pcdb_id": 500133, "raw": ["500133", "020009", "0", "2013/Oct/24 09:06", "Vortice Ltd", "Vortice", "Vort Leto MEV", "", "2009", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.24", "", "2", "29.0", "0.21", "", "3", "37.0", "0.20", "", "4", "45.0", "0.23", "", "5", "53.0", "0.25", "", "6", "61.0", "0.29"]}
{"pcdb_id": 500138, "raw": ["500138", "020004", "0", "2016/May/18 18:35", "Greenwood Air Management Ltd", "Greenwood", "Fusion HRV2", "", "2009", "2015", "", "3", "0", "2", "1", "1", "5", "1", "15.0", "0.47", "93", "2", "21.0", "0.55", "93", "3", "27.0", "0.70", "91", "4", "33.0", "0.88", "90", "5", "39.0", "1.07", "88"]}
{"pcdb_id": 500139, "raw": ["500139", "020011", "0", "2015/Nov/11 10:34", "Vectaire Ltd", "Vectaire", "WHHR125DC", "", "2008", "current", "", "3", "0", "2", "1", "1", "4", "1", "15.0", "0.71", "90", "2", "21.0", "0.82", "89", "3", "27.0", "0.99", "87", "4", "33.0", "1.19", "87"]}
{"pcdb_id": 500140, "raw": ["500140", "020002", "0", "2016/May/18 14:54", "Vent Axia Ltd", "Vent Axia", "Sentinel Kinetic B", "", "2009", "current", "", "3", "0", "2", "1", "3", "5", "1", "15.0", "0.76", "91", "2", "21.0", "0.88", "91", "3", "27.0", "1.07", "88", "4", "33.0", "1.28", "86", "5", "39.0", "1.50", "84"]}
{"pcdb_id": 500141, "raw": ["500141", "020004", "0", "2016/May/18 18:40", "Zehnder Group UK Ltd", "Zehnder", "ComfoAir 200", "", "2009", "current", "", "3", "0", "2", "1", "3", "5", "1", "15.0", "0.91", "93", "2", "21.0", "1.02", "93", "3", "27.0", "1.20", "91", "4", "33.0", "1.42", "90", "5", "39.0", "1.66", "88"]}
{"pcdb_id": 500142, "raw": ["500142", "020004", "0", "2016/May/18 18:40", "Zehnder Group UK Ltd", "Zehnder", "ComfoAir 350", "", "2009", "current", "", "3", "0", "2", "1", "3", "6", "1", "15.0", "0.71", "88", "2", "21.0", "0.71", "88", "3", "27.0", "0.80", "87", "4", "33.0", "0.93", "86", "5", "39.0", "1.07", "86", "6", "45.0", "1.23", "85"]}
{"pcdb_id": 500143, "raw": ["500143", "020004", "0", "2016/May/18 18:40", "Zehnder Group UK Ltd", "Zehnder", "ComfoAir 550", "", "2009", "current", "", "3", "0", "2", "1", "3", "7", "1", "15.0", "0.83", "88", "2", "21.0", "0.79", "88", "3", "27.0", "0.83", "88", "4", "33.0", "0.90", "88", "5", "39.0", "0.99", "86", "6", "45.0", "1.08", "84", "7", "51.0", "1.19", "82"]}
{"pcdb_id": 500144, "raw": ["500144", "020083", "0", "2015/Nov/11 10:34", "Applied Energy Products Ltd", "Xpelair", "Xcell 150 QV", "", "2009", "current", "", "3", "0", "2", "1", "1", "3", "1", "15.0", "0.72", "89", "2", "21.0", "0.84", "89", "3", "27.0", "1.01", "86"]}
{"pcdb_id": 500145, "raw": ["500145", "020083", "0", "2015/Nov/11 10:34", "Applied Energy Products Ltd", "Xpelair", "Xcell 300 QV", "", "2009", "current", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "0.61", "91", "2", "21.0", "0.65", "91", "3", "27.0", "0.76", "88", "4", "33.0", "0.90", "87", "5", "39.0", "1.07", "86", "6", "45.0", "1.24", "85"]}
{"pcdb_id": 500146, "raw": ["500146", "020007", "0", "2016/Feb/22 14:32", "Titon Hardware Ltd", "Titon", "HRV1.5 Q Plus", "", "2009", "2014", "", "3", "0", "2", "1", "1", "5", "1", "15.0", "0.64", "90", "2", "21.0", "0.72", "90", "3", "27.0", "0.85", "89", "4", "33.0", "1.01", "88", "5", "39.0", "1.18", "87"]}
{"pcdb_id": 500147, "raw": ["500147", "020007", "0", "2015/Nov/11 10:34", "Titon Hardware Ltd", "Titon", "HRV2 Q Plus", "", "2009", "current", "", "3", "0", "2", "1", "1", "5", "2", "21.0", "0.72", "89", "3", "27.0", "0.89", "90", "4", "33.0", "1.11", "88", "5", "39.0", "1.36", "87", "6", "45.0", "1.63", "86"]}
{"pcdb_id": 500148, "raw": ["500148", "020012", "0", "2015/Nov/11 10:34", "MTD Solutions Ltd", "MTD Solutions", "MTD-ERV 365", "", "2007", "current", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "0.69", "85", "2", "21.0", "0.70", "84", "3", "27.0", "0.79", "83", "4", "33.0", "0.92", "82", "5", "39.0", "1.06", "82", "6", "45.0", "1.22", "81"]}
{"pcdb_id": 500149, "raw": ["500149", "020012", "0", "2015/Nov/11 10:34", "MTD Solutions Ltd", "MTD Solutions", "MTD-ERV 365", "", "2007", "current", "", "3", "0", "1", "1", "1", "6", "1", "15.0", "0.67", "85", "2", "21.0", "0.70", "84", "3", "27.0", "0.80", "83", "4", "33.0", "0.94", "82", "5", "39.0", "1.10", "82", "6", "45.0", "1.27", "81"]}
{"pcdb_id": 500150, "raw": ["500150", "020012", "0", "2015/Nov/11 10:34", "MTD Solutions Ltd", "MTD Solutions", "MTD-ERV 350", "", "2007", "current", "", "3", "0", "1", "1", "1", "6", "1", "15.0", "0.67", "85", "2", "21.0", "0.70", "84", "3", "27.0", "0.80", "83", "4", "33.0", "0.94", "82", "5", "39.0", "1.10", "82", "6", "45.0", "1.27", "81"]}
{"pcdb_id": 500151, "raw": ["500151", "020012", "0", "2015/Nov/11 10:34", "MTD Solutions Ltd", "MTD Solutions", "MTD-ERV 600", "", "2007", "current", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "0.81", "88", "2", "21.0", "0.79", "88", "3", "27.0", "0.84", "86", "4", "33.0", "0.91", "85", "5", "39.0", "1.01", "85", "6", "45.0", "1.11", "84"]}
{"pcdb_id": 500152, "raw": ["500152", "020012", "0", "2015/Nov/11 10:34", "MTD Solutions Ltd", "MTD Solutions", "MTD-ERV 600", "", "2007", "current", "", "3", "0", "1", "1", "1", "6", "1", "15.0", "0.78", "88", "2", "21.0", "0.75", "88", "3", "27.0", "0.82", "86", "4", "33.0", "0.92", "85", "5", "39.0", "1.04", "85", "6", "45.0", "1.18", "84"]}
{"pcdb_id": 500153, "raw": ["500153", "020038", "0", "2015/Nov/11 10:34", "AB C.A. Östberg", "Beam", "AXCO HERU 62 B", "", "2009", "current", "", "3", "0", "2", "1", "1", "3", "2", "21.0", "1.90", "83", "3", "27.0", "1.71", "82", "4", "33.0", "1.93", "85"]}
{"pcdb_id": 500154, "raw": ["500154", "020038", "0", "2015/Nov/11 10:34", "AB C.A. Östberg", "Beam", "AXCO HERU 90 S", "", "2009", "current", "", "3", "0", "2", "1", "1", "4", "3", "27.0", "1.24", "84", "4", "33.0", "1.32", "83", "5", "39.0", "1.43", "85", "6", "45.0", "1.57", "85"]}
{"pcdb_id": 500155, "raw": ["500155", "020038", "0", "2015/Nov/11 10:34", "AB C.A. Östberg", "Beam", "AXCO HERU 130 S", "", "2009", "current", "", "3", "0", "2", "1", "1", "3", "4", "33.0", "1.08", "81", "5", "39.0", "1.16", "80", "6", "45.0", "1.26", "84"]}
{"pcdb_id": 500156, "raw": ["500156", "020038", "0", "2015/Nov/11 10:34", "AB C.A. Östberg", "Beam", "AXCO HERU 180 S", "", "2009", "current", "", "3", "0", "2", "1", "1", "2", "5", "39.0", "1.16", "79", "6", "45.0", "1.15", "76"]}
{"pcdb_id": 500157, "raw": ["500157", "020003", "0", "2015/Nov/11 10:34", "The Nuaire Group", "Nuaire", "MRXBOX95-Loft", "", "2009", "current", "", "3", "0", "2", "1", "1", "2", "1", "15.0", "0.79", "92", "2", "21.0", "0.92", "92"]}
{"pcdb_id": 500158, "raw": ["500158", "020007", "0", "2015/Nov/11 10:34", "Titon Hardware Ltd", "Titon", "HRV3 Q Plus", "", "2009", "current", "", "3", "0", "2", "1", "1", "4", "3", "27.0", "0.90", "88", "4", "33.0", "1.10", "89", "5", "39.0", "1.32", "87", "6", "45.0", "1.56", "87"]}
{"pcdb_id": 500159, "raw": ["500159", "020083", "0", "2015/Nov/11 10:34", "Applied Energy Products Ltd", "Xpelair", "Xcell 200 QV", "", "2009", "current", "", "3", "0", "2", "1", "1", "4", "1", "15.0", "0.68", "91", "2", "21.0", "0.77", "91", "3", "27.0", "0.91", "88", "4", "33.0", "1.07", "86"]}
{"pcdb_id": 500160, "raw": ["500160", "020083", "0", "2016/Jun/20 12:41", "Applied Energy Products Ltd", "Xpelair", "Xplus 2-EC", "", "2009", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.21", "", "2", "29.0", "0.19", "", "3", "37.0", "0.19", "", "4", "45.0", "0.21", "", "5", "53.0", "0.24", "", "6", "61.0", "0.27"]}
{"pcdb_id": 500163, "raw": ["500163", "020017", "0", "2015/Nov/11 10:34", "Airflow Developments Ltd", "Airflow", "Duplexvent DV 75EC", "", "2008", "current", "", "3", "0", "2", "1", "1", "5", "1", "15.0", "0.68", "61", "2", "21.0", "0.80", "62", "3", "27.0", "0.96", "59", "4", "33.0", "1.15", "57", "5", "39.0", "1.34", "54"]}
{"pcdb_id": 500164, "raw": ["500164", "020040", "0", "2015/Nov/11 10:34", "Itho Ventilation Ltd", "Kair", "IECO 4", "", "2008", "current", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "0.47", "90", "2", "21.0", "0.53", "90", "3", "27.0", "0.65", "87", "4", "33.0", "0.79", "87", "5", "39.0", "0.94", "87", "6", "45.0", "1.10", "88"]}
{"pcdb_id": 500165, "raw": ["500165", "020012", "0", "2015/Nov/11 10:34", "MTD Solutions Ltd", "MTD Solutions", "MTD-ERV 200", "", "2009", "current", "", "3", "0", "2", "1", "1", "5", "1", "15.0", "0.91", "93", "2", "21.0", "1.02", "93", "3", "27.0", "1.20", "91", "4", "33.0", "1.42", "90", "5", "39.0", "1.66", "88"]}
{"pcdb_id": 500166, "raw": ["500166", "020003", "0", "2015/Nov/11 10:34", "The Nuaire Group", "Nuaire", "MRXBOX95-Wall", "", "2009", "current", "", "3", "0", "2", "1", "1", "2", "1", "15.0", "0.71", "91", "2", "21.0", "0.92", "91"]}
{"pcdb_id": 500167, "raw": ["500167", "020002", "0", "2016/May/26 14:24", "Vent Axia Ltd", "Vent Axia", "Sentinel Kinetic Plus B", "", "2009", "current", "", "3", "0", "2", "1", "3", "6", "1", "15.0", "0.52", "92", "2", "21.0", "0.55", "92", "3", "27.0", "0.63", "90", "4", "33.0", "0.74", "89", "5", "39.0", "0.86", "89", "6", "45.0", "0.99", "88"]}
{"pcdb_id": 500168, "raw": ["500168", "020011", "0", "2015/Nov/11 10:34", "Vectaire Ltd", "Vectaire", "WHHR180DC", "", "2008", "current", "", "3", "0", "2", "1", "1", "4", "1", "15.0", "1.09", "86", "2", "21.0", "1.23", "86", "3", "27.0", "1.48", "84", "4", "33.0", "1.77", "82"]}
{"pcdb_id": 500169, "raw": ["500169", "020011", "0", "2015/Nov/11 10:34", "Vectaire Ltd", "Vectaire", "WHHR300DC", "", "2008", "current", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "0.80", "84", "2", "21.0", "0.82", "84", "3", "27.0", "0.94", "83", "4", "33.0", "1.09", "81", "5", "39.0", "1.27", "79", "6", "45.0", "1.46", "77"]}
{"pcdb_id": 500170, "raw": ["500170", "020011", "0", "2015/Nov/11 10:34", "Vectaire Ltd", "Vectaire", "WHHR400DC", "", "2008", "current", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "0.97", "82", "2", "21.0", "0.99", "83", "3", "27.0", "1.11", "82", "4", "33.0", "1.28", "81", "5", "39.0", "1.48", "80", "6", "45.0", "1.69", "79"]}
{"pcdb_id": 500179, "raw": ["500179", "020041", "0", "2015/Nov/11 10:34", "Polypipe Ltd", "Polypipe Ventilation", "HR01L", "", "2009", "current", "", "3", "0", "2", "1", "1", "2", "1", "15.0", "0.79", "92", "2", "21.0", "0.92", "92"]}
{"pcdb_id": 500180, "raw": ["500180", "020041", "0", "2015/Nov/11 10:34", "Polypipe Ltd", "Polypipe Ventilation", "HR01W", "", "2009", "current", "", "3", "0", "2", "1", "1", "2", "1", "15.0", "0.71", "91", "2", "21.0", "0.92", "91"]}
{"pcdb_id": 500181, "raw": ["500181", "020042", "0", "2015/Nov/11 10:34", "Brink Climate Systems B.V.", "Brink", "Renovent HR 4/0 R Medium", "", "2009", "current", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "0.60", "90", "2", "21.0", "0.66", "90", "3", "27.0", "0.80", "87", "4", "33.0", "0.98", "86", "5", "39.0", "1.19", "84", "6", "45.0", "1.41", "82"]}
{"pcdb_id": 500182, "raw": ["500182", "020042", "0", "2015/Nov/11 10:34", "Brink Climate Systems B.V.", "Brink", "Renovent HR 4/0 R Small", "", "2009", "current", "", "3", "0", "2", "1", "1", "3", "1", "15.0", "0.85", "88", "2", "21.0", "1.03", "88", "3", "27.0", "1.31", "85"]}
{"pcdb_id": 500183, "raw": ["500183", "020027", "0", "2015/Nov/11 10:34", "EnviroVent Ltd", "EnviroVent", "energiVent FLOW", "", "2010", "2012", "", "3", "0", "2", "1", "1", "5", "1", "15.0", "0.73", "89", "2", "21.0", "0.83", "90", "3", "27.0", "1.02", "87", "4", "33.0", "1.24", "85", "5", "39.0", "1.48", "83"]}
{"pcdb_id": 500184, "raw": ["500184", "020013", "0", "2015/Nov/11 10:34", "Johnson & Starley Ltd", "Johnson & Starley", "Q Vent HR160", "", "2010", "current", "", "3", "0", "2", "1", "1", "3", "1", "15.0", "0.85", "91", "2", "21.0", "1.04", "91", "3", "27.0", "1.33", "88"]}
{"pcdb_id": 500185, "raw": ["500185", "020023", "0", "2026/Feb/25 10:50", "Ubbink (UK) Ltd", "Ubbink", "HRV C180", "", "2009", "obsolete", "", "3", "0", "2", "1", "1", "3", "1", "15.0", "0.85", "88", "2", "21.0", "1.03", "88", "3", "27.0", "1.31", "85"]}
{"pcdb_id": 500186, "raw": ["500186", "020023", "0", "2026/Feb/25 10:50", "Ubbink (UK) Ltd", "Ubbink", "HRV M300", "", "2009", "obsolete", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "0.60", "90", "2", "21.0", "0.66", "90", "3", "27.0", "0.80", "87", "4", "33.0", "0.98", "86", "5", "39.0", "1.19", "84", "6", "45.0", "1.41", "82"]}
{"pcdb_id": 500187, "raw": ["500187", "020078", "0", "2015/Nov/11 10:34", "Villavent Ltd", "Villavent", "VR400 DCV/BR", "", "2009", "current", "", "3", "0", "2", "1", "1", "5", "2", "21.0", "1.54", "77", "3", "27.0", "1.51", "77", "4", "33.0", "1.56", "80", "5", "39.0", "1.66", "81", "6", "45.0", "1.78", "82"]}
{"pcdb_id": 500188, "raw": ["500188", "020004", "0", "2016/May/18 18:29", "Zehnder Group UK Ltd", "Zehnder", "ComfoAir ZHRV2", "", "2009", "2015", "", "3", "0", "2", "1", "1", "5", "1", "15.0", "0.47", "93", "2", "21.0", "0.55", "93", "3", "27.0", "0.70", "91", "4", "33.0", "0.88", "90", "5", "39.0", "1.07", "88"]}
{"pcdb_id": 500189, "raw": ["500189", "020078", "0", "2015/Nov/11 10:34", "Villavent Ltd", "Villavent", "Combini EC", "", "2010", "current", "", "3", "0", "2", "1", "1", "4", "1", "15.0", "0.73", "62", "2", "21.0", "0.90", "63", "3", "27.0", "1.19", "55", "4", "33.0", "1.53", "50"]}
{"pcdb_id": 500190, "raw": ["500190", "020009", "0", "2015/Nov/11 10:34", "Vortice Ltd", "Vortice", "Vort HR200", "", "2010", "current", "", "3", "0", "2", "1", "1", "2", "1", "15.0", "0.73", "91", "2", "21.0", "0.88", "91"]}
{"pcdb_id": 500191, "raw": ["500191", "020043", "0", "2014/Jun/11 13:30", "Genvex A/S", "Genvex", "GES Energy BP DS LG", "", "2009", "current", "", "3", "0", "2", "1", "3", "5", "1", "15.0", "0.81", "91", "2", "21.0", "0.88", "91", "3", "27.0", "1.01", "88", "4", "33.0", "1.16", "86", "5", "39.0", "1.33", "84"]}
{"pcdb_id": 500194, "raw": ["500194", "020017", "0", "2015/Nov/11 10:34", "Airflow Developments Ltd", "Airflow", "Duplexvent DV71", "", "2010", "current", "", "3", "0", "2", "1", "1", "2", "1", "15.0", "3.18", "92", "2", "21.0", "3.05", "92"]}
{"pcdb_id": 500195, "raw": ["500195", "020017", "0", "2015/Nov/11 10:34", "Airflow Developments Ltd", "Airflow", "Duplexvent DV72", "", "2010", "current", "", "3", "0", "2", "1", "1", "4", "1", "15.0", "0.75", "90", "2", "21.0", "0.87", "90", "3", "27.0", "1.05", "87", "4", "33.0", "1.27", "86"]}
{"pcdb_id": 500196, "raw": ["500196", "020002", "0", "2015/Nov/11 10:34", "Vent Axia Ltd", "Vent Axia", "Lo-Carbon Astra", "", "2010", "current", "", "3", "0", "2", "1", "1", "4", "1", "15.0", "0.75", "90", "2", "21.0", "0.87", "90", "3", "27.0", "1.05", "87", "4", "33.0", "1.27", "86"]}
{"pcdb_id": 500199, "raw": ["500199", "020014", "0", "2015/Nov/11 10:34", "Itho Ventilation Ltd", "Itho", "Advance", "", "2010", "current", "", "3", "0", "2", "1", "1", "3", "1", "15.0", "0.50", "89", "2", "21.0", "0.73", "89", "3", "27.0", "1.00", "86"]}
{"pcdb_id": 500200, "raw": ["500200", "020048", "0", "2015/Nov/11 10:34", "Manrose Manufacturing Ltd", "Manrose", "Windsor MANHR4500DC", "", "2010", "2012", "", "3", "0", "2", "1", "1", "4", "1", "15.0", "0.75", "90", "2", "21.0", "0.87", "90", "3", "27.0", "1.05", "87", "4", "33.0", "1.27", "86"]}
{"pcdb_id": 500201, "raw": ["500201", "020003", "0", "2015/Nov/11 10:34", "The Nuaire Group", "Nuaire", "MRXBOX95-LH1", "", "2010", "current", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "0.60", "91", "2", "21.0", "0.66", "91", "3", "27.0", "0.80", "91", "4", "33.0", "0.96", "90", "5", "39.0", "1.15", "90", "6", "45.0", "1.35", "89"]}
{"pcdb_id": 500202, "raw": ["500202", "020003", "0", "2015/Nov/11 10:34", "The Nuaire Group", "Nuaire", "MRXBOX95-LH2", "", "2010", "current", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "0.78", "91", "2", "21.0", "0.83", "91", "3", "27.0", "0.97", "91", "4", "33.0", "1.14", "90", "5", "39.0", "1.33", "90", "6", "45.0", "1.54", "89"]}
{"pcdb_id": 500203, "raw": ["500203", "020011", "0", "2015/Nov/11 10:34", "Vectaire Ltd", "Vectaire", "WHHR100/90DC-A", "", "2010", "current", "", "3", "0", "2", "1", "1", "3", "1", "15.0", "0.99", "91", "2", "21.0", "1.14", "91", "3", "27.0", "1.34", "88"]}
{"pcdb_id": 500204, "raw": ["500204", "020031", "0", "2013/Oct/24 09:06", "NIBE Energy Systems Ltd", "NIBE", "F205P", "", "2010", "current", "", "1", "1", "2", "1", "", "6", "1", "21.0", "0.65", "", "2", "29.0", "0.60", "", "3", "37.0", "0.65", "", "4", "45.0", "0.78", "", "5", "53.0", "0.87", "", "6", "61.0", "1.02"]}
{"pcdb_id": 500205, "raw": ["500205", "020011", "0", "2015/Nov/11 10:34", "Vectaire Ltd", "Vectaire", "WHHR100/90DC-B", "", "2010", "current", "", "3", "0", "2", "1", "1", "3", "1", "15.0", "0.78", "91", "2", "21.0", "0.94", "91", "3", "27.0", "1.16", "88"]}
{"pcdb_id": 500206, "raw": ["500206", "020049", "0", "2015/Nov/11 10:34", "Kingspan Century Ltd", "Kingspan", "Air Recovery 4", "", "2008", "current", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "0.47", "90", "2", "21.0", "0.53", "90", "3", "27.0", "0.65", "87", "4", "33.0", "0.79", "87", "5", "39.0", "0.94", "87", "6", "45.0", "1.10", "88"]}
{"pcdb_id": 500207, "raw": ["500207", "020047", "0", "2015/Nov/11 10:34", "Mitsubishi Electric Europe B.V.", "Mitsubishi", "LGH-50RSDC-E1", "", "2010", "current", "", "3", "0", "2", "1", "1", "4", "1", "15.0", "0.70", "85", "2", "21.0", "0.76", "85", "3", "27.0", "0.89", "82", "4", "33.0", "0.93", "81"]}
{"pcdb_id": 500208, "raw": ["500208", "020050", "0", "2013/Oct/24 09:06", "Aereco Ltd", "Aereco", "V2A 032EX", "", "2009", "current", "", "1", "0", "2", "1", "", "2", "1", "21.0", "0.37", "", "2", "29.0", "0.42"]}
{"pcdb_id": 500209, "raw": ["500209", "020050", "0", "2013/Oct/24 09:06", "Aereco Ltd", "Aereco", "V4A 053EX", "", "2009", "current", "", "1", "0", "2", "1", "", "4", "1", "21.0", "0.45", "", "2", "29.0", "0.40", "", "3", "37.0", "0.36", "", "4", "45.0", "0.34"]}
{"pcdb_id": 500210, "raw": ["500210", "020050", "0", "2013/Oct/24 09:06", "Aereco Ltd", "Aereco", "VAM 767EX", "", "2009", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.71", "", "2", "29.0", "0.51", "", "3", "37.0", "0.50", "", "4", "45.0", "0.46", "", "5", "53.0", "0.50", "", "6", "61.0", "0.61"]}
{"pcdb_id": 500211, "raw": ["500211", "020038", "0", "2015/Nov/11 10:34", "Beam Vacuum Systems Ltd", "Beam", "AXCO HERU 130T", "", "2009", "current", "", "3", "0", "2", "1", "1", "3", "4", "33.0", "1.33", "81", "5", "39.0", "1.38", "81", "6", "45.0", "1.46", "80"]}
{"pcdb_id": 500212, "raw": ["500212", "020011", "0", "2015/Nov/11 10:34", "Vectaire Ltd", "Vectaire", "WHHR125DC AERA", "", "2010", "current", "", "3", "0", "2", "1", "1", "5", "1", "15.0", "0.61", "93", "2", "21.0", "0.69", "93", "3", "27.0", "0.84", "91", "4", "33.0", "1.01", "90", "5", "39.0", "1.20", "89"]}
{"pcdb_id": 500213, "raw": ["500213", "020013", "0", "2015/Nov/11 10:34", "Johnson & Starley Ltd", "Johnson & Starley", "Q-Vent HR260", "", "2010", "current", "", "3", "0", "2", "1", "1", "4", "1", "15.0", "0.92", "89", "2", "21.0", "1.09", "89", "3", "27.0", "1.33", "88", "4", "33.0", "1.62", "88"]}
{"pcdb_id": 500214, "raw": ["500214", "020021", "0", "2016/May/18 18:41", "Paul Waermerueckgewinnung Gmbh", "Paul", "Novus 300", "", "2010", "current", "", "3", "0", "2", "1", "3", "6", "1", "15.0", "0.67", "93", "2", "21.0", "0.66", "93", "3", "27.0", "0.73", "93", "4", "33.0", "0.83", "92", "5", "39.0", "0.96", "91", "6", "45.0", "1.09", "90"]}
{"pcdb_id": 500215, "raw": ["500215", "020021", "0", "2015/Nov/11 10:34", "Paul Waermerueckgewinnung Gmbh", "Paul", "Focus F200", "", "2010", "current", "", "3", "0", "2", "1", "1", "4", "1", "15.0", "0.82", "94", "2", "21.0", "0.92", "94", "3", "27.0", "1.14", "93", "4", "33.0", "1.40", "91"]}
{"pcdb_id": 500216, "raw": ["500216", "020078", "0", "2015/Nov/11 10:34", "Villavent Ltd", "Villavent", "VR 300 ECV / B", "", "2010", "current", "", "3", "0", "2", "1", "1", "3", "1", "15.0", "1.77", "79", "2", "21.0", "1.74", "80", "3", "27.0", "1.72", "80"]}
{"pcdb_id": 500217, "raw": ["500217", "020052", "0", "2011/May/04 13:42", "Brook Design Hardware Ltd", "Brookvent", "Airstream 1.1AC", "", "2009", "current", "", "1", "0", "2", "1", "", "5", "1", "21.0", "0.80", "", "2", "29.0", "0.59", "", "3", "37.0", "0.72", "", "4", "45.0", "0.60", "", "5", "53.0", "0.51"]}
{"pcdb_id": 500218, "raw": ["500218", "020052", "0", "2011/May/04 13:41", "Brook Design Hardware Ltd", "Brookvent", "Airstream 1.1AC", "", "2009", "current", "", "1", "0", "2", "2", "", "3", "1", "21.0", "0.81", "", "2", "29.0", "0.91", "", "3", "37.0", "0.72"]}
{"pcdb_id": 500219, "raw": ["500219", "020052", "0", "2011/May/04 13:42", "Brook Design Hardware Ltd", "Brookvent", "Airstream 1.1E", "", "2009", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.17", "", "2", "29.0", "0.16", "", "3", "37.0", "0.17", "", "4", "45.0", "0.18", "", "5", "53.0", "0.22", "", "6", "61.0", "0.24"]}
{"pcdb_id": 500220, "raw": ["500220", "020052", "0", "2011/May/04 13:42", "Brook Design Hardware Ltd", "Brookvent", "Airstream 1.1E", "", "2009", "current", "", "1", "0", "2", "2", "", "4", "1", "21.0", "0.23", "", "2", "29.0", "0.20", "", "3", "37.0", "0.24", "", "4", "45.0", "0.27"]}
{"pcdb_id": 500221, "raw": ["500221", "020011", "0", "2015/Nov/11 10:34", "Vectaire Ltd", "Vectaire", "WHHRC180DC", "", "2009", "current", "", "3", "0", "2", "1", "1", "3", "1", "15.0", "0.85", "88", "2", "21.0", "1.03", "88", "3", "27.0", "1.31", "85"]}
{"pcdb_id": 500222, "raw": ["500222", "020011", "0", "2015/Nov/11 10:34", "Vectaire Ltd", "Vectaire", "WHHRM300DC", "", "2009", "current", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "0.60", "90", "2", "21.0", "0.66", "90", "3", "27.0", "0.80", "87", "4", "33.0", "0.98", "86", "5", "39.0", "1.19", "84", "6", "45.0", "1.41", "82"]}
{"pcdb_id": 500223, "raw": ["500223", "020083", "0", "2015/Nov/11 10:34", "Applied Energy Products Ltd", "Xpelair", "Xcell 400 QV", "", "2010", "current", "", "3", "0", "2", "1", "1", "7", "1", "15.0", "0.67", "90", "2", "21.0", "0.72", "90", "3", "27.0", "0.84", "90", "4", "33.0", "1.00", "89", "5", "39.0", "1.17", "88", "6", "45.0", "1.36", "87", "7", "51.0", "1.56", "86"]}
{"pcdb_id": 500224, "raw": ["500224", "020002", "0", "2016/May/26 14:29", "Vent Axia Ltd", "Vent Axia", "Kinetic E", "", "2010", "2016", "", "3", "0", "2", "1", "1", "2", "1", "15.0", "0.60", "90", "2", "21.0", "0.79", "90"]}
{"pcdb_id": 500225, "raw": ["500225", "020031", "0", "2013/Oct/24 09:06", "NIBE Energy Systems Ltd", "NIBE", "F370", "", "2010", "current", "", "1", "1", "2", "1", "", "6", "1", "21.0", "0.66", "", "2", "29.0", "0.62", "", "3", "37.0", "0.65", "", "4", "45.0", "0.71", "", "5", "53.0", "0.79", "", "6", "61.0", "0.90"]}
{"pcdb_id": 500226, "raw": ["500226", "020048", "0", "2010/Dec/18 08:49", "Manrose Manufacturing Ltd", "Manrose", "MANI2000", "", "", "current", "", "1", "0", "2", "1", "", "3", "1", "21.0", "0.24", "", "2", "29.0", "0.18", "", "3", "37.0", "0.21"]}
{"pcdb_id": 500227, "raw": ["500227", "020027", "0", "2015/Nov/11 10:34", "EnviroVent Ltd", "EnviroVent", "Compakt", "", "2010", "current", "", "3", "0", "2", "1", "1", "3", "1", "15.0", "0.50", "89", "2", "21.0", "0.73", "89", "3", "27.0", "1.00", "86"]}
{"pcdb_id": 500228, "raw": ["500228", "020008", "0", "2016/Jul/14 15:51", "Passivent Ltd", "Passivent", "1Hybrid HR 3", "", "2008", "2013", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "0.47", "90", "2", "21.0", "0.53", "90", "3", "27.0", "0.65", "87", "4", "33.0", "0.79", "87", "5", "39.0", "0.94", "87", "6", "45.0", "1.10", "88"]}
{"pcdb_id": 500231, "raw": ["500231", "020052", "0", "2015/Nov/11 10:34", "Brookvent", "Brookvent", "AirCycle", "", "2010", "current", "", "3", "0", "2", "1", "1", "3", "1", "15.0", "0.73", "89", "2", "21.0", "0.83", "89", "3", "27.0", "0.98", "86"]}
{"pcdb_id": 500232, "raw": ["500232", "020050", "0", "2011/Feb/22 17:22", "Aereco Ltd", "Aereco", "V4A Premium", "V4A336EX", "2010", "current", "", "1", "0", "2", "1", "", "4", "1", "21.0", "0.33", "", "2", "29.0", "0.29", "", "3", "37.0", "0.27", "", "4", "45.0", "0.26"]}
{"pcdb_id": 500233, "raw": ["500233", "020003", "0", "2013/Oct/24 09:06", "The Nuaire Group", "Nuaire", "MEVDC", "", "2011", "current", "", "1", "0", "2", "2", "", "5", "1", "21.0", "0.35", "", "2", "29.0", "0.30", "", "3", "37.0", "0.31", "", "4", "45.0", "0.33", "", "5", "53.0", "0.38"]}
{"pcdb_id": 500235, "raw": ["500235", "020003", "0", "2015/Nov/11 10:34", "The Nuaire Group", "Nuaire", "MRXBOX90M", "", "2010", "current", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "0.60", "89", "2", "21.0", "0.66", "90", "3", "27.0", "0.80", "87", "4", "33.0", "0.98", "89", "5", "39.0", "1.19", "93", "6", "45.0", "1.41", "99"]}
{"pcdb_id": 500236, "raw": ["500236", "020059", "0", "2015/Nov/11 10:34", "Ventilation Systems PrJSC", "VENTS", "VUT 600 WH EC", "", "2010", "current", "", "3", "0", "2", "1", "1", "4", "2", "21.0", "1.35", "89", "3", "27.0", "1.38", "89", "4", "33.0", "1.48", "87", "5", "39.0", "1.60", "86"]}
{"pcdb_id": 500237, "raw": ["500237", "020059", "0", "2015/Nov/11 10:34", "Ventilation Systems PrJSC", "VENTS", "VUT 300 WH EC", "", "2010", "current", "", "3", "0", "2", "1", "1", "4", "1", "15.0", "0.99", "89", "2", "21.0", "0.96", "89", "3", "27.0", "1.01", "88", "4", "33.0", "1.09", "87"]}
{"pcdb_id": 500238, "raw": ["500238", "020059", "0", "2015/Nov/11 10:34", "Ventilation Systems PrJSC", "VENTS", "VUT 300V mini EC", "", "2010", "current", "", "3", "0", "2", "1", "1", "4", "1", "15.0", "0.76", "59", "2", "21.0", "0.91", "59", "3", "27.0", "1.13", "54", "4", "33.0", "1.38", "53"]}
{"pcdb_id": 500239, "raw": ["500239", "020059", "0", "2015/Nov/11 10:34", "Ventilation Systems PrJSC", "VENTS", "VUT 400 WH EC", "", "2010", "current", "", "3", "0", "2", "1", "1", "5", "1", "15.0", "0.90", "89", "2", "21.0", "0.89", "89", "3", "27.0", "0.97", "87", "4", "33.0", "1.09", "87", "5", "39.0", "1.22", "86"]}
{"pcdb_id": 500240, "raw": ["500240", "020059", "0", "2015/Nov/11 10:34", "Ventilation Systems PrJSC", "VENTS", "VUT 300H mini EC", "", "2010", "current", "", "3", "0", "2", "1", "1", "3", "1", "15.0", "0.90", "63", "2", "21.0", "1.10", "63", "3", "27.0", "1.37", "58"]}
{"pcdb_id": 500241, "raw": ["500241", "020078", "0", "2013/Nov/25 09:40", "Villavent Ltd", "Systemair", "K 160 EC", "", "2011", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.24", "", "2", "29.0", "0.27", "", "3", "37.0", "0.30", "", "4", "45.0", "0.36", "", "5", "53.0", "0.43", "", "6", "61.0", "0.57"]}
{"pcdb_id": 500242, "raw": ["500242", "020078", "0", "2013/Nov/25 09:40", "Villavent Ltd", "Systemair", "KVKE 125 EC", "", "2011", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.25", "", "2", "29.0", "0.27", "", "3", "37.0", "0.30", "", "4", "45.0", "0.35", "", "5", "53.0", "0.42", "", "6", "61.0", "0.53"]}
{"pcdb_id": 500243, "raw": ["500243", "020041", "0", "2015/Nov/11 10:34", "Polypipe Ltd", "Polypipe Ventilation", "HR02L", "", "2010", "current", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "0.60", "91", "2", "21.0", "0.66", "91", "3", "27.0", "0.80", "91", "4", "33.0", "0.96", "90", "5", "39.0", "1.15", "90", "6", "45.0", "1.35", "89"]}
{"pcdb_id": 500244, "raw": ["500244", "020041", "0", "2015/Nov/11 10:34", "Polypipe Ltd", "Polypipe Ventilation", "HR03L", "", "2010", "current", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "0.78", "91", "2", "21.0", "0.83", "91", "3", "27.0", "0.97", "91", "4", "33.0", "1.14", "90", "5", "39.0", "1.33", "90", "6", "45.0", "1.54", "89"]}
{"pcdb_id": 500245, "raw": ["500245", "020060", "0", "2011/Mar/21 08:56", "Addvent", "Addvent", "AVWH2N", "", "2006", "current", "", "1", "0", "2", "1", "", "3", "1", "21.0", "0.24", "", "2", "29.0", "0.18", "", "3", "37.0", "0.21"]}
{"pcdb_id": 500246, "raw": ["500246", "020060", "0", "2015/Nov/11 10:34", "Addvent", "Addvent", "AVHRU4", "", "2010", "current", "", "3", "0", "2", "1", "1", "4", "1", "15.0", "0.75", "90", "2", "21.0", "0.87", "90", "3", "27.0", "1.05", "87", "4", "33.0", "1.27", "86"]}
{"pcdb_id": 500247, "raw": ["500247", "020035", "0", "2015/Nov/11 10:34", "Rega Ventilation Ltd", "RegaVent", "200 DC", "", "2011", "current", "", "3", "0", "2", "1", "1", "4", "1", "15.0", "0.69", "77", "2", "21.0", "0.84", "77", "3", "27.0", "1.03", "71", "4", "33.0", "1.26", "69"]}
{"pcdb_id": 500248, "raw": ["500248", "020035", "0", "2015/Nov/11 10:34", "Rega Ventilation Ltd", "RegaVent", "650 DC", "", "2011", "current", "", "3", "0", "2", "1", "1", "4", "3", "27.0", "0.63", "70", "4", "33.0", "0.77", "71", "5", "39.0", "1.00", "67", "6", "45.0", "1.27", "65"]}
{"pcdb_id": 500249, "raw": ["500249", "020003", "0", "2015/Nov/11 10:34", "The Nuaire Group", "Nuaire", "MRXBOX95-WH1", "", "2011", "current", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "0.42", "91", "2", "21.0", "0.50", "91", "3", "27.0", "0.61", "89", "4", "33.0", "0.75", "88", "5", "39.0", "0.90", "87", "6", "45.0", "1.05", "85"]}
{"pcdb_id": 500250, "raw": ["500250", "020007", "0", "2015/Nov/11 10:34", "Titon Hardware Ltd", "Titon", "HRV1.75 Q Plus", "", "2009", "current", "", "3", "0", "2", "1", "1", "5", "1", "15.0", "0.42", "90", "2", "21.0", "0.54", "90", "3", "27.0", "0.72", "89", "4", "33.0", "0.93", "88", "5", "39.0", "1.16", "87"]}
{"pcdb_id": 500251, "raw": ["500251", "020007", "0", "2016/Feb/22 15:16", "Titon Hardware Ltd", "Titon", "HRV2.75 Q Plus", "", "2009", "2016", "", "3", "0", "2", "1", "1", "5", "1", "15.0", "0.44", "90", "2", "21.0", "0.56", "90", "3", "27.0", "0.73", "89", "4", "33.0", "0.92", "88", "5", "39.0", "1.12", "87"]}
{"pcdb_id": 500252, "raw": ["500252", "020058", "0", "2015/Nov/11 10:34", "Ferrob Ltd", "Ferrob", "Infinity 9000", "", "2010", "current", "", "3", "0", "2", "1", "1", "4", "1", "15.0", "0.75", "90", "2", "21.0", "0.87", "90", "3", "27.0", "1.05", "87", "4", "33.0", "1.27", "86"]}
{"pcdb_id": 500253, "raw": ["500253", "020061", "0", "2015/Nov/11 10:34", "Maico Ventilation UK Ltd", "Maico", "WRG 180 EC", "", "2009", "current", "", "3", "0", "2", "1", "1", "3", "1", "15.0", "0.85", "88", "2", "21.0", "1.03", "88", "3", "27.0", "1.31", "85"]}
{"pcdb_id": 500254, "raw": ["500254", "020061", "0", "2015/Nov/11 10:34", "Maico Ventilation UK Ltd", "Maico", "Aeronom WS 250", "", "2011", "current", "", "3", "0", "2", "1", "1", "4", "1", "15.0", "1.05", "87", "2", "21.0", "1.12", "87", "3", "27.0", "1.35", "87", "4", "33.0", "1.64", "87"]}
{"pcdb_id": 500255, "raw": ["500255", "020061", "0", "2015/Nov/11 10:34", "Maico Ventilation UK Ltd", "Maico", "Aeronom WR 300", "", "2011", "current", "", "3", "0", "2", "1", "1", "4", "1", "15.0", "0.76", "83", "2", "21.0", "0.80", "84", "3", "27.0", "0.89", "83", "4", "33.0", "0.98", "81"]}
{"pcdb_id": 500256, "raw": ["500256", "020061", "0", "2015/Nov/11 10:34", "Maico Ventilation UK Ltd", "Maico", "Aeronom WR 400", "", "2011", "current", "", "3", "0", "2", "1", "1", "4", "1", "15.0", "0.85", "84", "2", "21.0", "0.83", "84", "3", "27.0", "0.92", "84", "4", "33.0", "1.06", "83"]}
{"pcdb_id": 500257, "raw": ["500257", "020061", "0", "2015/Nov/11 10:34", "Maico Ventilation UK Ltd", "Maico", "Aeronom WR 600", "", "2011", "current", "", "3", "0", "2", "1", "1", "5", "1", "15.0", "0.96", "81", "2", "21.0", "1.00", "81", "3", "27.0", "1.08", "83", "4", "33.0", "1.19", "83", "5", "39.0", "1.31", "81"]}
{"pcdb_id": 500258, "raw": ["500258", "020031", "0", "2013/Oct/24 09:06", "NIBE Energy Systems Ltd", "NIBE", "Fighter 470", "", "2011", "current", "", "1", "1", "2", "1", "", "6", "1", "21.0", "0.65", "", "2", "29.0", "0.60", "", "3", "37.0", "0.65", "", "4", "45.0", "0.78", "", "5", "53.0", "0.87", "", "6", "61.0", "1.02"]}
{"pcdb_id": 500259, "raw": ["500259", "020027", "0", "2011/Jul/25 14:11", "EnviroVent Ltd", "EnviroVent", "OZEO", "", "2011", "current", "", "1", "0", "2", "2", "", "6", "1", "21.0", "0.30", "", "2", "29.0", "0.28", "", "3", "37.0", "0.25", "", "4", "45.0", "0.24", "", "5", "53.0", "0.25", "", "6", "61.0", "0.27"]}
{"pcdb_id": 500260, "raw": ["500260", "020011", "0", "2011/Jul/25 14:44", "Vectaire Ltd", "Vectaire", "MBOX 125/2DC-B", "", "2011", "current", "", "1", "0", "2", "1", "", "5", "1", "21.0", "0.20", "", "2", "29.0", "0.26", "", "3", "37.0", "0.34", "", "4", "45.0", "0.44", "", "5", "53.0", "0.55"]}
{"pcdb_id": 500261, "raw": ["500261", "020042", "0", "2015/Nov/11 10:34", "Brink Climate Systems B.V.", "Brink", "Renovent HR 4/0 R Large", "", "2008", "current", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "0.97", "82", "2", "21.0", "0.99", "83", "3", "27.0", "1.11", "82", "4", "33.0", "1.28", "81", "5", "39.0", "1.48", "80", "6", "45.0", "1.69", "79"]}
{"pcdb_id": 500262, "raw": ["500262", "020027", "0", "2015/Nov/11 10:34", "EnviroVent Ltd", "EnviroVent", "IDEO", "", "2011", "current", "", "3", "0", "2", "1", "1", "5", "2", "21.0", "0.98", "87", "3", "27.0", "0.97", "87", "4", "33.0", "1.12", "87", "5", "39.0", "1.37", "86", "6", "45.0", "1.67", "85"]}
{"pcdb_id": 500263, "raw": ["500263", "020009", "0", "2015/Nov/11 10:34", "Vortice Ltd", "Vortice", "Vort Prometeo HR 400 M", "", "2008", "current", "", "3", "0", "2", "1", "1", "7", "1", "15.0", "0.55", "91", "2", "21.0", "0.59", "91", "3", "27.0", "0.68", "89", "4", "33.0", "0.80", "88", "5", "39.0", "0.93", "88", "6", "45.0", "1.08", "87", "7", "51.0", "1.23", "86"]}
{"pcdb_id": 500266, "raw": ["500266", "020003", "0", "2013/Oct/24 09:06", "The Nuaire Group", "Nuaire", "MEVDC2", "", "2011", "current", "", "1", "0", "2", "2", "", "5", "1", "21.0", "0.35", "", "2", "29.0", "0.30", "", "3", "37.0", "0.31", "", "4", "45.0", "0.33", "", "5", "53.0", "0.38"]}
{"pcdb_id": 500267, "raw": ["500267", "020066", "0", "2013/Nov/25 09:40", "J Pichler GmbH", "Pichler", "08 LG 180", "", "2010", "current", "", "3", "0", "2", "1", "3", "6", "1", "15.0", "0.91", "89", "2", "21.0", "1.01", "90", "3", "27.0", "1.20", "86", "4", "33.0", "1.44", "84", "5", "39.0", "1.70", "82", "6", "45.0", "1.98", "80"]}
{"pcdb_id": 500268, "raw": ["500268", "020066", "0", "2013/Nov/25 09:40", "J Pichler GmbH", "Pichler", "08 LG 250", "", "2010", "current", "", "3", "0", "2", "1", "3", "6", "1", "15.0", "0.69", "88", "2", "21.0", "0.67", "88", "3", "27.0", "0.73", "88", "4", "33.0", "0.84", "87", "5", "39.0", "0.96", "86", "6", "45.0", "1.09", "85"]}
{"pcdb_id": 500269, "raw": ["500269", "020066", "0", "2013/Nov/25 09:40", "J Pichler GmbH", "Pichler", "08 LG 500", "", "2010", "current", "", "3", "0", "2", "1", "3", "7", "1", "15.0", "0.76", "89", "2", "21.0", "0.73", "89", "3", "27.0", "0.79", "89", "4", "33.0", "0.89", "89", "5", "39.0", "1.01", "88", "6", "45.0", "1.14", "87", "7", "51.0", "1.28", "85"]}
{"pcdb_id": 500270, "raw": ["500270", "020017", "0", "2015/Nov/11 10:34", "Airflow Developments Ltd", "Airflow", "Duplexvent DV50", "", "2011", "current", "", "3", "0", "2", "2", "1", "4", "1", "15.0", "0.99", "80", "2", "21.0", "1.21", "80", "3", "27.0", "1.51", "82", "4", "33.0", "1.86", "82"]}
{"pcdb_id": 500271, "raw": ["500271", "020017", "0", "2015/Nov/11 10:34", "Airflow Developments Ltd", "Airflow", "Duplexvent DV80", "", "2011", "current", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "0.81", "90", "2", "21.0", "0.94", "91", "3", "27.0", "1.14", "90", "4", "33.0", "1.38", "89", "5", "39.0", "1.63", "89", "6", "45.0", "1.90", "88"]}
{"pcdb_id": 500272, "raw": ["500272", "020011", "0", "2015/Nov/11 10:34", "Vectaire Ltd", "Vectaire", "WHHR100/90DC-B Plus", "", "2011", "current", "", "3", "0", "2", "1", "1", "3", "1", "15.0", "0.76", "91", "2", "21.0", "0.90", "91", "3", "27.0", "1.05", "88"]}
{"pcdb_id": 500273, "raw": ["500273", "020002", "0", "2015/Nov/11 10:34", "Vent Axia Ltd", "Vent Axia", "Astra", "", "2011", "current", "", "3", "0", "2", "1", "1", "4", "1", "15.0", "0.67", "90", "2", "21.0", "0.85", "90", "3", "27.0", "1.09", "87", "4", "33.0", "1.36", "86"]}
{"pcdb_id": 500274, "raw": ["500274", "020048", "0", "2015/Nov/11 10:34", "Manrose Manufacturing Ltd", "Manrose", "MANHR4500DC2", "", "2011", "current", "", "3", "0", "2", "1", "1", "4", "1", "15.0", "0.67", "90", "2", "21.0", "0.85", "90", "3", "27.0", "1.09", "87", "4", "33.0", "1.36", "86"]}
{"pcdb_id": 500276, "raw": ["500276", "020002", "0", "2016/May/26 14:27", "Vent Axia Ltd", "Vent Axia", "Sentinel Kinetic VS", "", "2011", "2016", "", "3", "0", "2", "1", "1", "4", "1", "15.0", "0.61", "90", "2", "21.0", "0.74", "90", "3", "27.0", "0.95", "90", "4", "33.0", "1.19", "90"]}
{"pcdb_id": 500277, "raw": ["500277", "020042", "0", "2016/Apr/12 16:01", "Brink Climate Systems B.V.", "Brink", "Renovent Excellent 400", "", "2011", "current", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "0.63", "89", "2", "21.0", "0.61", "89", "3", "27.0", "0.66", "87", "4", "33.0", "0.74", "86", "5", "39.0", "0.84", "85", "6", "45.0", "0.95", "84"]}
{"pcdb_id": 500278, "raw": ["500278", "020070", "0", "2012/Feb/27 12:02", "Soler & Palau Ltd", "S & P", "OZEO e ECOWATT", "", "2011", "current", "", "1", "0", "2", "2", "", "6", "1", "21.0", "0.30", "", "2", "29.0", "0.28", "", "3", "37.0", "0.25", "", "4", "45.0", "0.24", "", "5", "53.0", "0.25", "", "6", "61.0", "0.27"]}
{"pcdb_id": 500281, "raw": ["500281", "020071", "0", "2015/Nov/11 10:34", "Maico Italia s.p.a.", "Elicent", "AERA IN LINE", "", "2011", "current", "", "3", "0", "2", "1", "1", "3", "1", "15.0", "0.97", "91", "2", "21.0", "1.10", "91", "3", "27.0", "1.26", "88"]}
{"pcdb_id": 500282, "raw": ["500282", "020043", "0", "2015/Nov/11 10:34", "Total Home Environment Ltd", "Genvex", "GE Premium 2 H OPT 300", "", "2009", "current", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "0.92", "82", "2", "21.0", "0.86", "83", "3", "27.0", "0.93", "84", "4", "33.0", "1.07", "84", "5", "39.0", "1.24", "85", "6", "45.0", "1.43", "84"]}
{"pcdb_id": 500283, "raw": ["500283", "020043", "0", "2015/Nov/11 10:34", "Total Home Environment Ltd", "Genvex", "GE Premium 1 H OPT 300", "", "2009", "current", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "0.96", "82", "2", "21.0", "0.93", "83", "3", "27.0", "1.01", "83", "4", "33.0", "1.16", "82", "5", "39.0", "1.34", "82", "6", "45.0", "1.54", "80"]}
{"pcdb_id": 500284, "raw": ["500284", "020043", "0", "2015/Nov/11 10:34", "Total Home Environment Ltd", "Genvex", "Combi 185 S OPT 310", "", "2009", "current", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "0.95", "80", "2", "21.0", "0.92", "80", "3", "27.0", "1.00", "82", "4", "33.0", "1.13", "82", "5", "39.0", "1.29", "80", "6", "45.0", "1.47", "78"]}
{"pcdb_id": 500285, "raw": ["500285", "020072", "0", "2016/Mar/17 11:16", "Nilan A/S", "Nilan", "Comfort 300T", "", "2010", "current", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "0.72", "89", "2", "21.0", "0.72", "88", "3", "27.0", "0.83", "88", "4", "33.0", "1.00", "88", "5", "39.0", "1.21", "88", "6", "45.0", "1.43", "89"]}
{"pcdb_id": 500286, "raw": ["500286", "020008", "0", "2016/Jul/14 15:51", "Passivent Ltd", "Passivent", "iHybrid HR1", "", "2010", "2013", "", "3", "0", "2", "1", "1", "3", "1", "15.0", "0.50", "89", "2", "21.0", "0.73", "89", "3", "27.0", "1.00", "86"]}
{"pcdb_id": 500287, "raw": ["500287", "020007", "0", "2015/Nov/11 10:34", "Titon Hardware Ltd", "Titon", "HRV 10 Q Plus", "", "", "current", "", "3", "0", "2", "1", "1", "7", "1", "15.0", "0.48", "92", "2", "21.0", "0.52", "92", "3", "27.0", "0.63", "91", "4", "33.0", "0.78", "90", "5", "39.0", "0.94", "89", "6", "45.0", "1.11", "87", "7", "51.0", "1.29", "85"]}
{"pcdb_id": 500288, "raw": ["500288", "020070", "0", "2015/Nov/11 10:34", "Soler & Palau Ltd", "S & P", "IDEO 325 ECOWATT", "", "2011", "current", "", "3", "0", "2", "1", "1", "5", "2", "21.0", "0.98", "87", "3", "27.0", "0.97", "87", "4", "33.0", "1.12", "87", "5", "39.0", "1.37", "86", "6", "45.0", "1.67", "85"]}
{"pcdb_id": 500289, "raw": ["500289", "020002", "0", "2016/May/26 14:20", "Vent Axia Ltd", "Vent Axia", "Sentinel Kinetic Plus BS", "", "2012", "current", "", "3", "0", "2", "1", "3", "7", "1", "15.0", "0.42", "91", "2", "21.0", "0.44", "91", "3", "27.0", "0.52", "90", "4", "33.0", "0.63", "90", "5", "39.0", "0.76", "90", "6", "45.0", "0.90", "91", "7", "51.0", "1.05", "91"]}
{"pcdb_id": 500290, "raw": ["500290", "020058", "0", "2012/Apr/23 18:47", "Ferrob Ltd", "Ferrob", "Infinity 9050", "", "2008", "current", "", "1", "0", "2", "1", "", "5", "1", "21.0", "0.55", "", "2", "29.0", "0.83", "", "3", "37.0", "0.65", "", "4", "45.0", "0.54", "", "5", "53.0", "0.45"]}
{"pcdb_id": 500291, "raw": ["500291", "020017", "0", "2015/Nov/11 10:34", "Airflow Developments Ltd", "Airflow", "Duplexvent DV72 E", "", "2012", "current", "", "3", "0", "2", "1", "1", "4", "1", "15.0", "0.70", "90", "2", "21.0", "0.92", "90", "3", "27.0", "1.20", "87", "4", "33.0", "1.50", "86"]}
{"pcdb_id": 500292, "raw": ["500292", "020073", "0", "2015/Nov/11 10:34", "Dantherm Air Handling A/S", "Dantherm", "HCH 5", "", "2010", "current", "", "3", "0", "2", "1", "1", "4", "2", "21.0", "0.58", "82", "3", "27.0", "0.65", "82", "4", "33.0", "0.76", "83", "5", "39.0", "0.90", "84"]}
{"pcdb_id": 500293, "raw": ["500293", "020073", "0", "2015/Nov/11 10:34", "Dantherm Air Handling A/S", "Dantherm", "HCH 8", "", "2010", "current", "", "3", "0", "2", "1", "1", "4", "3", "27.0", "0.70", "82", "4", "33.0", "0.82", "81", "5", "39.0", "0.98", "82", "6", "45.0", "1.15", "82"]}
{"pcdb_id": 500294, "raw": ["500294", "020073", "0", "2015/Nov/11 10:34", "Dantherm Air Handling A/S", "Dantherm", "HCV 5", "", "2010", "current", "", "3", "0", "2", "1", "1", "4", "2", "21.0", "0.64", "82", "3", "27.0", "0.72", "82", "4", "33.0", "0.85", "83", "5", "39.0", "1.01", "84"]}
{"pcdb_id": 500295, "raw": ["500295", "020002", "0", "2013/Oct/02 17:18", "Vent Axia Ltd", "Vent Axia", "MVDC-MS A", "", "", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.16", "", "2", "29.0", "0.15", "", "3", "37.0", "0.17", "", "4", "45.0", "0.20", "", "5", "53.0", "0.24", "", "6", "61.0", "0.28"]}
{"pcdb_id": 500296, "raw": ["500296", "020002", "0", "2013/Oct/02 17:18", "Vent Axia Ltd", "Vent Axia", "Sentinel Multivent A", "", "2012", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.16", "", "2", "29.0", "0.16", "", "3", "37.0", "0.17", "", "4", "45.0", "0.21", "", "5", "53.0", "0.24", "", "6", "61.0", "0.29"]}
{"pcdb_id": 500297, "raw": ["500297", "020003", "0", "2013/Sep/20 15:22", "The Nuaire Group", "Nuaire", "MRXBOX95B-LP1", "", "2012", "current", "", "3", "0", "2", "1", "3", "5", "1", "15.0", "0.59", "76", "2", "21.0", "0.71", "76", "3", "27.0", "0.91", "78", "4", "33.0", "1.15", "79", "5", "39.0", "1.40", "79"]}
{"pcdb_id": 500298, "raw": ["500298", "020002", "0", "2015/Nov/11 10:34", "Vent Axia Ltd", "Vent Axia", "Kinetic Plus E", "", "2012", "current", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "0.40", "94", "2", "21.0", "0.43", "94", "3", "27.0", "0.53", "94", "4", "33.0", "0.65", "93", "5", "39.0", "0.78", "93", "6", "45.0", "0.93", "92"]}
{"pcdb_id": 500299, "raw": ["500299", "020009", "0", "2015/Nov/11 10:34", "Vortice Ltd", "Vortice", "Vort Prometeo Plus HR400", "", "2012", "current", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "0.48", "91", "2", "21.0", "0.54", "91", "3", "27.0", "0.66", "89", "4", "33.0", "0.80", "88", "5", "39.0", "0.95", "88", "6", "45.0", "1.11", "87"]}
{"pcdb_id": 500300, "raw": ["500300", "020076", "0", "2015/Nov/11 10:34", "Elek-Trends Productions", "Veneco", "V4275", "", "2012", "current", "", "3", "0", "2", "1", "1", "5", "2", "21.0", "0.73", "90", "3", "27.0", "0.82", "90", "4", "33.0", "0.95", "89", "5", "39.0", "1.11", "88", "6", "45.0", "1.27", "87"]}
{"pcdb_id": 500301, "raw": ["500301", "020076", "0", "2015/Nov/11 10:34", "Elek-Trends Productions", "Veneco", "V4375", "", "2012", "current", "", "3", "0", "2", "1", "1", "5", "2", "21.0", "0.81", "90", "3", "27.0", "0.90", "90", "4", "33.0", "1.03", "89", "5", "39.0", "1.17", "88", "6", "45.0", "1.33", "87"]}
{"pcdb_id": 500302, "raw": ["500302", "020076", "0", "2015/Nov/11 10:34", "Elek-Trends Productions", "Veneco", "V4450", "", "2012", "current", "", "3", "0", "2", "1", "1", "7", "1", "15.0", "1.01", "90", "2", "21.0", "1.04", "91", "3", "27.0", "1.11", "90", "4", "33.0", "1.20", "89", "5", "39.0", "1.31", "88", "6", "45.0", "1.42", "86", "7", "51.0", "1.54", "85"]}
{"pcdb_id": 500303, "raw": ["500303", "020003", "0", "2015/Nov/11 10:34", "The Nuaire Group", "Nuaire", "MRXBOX95-WM2", "", "2012", "current", "", "3", "0", "2", "1", "1", "4", "1", "15.0", "0.56", "87", "2", "21.0", "0.68", "87", "3", "27.0", "0.85", "86", "4", "33.0", "1.06", "86"]}
{"pcdb_id": 500304, "raw": ["500304", "020078", "0", "2015/Nov/11 10:34", "Villavent Ltd", "Systemair", "SAVE VTC 300", "", "2012", "current", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "0.82", "76", "2", "21.0", "0.82", "76", "3", "27.0", "0.92", "79", "4", "33.0", "1.06", "80", "5", "39.0", "1.22", "81", "6", "45.0", "1.40", "81"]}
{"pcdb_id": 500305, "raw": ["500305", "020038", "0", "2012/Aug/21 07:53", "Titon Hardware Ltd", "Axco", "CEV 130", "", "2009", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.20", "", "2", "29.0", "0.18", "", "3", "37.0", "0.18", "", "4", "45.0", "0.19", "", "5", "53.0", "0.22", "", "6", "61.0", "0.25"]}
{"pcdb_id": 500306, "raw": ["500306", "020038", "0", "2012/Aug/28 20:31", "Titon Hardware Ltd", "Axco", "CEV 130", "", "2009", "current", "", "1", "0", "2", "2", "", "5", "1", "21.0", "0.25", "", "2", "29.0", "0.22", "", "3", "37.0", "0.23", "", "4", "45.0", "0.25", "", "5", "53.0", "0.30"]}
{"pcdb_id": 500308, "raw": ["500308", "020038", "0", "2015/Nov/11 10:34", "Titon Hardware Ltd", "Beam", "AXCO MVHR C50", "", "2008", "current", "", "3", "0", "2", "1", "1", "4", "1", "15.0", "0.71", "90", "2", "21.0", "0.82", "89", "3", "27.0", "0.99", "87", "4", "33.0", "1.19", "87"]}
{"pcdb_id": 500309, "raw": ["500309", "020038", "0", "2015/Nov/11 10:34", "Titon Hardware Ltd", "Beam", "AXCO MVHR C75", "", "2009", "current", "", "3", "0", "2", "1", "1", "5", "1", "15.0", "0.42", "90", "2", "21.0", "0.54", "90", "3", "27.0", "0.72", "89", "4", "33.0", "0.93", "88", "5", "39.0", "1.16", "87"]}
{"pcdb_id": 500310, "raw": ["500310", "020038", "0", "2015/Nov/11 10:34", "Titon Hardware Ltd", "Beam", "AXCO MVHR C100", "", "2009", "current", "", "3", "0", "2", "1", "1", "5", "1", "15.0", "0.44", "90", "2", "21.0", "0.56", "90", "3", "27.0", "0.73", "89", "4", "33.0", "0.92", "88", "5", "39.0", "1.12", "87"]}
{"pcdb_id": 500311, "raw": ["500311", "020038", "0", "2015/Nov/11 10:34", "Titon Hardware Ltd", "Beam", "AXCO MVHR C130", "", "2011", "current", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "0.48", "92", "2", "21.0", "0.52", "92", "3", "27.0", "0.63", "91", "4", "33.0", "0.78", "90", "5", "39.0", "0.94", "89", "6", "45.0", "1.11", "87"]}
{"pcdb_id": 500312, "raw": ["500312", "020027", "0", "2015/Nov/11 10:34", "EnviroVent Ltd", "EnviroVent", "energiSava 280", "", "2011", "current", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "0.57", "88", "2", "21.0", "0.68", "88", "3", "27.0", "0.87", "84", "4", "33.0", "1.11", "83", "5", "39.0", "1.37", "83", "6", "45.0", "1.64", "83"]}
{"pcdb_id": 500313, "raw": ["500313", "020043", "0", "2015/Nov/11 10:34", "Genvex A/S", "Genvex", "GES Energy 2 BP", "", "2012", "current", "", "3", "0", "2", "1", "1", "7", "1", "15.0", "1.22", "92", "2", "21.0", "1.03", "92", "3", "27.0", "1.10", "90", "4", "33.0", "1.28", "89", "5", "39.0", "1.54", "88", "6", "45.0", "1.84", "88", "7", "51.0", "2.16", "87"]}
{"pcdb_id": 500314, "raw": ["500314", "020027", "0", "2015/Nov/11 10:34", "EnviroVent Ltd", "EnviroVent", "energiSava 380", "", "2012", "2019", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "0.41", "93", "2", "21.0", "0.47", "93", "3", "27.0", "0.59", "91", "4", "33.0", "0.73", "90", "5", "39.0", "0.89", "88", "6", "45.0", "1.05", "86"]}
{"pcdb_id": 500315, "raw": ["500315", "020035", "0", "2015/Nov/11 10:34", "Rega Ventilation Ltd", "RegaVent", "650P-DC", "", "2012", "current", "", "3", "0", "2", "1", "1", "6", "2", "21.0", "0.70", "81", "3", "27.0", "0.69", "81", "4", "33.0", "0.83", "82", "5", "39.0", "1.06", "81", "6", "45.0", "1.34", "81", "7", "51.0", "1.65", "80"]}
{"pcdb_id": 500316, "raw": ["500316", "020078", "0", "2015/Nov/11 10:34", "Systemair Fans & Spares Ltd", "Villavent", "VTC Low E", "", "2012", "current", "", "3", "0", "2", "1", "1", "4", "1", "15.0", "0.80", "85", "2", "21.0", "0.93", "85", "3", "27.0", "1.07", "83", "4", "33.0", "1.21", "82"]}
{"pcdb_id": 500317, "raw": ["500317", "020042", "0", "2015/Nov/11 10:34", "Brink Climate Systems B.V.", "Brink", "Renovent Sky 300", "", "2012", "current", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "0.60", "90", "2", "21.0", "0.62", "90", "3", "27.0", "0.71", "87", "4", "33.0", "0.83", "86", "5", "39.0", "0.97", "85", "6", "45.0", "1.12", "84"]}
{"pcdb_id": 500318, "raw": ["500318", "020041", "0", "2013/Sep/20 17:51", "Polypipe Ltd", "Polypipe Ventilation", "Silavent HRX", "", "2012", "current", "", "3", "0", "2", "1", "1", "5", "1", "15.0", "0.63", "87", "2", "21.0", "0.75", "86", "3", "27.0", "0.93", "85", "4", "33.0", "1.14", "84", "5", "39.0", "1.37", "84"]}
{"pcdb_id": 500319, "raw": ["500319", "020007", "0", "2015/Nov/11 10:34", "Titon Hardware Ltd", "Titon", "HRV1.25 Q Plus", "", "2012", "current", "", "3", "0", "2", "1", "1", "3", "1", "15.0", "0.61", "89", "2", "21.0", "0.86", "89", "3", "27.0", "1.19", "88"]}
{"pcdb_id": 500320, "raw": ["500320", "020002", "0", "2016/May/18 15:30", "Vent Axia Ltd", "Vent Axia", "Sentinel Kinetic 300Z", "", "2012", "current", "", "3", "0", "2", "1", "3", "6", "1", "15.0", "0.54", "78", "2", "21.0", "0.61", "78", "3", "27.0", "0.75", "78", "4", "33.0", "0.93", "78", "5", "39.0", "1.13", "77", "6", "45.0", "1.35", "76"]}
{"pcdb_id": 500321, "raw": ["500321", "020072", "0", "2015/Nov/11 10:34", "Nilan A/S", "Nilan", "Compact P", "7512404", "2012", "current", "", "3", "1", "2", "1", "1", "6", "1", "15.0", "0.73", "85", "2", "21.0", "0.76", "86", "3", "27.0", "0.88", "86", "4", "33.0", "1.03", "85", "5", "39.0", "1.20", "84", "6", "45.0", "1.38", "83"]}
{"pcdb_id": 500322, "raw": ["500322", "020072", "0", "2015/Nov/11 10:34", "Nilan A/S", "Nilan", "Compact P", "7512305", "2012", "current", "", "3", "1", "2", "1", "1", "6", "1", "15.0", "0.73", "85", "2", "21.0", "0.76", "86", "3", "27.0", "0.88", "86", "4", "33.0", "1.03", "85", "5", "39.0", "1.20", "84", "6", "45.0", "1.38", "83"]}
{"pcdb_id": 500323, "raw": ["500323", "020002", "0", "2016/May/18 15:25", "Vent Axia Ltd", "Vent Axia", "Sentinel Kinetic 200Z", "", "2012", "current", "", "3", "0", "2", "1", "3", "4", "1", "15.0", "0.73", "81", "2", "21.0", "0.89", "81", "3", "27.0", "1.12", "79", "4", "33.0", "1.39", "78"]}
{"pcdb_id": 500324, "raw": ["500324", "020013", "0", "2015/Nov/11 10:34", "Johnson & Starley Ltd", "Johnson & Starley", "Q-Vent HR400", "", "2011", "current", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "0.48", "92", "2", "21.0", "0.52", "92", "3", "27.0", "0.63", "91", "4", "33.0", "0.78", "90", "5", "39.0", "0.94", "89", "6", "45.0", "1.11", "87"]}
{"pcdb_id": 500325, "raw": ["500325", "020082", "0", "2015/Nov/11 10:34", "Emmeti SpA", "Emmeti", "RECUPERA SLIM (ER02011-ER + ER02011-EC)", "", "2011", "current", "", "3", "0", "2", "1", "1", "3", "1", "15.0", "0.97", "91", "2", "21.0", "1.10", "91", "3", "27.0", "1.26", "88"]}
{"pcdb_id": 500326, "raw": ["500326", "020082", "0", "2015/Nov/11 10:34", "Emmeti SpA", "Emmeti", "RECUPERA-MED-ER02511-EC", "", "2010", "current", "", "3", "0", "2", "1", "1", "5", "1", "15.0", "0.61", "93", "2", "21.0", "0.69", "93", "3", "27.0", "0.84", "91", "4", "33.0", "1.01", "90", "5", "39.0", "1.20", "89"]}
{"pcdb_id": 500327, "raw": ["500327", "020071", "0", "2015/Nov/11 10:34", "Maico Italia s.p.a.", "Elicent", "AERA 280 EC", "", "2010", "current", "", "3", "0", "2", "1", "1", "5", "1", "15.0", "0.61", "93", "2", "21.0", "0.69", "93", "3", "27.0", "0.84", "91", "4", "33.0", "1.01", "90", "5", "39.0", "1.20", "89"]}
{"pcdb_id": 500328, "raw": ["500328", "020083", "0", "2015/Nov/11 10:34", "Redring Xpelair Group Ltd", "Xpelair", "Xcell Compact XR", "", "2012", "current", "", "3", "0", "2", "1", "1", "3", "1", "15.0", "0.49", "90", "2", "21.0", "0.61", "90", "3", "27.0", "0.77", "87"]}
{"pcdb_id": 500329, "raw": ["500329", "020084", "0", "2021/Oct/20 09:58", "FRÄNKISCHE ROHRWERKE", "FRÄNKISCHE", "profi-air 250 touch", "", "2012", "obsolete", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "0.74", "90", "2", "21.0", "0.78", "90", "3", "27.0", "0.92", "88", "4", "33.0", "1.11", "87", "5", "39.0", "1.32", "86", "6", "45.0", "1.55", "85"]}
{"pcdb_id": 500330, "raw": ["500330", "020084", "0", "2021/Oct/20 09:58", "FRÄNKISCHE ROHRWERKE", "FRÄNKISCHE", "profi-air 400 touch", "", "2012", "obsolete", "", "3", "0", "2", "1", "1", "7", "1", "15.0", "0.88", "86", "2", "21.0", "0.89", "86", "3", "27.0", "0.99", "86", "4", "33.0", "1.13", "85", "5", "39.0", "1.30", "85", "6", "45.0", "1.48", "84", "7", "51.0", "1.66", "83"]}
{"pcdb_id": 500332, "raw": ["500332", "020041", "0", "2017/Apr/26 11:15", "Polypipe Ltd", "Polypipe Ventilation", "Silavent HRX2", "", "2013", "current", "", "3", "0", "2", "1", "1", "7", "1", "15.0", "0.48", "94", "2", "21.0", "0.50", "94", "3", "27.0", "0.59", "93", "4", "33.0", "0.71", "92", "5", "39.0", "0.85", "91", "6", "45.0", "1.00", "90", "7", "51.0", "1.15", "89"]}
{"pcdb_id": 500333, "raw": ["500333", "020017", "0", "2015/Nov/11 10:34", "Airflow Developments Ltd", "Airflow", "Duplexvent BV300", "", "2013", "current", "", "3", "0", "2", "1", "1", "4", "1", "15.0", "0.60", "90", "2", "21.0", "0.78", "90", "3", "27.0", "1.02", "87", "4", "33.0", "1.29", "86"]}
{"pcdb_id": 500334, "raw": ["500334", "020017", "0", "2015/Nov/11 10:34", "Airflow Developments Ltd", "Airflow", "Duplexvent BV400", "", "2013", "current", "", "3", "0", "2", "1", "1", "7", "1", "15.0", "0.46", "92", "2", "21.0", "0.49", "92", "3", "27.0", "0.60", "91", "4", "33.0", "0.74", "90", "5", "39.0", "0.89", "90", "6", "45.0", "1.05", "89", "7", "51.0", "1.23", "88"]}
{"pcdb_id": 500335, "raw": ["500335", "020004", "0", "2014/Aug/04 15:30", "Greenwood Air Management Ltd", "Greenwood", "Vireo HR155CM", "", "2013", "current", "", "3", "0", "2", "1", "3", "3", "1", "15.0", "0.73", "92", "2", "21.0", "0.83", "91", "3", "27.0", "1.00", "90"]}
{"pcdb_id": 500336, "raw": ["500336", "020004", "0", "2014/Aug/04 15:30", "Greenwood Air Management Ltd", "Greenwood", "Vireo HR155WM", "", "2013", "current", "", "3", "0", "2", "1", "3", "3", "1", "15.0", "0.77", "92", "2", "21.0", "0.90", "91", "3", "27.0", "1.10", "90"]}
{"pcdb_id": 500337, "raw": ["500337", "020004", "0", "2014/Aug/04 15:30", "Greenwood Air Management Ltd", "Greenwood", "Vireo HR185WM", "", "2013", "current", "", "3", "0", "2", "1", "3", "4", "1", "15.0", "0.57", "92", "2", "21.0", "0.64", "91", "3", "27.0", "0.76", "91", "4", "33.0", "0.96", "91"]}
{"pcdb_id": 500341, "raw": ["500341", "020052", "0", "2015/Nov/11 10:34", "Brookvent", "Brookvent", "AirCycle 1.2", "", "2013", "current", "", "3", "0", "2", "1", "1", "5", "1", "15.0", "0.59", "91", "2", "21.0", "0.74", "91", "3", "27.0", "0.96", "88", "4", "33.0", "1.20", "87", "5", "39.0", "1.46", "86"]}
{"pcdb_id": 500342, "raw": ["500342", "020052", "0", "2015/Nov/11 10:34", "Brookvent", "Brookvent", "AirCycle 2.2", "", "2013", "current", "", "3", "0", "2", "1", "1", "5", "2", "21.0", "0.62", "91", "3", "27.0", "0.76", "91", "4", "33.0", "0.96", "89", "5", "39.0", "1.20", "88", "6", "45.0", "1.45", "88"]}
{"pcdb_id": 500343, "raw": ["500343", "020035", "0", "2015/Nov/11 10:34", "Rega Ventilation Ltd", "RegaVent", "300R-DC", "", "2013", "current", "", "3", "0", "2", "1", "1", "7", "1", "15.0", "0.70", "89", "2", "21.0", "0.77", "89", "3", "27.0", "0.92", "88", "4", "33.0", "1.11", "87", "5", "39.0", "1.32", "86", "6", "45.0", "1.55", "85", "7", "51.0", "1.78", "84"]}
{"pcdb_id": 500344, "raw": ["500344", "020035", "0", "2015/Nov/11 10:34", "Rega Ventilation Ltd", "RegaVent", "600R-DC", "", "2013", "current", "", "3", "0", "2", "1", "1", "3", "4", "33.0", "0.71", "89", "5", "39.0", "0.86", "90", "6", "45.0", "1.04", "88"]}
{"pcdb_id": 500345, "raw": ["500345", "020031", "0", "2014/Jun/11 13:30", "Genvex A/S", "NIBE", "GV-HR110-250", "", "2013", "current", "", "3", "0", "2", "1", "3", "5", "1", "15.0", "0.81", "91", "2", "21.0", "0.88", "91", "3", "27.0", "1.01", "88", "4", "33.0", "1.16", "86", "5", "39.0", "1.33", "84"]}
{"pcdb_id": 500346, "raw": ["500346", "020031", "0", "2015/Nov/11 10:34", "Genvex A/S", "NIBE", "GV-HR110-400", "", "2013", "current", "", "3", "0", "2", "1", "1", "7", "1", "15.0", "1.22", "92", "2", "21.0", "1.03", "92", "3", "27.0", "1.10", "90", "4", "33.0", "1.28", "89", "5", "39.0", "1.54", "88", "6", "45.0", "1.84", "88", "7", "51.0", "2.16", "87"]}
{"pcdb_id": 500347, "raw": ["500347", "020003", "0", "2015/Nov/11 10:34", "The Nuaire Group", "Nuaire", "MRXBOX95-WM1", "", "2013", "current", "", "3", "0", "2", "1", "1", "2", "1", "15.0", "0.72", "92", "2", "21.0", "0.99", "91"]}
{"pcdb_id": 500349, "raw": ["500349", "020016", "0", "2015/Nov/11 10:34", "ProAir Heat Recovery and Ventilation Systems Ltd", "ProAir", "PA600LI", "", "2013", "current", "", "3", "0", "2", "1", "1", "7", "1", "15.0", "0.59", "93", "2", "21.0", "0.64", "92", "3", "27.0", "0.75", "91", "4", "33.0", "0.89", "90", "5", "39.0", "1.04", "89", "6", "45.0", "1.20", "87", "7", "51.0", "1.37", "86"]}
{"pcdb_id": 500350, "raw": ["500350", "020013", "0", "2015/Nov/11 10:34", "Johnson & Starley Ltd", "Johnson & Starley", "Q Vent 160 MK3", "", "2010", "current", "", "3", "0", "2", "1", "1", "3", "1", "15.0", "0.65", "91", "2", "21.0", "0.84", "90", "3", "27.0", "1.08", "90"]}
{"pcdb_id": 500351, "raw": ["500351", "020041", "0", "2013/Oct/03 13:32", "Polypipe Ltd", "Polypipe Ventilation", "Silavent CMX", "", "2013", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.24", "", "2", "29.0", "0.25", "", "3", "37.0", "0.29", "", "4", "45.0", "0.35", "", "5", "53.0", "0.43", "", "6", "61.0", "0.54"]}
{"pcdb_id": 500352, "raw": ["500352", "020011", "0", "2025/Jul/07 12:00", "Vectaire Ltd", "Vectaire", "WHHR MIDI", "", "2013", "obsolete", "", "3", "0", "2", "1", "1", "5", "1", "15.0", "0.58", "93", "2", "21.0", "0.70", "91", "3", "27.0", "0.87", "90", "4", "33.0", "1.06", "89", "5", "39.0", "1.27", "87"]}
{"pcdb_id": 500353, "raw": ["500353", "020038", "0", "2014/Apr/28 10:00", "AB C.A. Östberg", "Beam", "AXCO HERU 100 S", "", "2013", "current", "", "3", "0", "2", "1", "3", "3", "3", "27.0", "1.11", "83", "4", "33.0", "1.12", "83", "5", "39.0", "1.17", "83"]}
{"pcdb_id": 500354, "raw": ["500354", "020038", "0", "2014/Apr/28 10:00", "AB C.A. Östberg", "Beam", "AXCO HERU 100 T", "", "2013", "current", "", "3", "0", "2", "1", "3", "3", "3", "27.0", "1.31", "83", "4", "33.0", "1.36", "83", "5", "39.0", "1.43", "83"]}
{"pcdb_id": 500355, "raw": ["500355", "020038", "0", "2014/Apr/28 10:00", "AB C.A. Östberg", "Beam", "AXCO HERU 160 T", "", "2013", "current", "", "3", "0", "2", "1", "3", "4", "4", "33.0", "1.08", "81", "5", "39.0", "1.17", "81", "6", "45.0", "1.29", "80", "7", "51.0", "1.43", "79"]}
{"pcdb_id": 500356, "raw": ["500356", "020078", "0", "2014/Apr/28 10:00", "Systemair Fans & Spares Ltd", "Systemair", "SAVE VSR 300", "", "2013", "current", "", "3", "0", "2", "1", "3", "4", "3", "27.0", "1.09", "83", "4", "33.0", "1.17", "84", "5", "39.0", "1.30", "84", "6", "45.0", "1.48", "84"]}
{"pcdb_id": 500357, "raw": ["500357", "020078", "0", "2014/Apr/28 10:00", "Systemair Fans & Spares Ltd", "Systemair", "SAVE VSR 500", "", "2013", "current", "", "3", "0", "2", "1", "3", "3", "4", "33.0", "1.14", "84", "5", "39.0", "1.20", "85", "6", "45.0", "1.29", "87"]}
{"pcdb_id": 500358, "raw": ["500358", "020009", "0", "2013/Nov/25 09:50", "Vortice Ltd", "Vortice", "VORT EVO HR 200", "", "2013", "current", "", "3", "0", "2", "1", "1", "3", "1", "15.0", "0.61", "90", "2", "21.0", "0.80", "89", "3", "27.0", "1.06", "87"]}
{"pcdb_id": 500360, "raw": ["500360", "020083", "0", "2013/Dec/04 09:50", "Redring Xpelair Group Ltd", "Xpelair", "Xcell S120Q Stratum", "92923AW", "2013", "current", "", "3", "0", "2", "1", "1", "3", "1", "15.0", "0.87", "87", "2", "21.0", "1.17", "85", "3", "27.0", "1.61", "84"]}
{"pcdb_id": 500361, "raw": ["500361", "020003", "0", "2014/Feb/18 14:00", "The Nuaire Group", "Nuaire", "MRXBOX95AB-WH1", "", "2013", "current", "", "3", "0", "2", "1", "0", "7", "1", "15.0", "0.52", "88", "2", "21.0", "0.56", "88", "3", "27.0", "0.67", "88", "4", "33.0", "0.78", "86", "5", "39.0", "0.95", "86", "6", "45.0", "1.16", "85", "7", "51.0", "1.40", "85"]}
{"pcdb_id": 500362, "raw": ["500362", "020003", "0", "2014/Feb/18 14:00", "The Nuaire Group", "Nuaire", "MRXBOX95AB-WH2", "", "2013", "current", "", "3", "0", "2", "1", "0", "7", "1", "15.0", "0.60", "89", "2", "21.0", "0.61", "88", "3", "27.0", "0.68", "88", "4", "33.0", "0.79", "87", "5", "39.0", "0.95", "86", "6", "45.0", "1.15", "85", "7", "51.0", "1.38", "85"]}
{"pcdb_id": 500363, "raw": ["500363", "020003", "0", "2014/Feb/18 14:00", "The Nuaire Group", "Nuaire", "MRXBOX95AB-WM1", "", "2013", "current", "", "3", "0", "2", "1", "0", "2", "1", "15.0", "0.91", "86", "2", "21.0", "1.26", "85"]}
{"pcdb_id": 500364, "raw": ["500364", "020003", "0", "2014/Feb/18 14:00", "The Nuaire Group", "Nuaire", "MRXBOX95AB-WM2", "", "2013", "current", "", "3", "0", "2", "1", "0", "6", "1", "15.0", "0.56", "86", "2", "21.0", "0.66", "85", "3", "27.0", "0.79", "84", "4", "33.0", "1.02", "83", "5", "39.0", "1.23", "82", "6", "45.0", "1.52", "82"]}
{"pcdb_id": 500365, "raw": ["500365", "020027", "0", "2014/Feb/18 14:00", "EnviroVent Ltd", "EnviroVent", "OZEO ECOWATT CP", "", "2013", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.43", "", "2", "29.0", "0.37", "", "3", "37.0", "0.36", "", "4", "45.0", "0.36", "", "5", "53.0", "0.35", "", "6", "61.0", "0.34"]}
{"pcdb_id": 500366, "raw": ["500366", "020011", "0", "2014/Feb/18 14:00", "Vectaire Ltd", "Vectaire", "WHHR Maxi", "", "2013", "current", "", "3", "0", "2", "1", "1", "7", "1", "15.0", "0.45", "92", "2", "21.0", "0.47", "92", "3", "27.0", "0.54", "91", "4", "33.0", "0.66", "90", "5", "39.0", "0.80", "90", "6", "45.0", "0.99", "89", "7", "51.0", "1.21", "89"]}
{"pcdb_id": 500367, "raw": ["500367", "020011", "0", "2014/Feb/18 14:00", "Vectaire Ltd", "Vectaire", "WHHR MIDI Plus", "", "2013", "current", "", "3", "0", "2", "1", "1", "4", "1", "15.0", "0.51", "93", "2", "21.0", "0.61", "91", "3", "27.0", "0.75", "90", "4", "33.0", "0.92", "89"]}
{"pcdb_id": 500370, "raw": ["500370", "020017", "0", "2014/Apr/24 12:00", "Airflow Developments Ltd", "Airflow", "Duplexvent DV96SE", "", "2013", "current", "", "3", "0", "2", "1", "1", "5", "1", "15.0", "0.96", "87", "2", "21.0", "1.06", "87", "3", "27.0", "1.21", "86", "4", "33.0", "1.42", "85", "5", "39.0", "1.73", "85"]}
{"pcdb_id": 500371, "raw": ["500371", "020017", "0", "2014/Apr/24 12:00", "Airflow Developments Ltd", "Airflow", "Duplexvent DV110SE", "", "2013", "current", "", "3", "0", "2", "1", "1", "7", "1", "15.0", "0.85", "90", "2", "21.0", "0.82", "89", "3", "27.0", "0.90", "88", "4", "33.0", "1.05", "88", "5", "39.0", "1.22", "87", "6", "45.0", "1.42", "87", "7", "51.0", "1.71", "87"]}
{"pcdb_id": 500372, "raw": ["500372", "020017", "0", "2014/Apr/24 12:00", "Airflow Developments Ltd", "Airflow", "Duplexvent DV145SE", "", "2013", "current", "", "3", "0", "2", "1", "1", "7", "1", "15.0", "1.04", "80", "2", "21.0", "0.95", "82", "3", "27.0", "0.97", "83", "4", "33.0", "1.07", "83", "5", "39.0", "1.19", "84", "6", "45.0", "1.35", "84", "7", "51.0", "1.55", "84"]}
{"pcdb_id": 500373, "raw": ["500373", "020027", "0", "2014/Apr/24 12:00", "EnviroVent Ltd", "EnviroVent", "energiSava 250", "", "2013", "current", "", "3", "0", "2", "1", "1", "3", "1", "15.0", "0.66", "90", "2", "21.0", "0.81", "89", "3", "27.0", "1.01", "87"]}
{"pcdb_id": 500374, "raw": ["500374", "020090", "0", "2014/Apr/28 10:00", "Elta UK Ltd", "Elta Fans", "VIGO 200M", "ISSUE A", "2013", "current", "", "3", "0", "2", "1", "1", "4", "1", "15.0", "0.86", "86", "2", "21.0", "1.03", "85", "3", "27.0", "1.22", "83", "4", "33.0", "1.58", "81"]}
{"pcdb_id": 500375, "raw": ["500375", "020090", "0", "2014/May/21 13:00", "Elta UK Ltd", "Elta Fans", "VIGO 200A", "ISSUE A", "2013", "current", "", "3", "0", "2", "1", "1", "4", "1", "15.0", "0.86", "86", "2", "21.0", "1.03", "85", "3", "27.0", "1.22", "83", "4", "33.0", "1.58", "81"]}
{"pcdb_id": 500376, "raw": ["500376", "020090", "0", "2014/Apr/28 10:00", "EnviroVent Ltd", "Elta Fans", "VIGO 250", "ISSUE A", "2013", "current", "", "3", "0", "2", "1", "1", "3", "1", "15.0", "0.66", "90", "2", "21.0", "0.81", "89", "3", "27.0", "1.01", "87"]}
{"pcdb_id": 500377, "raw": ["500377", "020078", "0", "2014/Jul/01 11:00", "Systemair Fans & Spares Ltd", "Systemair", "SAVE VTR 300/B R", "19592", "2014", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "1.39", "79", "2", "21.0", "1.18", "81", "3", "27.0", "1.12", "83", "4", "33.0", "1.20", "84", "5", "39.0", "1.30", "84", "6", "45.0", "1.46", "83", "7", "51.0", "1.65", "82"]}
{"pcdb_id": 500378, "raw": ["500378", "020078", "0", "2014/Jul/01 11:00", "Systemair Fans & Spares Ltd", "Systemair", "SAVE VTR 300/B L", "19593", "2014", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "1.39", "79", "2", "21.0", "1.18", "81", "3", "27.0", "1.12", "83", "4", "33.0", "1.20", "84", "5", "39.0", "1.30", "84", "6", "45.0", "1.46", "83", "7", "51.0", "1.65", "82"]}
{"pcdb_id": 500379, "raw": ["500379", "020078", "0", "2014/Jun/11 14:00", "Systemair Fans & Spares Ltd", "Systemair", "SAVE VTR 200/B R", "14882", "2014", "current", "", "3", "0", "2", "1", "3", "4", "1", "15.0", "1.66", "70", "2", "21.0", "1.56", "71", "3", "27.0", "1.62", "72", "4", "33.0", "1.81", "72"]}
{"pcdb_id": 500380, "raw": ["500380", "020078", "0", "2014/Jun/11 14:00", "Systemair Fans & Spares Ltd", "Systemair", "SAVE VTR 200/B L", "14883", "2014", "current", "", "3", "0", "2", "1", "3", "4", "1", "15.0", "1.66", "70", "2", "21.0", "1.56", "71", "3", "27.0", "1.62", "72", "4", "33.0", "1.81", "72"]}
{"pcdb_id": 500381, "raw": ["500381", "020013", "0", "2014/Jun/11 14:00", "Johnson & Starley Ltd", "Johnson & Starley", "Q-VENT CE50", "", "2014", "current", "", "1", "0", "2", "1", "", "5", "1", "21.0", "0.26", "", "2", "29.0", "0.28", "", "3", "37.0", "0.35", "", "4", "45.0", "0.42", "", "5", "53.0", "0.54"]}
{"pcdb_id": 500382, "raw": ["500382", "020092", "0", "2014/Jun/11 14:00", "Renson Fabrications Ltd", "Renson", "C+CUBE", "", "2014", "current", "", "1", "0", "2", "1", "", "5", "1", "21.0", "0.23", "", "2", "29.0", "0.19", "", "3", "37.0", "0.27", "", "4", "45.0", "0.24", "", "5", "53.5", "0.23"]}
{"pcdb_id": 500383, "raw": ["500383", "020092", "0", "2014/Jun/11 14:00", "Renson Fabrications Ltd", "Renson", "CBASE", "", "2014", "current", "", "1", "0", "2", "1", "", "5", "1", "21.0", "0.23", "", "2", "29.0", "0.19", "", "3", "37.0", "0.27", "", "4", "45.0", "0.24", "", "5", "53.5", "0.23"]}
{"pcdb_id": 500384, "raw": ["500384", "020092", "0", "2014/Jun/11 14:00", "Renson Fabrications Ltd", "Renson", "HEALTHBOX II", "", "2014", "current", "", "1", "0", "2", "1", "", "5", "1", "21.0", "0.60", "", "2", "29.0", "0.50", "", "3", "37.0", "0.43", "", "4", "45.3", "0.40", "", "5", "53.1", "0.41"]}
{"pcdb_id": 500385, "raw": ["500385", "020090", "0", "2014/Jul/14 14:00", "Elta UK Ltd", "Elta Fans", "MORI MEV", "Issue A", "2014", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.17", "", "2", "29.0", "0.16", "", "3", "37.0", "0.17", "", "4", "45.0", "0.20", "", "5", "53.0", "0.24", "", "6", "61.0", "0.28"]}
{"pcdb_id": 500386, "raw": ["500386", "020090", "0", "2014/Jul/14 14:00", "Elta UK Ltd", "Elta Fans", "VIGO 400", "ISSUE A", "2014", "current", "", "3", "0", "2", "1", "1", "7", "1", "15.0", "0.59", "92", "2", "21.0", "0.60", "90", "3", "27.0", "0.64", "89", "4", "33.0", "0.78", "89", "5", "39.0", "0.89", "88", "6", "45.0", "1.06", "87", "7", "51.0", "1.27", "86"]}
{"pcdb_id": 500387, "raw": ["500387", "020007", "0", "2014/Jul/14 14:00", "Titon Hardware Ltd", "Titon", "CME2 Q Plus A", "", "2014", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.20", "", "2", "29.0", "0.17", "", "3", "37.0", "0.19", "", "4", "45.0", "0.21", "", "5", "53.0", "0.25", "", "6", "61.0", "0.29"]}
{"pcdb_id": 500388, "raw": ["500388", "020007", "0", "2014/Jul/28 16:30", "Titon Hardware Ltd", "Titon", "CME2 Q Plus A", "", "2014", "current", "", "1", "0", "2", "2", "", "5", "1", "21.0", "0.28", "", "2", "29.0", "0.25", "", "3", "37.0", "0.26", "", "4", "45.0", "0.28", "", "5", "53.0", "0.34"]}
{"pcdb_id": 500389, "raw": ["500389", "020007", "0", "2014/Jul/14 14:00", "Titon Hardware Ltd", "Titon", "CME2 Q Plus HA", "", "2014", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.20", "", "2", "29.0", "0.17", "", "3", "37.0", "0.19", "", "4", "45.0", "0.21", "", "5", "53.0", "0.25", "", "6", "61.0", "0.29"]}
{"pcdb_id": 500390, "raw": ["500390", "020007", "0", "2014/Jul/28 16:30", "Titon Hardware Ltd", "Titon", "CME2 Q Plus HA", "", "2014", "current", "", "1", "0", "2", "2", "", "5", "1", "21.0", "0.28", "", "2", "29.0", "0.25", "", "3", "37.0", "0.26", "", "4", "45.0", "0.28", "", "5", "53.0", "0.34"]}
{"pcdb_id": 500391, "raw": ["500391", "020038", "0", "2014/Jul/14 14:00", "Titon Hardware Ltd", "Beam", "AXCO MEV130 A", "", "2014", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.20", "", "2", "29.0", "0.17", "", "3", "37.0", "0.19", "", "4", "45.0", "0.21", "", "5", "53.0", "0.25", "", "6", "61.0", "0.29"]}
{"pcdb_id": 500392, "raw": ["500392", "020038", "0", "2014/Jul/28 16:30", "Titon Hardware Ltd", "Beam", "AXCO MEV130 A", "", "2014", "current", "", "1", "0", "2", "2", "", "5", "1", "21.0", "0.28", "", "2", "29.0", "0.25", "", "3", "37.0", "0.26", "", "4", "45.0", "0.28", "", "5", "53.0", "0.34"]}
{"pcdb_id": 500393, "raw": ["500393", "020038", "0", "2014/Jul/14 14:00", "Titon Hardware Ltd", "Beam", "AXCO MEV130 HA", "", "2014", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.20", "", "2", "29.0", "0.17", "", "3", "37.0", "0.19", "", "4", "45.0", "0.21", "", "5", "53.0", "0.25", "", "6", "61.0", "0.29"]}
{"pcdb_id": 500394, "raw": ["500394", "020038", "0", "2014/Jul/28 16:30", "Titon Hardware Ltd", "Beam", "AXCO MEV130 HA", "", "2014", "current", "", "1", "0", "2", "2", "", "5", "1", "21.0", "0.28", "", "2", "29.0", "0.25", "", "3", "37.0", "0.26", "", "4", "45.0", "0.28", "", "5", "53.0", "0.34"]}
{"pcdb_id": 500397, "raw": ["500397", "020003", "0", "2014/Jul/15 15:00", "The Nuaire Group", "Nuaire", "AP-MVHR-RL", "", "2014", "current", "", "3", "0", "2", "1", "0", "6", "1", "15.0", "0.72", "86", "2", "21.0", "0.77", "86", "3", "27.0", "0.88", "85", "4", "33.0", "1.10", "85", "5", "39.0", "1.29", "85", "6", "45.0", "1.60", "84"]}
{"pcdb_id": 500398, "raw": ["500398", "020003", "0", "2014/Jul/15 15:00", "The Nuaire Group", "Nuaire", "AP-MVHR-LL", "", "2014", "current", "", "3", "0", "2", "1", "0", "6", "1", "15.0", "0.72", "86", "2", "21.0", "0.77", "86", "3", "27.0", "0.88", "85", "4", "33.0", "1.10", "85", "5", "39.0", "1.29", "85", "6", "45.0", "1.60", "84"]}
{"pcdb_id": 500402, "raw": ["500402", "020027", "0", "2014/Oct/09 13:00", "EnviroVent Ltd", "EnviroVent", "MEV Spider 2", "Issue A", "2014", "current", "", "1", "0", "2", "2", "", "6", "1", "21.0", "0.36", "", "2", "29.0", "0.32", "", "3", "37.0", "0.33", "", "4", "45.0", "0.32", "", "5", "53.0", "0.35", "", "6", "61.0", "0.36"]}
{"pcdb_id": 500403, "raw": ["500403", "020027", "0", "2014/Oct/09 13:00", "EnviroVent Ltd", "EnviroVent", "energiSava 210", "5153582900-000", "2014", "current", "", "3", "0", "2", "1", "3", "5", "1", "15.0", "0.81", "89", "2", "21.0", "0.82", "87", "3", "27.0", "0.89", "87", "4", "33.0", "1.03", "85", "5", "39.0", "1.22", "85"]}
{"pcdb_id": 500404, "raw": ["500404", "020078", "0", "2014/Nov/12 12:00", "Systemair Fans & Spares Ltd", "Systemair", "SAVE VTR 500 R", "Ver A", "2014", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "1.44", "71", "2", "29.0", "1.21", "74", "3", "37.0", "1.15", "76", "4", "45.0", "1.18", "78", "5", "53.0", "1.23", "79", "6", "61.0", "1.35", "80", "7", "69.0", "1.53", "81"]}
{"pcdb_id": 500405, "raw": ["500405", "020078", "0", "2014/Nov/12 12:00", "Systemair Fans & Spares Ltd", "Systemair", "SAVE VTR 500 L", "Ver A", "2014", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "1.44", "71", "2", "29.0", "1.21", "74", "3", "37.0", "1.15", "76", "4", "45.0", "1.18", "78", "5", "53.0", "1.23", "79", "6", "61.0", "1.35", "80", "7", "69.0", "1.53", "81"]}
{"pcdb_id": 500406, "raw": ["500406", "020078", "0", "2014/Dec/03 12:00", "Systemair Fans & Spares Ltd", "Systemair", "SAVE VTC 200 R", "Ver A", "2014", "current", "", "3", "0", "2", "1", "3", "5", "1", "21.0", "0.73", "89", "2", "29.0", "0.75", "89", "3", "37.0", "0.81", "89", "4", "45.0", "0.97", "88", "5", "53.0", "1.14", "88"]}
{"pcdb_id": 500407, "raw": ["500407", "020078", "0", "2014/Dec/03 12:00", "Systemair Fans & Spares Ltd", "Systemair", "SAVE VTC 200 L", "Ver A", "2014", "current", "", "3", "0", "2", "1", "3", "5", "1", "21.0", "0.73", "89", "2", "29.0", "0.75", "89", "3", "37.0", "0.81", "89", "4", "45.0", "0.97", "88", "5", "53.0", "1.14", "88"]}
{"pcdb_id": 500408, "raw": ["500408", "020078", "0", "2014/Nov/12 12:00", "Systemair Fans & Spares Ltd", "Systemair", "prio 160EC", "", "2014", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.24", "", "2", "29.0", "0.24", "", "3", "37.0", "0.25", "", "4", "45.0", "0.30", "", "5", "53.0", "0.35", "", "6", "61.0", "0.40"]}
{"pcdb_id": 500409, "raw": ["500409", "020007", "0", "2015/May/18 13:50", "Titon Hardware Ltd", "Titon", "HRV1.25 Q Plus Eco", "", "2014", "current", "", "3", "0", "2", "1", "3", "3", "1", "15.0", "0.68", "87", "2", "21.0", "0.90", "85", "3", "27.0", "1.21", "84"]}
{"pcdb_id": 500410, "raw": ["500410", "020007", "0", "2015/May/18 13:50", "Titon Hardware Ltd", "Titon", "HRV2.85 Q Plus Eco", "", "2014", "current", "", "3", "0", "2", "1", "3", "6", "1", "15.0", "0.60", "91", "2", "21.0", "0.62", "90", "3", "27.0", "0.72", "89", "4", "33.0", "0.88", "88", "5", "39.0", "1.06", "87", "6", "45.0", "1.30", "87"]}
{"pcdb_id": 500411, "raw": ["500411", "020007", "0", "2015/May/18 13:50", "Titon Hardware Ltd", "Titon", "HRV2 Q Plus Eco", "", "2014", "current", "", "3", "0", "2", "1", "3", "6", "1", "21.0", "0.63", "90", "2", "29.0", "0.67", "90", "3", "37.0", "0.76", "89", "4", "45.0", "0.94", "88", "5", "53.0", "1.14", "87", "6", "61.0", "1.40", "87"]}
{"pcdb_id": 500412, "raw": ["500412", "020007", "0", "2015/May/18 13:50", "Titon Hardware Ltd", "Titon", "HRV3 Q Plus Eco", "", "2014", "current", "", "3", "0", "2", "1", "3", "5", "2", "29.0", "0.71", "90", "3", "37.0", "0.85", "88", "4", "45.0", "1.04", "87", "5", "53.0", "1.28", "87", "6", "61.0", "1.58", "87"]}
{"pcdb_id": 500413, "raw": ["500413", "020007", "0", "2015/Jul/15 14:56", "Titon Hardware Ltd", "Titon", "HRV1.35 Q Plus Eco", "", "2015", "current", "", "3", "0", "2", "1", "3", "4", "1", "21.0", "0.71", "87", "2", "29.0", "0.92", "85", "3", "37.0", "1.19", "85", "4", "45.0", "1.55", "84"]}
{"pcdb_id": 500414, "raw": ["500414", "020011", "0", "2015/Mar/17 13:10", "Vectaire Ltd", "Vectaire", "WHHR Mini", "", "2014", "current", "", "3", "0", "2", "1", "1", "1", "1", "21.0", "1.40", "82"]}
{"pcdb_id": 500420, "raw": ["500420", "020007", "0", "2015/May/18 13:50", "Titon Hardware Ltd", "Titon", "HRV2.85 Q Plus", "", "2015", "current", "", "3", "0", "2", "1", "1", "6", "1", "21.0", "0.57", "90", "2", "29.0", "0.59", "89", "3", "37.0", "0.69", "89", "4", "45.0", "0.85", "88", "5", "53.0", "1.03", "87", "6", "61.0", "1.28", "86"]}
{"pcdb_id": 500421, "raw": ["500421", "020011", "0", "2021/Nov/08 20:30", "Vectaire Ltd", "Vectaire", "EVO250DC", "", "2015", "current", "", "3", "0", "2", "1", "4", "4", "1", "21.0", "0.75", "87", "2", "29.0", "0.89", "86", "3", "37.0", "1.00", "85", "4", "45.0", "1.37", "84"]}
{"pcdb_id": 500422, "raw": ["500422", "020007", "0", "2015/Jul/15 14:56", "Titon Hardware Ltd", "Titon", "HRV1.75 Q Plus Eco", "", "2015", "current", "", "3", "0", "2", "1", "3", "4", "1", "21.0", "0.52", "89", "2", "29.0", "0.60", "89", "3", "37.0", "0.73", "88", "4", "45.0", "0.94", "87"]}
{"pcdb_id": 500423, "raw": ["500423", "020007", "0", "2015/Jul/16 10:25", "Titon Hardware Ltd", "Titon", "HRV10 Q Plus Eco", "", "2015", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.55", "90", "2", "29.0", "0.57", "90", "3", "37.0", "0.65", "89", "4", "45.0", "0.76", "88", "5", "53.0", "0.90", "87", "6", "61.0", "1.09", "86", "7", "69.0", "1.27", "85"]}
{"pcdb_id": 500424, "raw": ["500424", "020035", "0", "2015/Jul/16 10:25", "Rega Ventilation Ltd", "RegaVent", "250R DC", "", "2015", "current", "", "3", "0", "2", "1", "1", "4", "1", "21.0", "0.64", "88", "2", "29.0", "0.75", "86", "3", "37.0", "0.91", "85", "4", "45.0", "1.16", "85"]}
{"pcdb_id": 500427, "raw": ["500427", "020030", "0", "2015/Aug/17 12:08", "Aldes", "Aldes", "Dee Fly Cube 300 Micro-watt", "", "2015", "current", "", "3", "0", "2", "1", "3", "5", "3", "37.0", "0.93", "87", "4", "45.0", "1.04", "84", "5", "53.0", "1.25", "84", "6", "61.0", "1.47", "83", "7", "69.0", "1.71", "82"]}
{"pcdb_id": 500429, "raw": ["500429", "020038", "0", "2015/Sep/15 12:25", "Titon Hardware Ltd", "Beam", "AXCO MVHR C90", "", "2015", "current", "", "3", "0", "2", "1", "3", "6", "1", "15.0", "0.60", "91", "2", "21.0", "0.62", "90", "3", "27.0", "0.72", "89", "4", "33.0", "0.88", "88", "5", "39.0", "1.06", "87", "6", "45.0", "1.30", "87"]}
{"pcdb_id": 500430, "raw": ["500430", "020038", "0", "2015/Sep/15 12:25", "Titon Hardware Ltd", "Beam", "AXCO MVHR C65", "", "2015", "current", "", "3", "0", "2", "1", "3", "4", "1", "21.0", "0.71", "87", "2", "29.0", "0.92", "85", "3", "37.0", "1.19", "85", "4", "45.0", "1.55", "84"]}
{"pcdb_id": 500431, "raw": ["500431", "020009", "0", "2015/Nov/09 12:00", "Vortice Ltd", "Vortice", "VORT HR 250 NETI", "", "2015", "current", "", "3", "0", "2", "1", "3", "4", "1", "21.0", "0.60", "88", "2", "29.0", "0.72", "86", "3", "37.0", "0.86", "84", "4", "45.0", "1.12", "83"]}
{"pcdb_id": 500432, "raw": ["500432", "020009", "0", "2015/Sep/15 12:25", "Vortice Ltd", "Vortice", "VORT HR 350 AVEL", "", "2015", "current", "", "3", "0", "2", "1", "0", "7", "1", "21.0", "0.60", "91", "2", "29.0", "0.63", "90", "3", "37.0", "0.72", "89", "4", "45.0", "0.88", "89", "5", "53.0", "1.05", "88", "6", "61.0", "1.31", "88", "7", "69.0", "1.58", "88"]}
{"pcdb_id": 500433, "raw": ["500433", "020059", "0", "2015/Sep/15 12:25", "Ventilation Systems PrJSC", "VENTS", "VUT 160 PB EC A11", "", "2010", "current", "", "3", "0", "2", "1", "3", "3", "1", "21.0", "0.67", "80", "2", "29.0", "0.76", "81", "3", "37.0", "0.93", "82"]}
{"pcdb_id": 500434, "raw": ["500434", "020059", "0", "2015/Sep/15 12:25", "Ventilation Systems PrJSC", "VENTS", "VUT 350 VB EC A11", "", "2010", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.71", "88", "2", "29.0", "0.64", "88", "3", "37.0", "0.68", "87", "4", "45.0", "0.76", "86", "5", "53.0", "0.86", "86", "6", "61.0", "1.07", "85", "7", "69.0", "1.26", "85"]}
{"pcdb_id": 500435, "raw": ["500435", "020059", "0", "2015/Sep/15 12:25", "Ventilation Systems PrJSC", "VENTS", "VUT 550 VB EC A11", "", "2010", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.71", "87", "2", "29.0", "0.63", "88", "3", "37.0", "0.63", "88", "4", "45.0", "0.72", "88", "5", "53.0", "0.84", "88", "6", "61.0", "0.98", "87", "7", "69.0", "1.16", "87"]}
{"pcdb_id": 500436, "raw": ["500436", "020002", "0", "2015/Sep/15 12:25", "Vent Axia Ltd", "Vent Axia", "Sentinel Kinetic 200ZP", "", "2014", "current", "", "3", "0", "2", "1", "3", "3", "1", "21.0", "0.67", "84", "2", "29.0", "0.82", "82", "3", "37.0", "1.07", "80"]}
{"pcdb_id": 500437, "raw": ["500437", "020104", "0", "2015/Oct/20 11:58", "Salda UAB", "Salda", "SMARTY 3X P", "", "2015", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.88", "91", "2", "29.0", "0.83", "91", "3", "37.0", "0.85", "90", "4", "45.0", "0.95", "89", "5", "53.0", "1.08", "89", "6", "61.0", "1.26", "88", "7", "69.0", "1.48", "88"]}
{"pcdb_id": 500438, "raw": ["500438", "020101", "0", "2015/Nov/11 10:34", "Itho UK Ltd", "Heatrae Sadia", "Advance", "95 060 001", "2015", "current", "", "3", "0", "2", "1", "1", "3", "1", "15.0", "0.50", "89", "2", "21.0", "0.73", "89", "3", "27.0", "1.00", "86"]}
{"pcdb_id": 500439, "raw": ["500439", "020101", "0", "2015/Oct/20 12:34", "Itho UK Ltd", "Heatrae Sadia", "CVE ECO 2 HP", "95 060 006", "2015", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.18", "", "2", "29.0", "0.17", "", "3", "37.0", "0.18", "", "4", "45.0", "0.20", "", "5", "53.0", "0.22", "", "6", "61.0", "0.27"]}
{"pcdb_id": 500440, "raw": ["500440", "020101", "0", "2015/Oct/20 12:34", "Itho UK Ltd", "Heatrae Sadia", "CVE ECO 2", "95 060 004", "2015", "current", "", "1", "0", "2", "1", "", "5", "1", "21.0", "0.18", "", "2", "29.0", "0.17", "", "3", "37.0", "0.18", "", "4", "45.0", "0.20", "", "5", "53.0", "0.22"]}
{"pcdb_id": 500441, "raw": ["500441", "020101", "0", "2016/Sep/22 11:45", "Itho UK Ltd", "Heatrae Sadia", "HRU ECO 4 - House", "95 060 002", "2015", "current", "", "3", "0", "2", "1", "3", "6", "1", "15.0", "0.47", "90", "2", "21.0", "0.53", "90", "3", "27.0", "0.65", "87", "4", "33.0", "0.79", "87", "5", "39.0", "0.94", "87", "6", "45.0", "1.10", "88"]}
{"pcdb_id": 500442, "raw": ["500442", "020101", "0", "2016/Sep/22 11:45", "Itho UK Ltd", "Heatrae Sadia", "HRU ECO 4 - Apartment", "95 060 003", "2015", "current", "", "3", "0", "2", "1", "3", "6", "1", "15.0", "0.47", "90", "2", "21.0", "0.53", "90", "3", "27.0", "0.65", "87", "4", "33.0", "0.79", "87", "5", "39.0", "0.94", "87", "6", "45.0", "1.10", "88"]}
{"pcdb_id": 500443, "raw": ["500443", "020007", "0", "2015/Nov/23 10:37", "Titon Hardware Ltd", "Titon", "H200 Q Plus ECO", "", "2015", "current", "", "3", "0", "2", "1", "3", "6", "1", "21.0", "0.58", "83", "2", "29.0", "0.66", "82", "3", "37.0", "0.80", "80", "4", "45.0", "1.01", "80", "5", "53.0", "1.25", "80", "6", "61.0", "1.58", "82"]}
{"pcdb_id": 500446, "raw": ["500446", "020013", "0", "2016/Feb/22 14:32", "Johnson & Starley Ltd", "Johnson & Starley", "Q-VENT COMPACT v2", "", "2015", "current", "", "3", "0", "2", "1", "1", "2", "1", "21.0", "1.54", "84", "2", "29.0", "2.00", "82"]}
{"pcdb_id": 500447, "raw": ["500447", "020002", "0", "2016/Feb/22 15:39", "Vent Axia Ltd", "Vent Axia", "Sentinel Kinetic Advance S", "405215", "2016", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.39", "93", "2", "29.0", "0.46", "92", "3", "37.0", "0.55", "91", "4", "45.0", "0.70", "91", "5", "53.0", "0.85", "90", "6", "61.0", "1.07", "89", "7", "69.0", "1.31", "89"]}
{"pcdb_id": 500448, "raw": ["500448", "020059", "0", "2016/Feb/22 16:03", "Ventilation Systems PrJSC", "VENTS", "VUT 700 H EC eco", "", "2015", "current", "", "3", "0", "2", "1", "0", "7", "1", "21.0", "0.75", "83", "2", "29.0", "0.69", "85", "3", "37.0", "0.73", "86", "4", "45.0", "0.80", "86", "5", "53.0", "0.89", "86", "6", "61.0", "1.08", "85", "7", "69.0", "1.27", "85"]}
{"pcdb_id": 500449, "raw": ["500449", "020027", "0", "2016/Mar/17 13:49", "Brink Climate Systems B.V.", "EnviroVent", "energiSava 400", "", "2016", "current", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "0.63", "89", "2", "21.0", "0.61", "89", "3", "27.0", "0.66", "87", "4", "33.0", "0.74", "86", "5", "39.0", "0.84", "85", "6", "45.0", "0.95", "84"]}
{"pcdb_id": 500450, "raw": ["500450", "020027", "0", "2016/Mar/17 13:49", "Brink Climate Systems B.V.", "EnviroVent", "Slimline 300", "", "2016", "current", "", "3", "0", "2", "1", "1", "6", "1", "15.0", "0.60", "90", "2", "21.0", "0.62", "90", "3", "27.0", "0.71", "87", "4", "33.0", "0.83", "86", "5", "39.0", "0.97", "85", "6", "45.0", "1.12", "84"]}
{"pcdb_id": 500451, "raw": ["500451", "020027", "0", "2016/Mar/17 13:49", "EnviroVent Ltd", "EnviroVent", "energiSava 200", "Issue A", "2016", "current", "", "3", "0", "2", "1", "0", "5", "1", "21.0", "0.75", "89", "2", "29.0", "0.82", "87", "3", "37.0", "0.96", "85", "4", "45.0", "1.17", "84", "5", "53.0", "1.41", "82"]}
{"pcdb_id": 500452, "raw": ["500452", "020052", "0", "2016/Apr/12 16:08", "Brook Design Hardware Ltd", "Brookvent", "AIRCYCLE 3.1", "", "2014", "current", "", "3", "0", "2", "1", "1", "7", "1", "21.0", "0.41", "93", "2", "29.0", "0.43", "92", "3", "37.0", "0.51", "91", "4", "45.0", "0.64", "91", "5", "53.0", "0.78", "90", "6", "61.0", "0.98", "89", "7", "69.0", "1.20", "89"]}
{"pcdb_id": 500453, "raw": ["500453", "020041", "0", "2016/Apr/12 16:08", "Polypipe Ltd", "Polypipe Ventilation", "Silavent AQH240-S", "", "2016", "current", "", "3", "0", "2", "1", "1", "2", "1", "21.0", "0.69", "88", "2", "29.0", "0.84", "85"]}
{"pcdb_id": 500454, "raw": ["500454", "020041", "0", "2016/Apr/12 16:08", "Polypipe Ltd", "Polypipe Ventilation", "Silavent AQH200-B", "", "2016", "current", "", "3", "0", "2", "1", "3", "2", "1", "21.0", "0.75", "83", "2", "29.0", "0.95", "81"]}
{"pcdb_id": 500455, "raw": ["500455", "020041", "0", "2016/Apr/12 16:08", "Polypipe Ltd", "Polypipe Ventilation", "Silavent AQH200-S", "", "2016", "current", "", "3", "0", "2", "1", "1", "2", "1", "21.0", "0.72", "87", "2", "29.0", "0.88", "84"]}
{"pcdb_id": 500456, "raw": ["500456", "020041", "0", "2016/Apr/12 16:08", "Polypipe Ltd", "Polypipe Ventilation", "Silavent AQH240-B", "", "2016", "current", "", "3", "0", "2", "1", "3", "2", "1", "21.0", "0.69", "86", "2", "29.0", "0.84", "83"]}
{"pcdb_id": 500457, "raw": ["500457", "020030", "0", "2016/Apr/13 11:18", "Aldes", "Aldes", "INSPIRAIR HOME", "SC240 CLASSIC Droite", "2016", "current", "", "3", "0", "2", "1", "3", "4", "1", "21.0", "0.91", "87", "2", "29.0", "1.01", "87", "3", "37.0", "1.18", "85", "4", "45.0", "1.37", "85"]}
{"pcdb_id": 500458, "raw": ["500458", "020030", "0", "2016/Apr/13 11:18", "Aldes", "Aldes", "INSPIRAIR HOME", "SC240 CLASSIC Gauche", "2016", "current", "", "3", "0", "2", "1", "3", "4", "1", "21.0", "0.91", "87", "2", "29.0", "1.01", "87", "3", "37.0", "1.18", "85", "4", "45.0", "1.37", "85"]}
{"pcdb_id": 500459, "raw": ["500459", "020030", "0", "2016/Apr/13 11:18", "Aldes", "Aldes", "INSPIRAIR HOME", "SC240 PREMIUM Droite", "2016", "current", "", "3", "0", "2", "1", "3", "4", "1", "21.0", "0.91", "87", "2", "29.0", "1.01", "87", "3", "37.0", "1.18", "85", "4", "45.0", "1.37", "85"]}
{"pcdb_id": 500460, "raw": ["500460", "020030", "0", "2016/Apr/13 11:18", "Aldes", "Aldes", "INSPIRAIR HOME", "SC240 PREMIUM Gauche", "2016", "current", "", "3", "0", "2", "1", "3", "4", "1", "21.0", "0.91", "87", "2", "29.0", "1.01", "87", "3", "37.0", "1.18", "85", "4", "45.0", "1.37", "85"]}
{"pcdb_id": 500461, "raw": ["500461", "020030", "0", "2016/Apr/13 11:18", "Aldes", "Aldes", "INSPIRAIR HOME", "SC370 CLASSIC Droite", "2016", "current", "", "3", "0", "2", "1", "3", "6", "1", "21.0", "0.90", "91", "2", "29.0", "0.92", "91", "3", "37.0", "1.04", "90", "4", "45.0", "1.21", "89", "5", "53.0", "1.39", "89", "6", "61.0", "1.64", "89"]}
{"pcdb_id": 500462, "raw": ["500462", "020030", "0", "2016/Apr/13 11:18", "Aldes", "Aldes", "INSPIRAIR HOME", "SC370 CLASSIC Gauche", "2016", "current", "", "3", "0", "2", "1", "3", "6", "1", "21.0", "0.90", "91", "2", "29.0", "0.92", "91", "3", "37.0", "1.04", "90", "4", "45.0", "1.21", "89", "5", "53.0", "1.39", "89", "6", "61.0", "1.64", "89"]}
{"pcdb_id": 500463, "raw": ["500463", "020030", "0", "2016/Apr/13 11:18", "Aldes", "Aldes", "INSPIRAIR HOME", "SC370 PREMIUM Droite", "2016", "current", "", "3", "0", "2", "1", "3", "6", "1", "21.0", "0.90", "91", "2", "29.0", "0.92", "91", "3", "37.0", "1.04", "90", "4", "45.0", "1.21", "89", "5", "53.0", "1.39", "89", "6", "61.0", "1.64", "89"]}
{"pcdb_id": 500464, "raw": ["500464", "020030", "0", "2016/Apr/13 11:18", "Aldes", "Aldes", "INSPIRAIR HOME", "SC370 PREMIUM Gauche", "2016", "current", "", "3", "0", "2", "1", "3", "6", "1", "21.0", "0.90", "91", "2", "29.0", "0.92", "91", "3", "37.0", "1.04", "90", "4", "45.0", "1.21", "89", "5", "53.0", "1.39", "89", "6", "61.0", "1.64", "89"]}
{"pcdb_id": 500465, "raw": ["500465", "020047", "0", "2016/Apr/14 12:26", "Mitsubishi Electric Europe B.V.", "Mitsubishi", "LOSSNAY", "VL-220CZGV-EB", "2016", "current", "", "3", "0", "2", "1", "1", "2", "1", "21.0", "0.65", "85", "2", "29.0", "0.62", "84"]}
{"pcdb_id": 500466, "raw": ["500466", "020090", "0", "2016/Apr/14 12:26", "Elta UK Ltd", "Elta Fans", "VIGO 350", "Issue A", "2016", "current", "", "3", "0", "2", "1", "0", "3", "1", "21.0", "0.98", "89", "2", "29.0", "1.15", "88", "3", "37.0", "1.42", "87"]}
{"pcdb_id": 500467, "raw": ["500467", "020090", "0", "2016/Apr/14 12:26", "Elta UK Ltd", "Elta Fans", "VIGO 550", "Issue A", "2016", "current", "", "3", "0", "2", "1", "0", "7", "1", "21.0", "0.56", "93", "2", "29.0", "0.58", "93", "3", "37.0", "0.63", "91", "4", "45.0", "0.74", "91", "5", "53.0", "0.87", "90", "6", "61.0", "1.04", "89", "7", "69.0", "1.22", "89"]}
{"pcdb_id": 500468, "raw": ["500468", "020042", "0", "2016/Apr/14 12:26", "Brink Climate Systems B.V.", "Brink", "Renovent Sky 150+ EU", "", "2013", "current", "", "3", "0", "2", "1", "3", "3", "1", "21.0", "0.75", "88", "2", "29.0", "0.86", "85", "3", "37.0", "1.04", "84"]}
{"pcdb_id": 500469, "raw": ["500469", "020042", "0", "2016/Apr/14 12:26", "Brink Climate Systems B.V.", "Brink", "Renovent Excellent 300 4-0 EU", "", "2013", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.66", "89", "2", "29.0", "0.62", "87", "3", "37.0", "0.66", "86", "4", "45.0", "0.74", "85", "5", "53.0", "0.86", "84", "6", "61.0", "1.04", "83", "7", "69.0", "1.21", "83"]}
{"pcdb_id": 500470, "raw": ["500470", "020002", "0", "2016/May/18 15:33", "Vent Axia Ltd", "Vent Axia", "Sentinel Kinetic C", "", "2016", "current", "", "3", "0", "2", "1", "3", "3", "1", "15.0", "0.78", "85", "2", "21.0", "0.89", "85", "3", "27.0", "1.03", "82"]}
{"pcdb_id": 500471, "raw": ["500471", "020002", "0", "2016/May/18 15:33", "Vent Axia Ltd", "Vent Axia", "Sentinel Kinetic High Flow", "", "2016", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.58", "88", "2", "29.0", "0.55", "90", "3", "37.0", "0.60", "91", "4", "45.0", "0.69", "91", "5", "53.0", "0.78", "90", "6", "61.0", "0.92", "90", "7", "69.0", "1.09", "90"]}
{"pcdb_id": 500472, "raw": ["500472", "020002", "0", "2016/May/18 15:33", "Vent Axia Ltd", "Vent Axia", "Sentinel Kinetic FH", "", "2016", "current", "", "3", "0", "2", "1", "3", "5", "1", "21.0", "0.53", "89", "2", "29.0", "0.60", "88", "3", "37.0", "0.71", "86", "4", "45.0", "0.88", "84", "5", "53.0", "1.07", "84"]}
{"pcdb_id": 500473, "raw": ["500473", "020002", "0", "2016/May/18 15:33", "Vent Axia Ltd", "Vent Axia", "Sentinel Multivent Plus", "", "2015", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.25", "", "2", "29.0", "0.22", "", "3", "37.0", "0.22", "", "4", "45.0", "0.22", "", "5", "53.0", "0.25", "", "6", "61.0", "0.27"]}
{"pcdb_id": 500476, "raw": ["500476", "020007", "0", "2016/May/19 09:16", "Titon Hardware Ltd", "Titon", "HRV10.25 Q Plus Eco", "", "2016", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.43", "90", "2", "29.0", "0.46", "88", "3", "37.0", "0.54", "87", "4", "45.0", "0.65", "86", "5", "53.0", "0.79", "85", "6", "61.0", "0.96", "84", "7", "69.0", "1.16", "83"]}
{"pcdb_id": 500477, "raw": ["500477", "020108", "0", "2016/Jun/20 12:52", "Aermec SpA", "Aermec", "RePuro 170", "", "2012", "current", "", "3", "0", "2", "1", "1", "3", "1", "21.0", "0.94", "88", "2", "29.0", "0.96", "86", "3", "37.0", "1.14", "84"]}
{"pcdb_id": 500478, "raw": ["500478", "020108", "0", "2016/Jun/22 11:15", "Aermec SpA", "Aermec", "RePuro 350", "", "2012", "current", "", "3", "0", "2", "1", "1", "6", "1", "21.0", "0.77", "88", "2", "29.0", "0.76", "88", "3", "37.0", "0.83", "87", "4", "45.0", "0.96", "86", "5", "53.0", "1.12", "85", "6", "61.0", "1.40", "85"]}
{"pcdb_id": 500479, "raw": ["500479", "020004", "0", "2016/Jul/18 12:36", "Zehnder Group UK Ltd", "Zehnder", "ComfoAir 180 GB Luxe PH", "", "2016", "current", "", "3", "0", "2", "1", "3", "4", "1", "21.0", "0.72", "89", "2", "29.0", "0.79", "86", "3", "37.0", "0.94", "84", "4", "45.0", "1.20", "82"]}
{"pcdb_id": 500480, "raw": ["500480", "020004", "0", "2016/Nov/16 14:15", "Zehnder Group UK Ltd", "Zehnder", "ComfoAir Q350 GB ST", "", "2016", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.60", "96", "2", "29.0", "0.53", "95", "3", "37.0", "0.57", "94", "4", "45.0", "0.64", "94", "5", "53.0", "0.72", "93", "6", "61.0", "0.89", "93", "7", "69.0", "1.03", "93"]}
{"pcdb_id": 500481, "raw": ["500481", "020004", "0", "2016/Nov/16 14:15", "Zehnder Group UK Ltd", "Zehnder", "ComfoAir Q450 GB ST", "", "2016", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.54", "96", "2", "29.0", "0.53", "95", "3", "37.0", "0.55", "94", "4", "45.0", "0.62", "94", "5", "53.0", "0.73", "93", "6", "61.0", "0.86", "93", "7", "69.0", "1.04", "93"]}
{"pcdb_id": 500482, "raw": ["500482", "020004", "0", "2016/Nov/16 14:15", "Zehnder Group UK Ltd", "Zehnder", "ComfoAir Q600 GB ST", "", "2016", "current", "", "3", "0", "2", "2", "3", "7", "1", "21.0", "0.63", "96", "2", "29.0", "0.60", "95", "3", "37.0", "0.63", "94", "4", "45.0", "0.71", "94", "5", "53.0", "0.79", "93", "6", "61.0", "0.91", "93", "7", "69.0", "1.06", "93"]}
{"pcdb_id": 500483, "raw": ["500483", "020027", "0", "2016/Aug/16 14:31", "Brink Climate Systems B.V.", "EnviroVent", "Slimline 150", "", "2016", "current", "", "3", "0", "2", "1", "3", "3", "1", "21.0", "0.75", "88", "2", "29.0", "0.86", "85", "3", "37.0", "1.04", "84"]}
{"pcdb_id": 500484, "raw": ["500484", "020027", "0", "2016/Aug/16 14:31", "Brink Climate Systems B.V.", "EnviroVent", "energiSava 300", "", "2016", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.66", "89", "2", "29.0", "0.62", "87", "3", "37.0", "0.66", "86", "4", "45.0", "0.74", "85", "5", "53.0", "0.86", "84", "6", "61.0", "1.04", "83", "7", "69.0", "1.21", "83"]}
{"pcdb_id": 500485, "raw": ["500485", "020101", "0", "2016/Sep/26 11:26", "Baxi Heating UK Ltd", "Heatrae Sadia", "Advance Plus", "95060007", "2015", "current", "", "3", "0", "2", "1", "3", "4", "1", "21.0", "0.48", "86", "2", "29.0", "0.72", "85", "3", "37.0", "0.99", "83", "4", "45.0", "1.35", "82"]}
{"pcdb_id": 500486, "raw": ["500486", "020083", "0", "2016/Sep/26 11:23", "Redring Xpelair Group Ltd", "Xpelair", "Stratum 275Q", "", "2016", "current", "", "3", "0", "2", "1", "3", "4", "1", "21.0", "0.73", "88", "2", "29.0", "0.85", "86", "3", "37.0", "1.02", "85", "4", "45.0", "1.27", "83"]}
{"pcdb_id": 500487, "raw": ["500487", "020069", "0", "2017/Jan/16 09:30", "Earth Save Products Ltd", "ESP", "Ecocent", "ESP400-010-200L(D)", "2008", "current", "", "1", "0", "2", "1", "", "2", "1", "21.0", "0.51", "", "2", "29.0", "0.48"]}
{"pcdb_id": 500488, "raw": ["500488", "020069", "0", "2016/Oct/04 14:06", "Earth Save Products Ltd", "ESP", "Ecocent", "ESP400-010-300L(D)", "2008", "current", "", "1", "0", "2", "1", "", "6", "2", "29.0", "0.70", "", "3", "37.0", "0.70", "", "4", "45.0", "0.70", "", "5", "53.0", "0.70", "", "6", "61.0", "0.70", "", "7", "69.0", "0.70"]}
{"pcdb_id": 500489, "raw": ["500489", "020069", "0", "2016/Oct/04 14:05", "Earth Save Products Ltd", "ESP", "Ecocent Maxi", "ESP400-015-300L(D)", "2008", "current", "", "1", "0", "2", "1", "", "6", "2", "29.0", "0.70", "", "3", "37.0", "0.70", "", "4", "45.0", "0.70", "", "5", "53.0", "0.70", "", "6", "61.0", "0.70", "", "7", "69.0", "0.70"]}
{"pcdb_id": 500490, "raw": ["500490", "020017", "0", "2016/Sep/26 11:19", "Airflow Developments Ltd", "Airflow", "DV250 Entro", "", "2016", "current", "", "3", "0", "2", "1", "3", "5", "1", "21.0", "0.70", "82", "2", "29.0", "0.78", "81", "3", "37.0", "0.93", "80", "4", "45.0", "1.20", "79", "5", "53.0", "1.38", "79"]}
{"pcdb_id": 500491, "raw": ["500491", "020017", "0", "2016/Sep/26 11:11", "Airflow Developments Ltd", "Airflow", "DV300 Entro", "", "2016", "current", "", "3", "0", "2", "1", "3", "5", "1", "21.0", "0.58", "84", "2", "29.0", "0.62", "82", "3", "37.0", "0.70", "81", "4", "45.0", "0.84", "80", "5", "53.0", "0.99", "79"]}
{"pcdb_id": 500492, "raw": ["500492", "020017", "0", "2016/Sep/26 11:03", "Airflow Developments Ltd", "Airflow", "DV400 Entro", "", "2016", "current", "", "3", "0", "2", "1", "3", "6", "1", "21.0", "0.59", "84", "2", "29.0", "0.61", "82", "3", "37.0", "0.71", "81", "4", "45.0", "0.87", "80", "5", "53.0", "1.03", "79", "6", "61.0", "1.27", "79"]}
{"pcdb_id": 500493, "raw": ["500493", "020111", "0", "2016/Sep/26 11:00", "Vaventis BV", "Vaventis", "Fresh-R", "", "2014", "current", "", "3", "0", "2", "1", "1", "2", "1", "21.0", "0.87", "87", "2", "29.0", "1.11", "84"]}
{"pcdb_id": 500495, "raw": ["500495", "020078", "0", "2016/Oct/24 14:00", "Systemair Fans & Spares Ltd", "Systemair", "SAVE VTC 700", "", "2012", "current", "", "3", "0", "2", "1", "3", "6", "2", "29.0", "0.70", "71", "3", "37.0", "0.70", "73", "4", "45.0", "0.83", "75", "5", "53.0", "0.91", "77", "6", "61.0", "1.11", "78", "7", "69.0", "1.31", "79"]}
{"pcdb_id": 500496, "raw": ["500496", "020104", "0", "2016/Oct/31 12:28", "Salda UAB", "Salda", "SMARTY 2X V 1.1", "", "2016", "current", "", "3", "0", "2", "1", "3", "4", "1", "21.0", "0.89", "88", "2", "29.0", "0.98", "88", "3", "37.0", "1.17", "87", "4", "45.0", "1.50", "86"]}
{"pcdb_id": 500497, "raw": ["500497", "020104", "0", "2016/Oct/31 12:29", "Salda UAB", "Salda", "SMARTY 3X V 1.1", "", "2016", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.91", "87", "2", "29.0", "0.78", "88", "3", "37.0", "0.83", "87", "4", "45.0", "0.90", "87", "5", "53.0", "1.03", "86", "6", "61.0", "1.21", "86", "7", "69.0", "1.40", "85"]}
{"pcdb_id": 500498, "raw": ["500498", "020003", "0", "2017/Jan/17 12:36", "The Nuaire Group", "Nuaire", "MRXBOX-ECO3", "", "2016", "current", "", "3", "0", "2", "1", "1", "7", "1", "21.0", "0.47", "91", "2", "29.0", "0.50", "91", "3", "37.0", "0.58", "90", "4", "45.0", "0.71", "89", "5", "53.0", "0.86", "89", "6", "61.0", "1.08", "88", "7", "69.0", "1.33", "88"]}
{"pcdb_id": 500499, "raw": ["500499", "020003", "0", "2017/Jan/17 12:51", "The Nuaire Group", "Nuaire", "MRXBOX-ECO2", "", "2016", "current", "", "3", "0", "2", "1", "1", "6", "1", "21.0", "0.47", "89", "2", "29.0", "0.54", "88", "3", "37.0", "0.66", "87", "4", "45.0", "0.85", "87", "5", "53.0", "1.05", "86", "6", "61.0", "1.34", "86"]}
{"pcdb_id": 500500, "raw": ["500500", "020003", "0", "2017/Jan/17 13:02", "The Nuaire Group", "Nuaire", "MRXBOXAB-ECO2", "", "2016", "current", "", "3", "0", "2", "1", "3", "5", "1", "21.0", "0.52", "90", "2", "29.0", "0.59", "89", "3", "37.0", "0.77", "87", "4", "45.0", "1.00", "86", "5", "53.0", "1.23", "86"]}
{"pcdb_id": 500501, "raw": ["500501", "020003", "0", "2017/Jan/17 13:06", "The Nuaire Group", "Nuaire", "MRXBOXAB-ECO3", "", "2016", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.50", "90", "2", "29.0", "0.53", "90", "3", "37.0", "0.60", "89", "4", "45.0", "0.75", "88", "5", "53.0", "0.92", "88", "6", "61.0", "1.10", "87", "7", "69.0", "1.36", "87"]}
{"pcdb_id": 500502, "raw": ["500502", "020003", "0", "2017/Jan/17 16:12", "The Nuaire Group", "Nuaire", "MRXBOXAB-ECO4", "", "2016", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.62", "94", "2", "29.0", "0.62", "93", "3", "37.0", "0.66", "93", "4", "45.0", "0.79", "92", "5", "53.0", "0.94", "91", "6", "61.0", "1.15", "91", "7", "69.0", "1.41", "91"]}
{"pcdb_id": 500503, "raw": ["500503", "020104", "0", "2017/Mar/14 16:41", "Salda UAB", "Salda", "SMARTY 2X P 1.1", "", "2016", "current", "", "3", "0", "2", "1", "3", "6", "1", "21.0", "0.91", "86", "2", "29.0", "0.88", "84", "3", "37.0", "0.96", "82", "4", "45.0", "1.10", "81", "5", "53.0", "1.26", "81", "6", "61.0", "1.50", "80"]}
{"pcdb_id": 500504, "raw": ["500504", "020108", "0", "2017/Mar/20 14:18", "Aermec SpA", "Aermec", "RePuro 100", "", "2012", "current", "", "3", "0", "2", "1", "1", "2", "1", "21.0", "0.91", "88", "2", "29.0", "0.96", "86"]}
{"pcdb_id": 500505, "raw": ["500505", "020108", "0", "2017/Mar/20 14:18", "Aermec SpA", "Aermec", "RePuro 250", "", "2012", "current", "", "3", "0", "2", "1", "1", "6", "1", "21.0", "0.75", "88", "2", "29.0", "0.73", "88", "3", "37.0", "0.80", "87", "4", "45.0", "0.96", "86", "5", "53.0", "1.12", "85", "6", "61.0", "1.36", "85"]}
{"pcdb_id": 500506, "raw": ["500506", "020108", "0", "2017/Mar/20 14:18", "Aermec SpA", "Aermec", "RePuro 450", "", "2012", "current", "", "3", "0", "2", "1", "1", "7", "1", "21.0", "0.84", "90", "2", "29.0", "0.77", "90", "3", "37.0", "0.80", "89", "4", "45.0", "0.90", "88", "5", "53.0", "1.03", "88", "6", "61.0", "1.22", "87", "7", "69.0", "1.42", "87"]}
{"pcdb_id": 500507, "raw": ["500507", "020108", "0", "2017/Mar/20 14:19", "Aermec SpA", "Aermec", "RePuro 550", "", "2012", "current", "", "3", "0", "2", "1", "1", "7", "1", "21.0", "0.83", "90", "2", "29.0", "0.78", "90", "3", "37.0", "0.82", "89", "4", "45.0", "0.91", "88", "5", "53.0", "1.07", "88", "6", "61.0", "1.24", "87", "7", "69.0", "1.44", "87"]}
{"pcdb_id": 500508, "raw": ["500508", "020108", "0", "2017/Mar/20 14:19", "Aermec SpA", "Aermec", "RePuro 650", "", "2012", "current", "", "3", "0", "2", "1", "1", "7", "1", "21.0", "0.85", "90", "2", "29.0", "0.79", "90", "3", "37.0", "0.84", "89", "4", "45.0", "0.92", "88", "5", "53.0", "1.04", "88", "6", "61.0", "1.28", "87", "7", "69.0", "1.45", "87"]}
{"pcdb_id": 500509, "raw": ["500509", "020017", "0", "2017/Mar/14 16:31", "Airflow Developments Ltd", "Airflow", "DV96 Adroit", "", "2016", "current", "", "3", "0", "2", "1", "3", "4", "1", "21.0", "0.87", "89", "2", "29.0", "0.98", "88", "3", "37.0", "1.13", "87", "4", "45.0", "1.40", "86"]}
{"pcdb_id": 500510, "raw": ["500510", "020017", "0", "2017/Mar/14 16:31", "Airflow Developments Ltd", "Airflow", "DV110 Adroit", "", "2016", "current", "", "3", "0", "2", "1", "3", "5", "1", "21.0", "0.83", "91", "2", "29.0", "0.85", "90", "3", "37.0", "0.97", "89", "4", "45.0", "1.16", "89", "5", "53.0", "1.40", "88"]}
{"pcdb_id": 500511, "raw": ["500511", "020017", "0", "2017/Mar/14 16:31", "Airflow Developments Ltd", "Airflow", "DV145 Adroit", "", "2016", "current", "", "3", "0", "2", "1", "3", "6", "1", "21.0", "1.11", "92", "2", "29.0", "1.05", "92", "3", "37.0", "1.05", "91", "4", "45.0", "1.19", "90", "5", "53.0", "1.31", "90", "6", "61.0", "1.48", "90"]}
{"pcdb_id": 500512, "raw": ["500512", "020041", "0", "2017/Mar/14 16:33", "Polypipe Ltd", "Domus Ventilation", "HRX2D", "", "2017", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.61", "94", "2", "29.0", "0.57", "94", "3", "37.0", "0.62", "92", "4", "45.0", "0.70", "92", "5", "53.0", "0.82", "91", "6", "61.0", "0.98", "90", "7", "69.0", "1.15", "90"]}
{"pcdb_id": 500513, "raw": ["500513", "020041", "0", "2017/Mar/14 16:33", "Polypipe Ltd", "Domus Ventilation", "HRXD", "", "2017", "current", "", "3", "0", "2", "1", "3", "5", "1", "21.0", "0.66", "87", "2", "29.0", "0.73", "86", "3", "37.0", "0.85", "85", "4", "45.0", "1.05", "84", "5", "53.0", "1.27", "83"]}
{"pcdb_id": 500514, "raw": ["500514", "020083", "0", "2017/Apr/26 09:20", "Xpelair", "Xpelair", "Natural Air 180", "93256AW", "2017", "current", "", "3", "0", "2", "1", "3", "3", "1", "21.0", "0.68", "86", "2", "29.0", "0.83", "84", "3", "37.0", "1.04", "84"]}
{"pcdb_id": 500515, "raw": ["500515", "020115", "0", "2017/May/17 16:57", "Vectaire Ltd", "AVT", "HRH250", "", "2015", "current", "", "3", "0", "2", "1", "1", "4", "1", "21.0", "0.75", "87", "2", "29.0", "0.89", "86", "3", "37.0", "1.00", "85", "4", "45.0", "1.37", "84"]}
{"pcdb_id": 500516, "raw": ["500516", "020115", "0", "2017/May/17 16:54", "Vectaire Ltd", "AVT", "HRH/MOD", "", "2014", "current", "", "3", "0", "2", "1", "1", "1", "1", "21.0", "1.40", "82"]}
{"pcdb_id": 500517, "raw": ["500517", "020115", "0", "2017/May/17 16:52", "Vectaire Ltd", "AVT", "HRV130", "", "2013", "current", "", "3", "0", "2", "1", "1", "7", "1", "21.0", "0.45", "92", "2", "29.0", "0.47", "92", "3", "37.0", "0.54", "91", "4", "45.0", "0.66", "90", "5", "53.0", "0.80", "90", "6", "61.0", "0.99", "89", "7", "69.0", "1.21", "89"]}
{"pcdb_id": 500518, "raw": ["500518", "020115", "0", "2017/May/17 17:14", "Vectaire Ltd", "AVT", "SL125/2EC", "", "2011", "current", "", "1", "0", "2", "1", "", "5", "1", "21.0", "0.20", "", "2", "29.0", "0.26", "", "3", "37.0", "0.34", "", "4", "45.0", "0.44", "", "5", "53.0", "0.55"]}
{"pcdb_id": 500519, "raw": ["500519", "020003", "0", "2017/May/17 17:27", "The Nuaire Group", "Nuaire", "MRXBOXAB-ECO-LP1", "", "2017", "current", "", "3", "0", "2", "1", "3", "5", "1", "21.0", "0.59", "76", "2", "29.0", "0.71", "76", "3", "37.0", "0.91", "78", "4", "45.0", "1.15", "79", "5", "53.0", "1.40", "79"]}
{"pcdb_id": 500520, "raw": ["500520", "020041", "0", "2017/May/22 09:52", "Polypipe Ltd", "Domus Ventilation", "CMX", "", "2013", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.24", "", "2", "29.0", "0.25", "", "3", "37.0", "0.29", "", "4", "45.0", "0.35", "", "5", "53.0", "0.43", "", "6", "61.0", "0.54"]}
{"pcdb_id": 500521, "raw": ["500521", "020041", "0", "2017/May/17 17:49", "Polypipe Ltd", "Domus Ventilation", "AQH200-B", "", "2016", "current", "", "3", "0", "2", "1", "3", "2", "1", "21.0", "0.75", "83", "2", "29.0", "0.95", "81"]}
{"pcdb_id": 500522, "raw": ["500522", "020041", "0", "2017/May/22 09:45", "Polypipe Ltd", "Domus Ventilation", "AQH200-S", "", "2016", "current", "", "3", "0", "2", "1", "1", "2", "1", "21.0", "0.72", "87", "2", "29.0", "0.88", "84"]}
{"pcdb_id": 500523, "raw": ["500523", "020041", "0", "2017/May/17 17:40", "Polypipe Ltd", "Domus Ventilation", "AQH240-B", "", "2016", "current", "", "3", "0", "2", "1", "3", "2", "1", "21.0", "0.69", "86", "2", "29.0", "0.84", "83"]}
{"pcdb_id": 500524, "raw": ["500524", "020041", "0", "2017/May/17 17:37", "Polypipe Ltd", "Domus Ventilation", "AQH240-S", "", "2016", "current", "", "3", "0", "2", "1", "1", "2", "1", "21.0", "0.69", "88", "2", "29.0", "0.84", "85"]}
{"pcdb_id": 500525, "raw": ["500525", "020030", "0", "2017/May/17 17:33", "Aldes", "Aldes", "COMPACT MICRO-WATT SP", "", "2015", "current", "", "1", "0", "2", "1", "", "4", "1", "21.0", "0.29", "", "2", "29.0", "0.26", "", "3", "37.0", "0.24", "", "4", "45.0", "0.34"]}
{"pcdb_id": 500526, "raw": ["500526", "020030", "0", "2017/May/17 17:31", "Aldes", "Aldes", "SFP300", "", "2015", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.30", "", "2", "29.0", "0.25", "", "3", "37.0", "0.22", "", "4", "45.0", "0.33", "", "5", "53.0", "0.32", "", "6", "61.0", "0.33"]}
{"pcdb_id": 500527, "raw": ["500527", "020115", "0", "2017/May/17 16:48", "Vectaire Ltd", "AVT", "HRV100", "", "2013", "current", "", "3", "0", "2", "1", "1", "4", "1", "21.0", "0.51", "93", "2", "29.0", "0.61", "91", "3", "37.0", "0.75", "90", "4", "45.0", "0.92", "89"]}
{"pcdb_id": 500528, "raw": ["500528", "020092", "0", "2017/Jul/24 12:31", "Renson Fabrications Ltd", "Renson", "Endura Delta 330", "", "2017", "current", "", "3", "0", "2", "2", "3", "7", "1", "21.0", "0.75", "91", "2", "29.0", "0.72", "90", "3", "37.0", "0.75", "89", "4", "45.0", "0.86", "88", "5", "53.0", "0.96", "88", "6", "61.0", "1.16", "87", "7", "69.0", "1.43", "87"]}
{"pcdb_id": 500529, "raw": ["500529", "020092", "0", "2017/Jul/24 12:45", "Renson Fabrications Ltd", "Renson", "Endura Delta 380", "", "2017", "current", "", "3", "0", "2", "2", "3", "7", "1", "21.0", "0.64", "91", "2", "29.0", "0.59", "90", "3", "37.0", "0.62", "89", "4", "45.0", "0.71", "88", "5", "53.0", "0.81", "87", "6", "61.0", "0.98", "87", "7", "69.0", "1.16", "87"]}
{"pcdb_id": 500530, "raw": ["500530", "020011", "0", "2022/Sep/23 15:41", "Vectaire Ltd", "Vectaire", "WHHR-Maxi Plus BY", "", "2017", "current", "", "3", "0", "2", "1", "4", "7", "1", "21.0", "0.56", "89", "2", "29.0", "0.47", "89", "3", "37.0", "0.50", "88", "4", "45.0", "0.56", "87", "5", "53.0", "0.66", "86", "6", "61.0", "0.78", "85", "7", "69.0", "0.94", "84"]}
{"pcdb_id": 500531, "raw": ["500531", "020092", "0", "2017/Aug/24 11:41", "Renson Fabrications Ltd", "Renson", "E+ndura 300", "", "2015", "current", "", "1", "1", "2", "2", "", "6", "1", "21.0", "0.38", "", "2", "29.0", "0.32", "", "3", "37.0", "0.29", "", "4", "45.0", "0.25", "", "5", "53.0", "0.28", "", "6", "61.0", "0.28"]}
{"pcdb_id": 500533, "raw": ["500533", "020043", "0", "2017/Oct/11 15:42", "Total Home Environment Ltd", "Genvex", "ECO 375 TS OPT251 PET", "", "2016", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.65", "86", "2", "29.0", "0.63", "86", "3", "37.0", "0.64", "87", "4", "45.0", "0.74", "86", "5", "53.0", "0.85", "86", "6", "61.0", "1.02", "86", "7", "69.0", "1.19", "85"]}
{"pcdb_id": 500534, "raw": ["500534", "020043", "0", "2017/Oct/26 14:15", "Total Home Environment Ltd", "Genvex", "ECO 190 CS", "", "2016", "current", "", "3", "0", "2", "1", "0", "3", "1", "21.0", "0.67", "90", "2", "29.0", "0.71", "88", "3", "37.0", "0.80", "86"]}
{"pcdb_id": 500539, "raw": ["500539", "020065", "0", "2017/Dec/19 13:17", "Stiebel Eltron UK Ltd", "Stiebel Eltron", "LWZ 280", "", "2017", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.52", "90", "2", "29.0", "0.55", "90", "3", "37.0", "0.62", "90", "4", "45.0", "0.72", "89", "5", "53.0", "0.88", "88", "6", "61.0", "1.07", "89", "7", "69.0", "1.28", "88"]}
{"pcdb_id": 500540, "raw": ["500540", "020065", "0", "2017/Dec/19 13:14", "Stiebel Eltron UK Ltd", "Stiebel Eltron", "LWZ 280 Enthalpie", "", "2017", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.48", "84", "2", "29.0", "0.46", "84", "3", "37.0", "0.55", "82", "4", "45.0", "0.64", "80", "5", "53.0", "0.78", "79", "6", "61.0", "0.99", "77", "7", "69.0", "1.12", "77"]}
{"pcdb_id": 500541, "raw": ["500541", "020065", "0", "2017/Dec/19 13:11", "Stiebel Eltron UK Ltd", "Stiebel Eltron", "LWZ 180", "", "2017", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.52", "90", "2", "29.0", "0.55", "90", "3", "37.0", "0.62", "90", "4", "45.0", "0.72", "89", "5", "53.0", "0.88", "88", "6", "61.0", "1.07", "89", "7", "69.0", "1.28", "88"]}
{"pcdb_id": 500542, "raw": ["500542", "020065", "0", "2017/Dec/19 13:05", "Stiebel Eltron UK Ltd", "Stiebel Eltron", "LWZ 180 Enthalpie", "", "2017", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.48", "84", "2", "29.0", "0.46", "84", "3", "37.0", "0.55", "82", "4", "45.0", "0.64", "80", "5", "53.0", "0.78", "79", "6", "61.0", "0.99", "77", "7", "69.0", "1.12", "77"]}
{"pcdb_id": 500543, "raw": ["500543", "020031", "0", "2018/Feb/08 13:45", "Genvex AB", "NIBE", "ERS 20-250", "", "2017", "current", "", "3", "0", "2", "1", "0", "5", "1", "21.0", "0.81", "81", "2", "29.0", "0.83", "81", "3", "37.0", "0.97", "81", "4", "45.0", "1.18", "80", "5", "53.0", "1.45", "80"]}
{"pcdb_id": 500544, "raw": ["500544", "020031", "0", "2018/Jan/15 15:22", "NIBE Energy Systems Ltd", "NIBE", "F730", "", "2017", "current", "", "1", "1", "2", "1", "", "6", "1", "21.0", "0.70", "", "2", "29.0", "0.64", "", "3", "37.0", "0.62", "", "4", "45.0", "0.68", "", "5", "53.0", "0.72", "", "6", "61.0", "0.81"]}
{"pcdb_id": 500545, "raw": ["500545", "020031", "0", "2018/Jan/15 15:17", "GENVEX AB", "NIBE", "ERS 10-400", "", "2017", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.79", "89", "2", "29.0", "0.73", "89", "3", "37.0", "0.75", "88", "4", "45.0", "0.83", "87", "5", "53.0", "0.94", "87", "6", "61.0", "1.09", "86", "7", "69.0", "1.28", "86"]}
{"pcdb_id": 500546, "raw": ["500546", "020084", "0", "2018/Jan/15 15:08", "FRÄNKISCHE ROHRWERKE", "FRÄNKISCHE", "profi-air 180 flat", "", "2016", "current", "", "3", "0", "2", "1", "3", "4", "1", "21.0", "0.92", "92", "2", "29.0", "0.98", "91", "3", "37.0", "1.13", "90", "4", "45.0", "1.41", "89"]}
{"pcdb_id": 500547, "raw": ["500547", "020084", "0", "2021/Oct/20 09:58", "FRÄNKISCHE ROHRWERKE", "FRÄNKISCHE", "profi-air 180 sensor", "", "2016", "obsolete", "", "3", "0", "2", "1", "1", "4", "1", "21.0", "0.85", "82", "2", "29.0", "0.92", "82", "3", "37.0", "1.05", "81", "4", "45.0", "1.23", "81"]}
{"pcdb_id": 500548, "raw": ["500548", "020084", "0", "2021/Oct/20 09:58", "FRÄNKISCHE ROHRWERKE", "FRÄNKISCHE", "profi-air 300 sensor", "", "2016", "obsolete", "", "3", "0", "2", "1", "3", "6", "1", "21.0", "0.59", "82", "2", "29.0", "0.58", "82", "3", "37.0", "0.66", "83", "4", "45.0", "0.83", "83", "5", "53.0", "0.94", "83", "6", "61.0", "1.14", "83"]}
{"pcdb_id": 500549, "raw": ["500549", "020066", "0", "2025/Sep/15 16:33", "J Pichler GmbH", "Pichler", "PKOM4A", "", "2015", "current", "", "3", "1", "2", "1", "3", "6", "1", "21.0", "1.10", "89", "2", "29.0", "0.99", "89", "3", "37.0", "1.00", "90", "4", "45.0", "1.11", "90", "5", "53.0", "1.24", "90", "6", "61.0", "1.45", "89"]}
{"pcdb_id": 500550, "raw": ["500550", "020112", "0", "2018/Mar/20 15:06", "Blauberg UK Ltd", "Blauberg", "KOMFORT EC SB 350", "", "2015", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.66", "85", "2", "29.0", "0.60", "84", "3", "37.0", "0.63", "84", "4", "45.0", "0.71", "83", "5", "53.0", "0.82", "83", "6", "61.0", "0.97", "83", "7", "69.0", "1.16", "82"]}
{"pcdb_id": 500551, "raw": ["500551", "020112", "0", "2018/Mar/20 15:01", "Blauberg UK Ltd", "Blauberg", "KOMFORT EC SB 550 S14", "", "2015", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.71", "84", "2", "29.0", "0.65", "85", "3", "37.0", "0.68", "85", "4", "45.0", "0.76", "85", "5", "53.0", "0.88", "85", "6", "61.0", "1.02", "85", "7", "69.0", "1.20", "84"]}
{"pcdb_id": 500552, "raw": ["500552", "020112", "0", "2018/Mar/20 14:46", "Blauberg UK Ltd", "Blauberg", "KOMFORT EC S5B 270 S14", "", "2017", "current", "", "3", "0", "2", "1", "3", "4", "1", "21.0", "0.72", "81", "2", "29.0", "0.83", "80", "3", "37.0", "1.01", "80", "4", "45.0", "1.28", "79"]}
{"pcdb_id": 500553, "raw": ["500553", "020030", "0", "2018/Apr/23 14:00", "Aldes", "Aldes", "EasyHOME PureAIR COMPACT PREMIUM", "", "2018", "current", "", "1", "0", "2", "2", "", "4", "1", "21.0", "0.28", "", "2", "29.0", "0.24", "", "3", "37.0", "0.24", "", "4", "45.0", "0.24"]}
{"pcdb_id": 500554, "raw": ["500554", "020030", "0", "2018/Apr/23 13:45", "Aldes", "Aldes", "EasyHOME PureAIR COMPACT CLASSIC", "", "2018", "current", "", "1", "0", "2", "2", "", "3", "1", "21.0", "0.59", "", "2", "29.0", "0.44", "", "3", "37.0", "0.38"]}
{"pcdb_id": 500555, "raw": ["500555", "020030", "0", "2018/Apr/23 13:48", "Aldes", "Aldes", "EasyHOME HYGRO COMPACT PREMIUM SP", "", "2018", "current", "", "1", "0", "2", "2", "", "4", "1", "21.0", "0.26", "", "2", "29.0", "0.33", "", "3", "37.0", "0.27", "", "4", "45.0", "0.25"]}
{"pcdb_id": 500556, "raw": ["500556", "020122", "0", "2018/Apr/25 12:44", "Vortice Ltd", "INVAVENT", "MAXI", "", "2009", "current", "", "1", "0", "2", "1", "", "6", "1", "15.0", "0.24", "", "2", "21.0", "0.21", "", "3", "27.0", "0.20", "", "4", "33.0", "0.23", "", "5", "39.0", "0.25", "", "6", "45.0", "0.29"]}
{"pcdb_id": 500557, "raw": ["500557", "020122", "0", "2018/Apr/25 12:42", "Vortice Ltd.", "INVAVENT", "200", "", "2013", "current", "", "3", "0", "2", "1", "1", "3", "1", "21.0", "0.61", "90", "2", "29.0", "0.80", "89", "3", "37.0", "1.06", "87"]}
{"pcdb_id": 500558, "raw": ["500558", "020122", "0", "2018/May/21 09:20", "Vortice", "INVAVENT", "350", "", "2015", "current", "", "3", "0", "2", "1", "0", "7", "1", "21.0", "0.60", "91", "2", "29.0", "0.63", "90", "3", "37.0", "0.72", "89", "4", "45.0", "0.88", "89", "5", "53.0", "1.05", "88", "6", "61.0", "1.31", "88", "7", "69.0", "1.58", "88"]}
{"pcdb_id": 500559, "raw": ["500559", "020065", "0", "2018/Apr/23 14:14", "Stiebel Eltron UK Ltd", "Stiebel Eltron", "LWZ 130", "237805", "2017", "current", "", "3", "0", "2", "1", "1", "3", "1", "21.0", "0.82", "91", "2", "29.0", "0.99", "89", "3", "37.0", "1.13", "87"]}
{"pcdb_id": 500560, "raw": ["500560", "020065", "0", "2018/Apr/23 14:11", "Stiebel Eltron UK Ltd", "Stiebel Eltron", "LWZ 130 Enthalpie", "237806", "2017", "current", "", "3", "0", "2", "1", "1", "3", "1", "21.0", "0.78", "79", "2", "29.0", "0.89", "75", "3", "37.0", "1.07", "72"]}
{"pcdb_id": 500561, "raw": ["500561", "020122", "0", "2018/Apr/25 12:45", "Blauberg", "INVAVENT", "550", "", "2010", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.71", "84", "2", "29.0", "0.65", "85", "3", "37.0", "0.68", "85", "4", "45.0", "0.76", "85", "5", "53.0", "0.88", "85", "6", "61.0", "1.02", "85", "7", "69.0", "1.20", "84"]}
{"pcdb_id": 500562, "raw": ["500562", "020002", "0", "2018/May/25 08:35", "Vent Axia Ltd", "Vent Axia", "MVHR 75 R", "475695", "2018", "current", "", "3", "0", "2", "1", "1", "5", "1", "21.0", "0.58", "90", "2", "29.0", "0.70", "88", "3", "37.0", "0.83", "86", "4", "45.0", "1.05", "85", "5", "53.0", "1.32", "84"]}
{"pcdb_id": 500563, "raw": ["500563", "020030", "0", "2018/May/15 13:10", "Aldes", "Aldes", "EasyHOME HYGRO PREMIUM SP", "", "2018", "current", "", "1", "0", "2", "2", "", "5", "1", "21.0", "0.26", "", "2", "29.0", "0.23", "", "3", "37.0", "0.33", "", "4", "45.0", "0.31", "", "5", "51.0", "0.31"]}
{"pcdb_id": 500564, "raw": ["500564", "020013", "0", "2018/May/25 08:09", "Johnson & Starley Ltd", "Johnson & Starley", "Q-VENT MEZZO", "", "2018", "current", "", "3", "0", "2", "1", "1", "4", "1", "21.0", "0.72", "88", "2", "29.0", "0.83", "85", "3", "37.0", "1.02", "83", "4", "45.0", "1.27", "81"]}
{"pcdb_id": 500565, "raw": ["500565", "020002", "0", "2018/May/25 08:26", "Vent Axia Ltd", "Vent Axia", "Sentinel Kinetic Advance S", "405215A", "2018", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.59", "94", "2", "29.0", "0.61", "93", "3", "37.0", "0.66", "93", "4", "45.0", "0.83", "92", "5", "53.0", "0.96", "91", "6", "61.0", "1.18", "90", "7", "69.0", "1.39", "90"]}
{"pcdb_id": 500566, "raw": ["500566", "020011", "0", "2018/Jun/25 11:08", "Vectaire Ltd", "Vectaire", "MBOX200/2DC", "", "2017", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.28", "", "2", "29.0", "0.27", "", "3", "37.0", "0.28", "", "4", "45.0", "0.36", "", "5", "53.0", "0.42", "", "6", "61.0", "0.52"]}
{"pcdb_id": 500567, "raw": ["500567", "020007", "0", "2018/Jun/25 11:12", "Titon Hardware Ltd", "Titon", "HRV1.6 Q Plus Eco", "", "2018", "current", "", "3", "0", "2", "1", "3", "6", "1", "21.0", "0.51", "89", "2", "29.0", "0.58", "87", "3", "37.0", "0.70", "86", "4", "45.0", "0.90", "84", "5", "53.0", "1.07", "83", "6", "61.0", "1.34", "82"]}
{"pcdb_id": 500568, "raw": ["500568", "020027", "0", "2018/Jul/24 10:20", "Titon Hardware Ltd", "EnviroVent", "energiSava 325", "", "2018", "current", "", "3", "0", "2", "1", "1", "6", "1", "21.0", "0.60", "91", "2", "29.0", "0.62", "90", "3", "37.0", "0.72", "89", "4", "45.0", "0.88", "88", "5", "53.0", "1.06", "87", "6", "61.0", "1.30", "87"]}
{"pcdb_id": 500569, "raw": ["500569", "020003", "0", "2018/Jul/24 10:24", "The Nuaire Group", "Nuaire", "MRXBOXAB-ECO-LP2", "", "2018", "current", "", "3", "0", "2", "1", "3", "5", "1", "21.0", "0.48", "78", "2", "29.0", "0.61", "79", "3", "37.0", "0.77", "79", "4", "45.0", "1.01", "79", "5", "53.0", "1.26", "79"]}
{"pcdb_id": 500570, "raw": ["500570", "020027", "0", "2018/Jul/24 10:19", "Titon Hardware Ltd", "EnviroVent", "energiSava 500", "", "2016", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.43", "90", "2", "29.0", "0.46", "88", "3", "37.0", "0.54", "87", "4", "45.0", "0.65", "86", "5", "53.0", "0.79", "85", "6", "61.0", "0.96", "84", "7", "69.0", "1.16", "83"]}
{"pcdb_id": 500571, "raw": ["500571", "020050", "0", "2018/Aug/07 10:19", "Aereco Ltd", "Aereco", "DXA Exclusive with condensate pump", "DXA1240EX", "2017", "current", "", "3", "0", "2", "1", "3", "6", "1", "21.0", "0.69", "92", "2", "29.0", "0.69", "91", "3", "37.0", "0.74", "90", "4", "45.0", "0.90", "90", "5", "53.0", "1.05", "89", "6", "61.0", "1.27", "89"]}
{"pcdb_id": 500572, "raw": ["500572", "020050", "0", "2018/Aug/07 10:19", "Aereco Ltd", "Aereco", "DXA Exclusive with siphon", "DXA1247EX", "2017", "current", "", "3", "0", "2", "1", "3", "6", "1", "21.0", "0.69", "92", "2", "29.0", "0.69", "91", "3", "37.0", "0.74", "90", "4", "45.0", "0.90", "90", "5", "53.0", "1.05", "89", "6", "61.0", "1.27", "89"]}
{"pcdb_id": 500573, "raw": ["500573", "020004", "0", "2018/Sep/20 13:33", "Zehnder Group UK Ltd", "Zehnder", "ComfoAir 160 EXP", "", "2012", "current", "", "3", "0", "2", "1", "3", "3", "1", "21.0", "0.84", "85", "2", "29.0", "0.96", "83", "3", "37.0", "1.15", "82"]}
{"pcdb_id": 500574, "raw": ["500574", "020083", "0", "2018/Sep/20 13:27", "Redring Xpelair Group Ltd", "Xpelair", "Natural Air 350", "", "2018", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.40", "90", "2", "29.0", "0.43", "89", "3", "37.0", "0.49", "88", "4", "45.0", "0.61", "87", "5", "53.0", "0.75", "86", "6", "61.0", "0.93", "86", "7", "69.0", "1.16", "85"]}
{"pcdb_id": 500575, "raw": ["500575", "020011", "0", "2021/Apr/30 19:13", "Vectaire Ltd", "Vectaire", "EVO350-BY", "", "2018", "current", "", "3", "0", "2", "1", "4", "5", "1", "21.0", "0.72", "87", "2", "29.0", "0.75", "85", "3", "37.0", "0.85", "84", "4", "45.0", "1.04", "83", "5", "53.0", "1.23", "82"]}
{"pcdb_id": 500576, "raw": ["500576", "020041", "0", "2018/Oct/24 07:36", "Polypipe Ltd", "Domus Ventilation", "CMX-MULTI", "", "2018", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.14", "", "2", "29.0", "0.16", "", "3", "37.0", "0.20", "", "4", "45.0", "0.25", "", "5", "53.0", "0.31", "", "6", "61.0", "0.37"]}
{"pcdb_id": 500577, "raw": ["500577", "020011", "0", "2021/Apr/30 19:13", "Vectaire Ltd", "Vectaire", "STUDIO-BY", "", "2018", "current", "", "3", "0", "2", "1", "4", "3", "1", "21.0", "0.93", "79", "2", "29.0", "1.09", "78", "3", "37.0", "1.36", "77"]}
{"pcdb_id": 500578, "raw": ["500578", "020041", "0", "2018/Oct/29 11:29", "Polypipe Ltd", "Domus Ventilation", "HRXE", "", "2018", "current", "", "3", "0", "2", "1", "3", "5", "1", "21.0", "0.57", "90", "2", "29.0", "0.64", "88", "3", "37.0", "0.81", "87", "4", "45.0", "1.05", "86", "5", "53.0", "1.29", "86"]}
{"pcdb_id": 500579, "raw": ["500579", "020018", "0", "2018/Nov/26 10:35", "Volution Ventilation UK Ltd", "National Ventilation", "MON-HRU/330-100", "", "2018", "current", "", "3", "0", "2", "1", "1", "6", "1", "21.0", "0.59", "91", "2", "29.0", "0.63", "89", "3", "37.0", "0.72", "88", "4", "45.0", "0.88", "86", "5", "53.0", "1.05", "85", "6", "61.0", "1.28", "84"]}
{"pcdb_id": 500580, "raw": ["500580", "020018", "0", "2018/Nov/27 10:58", "Volution Ventilation UK Ltd", "National Ventilation", "MON-HRU/350-150i", "", "2018", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.39", "93", "2", "29.0", "0.46", "92", "3", "37.0", "0.55", "91", "4", "45.0", "0.70", "91", "5", "53.0", "0.85", "90", "6", "61.0", "1.07", "89", "7", "69.0", "1.31", "89"]}
{"pcdb_id": 500581, "raw": ["500581", "020018", "0", "2018/Nov/26 10:50", "Volution Ventilation UK Ltd", "National Ventilation", "MON-HRU/230-100", "", "2018", "current", "", "3", "0", "2", "1", "1", "5", "1", "21.0", "0.58", "90", "2", "29.0", "0.70", "88", "3", "37.0", "0.83", "86", "4", "45.0", "1.05", "85", "5", "53.0", "1.32", "84"]}
{"pcdb_id": 500582, "raw": ["500582", "020018", "0", "2018/Nov/27 10:56", "Volution Ventilation UK Ltd", "National Ventilation", "MON-HRU/400-150", "", "2018", "current", "", "3", "0", "2", "1", "1", "6", "1", "21.0", "0.40", "94", "2", "29.0", "0.43", "94", "3", "37.0", "0.53", "94", "4", "45.0", "0.65", "93", "5", "53.0", "0.78", "93", "6", "61.0", "0.93", "92"]}
{"pcdb_id": 500583, "raw": ["500583", "020130", "0", "2018/Nov/27 11:25", "Vero Duco N.V.", "Duco", "DucoBox Silent UK", "00004229", "2013", "current", "", "1", "0", "2", "1", "", "6", "1", "21.4", "0.31", "", "2", "29.0", "0.26", "", "3", "37.0", "0.25", "", "4", "45.0", "0.26", "", "5", "53.6", "0.29", "", "6", "61.1", "0.32"]}
{"pcdb_id": 500584, "raw": ["500584", "020130", "0", "2018/Nov/27 11:25", "Vero Duco N.V.", "Duco", "DucoBox Focus UK", "00004448", "2013", "current", "", "1", "0", "2", "1", "", "6", "1", "21.4", "0.31", "", "2", "29.0", "0.26", "", "3", "37.0", "0.25", "", "4", "45.0", "0.26", "", "5", "53.6", "0.29", "", "6", "61.1", "0.32"]}
{"pcdb_id": 500585, "raw": ["500585", "020092", "0", "2018/Nov/26 12:23", "Renson Fabrications Ltd", "Renson", "Healthbox 3.0", "", "2018", "current", "", "1", "0", "2", "2", "", "6", "1", "21.0", "0.46", "", "2", "29.0", "0.36", "", "3", "37.0", "0.31", "", "4", "45.0", "0.28", "", "5", "53.0", "0.28", "", "6", "61.0", "0.28"]}
{"pcdb_id": 500591, "raw": ["500591", "020092", "0", "2018/Dec/13 09:10", "Renson Fabrications Ltd", "Renson", "Endura Delta 450", "", "2017", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.62", "91", "2", "29.0", "0.59", "90", "3", "37.0", "0.62", "89", "4", "45.0", "0.71", "88", "5", "53.0", "0.83", "87", "6", "61.0", "0.99", "86", "7", "69.0", "1.18", "86"]}
{"pcdb_id": 500592, "raw": ["500592", "020050", "0", "2018/Dec/13 09:09", "Aereco Ltd", "Aereco", "V5S Premium", "V5S 1131", "2014", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.40", "", "2", "29.0", "0.33", "", "3", "37.0", "0.38", "", "4", "45.0", "0.34", "", "5", "53.0", "0.36", "", "6", "61.0", "0.36"]}
{"pcdb_id": 500593, "raw": ["500593", "020122", "0", "2019/Jan/23 15:04", "Inventum BV", "JOULE", "Victorum", "62010020", "2016", "current", "", "1", "1", "2", "1", "", "6", "1", "21.0", "0.32", "", "2", "29.0", "0.29", "", "3", "37.0", "0.29", "", "4", "45.0", "0.33", "", "5", "53.0", "0.39", "", "6", "61.0", "0.45"]}
{"pcdb_id": 500594, "raw": ["500594", "020052", "0", "2019/Feb/25 12:50", "Brook Design Hardware Ltd", "Brookvent", "Aircycle 1.3", "", "2018", "current", "", "3", "0", "2", "1", "4", "4", "1", "21.0", "0.57", "90", "2", "29.0", "0.68", "87", "3", "37.0", "0.85", "85", "4", "45.0", "1.10", "84"]}
{"pcdb_id": 500595, "raw": ["500595", "020052", "0", "2019/Feb/25 12:49", "Brook Design Hardware Ltd", "Brookvent", "Aircycle 1.3+", "", "2018", "current", "", "3", "0", "2", "1", "4", "4", "1", "21.0", "0.45", "87", "2", "29.0", "0.54", "84", "3", "37.0", "0.67", "83", "4", "45.0", "0.87", "81"]}
{"pcdb_id": 500596, "raw": ["500596", "020020", "0", "2019/Feb/22 09:25", "Orcon B.V.", "Orcon", "HRC-350-MaxComfort", "", "2018", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.54", "93", "2", "29.0", "0.52", "93", "3", "37.0", "0.55", "92", "4", "45.0", "0.62", "92", "5", "53.0", "0.72", "92", "6", "61.0", "0.84", "92", "7", "69.0", "1.00", "91"]}
{"pcdb_id": 500597, "raw": ["500597", "020020", "0", "2019/Feb/22 09:19", "Orcon B.V.", "Orcon", "HRC-450-MaxComfort", "", "2018", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.47", "92", "2", "29.0", "0.46", "93", "3", "37.0", "0.50", "93", "4", "45.0", "0.57", "92", "5", "53.0", "0.67", "92", "6", "61.0", "0.79", "92", "7", "69.0", "0.93", "91"]}
{"pcdb_id": 500598, "raw": ["500598", "020007", "0", "2019/Feb/22 09:43", "Titon Hardware Ltd", "Titon", "HRV20 Q Plus Eco", "", "2018", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.48", "88", "2", "29.0", "0.49", "88", "3", "37.0", "0.53", "87", "4", "45.0", "0.63", "86", "5", "53.0", "0.74", "85", "6", "61.0", "0.90", "83", "7", "69.0", "1.08", "82"]}
{"pcdb_id": 500599, "raw": ["500599", "020130", "0", "2022/Jul/26 10:18", "Vero Duco N.V.", "Duco", "DucoBox Energy Premium 400 - 2ZS - L", "", "2018", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.59", "91", "2", "29.0", "0.58", "91", "3", "37.0", "0.63", "90", "4", "45.0", "0.75", "89", "5", "53.0", "0.87", "89", "6", "61.0", "1.03", "88", "7", "69.0", "1.26", "87"]}
{"pcdb_id": 500600, "raw": ["500600", "020130", "0", "2022/Jul/26 10:18", "Vero Duco N.V.", "Duco", "DucoBox Energy Premium 325 - 1ZS - L", "", "2018", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.59", "91", "2", "29.0", "0.58", "91", "3", "37.0", "0.63", "90", "4", "45.0", "0.75", "89", "5", "53.0", "0.87", "89", "6", "61.0", "1.03", "88", "7", "69.0", "1.26", "87"]}
{"pcdb_id": 500601, "raw": ["500601", "020007", "0", "2019/Feb/22 09:37", "Titon Hardware Ltd", "Titon", "CME3 Q Plus A", "", "2019", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.18", "", "2", "29.0", "0.16", "", "3", "37.0", "0.17", "", "4", "45.0", "0.19", "", "5", "53.0", "0.21", "", "6", "61.0", "0.25"]}
{"pcdb_id": 500602, "raw": ["500602", "020007", "0", "2019/Feb/22 09:37", "Titon Hardware Ltd", "Titon", "CME3 Q Plus A", "", "2019", "current", "", "1", "0", "2", "2", "", "5", "1", "21.0", "0.27", "", "2", "29.0", "0.25", "", "3", "37.0", "0.27", "", "4", "45.0", "0.29", "", "5", "53.0", "0.34"]}
{"pcdb_id": 500603, "raw": ["500603", "020007", "0", "2019/Feb/22 09:35", "Titon Hardware Ltd", "Titon", "CME3 Q Plus HA", "", "2019", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.18", "", "2", "29.0", "0.16", "", "3", "37.0", "0.17", "", "4", "45.0", "0.19", "", "5", "53.0", "0.21", "", "6", "61.0", "0.25"]}
{"pcdb_id": 500604, "raw": ["500604", "020007", "0", "2019/Feb/22 09:35", "Titon Hardware Ltd", "Titon", "CME3 Q Plus HA", "", "2019", "current", "", "1", "0", "2", "2", "", "5", "1", "21.0", "0.27", "", "2", "29.0", "0.25", "", "3", "37.0", "0.27", "", "4", "45.0", "0.29", "", "5", "53.0", "0.34"]}
{"pcdb_id": 500605, "raw": ["500605", "020007", "0", "2019/Feb/22 09:32", "Titon Hardware Ltd", "Titon", "CME3 Q Plus HA LS", "", "2019", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.18", "", "2", "29.0", "0.16", "", "3", "37.0", "0.17", "", "4", "45.0", "0.19", "", "5", "53.0", "0.21", "", "6", "61.0", "0.25"]}
{"pcdb_id": 500606, "raw": ["500606", "020007", "0", "2019/Feb/22 09:32", "Titon Hardware Ltd", "Titon", "CME3 Q Plus HA LS", "", "2019", "current", "", "1", "0", "2", "2", "", "5", "1", "21.0", "0.27", "", "2", "29.0", "0.25", "", "3", "37.0", "0.27", "", "4", "45.0", "0.29", "", "5", "53.0", "0.34"]}
{"pcdb_id": 500607, "raw": ["500607", "020070", "0", "2019/Feb/20 13:45", "Soler and Palau Ltd", "S & P", "OZEO FLAT H Ecowatt", "9050344601 - 31/2018", "2018", "current", "", "1", "0", "2", "2", "", "5", "1", "21.0", "0.42", "", "2", "29.0", "0.35", "", "3", "37.0", "0.34", "", "4", "45.0", "0.34", "", "5", "53.0", "0.35"]}
{"pcdb_id": 500608, "raw": ["500608", "020070", "0", "2019/Feb/20 13:44", "Soler and Palau Ltd", "S & P", "OZEO H Ecowatt 2", "9050473300 - 41/2018", "2018", "current", "", "1", "0", "2", "2", "", "6", "1", "21.0", "0.26", "", "2", "29.0", "0.31", "", "3", "37.0", "0.33", "", "4", "45.0", "0.37", "", "5", "53.0", "0.41", "", "6", "61.0", "0.42"]}
{"pcdb_id": 500609, "raw": ["500609", "020073", "0", "2019/Apr/25 12:49", "Dantherm Air Handling A/S", "Dantherm", "HCV400 P1 – A – BP – RH", "", "2018", "current", "", "3", "0", "2", "1", "3", "6", "1", "21.0", "0.84", "93", "2", "29.0", "0.80", "93", "3", "37.0", "0.87", "92", "4", "45.0", "1.01", "92", "5", "53.0", "1.18", "91", "6", "61.0", "1.42", "91"]}
{"pcdb_id": 500610, "raw": ["500610", "020133", "0", "2019/Mar/26 12:25", "Comfortzone AB", "Comfortzone", "EX35", "", "2013", "current", "", "1", "1", "2", "1", "", "4", "1", "21.0", "0.75", "", "2", "29.0", "0.68", "", "3", "37.0", "0.71", "", "4", "45.0", "0.82"]}
{"pcdb_id": 500611, "raw": ["500611", "020133", "0", "2019/Mar/26 12:16", "Comfortzone AB", "Comfortzone", "EX50", "", "2013", "current", "", "1", "1", "2", "1", "", "6", "1", "21.0", "0.75", "", "2", "29.0", "0.68", "", "3", "37.0", "0.71", "", "4", "45.0", "0.82", "", "5", "53.0", "0.92", "", "6", "61.0", "1.13"]}
{"pcdb_id": 500612, "raw": ["500612", "020042", "0", "2019/Apr/25 12:56", "Brink Climate Systems B.V.", "Brink", "Flair 325 4/0 R EU", "", "2018", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.55", "92", "2", "29.0", "0.52", "92", "3", "37.0", "0.55", "91", "4", "45.0", "0.63", "90", "5", "53.0", "0.73", "90", "6", "61.0", "0.86", "89", "7", "69.0", "1.00", "89"]}
{"pcdb_id": 500613, "raw": ["500613", "020042", "0", "2019/Apr/25 14:11", "Brink Climate Systems B.V.", "Brink", "Flair 400 4/0 R EU", "", "2018", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.48", "92", "2", "29.0", "0.49", "91", "3", "37.0", "0.53", "90", "4", "45.0", "0.63", "90", "5", "53.0", "0.74", "90", "6", "61.0", "0.90", "89", "7", "69.0", "1.08", "89"]}
{"pcdb_id": 500614, "raw": ["500614", "020003", "0", "2019/Apr/15 14:49", "The Nuaire Group", "Nuaire", "MEV-X", "", "2019", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.25", "", "2", "29.0", "0.22", "", "3", "37.0", "0.23", "", "4", "45.0", "0.29", "", "5", "53.0", "0.35", "", "6", "61.0", "0.43"]}
{"pcdb_id": 500615, "raw": ["500615", "020027", "0", "2019/May/02 12:07", "Brink Climate Systems BV", "EnviroVent", "EnergiSava 300B", "", "2018", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.66", "89", "2", "29.0", "0.62", "87", "3", "37.0", "0.66", "86", "4", "45.0", "0.74", "85", "5", "53.0", "0.86", "84", "6", "61.0", "1.04", "83", "7", "69.0", "1.21", "83"]}
{"pcdb_id": 500616, "raw": ["500616", "020007", "0", "2019/May/08 11:44", "Titon Hardware Ltd", "Titon", "HRV20 HE Q Plus Eco", "", "2019", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.52", "91", "2", "29.0", "0.53", "91", "3", "37.0", "0.58", "90", "4", "45.0", "0.68", "90", "5", "53.0", "0.79", "89", "6", "61.0", "0.95", "89", "7", "69.0", "1.15", "88"]}
{"pcdb_id": 500617, "raw": ["500617", "020038", "0", "2019/Jun/10 13:52", "Titon Hardware Ltd", "Beam", "AXCO MVHR C170", "", "2018", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.52", "91", "2", "29.0", "0.53", "91", "3", "37.0", "0.58", "90", "4", "45.0", "0.68", "90", "5", "53.0", "0.79", "89", "6", "61.0", "0.95", "89", "7", "69.0", "1.15", "88"]}
{"pcdb_id": 500618, "raw": ["500618", "020084", "0", "2019/Aug/12 11:52", "FRÄNKISCHE ROHRWERKE", "FRÄNKISCHE", "profi-air 250 flex", "", "2019", "current", "", "3", "0", "2", "1", "3", "6", "1", "21.0", "0.84", "93", "2", "29.0", "0.80", "93", "3", "37.0", "0.87", "92", "4", "45.0", "1.01", "92", "5", "53.0", "1.18", "91", "6", "61.0", "1.42", "91"]}
{"pcdb_id": 500619, "raw": ["500619", "020124", "0", "2019/Aug/08 14:47", "Orca Energija d.o.o.", "ORCA", "MAXI 350", "", "2017", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.62", "80", "2", "29.0", "0.56", "79", "3", "37.0", "0.61", "78", "4", "45.0", "0.72", "77", "5", "53.0", "0.87", "76", "6", "61.0", "1.07", "75", "7", "69.0", "1.32", "72"]}
{"pcdb_id": 500620, "raw": ["500620", "020124", "0", "2019/Aug/08 14:42", "Orca Energija d.o.o.", "ORCA", "MAXI 550", "", "2017", "current", "", "3", "0", "2", "1", "3", "6", "2", "29.0", "0.63", "88", "3", "37.0", "0.63", "88", "4", "45.0", "0.72", "88", "5", "53.0", "0.84", "88", "6", "61.0", "0.98", "87", "7", "69.0", "1.16", "87"]}
{"pcdb_id": 500621, "raw": ["500621", "020004", "0", "2019/Sep/12 11:47", "Zehnder Group UK Ltd", "Zehnder", "ComfoAir 155 WM", "", "2019", "current", "", "3", "0", "2", "1", "3", "5", "1", "21.0", "0.56", "92", "2", "29.0", "0.69", "91", "3", "37.0", "0.88", "90", "4", "45.0", "1.15", "89", "5", "53.0", "1.41", "88"]}
{"pcdb_id": 500622, "raw": ["500622", "020004", "0", "2019/Sep/12 11:51", "Zehnder Group UK Ltd", "Zehnder", "ComfoAir 155 WMe", "", "2019", "current", "", "3", "0", "2", "1", "3", "5", "1", "21.0", "0.50", "90", "2", "29.0", "0.62", "88", "3", "37.0", "0.80", "86", "4", "45.0", "1.05", "85", "5", "53.0", "1.31", "84"]}
{"pcdb_id": 500623, "raw": ["500623", "020004", "0", "2019/Sep/12 11:55", "Zehnder Group UK Ltd", "Zehnder", "ComfoAir 155 CM", "", "2019", "current", "", "3", "0", "2", "1", "3", "3", "1", "21.0", "0.57", "92", "2", "29.0", "0.71", "91", "3", "37.0", "0.92", "90"]}
{"pcdb_id": 500624, "raw": ["500624", "020004", "0", "2019/Sep/13 09:35", "Zehnder Group UK Ltd", "Zehnder", "ComfoAir 185 WM", "", "2019", "current", "", "3", "0", "2", "1", "3", "4", "1", "21.0", "0.57", "92", "2", "29.0", "0.64", "91", "3", "37.0", "0.76", "91", "4", "45.0", "0.96", "91"]}
{"pcdb_id": 500625, "raw": ["500625", "020003", "0", "2019/Nov/27 11:11", "The Nuaire Group", "Nuaire", "MRXBOXAB-ECO5", "", "2019", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.63", "90", "2", "29.0", "0.61", "89", "3", "37.0", "0.68", "88", "4", "45.0", "0.79", "87", "5", "53.0", "0.91", "86", "6", "61.0", "1.09", "85", "7", "69.0", "1.27", "85"]}
{"pcdb_id": 500626, "raw": ["500626", "020078", "0", "2020/Jan/03 10:55", "Systemair Fans & Spares Ltd", "Systemair", "VTR 100/B LITE", "", "2019", "current", "", "3", "0", "2", "1", "3", "4", "1", "21.0", "1.18", "77", "2", "29.0", "1.16", "77", "3", "37.0", "1.27", "76", "4", "45.0", "1.50", "75"]}
{"pcdb_id": 500627, "raw": ["500627", "020139", "0", "2024/Dec/11 17:35", "Brink Climate Systems", "Ubbink", "Vigor W400 4/0 R GB", "", "2019", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.48", "92", "2", "29.0", "0.49", "91", "3", "37.0", "0.53", "90", "4", "45.0", "0.63", "90", "5", "53.0", "0.74", "90", "6", "61.0", "0.90", "89", "7", "69.0", "1.08", "89"]}
{"pcdb_id": 500628, "raw": ["500628", "020139", "0", "2024/Dec/11 17:36", "Brink Climate Systems", "Ubbink", "Vigor W325 4/0 R GB", "", "2019", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.55", "92", "2", "29.0", "0.52", "92", "3", "37.0", "0.55", "91", "4", "45.0", "0.63", "90", "5", "53.0", "0.73", "90", "6", "61.0", "0.86", "89", "7", "69.0", "1.00", "89"]}
{"pcdb_id": 500629, "raw": ["500629", "020139", "0", "2025/Jan/06 11:36", "Brink Climate Systems", "Ubbink", "F150", "", "2013", "current", "", "3", "0", "2", "1", "3", "3", "1", "21.0", "0.75", "88", "2", "29.0", "0.86", "85", "3", "37.0", "1.04", "84"]}
{"pcdb_id": 500630, "raw": ["500630", "020139", "0", "2024/Nov/14 16:05", "Ubbink UK Ltd", "Ubbink", "F300", "", "2013", "current", "", "3", "0", "2", "1", "3", "6", "1", "21.0", "0.60", "90", "2", "29.0", "0.62", "90", "3", "37.0", "0.71", "87", "4", "45.0", "0.83", "86", "5", "53.0", "0.97", "85", "6", "61.0", "1.12", "84"]}
{"pcdb_id": 500631, "raw": ["500631", "020003", "0", "2020/Mar/05 13:59", "The Nuaire Group", "Nuaire", "MEV-ECO", "", "2019", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.17", "", "2", "29.0", "0.17", "", "3", "37.0", "0.20", "", "4", "45.0", "0.24", "", "5", "53.0", "0.30", "", "6", "61.0", "0.35"]}
{"pcdb_id": 500632, "raw": ["500632", "020141", "0", "2020/Mar/13 15:54", "Blauberg", "WiseAir", "EC 350", "", "2020", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.66", "85", "2", "29.0", "0.60", "84", "3", "37.0", "0.63", "84", "4", "45.0", "0.71", "83", "5", "53.0", "0.82", "83", "6", "61.0", "0.97", "83", "7", "69.0", "1.16", "82"]}
{"pcdb_id": 500633, "raw": ["500633", "020141", "0", "2020/Mar/13 15:51", "Blauberg", "WiseAir", "EC 550", "", "2020", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.71", "84", "2", "29.0", "0.65", "85", "3", "37.0", "0.68", "85", "4", "45.0", "0.76", "85", "5", "53.0", "0.88", "85", "6", "61.0", "1.02", "85", "7", "69.0", "1.20", "84"]}
{"pcdb_id": 500634, "raw": ["500634", "020050", "0", "2020/May/05 12:13", "Aereco", "Aereco", "V5S Premium", "V5S1131 Semi-Rigid", "2014", "current", "", "1", "0", "2", "1", "", "5", "1", "21.0", "0.40", "", "2", "29.0", "0.35", "", "3", "37.0", "0.38", "", "4", "45.0", "0.36", "", "5", "53.0", "0.36"]}
{"pcdb_id": 500635, "raw": ["500635", "020143", "0", "2020/May/11 12:37", "Thessla Green Sp. z o. o.", "THESSLAGREEN", "AirPack 4", "300h", "2019", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.78", "89", "2", "29.0", "0.76", "89", "3", "37.0", "0.78", "89", "4", "45.0", "0.87", "88", "5", "53.0", "0.99", "87", "6", "61.0", "1.15", "86", "7", "69.0", "1.36", "84"]}
{"pcdb_id": 500636, "raw": ["500636", "020143", "0", "2020/May/11 12:33", "Thessla Green Sp. z o. o.", "THESSLAGREEN", "AirPack 4", "400h", "2019", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.79", "90", "2", "29.0", "0.75", "90", "3", "37.0", "0.78", "89", "4", "45.0", "0.89", "89", "5", "53.0", "1.01", "88", "6", "61.0", "1.19", "87", "7", "69.0", "1.40", "86"]}
{"pcdb_id": 500637, "raw": ["500637", "020143", "0", "2020/May/11 12:28", "Thessla Green Sp. z o. o.", "THESSLAGREEN", "AirPack 4", "500h", "2019", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.81", "90", "2", "29.0", "0.73", "89", "3", "37.0", "0.78", "89", "4", "45.0", "0.88", "88", "5", "53.0", "0.99", "88", "6", "61.0", "1.14", "87", "7", "69.0", "1.37", "87"]}
{"pcdb_id": 500638, "raw": ["500638", "020031", "0", "2020/Jun/23 10:32", "GENVEX AB", "NIBE", "ERS S10-400", "", "2020", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.79", "89", "2", "29.0", "0.73", "89", "3", "37.0", "0.75", "88", "4", "45.0", "0.83", "87", "5", "53.0", "0.94", "87", "6", "61.0", "1.09", "86", "7", "69.0", "1.28", "86"]}
{"pcdb_id": 500639, "raw": ["500639", "020146", "0", "2020/Aug/17 10:51", "BUVA rationele bouwproducten BV", "BUVA Ratione Bouwprodukten BV", "EcoStream", "", "2018", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.57", "93", "2", "29.0", "0.53", "92", "3", "37.0", "0.56", "92", "4", "45.0", "0.64", "91", "5", "53.0", "0.73", "91", "6", "61.0", "0.87", "90", "7", "69.0", "1.02", "89"]}
{"pcdb_id": 500640, "raw": ["500640", "020145", "0", "2023/Aug/25 15:17", "KERS Innovations UK Ltd", "KERS", "KERS MEV-W230", "", "2014", "current", "", "1", "1", "2", "1", "", "6", "1", "21.0", "0.51", "", "2", "29.0", "0.57", "", "3", "37.0", "0.65", "", "4", "45.0", "0.84", "", "5", "53.0", "1.01", "", "6", "61.0", "1.26"]}
{"pcdb_id": 500641, "raw": ["500641", "020017", "0", "2020/Sep/16 10:06", "Airflow Developments Ltd", "Airflow", "Duplexvent DV65 Entro-V", "", "2019", "current", "", "3", "0", "2", "1", "3", "3", "1", "21.0", "1.07", "81", "2", "29.0", "1.12", "81", "3", "37.0", "1.24", "81"]}
{"pcdb_id": 500642, "raw": ["500642", "020017", "0", "2020/Sep/16 09:48", "Airflow Developments Ltd", "Airflow", "Duplexvent DV82 Entro-V", "", "2019", "current", "", "3", "0", "2", "1", "3", "6", "1", "21.0", "0.95", "79", "2", "29.0", "0.92", "80", "3", "37.0", "0.98", "80", "4", "45.0", "1.13", "80", "5", "53.0", "1.35", "80", "6", "61.0", "1.64", "80"]}
{"pcdb_id": 500643, "raw": ["500643", "020017", "0", "2020/Sep/16 09:40", "Airflow Developments Ltd", "Airflow", "Duplexvent DV130 Entro-V", "", "2019", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.68", "83", "2", "29.0", "0.64", "83", "3", "37.0", "0.67", "83", "4", "45.0", "0.79", "84", "5", "53.0", "0.92", "83", "6", "61.0", "1.11", "83", "7", "69.0", "1.35", "83"]}
{"pcdb_id": 500644, "raw": ["500644", "020002", "0", "2020/Nov/03 14:46", "Vent Axia Ltd", "Vent Axia", "MVDC - MS (2020)", "437634C", "2020", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.15", "", "2", "29.0", "0.14", "", "3", "37.0", "0.16", "", "4", "45.0", "0.18", "", "5", "53.0", "0.21", "", "6", "61.0", "0.26"]}
{"pcdb_id": 500645, "raw": ["500645", "020002", "0", "2020/Nov/03 14:57", "Vent Axia Ltd", "Vent Axia", "MVDC - MSH (2020)", "443298B", "2020", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.15", "", "2", "29.0", "0.14", "", "3", "37.0", "0.16", "", "4", "45.0", "0.18", "", "5", "53.0", "0.21", "", "6", "61.0", "0.26"]}
{"pcdb_id": 500646, "raw": ["500646", "020002", "0", "2020/Oct/22 15:10", "Vent Axia Ltd", "Vent Axia", "Sentinel Multivent H", "445655B", "2020", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.17", "", "2", "29.0", "0.16", "", "3", "37.0", "0.17", "", "4", "45.0", "0.18", "", "5", "53.0", "0.21", "", "6", "61.0", "0.24"]}
{"pcdb_id": 500647, "raw": ["500647", "020002", "0", "2020/Oct/22 15:10", "Vent Axia Ltd", "Vent Axia", "Sentinel Multivent HX", "495360", "2020", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.17", "", "2", "29.0", "0.16", "", "3", "37.0", "0.17", "", "4", "45.0", "0.18", "", "5", "53.0", "0.21", "", "6", "61.0", "0.24"]}
{"pcdb_id": 500648, "raw": ["500648", "020002", "0", "2020/Oct/22 15:12", "Vent Axia Ltd", "Vent Axia", "Sentinel Multivent HXCO2", "495361", "2020", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.17", "", "2", "29.0", "0.16", "", "3", "37.0", "0.17", "", "4", "45.0", "0.18", "", "5", "53.0", "0.21", "", "6", "61.0", "0.24"]}
{"pcdb_id": 500649, "raw": ["500649", "020002", "0", "2020/Oct/22 15:13", "Vent Axia Ltd", "Vent Axia", "Sentinel Multivent Plus H", "407849A", "2020", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.17", "", "2", "29.0", "0.16", "", "3", "37.0", "0.17", "", "4", "45.0", "0.18", "", "5", "53.0", "0.21", "", "6", "61.0", "0.24"]}
{"pcdb_id": 500650, "raw": ["500650", "020002", "0", "2020/Oct/22 14:53", "Vent Axia Ltd", "Vent Axia", "Sentinel Multivent Plus HX", "495362", "2020", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.17", "", "2", "29.0", "0.16", "", "3", "37.0", "0.17", "", "4", "45.0", "0.18", "", "5", "53.0", "0.21", "", "6", "61.0", "0.24"]}
{"pcdb_id": 500651, "raw": ["500651", "020002", "0", "2020/Oct/22 15:05", "Vent Axia Ltd", "Vent Axia", "Sentinel Multivent Plus HXCO2", "495363", "2020", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.17", "", "2", "29.0", "0.16", "", "3", "37.0", "0.17", "", "4", "45.0", "0.18", "", "5", "53.0", "0.21", "", "6", "61.0", "0.24"]}
{"pcdb_id": 500674, "raw": ["500674", "020018", "0", "2020/Dec/08 14:21", "Vent-Axia", "National Ventilation", "MON-MEVDC400", "", "2020", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.15", "", "2", "29.0", "0.14", "", "3", "37.0", "0.16", "", "4", "45.0", "0.18", "", "5", "53.0", "0.21", "", "6", "61.0", "0.26"]}
{"pcdb_id": 500675, "raw": ["500675", "020018", "0", "2020/Dec/08 14:46", "Vent-Axia", "National Ventilation", "MON-MEVDCH400", "", "2020", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.15", "", "2", "29.0", "0.14", "", "3", "37.0", "0.16", "", "4", "45.0", "0.18", "", "5", "53.0", "0.21", "", "6", "61.0", "0.26"]}
{"pcdb_id": 500676, "raw": ["500676", "020048", "0", "2020/Dec/08 14:55", "Vent-Axia", "Manrose", "MANI2000B", "", "2020", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.15", "", "2", "29.0", "0.14", "", "3", "37.0", "0.16", "", "4", "45.0", "0.18", "", "5", "53.0", "0.21", "", "6", "61.0", "0.26"]}
{"pcdb_id": 500677, "raw": ["500677", "020041", "0", "2020/Dec/10 10:26", "Polypipe Ltd", "Domus Ventilation", "HRXE-HERA", "", "2020", "current", "", "3", "0", "2", "1", "3", "5", "1", "21.0", "0.52", "90", "2", "29.0", "0.59", "89", "3", "37.0", "0.77", "87", "4", "45.0", "1.00", "86", "5", "53.0", "1.23", "86"]}
{"pcdb_id": 500678, "raw": ["500678", "020041", "0", "2020/Dec/10 10:39", "Polypipe Ltd", "Domus Ventilation", "HRXE-AURA", "", "2020", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.50", "90", "2", "29.0", "0.53", "90", "3", "37.0", "0.60", "89", "4", "45.0", "0.75", "88", "5", "53.0", "0.92", "88", "6", "61.0", "1.10", "87", "7", "69.0", "1.36", "87"]}
{"pcdb_id": 500679, "raw": ["500679", "020042", "0", "2020/Nov/20 10:43", "Brink Climate Systems B.V.", "Brink", "Renovent Excellent P300", "", "2017", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.66", "89", "2", "29.0", "0.62", "87", "3", "37.0", "0.66", "86", "4", "45.0", "0.74", "85", "5", "53.0", "0.86", "84", "6", "61.0", "1.04", "83", "7", "69.0", "1.21", "83"]}
{"pcdb_id": 500680, "raw": ["500680", "020027", "0", "2020/Dec/23 11:35", "EnviroVent Ltd", "EnviroVent", "MEVS2", "", "2020", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.30", "", "2", "29.0", "0.28", "", "3", "37.0", "0.29", "", "4", "45.0", "0.32", "", "5", "53.0", "0.36", "", "6", "61.0", "0.38"]}
{"pcdb_id": 500681, "raw": ["500681", "020070", "0", "2021/Jan/25 19:03", "S&P UK Ventilation Systems Ltd", "S & P", "OZEO E Ecowatt 2", "9050514500 - 38/2020", "2018", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.19", "", "2", "29.0", "0.17", "", "3", "37.0", "0.17", "", "4", "45.0", "0.19", "", "5", "53.0", "0.21", "", "6", "61.0", "0.24"]}
{"pcdb_id": 500682, "raw": ["500682", "020150", "0", "2020/Dec/23 10:06", "RDZ SpA", "RDZ by Altecnic", "CHR 100 FC", "", "2020", "current", "", "3", "0", "2", "1", "3", "3", "1", "21.0", "1.08", "86", "2", "29.0", "1.17", "85", "3", "37.0", "1.48", "83"]}
{"pcdb_id": 500683, "raw": ["500683", "020150", "0", "2020/Dec/23 10:02", "RDZ SpA", "RDZ by Altecnic", "CHR 200 FC", "", "2020", "current", "", "3", "0", "2", "1", "3", "5", "1", "21.0", "0.78", "87", "2", "29.0", "0.79", "86", "3", "37.0", "0.95", "84", "4", "45.0", "1.14", "83", "5", "53.0", "1.47", "82"]}
{"pcdb_id": 500684, "raw": ["500684", "020150", "0", "2020/Dec/23 09:58", "RDZ SpA", "RDZ by Altecnic", "CHR 400 FC", "", "2020", "current", "", "3", "0", "2", "1", "3", "6", "1", "21.0", "0.66", "91", "2", "29.0", "0.70", "90", "3", "37.0", "0.81", "89", "4", "45.0", "0.95", "87", "5", "53.0", "1.18", "87", "6", "61.0", "1.44", "86"]}
{"pcdb_id": 500685, "raw": ["500685", "020150", "0", "2020/Dec/23 09:31", "RDZ SpA", "RDZ by Altecnic", "WHR 200", "", "2020", "current", "", "3", "0", "2", "1", "3", "6", "1", "21.0", "0.76", "84", "2", "29.0", "0.79", "84", "3", "37.0", "0.88", "83", "4", "45.0", "1.05", "82", "5", "53.0", "1.23", "81", "6", "61.0", "1.48", "81"]}
{"pcdb_id": 500686, "raw": ["500686", "020047", "0", "2021/Mar/25 09:26", "Mitsubishi Electric Europe B.V.", "Mitsubishi Electric", "VL-350CZPVU-R-E", "", "2020", "current", "", "3", "0", "2", "1", "3", "6", "1", "21.0", "0.86", "90", "2", "29.0", "0.80", "90", "3", "37.0", "0.84", "89", "4", "45.0", "0.96", "89", "5", "53.0", "1.08", "88", "6", "61.0", "1.28", "87"]}
{"pcdb_id": 500687, "raw": ["500687", "020047", "0", "2021/Mar/25 09:26", "Mitsubishi Electric Europe B.V.", "Mitsubishi Electric", "VL-350CZPVU-L-E", "", "2020", "current", "", "3", "0", "2", "1", "3", "6", "1", "21.0", "0.86", "90", "2", "29.0", "0.80", "90", "3", "37.0", "0.84", "89", "4", "45.0", "0.96", "89", "5", "53.0", "1.08", "88", "6", "61.0", "1.28", "87"]}
{"pcdb_id": 500688, "raw": ["500688", "020047", "0", "2021/Mar/25 09:26", "Mitsubishi Electric Europe B.V.", "Mitsubishi Electric", "VL-250CZPVU-R-E", "", "2020", "current", "", "3", "0", "2", "1", "3", "5", "1", "21.0", "0.62", "90", "2", "29.0", "0.67", "89", "3", "37.0", "0.79", "88", "4", "45.0", "1.00", "87", "5", "53.0", "1.19", "87"]}
{"pcdb_id": 500689, "raw": ["500689", "020047", "0", "2021/Mar/25 09:26", "Mitsubishi Electric Europe B.V.", "Mitsubishi Electric", "VL-250CZPVU-L-E", "", "2020", "current", "", "3", "0", "2", "1", "3", "5", "1", "21.0", "0.62", "90", "2", "29.0", "0.67", "89", "3", "37.0", "0.79", "88", "4", "45.0", "1.00", "87", "5", "53.0", "1.19", "87"]}
{"pcdb_id": 500690, "raw": ["500690", "020070", "0", "2022/Aug/30 11:23", "Soler and Palau Ltd", "S & P", "OZEO E Ecowatt 2", "9050514500 38/2020 Semi-Rigid", "2018", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.25", "", "2", "29.0", "0.25", "", "3", "37.0", "0.26", "", "4", "45.0", "0.29", "", "5", "53.0", "0.32", "", "6", "61.0", "0.39"]}
{"pcdb_id": 500691, "raw": ["500691", "020030", "0", "2021/Mar/16 17:29", "Aldes", "Aldes", "EASYHOME HYGRO COMPACT PREMIUM MW SP 90 semi rigid", "", "2019", "current", "", "1", "0", "2", "2", "", "4", "1", "21.0", "0.24", "", "2", "29.0", "0.19", "", "3", "37.0", "0.19", "", "4", "45.0", "0.28"]}
{"pcdb_id": 500692, "raw": ["500692", "020030", "0", "2021/Mar/17 11:07", "Aldes", "Aldes", "EASYHOME HYGRO COMPACT PREMIUM MW SP 75 semi rigid", "", "2019", "current", "", "1", "0", "2", "2", "", "4", "1", "21.0", "0.24", "", "2", "29.0", "0.20", "", "3", "37.0", "0.20", "", "4", "45.0", "0.28"]}
{"pcdb_id": 500693, "raw": ["500693", "020011", "0", "2021/Nov/11 10:29", "Vectaire Ltd", "Vectaire", "MIDIBY-AT", "", "2018", "current", "", "3", "0", "2", "1", "4", "4", "1", "21.0", "0.51", "93", "2", "29.0", "0.61", "91", "3", "37.0", "0.75", "90", "4", "45.0", "0.92", "89"]}
{"pcdb_id": 500694, "raw": ["500694", "020011", "0", "2021/Nov/15 09:54", "Vectaire Ltd", "Vectaire", "MAXIBY-AT", "", "2018", "current", "", "3", "0", "2", "1", "4", "7", "1", "21.0", "0.45", "92", "2", "29.0", "0.47", "92", "3", "37.0", "0.54", "91", "4", "45.0", "0.66", "90", "5", "53.0", "0.80", "90", "6", "61.0", "0.99", "89", "7", "69.0", "1.21", "89"]}
{"pcdb_id": 500695, "raw": ["500695", "020011", "0", "2021/Mar/01 17:24", "Vectaire Ltd", "Vectaire", "MAXIPLUS/BY/AT", "", "2018", "current", "", "3", "0", "2", "1", "4", "7", "1", "21.0", "0.56", "89", "2", "29.0", "0.47", "89", "3", "37.0", "0.50", "88", "4", "45.0", "0.56", "87", "5", "53.0", "0.66", "86", "6", "61.0", "0.78", "85", "7", "69.0", "0.94", "84"]}
{"pcdb_id": 500696, "raw": ["500696", "020030", "0", "2021/Mar/17 11:07", "Aldes", "Aldes", "EASYHOME HYGRO PREMIUM SP 75 semi rgid", "", "2018", "current", "", "1", "0", "2", "2", "", "6", "1", "21.0", "0.23", "", "2", "29.0", "0.20", "", "3", "37.0", "0.19", "", "4", "45.0", "0.28", "", "5", "53.0", "0.28", "", "6", "61.0", "0.29"]}
{"pcdb_id": 500697, "raw": ["500697", "020030", "0", "2021/Mar/17 11:08", "Aldes", "Aldes", "EASYHOME HYGRO PREMIUM SP 90 semi rigid", "", "2018", "current", "", "1", "0", "2", "2", "", "6", "1", "21.0", "0.23", "", "2", "29.0", "0.20", "", "3", "37.0", "0.19", "", "4", "45.0", "0.28", "", "5", "53.0", "0.28", "", "6", "61.0", "0.29"]}
{"pcdb_id": 500698, "raw": ["500698", "020042", "0", "2021/Feb/25 08:52", "Brink Climate Systems B.V.", "Brink", "Flair 225 4/0L EU", "", "2020", "current", "", "3", "0", "2", "1", "3", "6", "1", "21.0", "0.62", "92", "2", "29.0", "0.64", "91", "3", "37.0", "0.69", "90", "4", "45.0", "0.82", "89", "5", "53.0", "0.96", "88", "6", "61.0", "1.17", "88"]}
{"pcdb_id": 500699, "raw": ["500699", "020066", "0", "2021/Apr/26 08:53", "J Pichler GmbH", "Pichler", "08LG350V", "", "2018", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.65", "95", "2", "29.0", "0.60", "94", "3", "37.0", "0.62", "93", "4", "45.0", "0.70", "93", "5", "53.0", "0.76", "92", "6", "61.0", "0.90", "91", "7", "69.0", "1.06", "90"]}
{"pcdb_id": 500700, "raw": ["500700", "020066", "0", "2021/Apr/26 08:53", "J Pichler GmbH", "Pichler", "08LG450V", "", "2018", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.74", "94", "2", "29.0", "0.67", "95", "3", "37.0", "0.67", "94", "4", "45.0", "0.74", "93", "5", "53.0", "0.82", "92", "6", "61.0", "0.96", "91", "7", "69.0", "1.11", "90"]}
{"pcdb_id": 500701, "raw": ["500701", "020154", "0", "2021/Apr/26 12:14", "Vectaire", "Flakt Group", "EIS - 163", "", "2013", "current", "500366", "3", "0", "2", "1", "1", "7", "1", "21.0", "0.45", "92", "2", "29.0", "0.47", "92", "3", "37.0", "0.54", "91", "4", "45.0", "0.66", "90", "5", "53.0", "0.80", "90", "6", "61.0", "0.99", "89", "7", "69.0", "1.21", "89"]}
{"pcdb_id": 500702, "raw": ["500702", "020154", "0", "2021/Apr/26 12:16", "Vectaire", "Flakt Group", "EIS-230", "", "2017", "current", "500530", "3", "1", "2", "1", "4", "7", "1", "21.0", "0.56", "89", "2", "29.0", "0.47", "89", "3", "37.0", "0.50", "88", "4", "45.0", "0.56", "87", "5", "53.0", "0.66", "86", "6", "61.0", "0.78", "85", "7", "69.0", "0.94", "84"]}
{"pcdb_id": 500703, "raw": ["500703", "020154", "0", "2021/Apr/26 12:17", "Vectaire", "Flakt Group", "EIS - Flakt Master 55", "", "2018", "current", "500577", "3", "0", "2", "1", "4", "3", "1", "21.0", "0.93", "79", "2", "29.0", "1.09", "78", "3", "37.0", "1.36", "77"]}
{"pcdb_id": 500704, "raw": ["500704", "020154", "0", "2021/Apr/26 12:17", "Vectaire", "Flakt Group", "EIS Flakt Master 80", "", "2015", "current", "500421", "3", "0", "2", "1", "1", "4", "1", "21.0", "0.75", "87", "2", "29.0", "0.89", "86", "3", "37.0", "1.00", "85", "4", "45.0", "1.37", "84"]}
{"pcdb_id": 500705, "raw": ["500705", "020154", "0", "2021/Apr/26 12:18", "Vectaire", "Flakt Group", "EIS Flakt Master 107", "", "2018", "current", "500575", "3", "0", "2", "1", "4", "5", "1", "21.0", "0.72", "87", "2", "29.0", "0.75", "85", "3", "37.0", "0.85", "84", "4", "45.0", "1.04", "83", "5", "53.0", "1.23", "82"]}
{"pcdb_id": 500706, "raw": ["500706", "020154", "0", "2021/Apr/26 12:18", "Vectaire", "Flakt Group", "EIS - MEV 100", "", "2011", "current", "500260", "4", "0", "2", "1", "", "5", "1", "21.0", "0.20", "", "2", "29.0", "0.26", "", "3", "37.0", "0.34", "", "4", "45.0", "0.44", "", "5", "53.0", "0.55"]}
{"pcdb_id": 500707, "raw": ["500707", "020154", "0", "2021/Apr/26 12:18", "Vectaire", "Flakt Group", "EIS - MEV 230", "", "2017", "current", "500566", "1", "0", "2", "1", "", "6", "1", "21.0", "0.28", "", "2", "29.0", "0.27", "", "3", "37.0", "0.28", "", "4", "45.0", "0.36", "", "5", "53.0", "0.42", "", "6", "61.0", "0.52"]}
{"pcdb_id": 500708, "raw": ["500708", "020154", "0", "2021/Apr/26 12:19", "Vectaire", "Flakt Group", "EIS-95", "", "2013", "current", "500367", "3", "0", "2", "1", "1", "4", "1", "21.0", "0.51", "93", "2", "29.0", "0.61", "91", "3", "37.0", "0.75", "90", "4", "45.0", "0.92", "89"]}
{"pcdb_id": 500709, "raw": ["500709", "020156", "0", "2021/Apr/26 10:25", "Passive House Systems (PHS) Gmbh", "Passive House Systems", "PHS MEV_H", "Model H", "2014", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.19", "", "2", "29.0", "0.18", "", "3", "37.0", "0.18", "", "4", "45.0", "0.22", "", "5", "53.0", "0.25", "", "6", "61.0", "0.30"]}
{"pcdb_id": 500710, "raw": ["500710", "020027", "0", "2021/Apr/26 10:37", "EnviroVent Ltd", "EnviroVent", "MEV160", "", "2021", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.19", "", "2", "29.0", "0.23", "", "3", "37.0", "0.27", "", "4", "45.0", "0.35", "", "5", "53.0", "0.44", "", "6", "61.0", "0.59"]}
{"pcdb_id": 500711, "raw": ["500711", "020027", "0", "2021/Apr/26 10:40", "EnviroVent Ltd", "EnviroVent", "MEV300", "", "2021", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.19", "", "2", "29.0", "0.20", "", "3", "37.0", "0.22", "", "4", "45.0", "0.25", "", "5", "53.0", "0.31", "", "6", "61.0", "0.36"]}
{"pcdb_id": 500712, "raw": ["500712", "020156", "0", "2021/Apr/26 10:25", "Passive House systems (PHS) Gmbh", "Passive House Systems", "PHS MEV_H", "+75mm Semi-rigid", "2014", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.22", "", "2", "29.0", "0.21", "", "3", "37.0", "0.21", "", "4", "45.0", "0.23", "", "5", "53.0", "0.26", "", "6", "61.0", "0.30"]}
{"pcdb_id": 500716, "raw": ["500716", "020112", "0", "2021/May/24 10:24", "Blauberg UK Ltd", "Blauberg", "Komfort EC LB400", "S25", "2019", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.89", "91", "2", "29.0", "0.77", "91", "3", "37.0", "0.79", "90", "4", "45.0", "0.87", "90", "5", "53.0", "0.99", "89", "6", "61.0", "1.18", "89", "7", "69.0", "1.38", "88"]}
{"pcdb_id": 500717, "raw": ["500717", "020073", "0", "2021/Jun/22 17:02", "Dantherm A/S", "Dantherm", "HCV460 P2", "", "2020", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.71", "89", "2", "29.0", "0.70", "88", "3", "37.0", "0.76", "88", "4", "45.0", "0.89", "87", "5", "53.0", "1.04", "85", "6", "61.0", "1.27", "85", "7", "69.0", "1.52", "84"]}
{"pcdb_id": 500718, "raw": ["500718", "020156", "0", "2021/Jun/22 17:04", "Passive House Systems (PHS) Gmbh", "Passive House Systems", "PHS MEV_H", "+90mm Semi-Rigid", "2021", "current", "500710", "1", "0", "2", "1", "", "6", "1", "21.0", "0.21", "", "2", "29.0", "0.20", "", "3", "37.0", "0.20", "", "4", "45.0", "0.22", "", "5", "53.0", "0.24", "", "6", "61.0", "0.29"]}
{"pcdb_id": 500719, "raw": ["500719", "020156", "0", "2021/Jun/22 17:03", "Passive House Systems (PHS) Gmbh", "Passive House Systems", "PHS", "HRV550-H", "2021", "current", "500468", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.57", "93", "2", "29.0", "0.58", "92", "3", "37.0", "0.63", "91", "4", "45.0", "0.73", "90", "5", "53.0", "0.86", "90", "6", "61.0", "1.04", "89", "7", "69.0", "1.23", "88"]}
{"pcdb_id": 500720, "raw": ["500720", "020047", "0", "2021/Jul/26 17:20", "Mitsubishi Electric Europe B.V.", "Mitsubishi Electric", "VL-500CZPVU-R-E", "", "2021", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.80", "91", "2", "29.0", "0.72", "90", "3", "37.0", "0.74", "90", "4", "45.0", "0.82", "89", "5", "53.0", "0.91", "88", "6", "61.0", "1.09", "88", "7", "69.0", "1.24", "88"]}
{"pcdb_id": 500721, "raw": ["500721", "020047", "0", "2021/Jul/26 17:20", "Mitsubishi Electric Europe B.V.", "Mitsubishi Electric", "VL-500CZPVU-L-E", "", "2021", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.80", "91", "2", "29.0", "0.72", "90", "3", "37.0", "0.74", "90", "4", "45.0", "0.82", "89", "5", "53.0", "0.91", "88", "6", "61.0", "1.09", "88", "7", "69.0", "1.24", "88"]}
{"pcdb_id": 500722, "raw": ["500722", "020070", "0", "2021/Jul/26 13:50", "S&P UK Ventilation Systems Ltd", "S & P", "OZEO Flat H Ecowatt Semi Rigid", "9050344601", "2018", "current", "", "1", "0", "2", "2", "", "6", "1", "20.1", "0.38", "", "2", "28.0", "0.31", "", "3", "35.7", "0.27", "", "4", "43.1", "0.26", "", "5", "51.3", "0.28", "", "6", "59.3", "0.31"]}
{"pcdb_id": 500723, "raw": ["500723", "020027", "0", "2021/Jul/08 09:38", "EnviroVent Ltd", "EnviroVent", "MEV160FT with 75mm semi-rigid layout", "", "2021", "current", "", "1", "0", "2", "2", "", "5", "1", "21.0", "0.21", "", "2", "29.0", "0.26", "", "3", "37.0", "0.33", "", "4", "45.0", "0.39", "", "5", "53.0", "0.54"]}
{"pcdb_id": 500724, "raw": ["500724", "020027", "0", "2021/Jul/08 09:39", "EnviroVent Ltd", "EnviroVent", "MEV160FT with 90mm semi-rigid layout", "", "2021", "current", "", "1", "0", "2", "2", "", "5", "1", "21.0", "0.18", "", "2", "29.0", "0.22", "", "3", "37.0", "0.28", "", "4", "45.0", "0.35", "", "5", "53.0", "0.52"]}
{"pcdb_id": 500725, "raw": ["500725", "020027", "0", "2021/Jul/08 09:41", "EnviroVent Ltd", "EnviroVent", "MEV300FT with 75mm semi-rigid layout", "", "2021", "current", "", "1", "0", "2", "2", "", "5", "1", "21.0", "0.22", "", "2", "29.0", "0.22", "", "3", "37.0", "0.23", "", "4", "45.0", "0.27", "", "5", "53.0", "0.34"]}
{"pcdb_id": 500726, "raw": ["500726", "020027", "0", "2021/Jul/08 09:42", "EnviroVent Ltd", "EnviroVent", "MEV300FT with 90mm semi-rigid layout", "", "2021", "current", "", "1", "0", "2", "2", "", "5", "1", "21.0", "0.20", "", "2", "29.0", "0.20", "", "3", "37.0", "0.23", "", "4", "45.0", "0.25", "", "5", "53.0", "0.34"]}
{"pcdb_id": 500727, "raw": ["500727", "020052", "0", "2021/Aug/18 15:40", "Brook Design Hardware Ltd", "Brookvent", "AirCycle 4.1", "", "2021", "current", "", "3", "0", "2", "1", "4", "7", "1", "21.0", "0.45", "93", "2", "29.0", "0.45", "92", "3", "37.0", "0.49", "91", "4", "45.0", "0.58", "90", "5", "53.0", "0.67", "88", "6", "61.0", "0.83", "87", "7", "69.0", "0.99", "86"]}
{"pcdb_id": 500730, "raw": ["500730", "020039", "0", "2021/Sep/28 15:17", "H. Östberg AB", "Beam", "AXCO HERU 160", "", "2020", "current", "", "3", "0", "2", "1", "4", "7", "1", "21.0", "1.30", "73", "2", "29.0", "1.13", "77", "3", "37.0", "1.08", "79", "4", "45.0", "1.09", "80", "5", "53.0", "1.15", "81", "6", "61.0", "1.25", "81", "7", "69.0", "1.38", "81"]}
{"pcdb_id": 500731, "raw": ["500731", "020039", "0", "2021/Sep/28 15:16", "H. Östberg AB", "Beam", "AXCO HERU 200", "", "2020", "current", "", "3", "0", "2", "1", "4", "7", "1", "21.0", "1.43", "69", "2", "29.0", "1.18", "72", "3", "37.0", "1.08", "74", "4", "45.0", "1.10", "76", "5", "53.0", "1.08", "78", "6", "61.0", "1.17", "79", "7", "69.0", "1.27", "79"]}
{"pcdb_id": 500732, "raw": ["500732", "020016", "0", "2021/Sep/29 10:22", "ProAir Heat Recovery and Ventilation Systems Ltd", "ProAir", "FRPRO", "", "2020", "current", "090850", "1", "0", "2", "2", "", "6", "1", "21.0", "0.31", "", "2", "29.0", "0.30", "", "3", "37.0", "0.28", "", "4", "45.0", "0.29", "", "5", "53.0", "0.30", "", "6", "61.0", "0.34"]}
{"pcdb_id": 500733, "raw": ["500733", "020007", "0", "2021/Oct/15 10:13", "Titon Hardware Ltd", "Titon", "HRV1.65 Q Plus Eco", "", "2021", "current", "", "3", "0", "2", "1", "3", "6", "1", "21.0", "0.46", "89", "2", "29.0", "0.54", "87", "3", "37.0", "0.65", "86", "4", "45.0", "0.84", "84", "5", "53.0", "1.05", "83", "6", "61.0", "1.27", "82"]}
{"pcdb_id": 500734, "raw": ["500734", "020087", "0", "2021/Nov/18 16:39", "Panasonic HVAC UK Ltd", "Panasonic", "PAW-A2W-VENTA", "-R & - L", "2019", "current", "", "3", "0", "2", "1", "3", "5", "1", "21.0", "1.13", "72", "2", "29.0", "1.09", "76", "3", "37.0", "1.17", "77", "4", "45.0", "1.34", "78", "5", "53.0", "1.51", "78"]}
{"pcdb_id": 500735, "raw": ["500735", "020145", "0", "2023/Aug/25 15:19", "KERS Innovations UK Ltd", "KERS", "KERS MEV-W200SL", "", "2015", "current", "", "1", "1", "2", "1", "", "6", "1", "21.0", "0.51", "", "2", "29.0", "0.57", "", "3", "37.0", "0.65", "", "4", "45.0", "0.84", "", "5", "53.0", "1.01", "", "6", "61.0", "1.26"]}
{"pcdb_id": 500736, "raw": ["500736", "020003", "0", "2021/Dec/16 09:23", "The Nuaire Group", "Nuaire", "MRXBOXAB-ECO2", "MRXBOXAB-ECO2B", "2021", "current", "", "3", "0", "2", "1", "3", "5", "1", "21.0", "0.55", "90", "2", "29.0", "0.65", "89", "3", "37.0", "0.80", "87", "4", "45.0", "1.01", "86", "5", "53.0", "1.26", "86"]}
{"pcdb_id": 500738, "raw": ["500738", "020163", "0", "2022/Mar/02 16:46", "Titon Hardware Ltd", "Ventiza", "HRU360VL/R", "", "2018", "current", "500567", "3", "0", "2", "1", "3", "6", "1", "21.0", "0.51", "89", "2", "29.0", "0.58", "87", "3", "37.0", "0.70", "86", "4", "45.0", "0.90", "84", "5", "53.0", "1.07", "83", "6", "61.0", "1.34", "82"]}
{"pcdb_id": 500739, "raw": ["500739", "020163", "0", "2022/Mar/02 16:45", "Titon Hardware Ltd.", "Ventiza", "HRU220VL/R", "", "2015", "current", "500413", "3", "0", "2", "1", "3", "4", "1", "21.0", "0.71", "87", "2", "29.0", "0.92", "85", "3", "37.0", "1.19", "85", "4", "45.0", "1.55", "84"]}
{"pcdb_id": 500740, "raw": ["500740", "020163", "0", "2022/Feb/28 09:57", "Titon Hardware Ltd.", "Ventiza", "HRU400VL", "", "2015", "current", "500423", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.55", "90", "2", "29.0", "0.57", "90", "3", "37.0", "0.65", "89", "4", "45.0", "0.76", "88", "5", "53.0", "0.90", "87", "6", "61.0", "1.09", "86", "7", "69.0", "1.27", "85"]}
{"pcdb_id": 500741, "raw": ["500741", "020007", "0", "2022/Mar/29 15:32", "Titon Hardware Ltd", "Titon", "HRV1.3 Q Plus Eco", "", "2021", "current", "", "3", "0", "2", "1", "3", "4", "1", "21.0", "0.75", "87", "2", "29.0", "0.97", "85", "3", "37.0", "1.28", "85", "4", "45.0", "1.66", "84"]}
{"pcdb_id": 500742, "raw": ["500742", "020007", "0", "2022/Mar/29 12:32", "Titon Hardware Ltd", "Titon", "CME2.1 Q Plus CH", "", "2022", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.20", "", "2", "29.0", "0.18", "", "3", "37.0", "0.20", "", "4", "45.0", "0.22", "", "5", "53.0", "0.28", "", "6", "61.0", "0.33"]}
{"pcdb_id": 500743, "raw": ["500743", "020007", "0", "2022/Mar/29 12:33", "Titon Hardware Ltd", "Titon", "CME2.1 Q Plus A", "", "2022", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.20", "", "2", "29.0", "0.18", "", "3", "37.0", "0.20", "", "4", "45.0", "0.22", "", "5", "53.0", "0.28", "", "6", "61.0", "0.33"]}
{"pcdb_id": 500744, "raw": ["500744", "020007", "0", "2022/Mar/29 12:33", "Titon Hardware Ltd", "Titon", "CME2.1 Q Plus HA", "", "2022", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.20", "", "2", "29.0", "0.18", "", "3", "37.0", "0.20", "", "4", "45.0", "0.22", "", "5", "53.0", "0.28", "", "6", "61.0", "0.33"]}
{"pcdb_id": 500745, "raw": ["500745", "020007", "0", "2022/Mar/29 12:33", "Titon Hardware Ltd", "Titon", "CME2.1 Q Plus HALS", "", "2022", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.20", "", "2", "29.0", "0.18", "", "3", "37.0", "0.20", "", "4", "45.0", "0.22", "", "5", "53.0", "0.28", "", "6", "61.0", "0.33"]}
{"pcdb_id": 500746, "raw": ["500746", "020007", "0", "2022/Mar/29 12:33", "Titon Hardware Ltd", "Titon", "CME3.1 Q Plus CH", "", "2022", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.17", "", "2", "29.0", "0.16", "", "3", "37.0", "0.17", "", "4", "45.0", "0.20", "", "5", "53.0", "0.23", "", "6", "61.0", "0.26"]}
{"pcdb_id": 500747, "raw": ["500747", "020007", "0", "2022/Mar/29 12:33", "Titon Hardware Ltd", "Titon", "CME3.1 Q Plus CH", "", "2022", "current", "", "1", "0", "2", "2", "", "5", "1", "21.0", "0.25", "", "2", "29.0", "0.24", "", "3", "37.0", "0.24", "", "4", "45.0", "0.25", "", "5", "53.0", "0.29"]}
{"pcdb_id": 500748, "raw": ["500748", "020007", "0", "2022/Mar/29 12:33", "Titon Hardware Ltd", "Titon", "CME3.1 Q Plus A", "", "2022", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.17", "", "2", "29.0", "0.16", "", "3", "37.0", "0.17", "", "4", "45.0", "0.20", "", "5", "53.0", "0.23", "", "6", "61.0", "0.26"]}
{"pcdb_id": 500749, "raw": ["500749", "020007", "0", "2022/Mar/29 12:33", "Titon Hardware Ltd", "Titon", "CME3.1 Q Plus A", "", "2022", "current", "", "1", "0", "2", "2", "", "5", "1", "21.0", "0.25", "", "2", "29.0", "0.24", "", "3", "37.0", "0.24", "", "4", "45.0", "0.25", "", "5", "53.0", "0.29"]}
{"pcdb_id": 500750, "raw": ["500750", "020007", "0", "2022/Mar/29 12:34", "Titon Hardware Ltd", "Titon", "CME3.1 Q Plus HA", "", "2022", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.17", "", "2", "29.0", "0.16", "", "3", "37.0", "0.17", "", "4", "45.0", "0.20", "", "5", "53.0", "0.23", "", "6", "61.0", "0.26"]}
{"pcdb_id": 500751, "raw": ["500751", "020007", "0", "2022/Mar/29 12:34", "Titon Hardware Ltd", "Titon", "CME3.1 Q Plus HA", "", "2022", "current", "", "1", "0", "2", "2", "", "5", "1", "21.0", "0.25", "", "2", "29.0", "0.24", "", "3", "37.0", "0.24", "", "4", "45.0", "0.25", "", "5", "53.0", "0.29"]}
{"pcdb_id": 500752, "raw": ["500752", "020007", "0", "2022/Mar/29 12:31", "Titon Hardware Ltd", "Titon", "CME3.1 Q Plus HALS", "", "2022", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.17", "", "2", "29.0", "0.16", "", "3", "37.0", "0.17", "", "4", "45.0", "0.20", "", "5", "53.0", "0.23", "", "6", "61.0", "0.26"]}
{"pcdb_id": 500753, "raw": ["500753", "020007", "0", "2022/Mar/29 12:31", "Titon Hardware Ltd", "Titon", "CME3.1 Q Plus HALS", "", "2022", "current", "", "1", "0", "2", "2", "", "5", "1", "21.0", "0.25", "", "2", "29.0", "0.24", "", "3", "37.0", "0.24", "", "4", "45.0", "0.25", "", "5", "53.0", "0.29"]}
{"pcdb_id": 500754, "raw": ["500754", "020017", "0", "2022/Mar/29 15:28", "Airflow Developments Ltd", "Airflow", "DV51 Adroit", "", "2020", "current", "", "3", "0", "2", "1", "3", "4", "1", "21.0", "0.78", "80", "2", "29.0", "0.84", "80", "3", "37.0", "0.99", "81", "4", "45.0", "1.24", "81"]}
{"pcdb_id": 500758, "raw": ["500758", "020130", "0", "2022/Feb/24 14:55", "Vero Duco N.V.", "Duco", "DucoBox Energy Comfort 325", "", "2020", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.59", "91", "2", "29.0", "0.59", "91", "3", "37.0", "0.63", "91", "4", "45.0", "0.77", "90", "5", "53.0", "0.89", "90", "6", "61.0", "1.07", "90", "7", "69.0", "1.30", "90"]}
{"pcdb_id": 500759, "raw": ["500759", "020016", "0", "2022/Apr/08 12:04", "ProAir Heat Recovery and Ventilation Systems Ltd", "ProAir", "PA600HLI", "", "2014", "current", "090630", "3", "0", "2", "1", "1", "5", "1", "21.0", "0.62", "93", "2", "29.0", "0.67", "92", "3", "37.0", "0.76", "91", "4", "45.0", "0.92", "91", "5", "53.0", "1.12", "90"]}
{"pcdb_id": 500760, "raw": ["500760", "020084", "0", "2022/Apr/13 17:13", "FRÄNKISCHE ROHRWERKE", "FRÄNKISCHE", "profi-air 360 flex", "", "2021", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.71", "89", "2", "29.0", "0.70", "88", "3", "37.0", "0.76", "88", "4", "45.0", "0.89", "87", "5", "53.0", "1.04", "85", "6", "61.0", "1.27", "85", "7", "69.0", "1.52", "84"]}
{"pcdb_id": 500761, "raw": ["500761", "020016", "0", "2022/Apr/29 13:30", "Jablotron Living Technology CZ s.r.o.", "ProAir", "Futura L", "", "2019", "current", "", "3", "1", "2", "1", "3", "4", "2", "29.0", "0.99", "92", "3", "37.0", "1.10", "91", "4", "45.0", "1.37", "90", "5", "53.0", "1.57", "89"]}
{"pcdb_id": 500762, "raw": ["500762", "020130", "0", "2022/Apr/28 13:51", "Vero Duco N.V.", "Duco", "DucoBox Energy Premium 325 - 1ZS - R", "", "2018", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.59", "91", "2", "29.0", "0.58", "91", "3", "37.0", "0.63", "90", "4", "45.0", "0.75", "89", "5", "53.0", "0.87", "89", "6", "61.0", "1.03", "88", "7", "69.0", "1.26", "87"]}
{"pcdb_id": 500763, "raw": ["500763", "020130", "0", "2022/Apr/28 18:04", "Vero Duco N.V.", "Duco", "DucoBox Energy Premium 325 - 2ZS - L", "", "2018", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.59", "91", "2", "29.0", "0.58", "91", "3", "37.0", "0.63", "90", "4", "45.0", "0.75", "89", "5", "53.0", "0.87", "89", "6", "61.0", "1.03", "88", "7", "69.0", "1.26", "87"]}
{"pcdb_id": 500764, "raw": ["500764", "020130", "0", "2022/Apr/28 18:04", "Vero Duco N.V.", "Duco", "DucoBox Energy Premium 325 - 2ZS - R", "", "2018", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.59", "91", "2", "29.0", "0.58", "91", "3", "37.0", "0.63", "90", "4", "45.0", "0.75", "89", "5", "53.0", "0.87", "89", "6", "61.0", "1.03", "88", "7", "69.0", "1.26", "87"]}
{"pcdb_id": 500765, "raw": ["500765", "020130", "0", "2022/Apr/28 13:50", "Vero Duco N.V.", "Duco", "DucoBox Energy Premium 400 - 1ZS - L", "", "2018", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.59", "91", "2", "29.0", "0.58", "91", "3", "37.0", "0.63", "90", "4", "45.0", "0.75", "89", "5", "53.0", "0.87", "89", "6", "61.0", "1.03", "88", "7", "69.0", "1.26", "87"]}
{"pcdb_id": 500766, "raw": ["500766", "020130", "0", "2022/Apr/28 13:50", "Vero Duco N.V.", "Duco", "DucoBox Energy Premium 400 - 1ZS - R", "", "2018", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.59", "91", "2", "29.0", "0.58", "91", "3", "37.0", "0.63", "90", "4", "45.0", "0.75", "89", "5", "53.0", "0.87", "89", "6", "61.0", "1.03", "88", "7", "69.0", "1.26", "87"]}
{"pcdb_id": 500767, "raw": ["500767", "020130", "0", "2022/Apr/28 13:51", "Vero Duco N.V.", "Duco", "DucoBox Energy Premium 400 - 2ZS - R", "", "2018", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.59", "91", "2", "29.0", "0.58", "91", "3", "37.0", "0.63", "90", "4", "45.0", "0.75", "89", "5", "53.0", "0.87", "89", "6", "61.0", "1.03", "88", "7", "69.0", "1.26", "87"]}
{"pcdb_id": 500768, "raw": ["500768", "020052", "0", "2022/Apr/29 13:36", "Brook Design Hardware Ltd", "Brookvent", "Airstream Ace", "", "2022", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.19", "", "2", "29.0", "0.19", "", "3", "37.0", "0.22", "", "4", "45.0", "0.28", "", "5", "53.0", "0.33", "", "6", "61.0", "0.41"]}
{"pcdb_id": 500770, "raw": ["500770", "020175", "0", "2022/May/10 13:26", "Brink Climate Systems B.V", "WOLF", "CWL-2-325 4/0", "", "2018", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.55", "92", "2", "29.0", "0.52", "92", "3", "37.0", "0.55", "91", "4", "45.0", "0.63", "90", "5", "53.0", "0.73", "90", "6", "61.0", "0.86", "89", "7", "69.0", "1.00", "89"]}
{"pcdb_id": 500771, "raw": ["500771", "020175", "0", "2022/May/10 13:31", "Brink Climate Systems B.V", "WOLF", "CWL-2-400 4/0", "", "2018", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.48", "92", "2", "29.0", "0.49", "91", "3", "37.0", "0.53", "90", "4", "45.0", "0.63", "90", "5", "53.0", "0.74", "90", "6", "61.0", "0.90", "89", "7", "69.0", "1.08", "89"]}
{"pcdb_id": 500772, "raw": ["500772", "020003", "0", "2022/Jan/17 14:50", "The Nuaire Group", "Nuaire", "MRXBOXAB-ECO2.5", "", "2021", "current", "", "3", "0", "2", "1", "3", "6", "1", "21.0", "0.48", "90", "2", "29.0", "0.54", "89", "3", "37.0", "0.64", "88", "4", "45.0", "0.82", "87", "5", "53.0", "1.01", "86", "6", "61.0", "1.30", "86"]}
{"pcdb_id": 500773, "raw": ["500773", "020003", "0", "2022/Jun/21 15:48", "The Nuaire Group", "Nuaire", "MRXBOXAB-ECO-LP2", "MRXBOXAB-EC0-LP2B", "2021", "current", "", "3", "0", "2", "1", "3", "5", "1", "21.0", "0.56", "78", "2", "29.0", "0.70", "79", "3", "37.0", "0.87", "79", "4", "45.0", "1.16", "79", "5", "53.0", "1.41", "79"]}
{"pcdb_id": 500774, "raw": ["500774", "020003", "0", "2022/Jun/21 15:36", "The Nuaire Group", "Nuaire", "MRXBOXAB-ECO3", "MRXBOXAB-ECO3B", "2021", "current", "", "3", "0", "2", "1", "3", "6", "1", "21.0", "0.56", "90", "2", "29.0", "0.58", "90", "3", "37.0", "0.65", "89", "4", "45.0", "0.79", "88", "5", "53.0", "0.95", "88", "6", "61.0", "1.15", "87"]}
{"pcdb_id": 500775, "raw": ["500775", "020031", "0", "2022/May/03 12:46", "Genvex AB", "NIBE", "ERS S10-500", "", "2021", "current", "", "3", "0", "2", "1", "3", "6", "1", "21.0", "0.82", "86", "2", "29.0", "0.87", "86", "3", "37.0", "0.87", "87", "4", "45.0", "1.04", "86", "5", "53.0", "1.21", "86", "6", "61.0", "1.46", "86"]}
{"pcdb_id": 500780, "raw": ["500780", "020112", "0", "2022/Jul/19 09:56", "Blauberg UK Ltd", "Blauberg", "Komfort EC D5B 180", "", "2018", "current", "", "3", "0", "2", "1", "3", "3", "1", "21.0", "0.90", "88", "2", "29.0", "1.00", "86", "3", "37.0", "1.20", "85"]}
{"pcdb_id": 500781, "raw": ["500781", "020047", "0", "2022/Aug/16 15:08", "Mitsubishi Electric Europe B.V.", "Mitsubishi Electric", "VL-500CZPVU-L-E-1", "", "2022", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.80", "91", "2", "29.0", "0.72", "90", "3", "37.0", "0.74", "90", "4", "45.0", "0.82", "89", "5", "53.0", "0.91", "88", "6", "61.0", "1.09", "88", "7", "69.0", "1.24", "88"]}
{"pcdb_id": 500782, "raw": ["500782", "020047", "0", "2022/Aug/16 15:08", "Mitsubishi Electric Europe B.V.", "Mitsubishi Electric", "VL-500CZPVU-R-E-1", "", "2022", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.80", "91", "2", "29.0", "0.72", "90", "3", "37.0", "0.74", "90", "4", "45.0", "0.82", "89", "5", "53.0", "0.91", "88", "6", "61.0", "1.09", "88", "7", "69.0", "1.24", "88"]}
{"pcdb_id": 500789, "raw": ["500789", "020041", "0", "2022/Oct/13 11:05", "The Nuaire Group", "Domus Ventilation", "HRXE-HERA", "-B", "2021", "current", "500677", "3", "0", "2", "1", "3", "5", "1", "21.0", "0.55", "90", "2", "29.0", "0.65", "89", "3", "37.0", "0.80", "87", "4", "45.0", "1.01", "86", "5", "53.0", "1.26", "86"]}
{"pcdb_id": 500790, "raw": ["500790", "020041", "0", "2022/Oct/13 11:05", "The Nuaire Group", "Domus Ventilation", "HRXE-AURA", "-B", "2021", "current", "500678", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.56", "90", "2", "29.0", "0.58", "90", "3", "37.0", "0.65", "89", "4", "45.0", "0.79", "88", "5", "53.0", "0.95", "88", "6", "61.0", "1.15", "87", "7", "69.0", "1.26", "87"]}
{"pcdb_id": 500791, "raw": ["500791", "020041", "0", "2022/Oct/13 11:01", "The Nuaire Group", "Domus Ventilation", "CMX-MULTI", "-B", "2021", "current", "500631", "1", "0", "2", "1", "", "6", "1", "21.0", "0.17", "", "2", "29.0", "0.17", "", "3", "37.0", "0.20", "", "4", "45.0", "0.24", "", "5", "53.0", "0.30", "", "6", "61.0", "0.35"]}
{"pcdb_id": 500792, "raw": ["500792", "020041", "0", "2022/Oct/13 11:01", "The Nuaire Group", "Domus Ventilation", "HRXE-ZEUS", "", "2022", "current", "500502", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.62", "94", "2", "29.0", "0.62", "93", "3", "37.0", "0.66", "93", "4", "45.0", "0.79", "92", "5", "53.0", "0.94", "91", "6", "61.0", "1.15", "91", "7", "69.0", "1.41", "91"]}
{"pcdb_id": 500793, "raw": ["500793", "020003", "0", "2022/Oct/25 16:55", "The Nuaire Group", "Nuaire", "MRXBOXAB-ECO2", "MRXBOXAB-ECO2C", "2022", "current", "", "3", "0", "2", "1", "3", "5", "1", "21.0", "0.60", "90", "2", "29.0", "0.65", "89", "3", "37.0", "0.80", "87", "4", "45.0", "0.99", "86", "5", "53.0", "1.21", "86"]}
{"pcdb_id": 500794, "raw": ["500794", "020003", "0", "2022/Oct/25 16:56", "The Nuaire Group", "Nuaire", "MRXBOXAB-ECO3", "MRXBOXAB-ECO3C", "2022", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.54", "90", "2", "29.0", "0.55", "90", "3", "37.0", "0.62", "89", "4", "45.0", "0.76", "88", "5", "53.0", "0.89", "88", "6", "61.0", "1.11", "87", "7", "69.0", "1.32", "87"]}
{"pcdb_id": 500795, "raw": ["500795", "020003", "0", "2022/Oct/25 16:55", "The Nuaire Group", "Nuaire", "MEV-ECO", "MEV-ECO-C", "2022", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.22", "", "2", "29.0", "0.19", "", "3", "37.0", "0.23", "", "4", "45.0", "0.27", "", "5", "53.0", "0.32", "", "6", "61.0", "0.38"]}
{"pcdb_id": 500796, "raw": ["500796", "020016", "0", "2022/Oct/26 11:13", "ProAir Heat Recovery and Ventilation Systems Ltd", "ProAir", "PA750LI", "", "2022", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.58", "86", "2", "29.0", "0.57", "87", "3", "37.0", "0.61", "88", "4", "45.0", "0.72", "88", "5", "53.0", "0.86", "88", "6", "61.0", "1.04", "88", "7", "69.0", "1.23", "87"]}
{"pcdb_id": 500797, "raw": ["500797", "020122", "0", "2022/Nov/16 14:10", "Joule Ltd", "JOULE", "Modul-AIR All-E", "HHH-AEHP-00001", "2021", "current", "", "1", "1", "2", "1", "", "6", "1", "21.0", "0.41", "", "2", "29.0", "0.37", "", "3", "37.0", "0.36", "", "4", "45.0", "0.39", "", "5", "53.0", "0.44", "", "6", "61.0", "0.59"]}
{"pcdb_id": 500798, "raw": ["500798", "020070", "0", "2022/Dec/09 14:51", "S&P UK Ventilation Systems Ltd", "S & P", "SABIK 500", "", "2021", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.77", "84", "2", "29.0", "0.70", "84", "3", "37.0", "0.73", "85", "4", "45.0", "0.79", "84", "5", "53.0", "0.88", "85", "6", "61.0", "1.02", "85", "7", "69.0", "1.19", "85"]}
{"pcdb_id": 500799, "raw": ["500799", "020193", "0", "2023/Jan/30 17:27", "ALNOR Systemy Wentylacji Sp. z o.o.", "ALNOR", "HRU-PremAIR-450-CF", "", "2018", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.53", "80", "2", "29.0", "0.50", "82", "3", "37.0", "0.56", "83", "4", "45.0", "0.67", "83", "5", "53.0", "0.79", "83", "6", "61.0", "0.95", "83", "7", "69.0", "1.15", "84"]}
{"pcdb_id": 500800, "raw": ["500800", "020193", "0", "2023/Jan/30 17:29", "ALNOR Systemy Wentylacji Sp. z o.o.", "ALNOR", "HRU-SlimAIR-250", "", "2021", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.56", "85", "2", "29.0", "0.59", "84", "3", "37.0", "0.69", "82", "4", "45.0", "0.84", "81", "5", "53.0", "1.02", "79", "6", "61.0", "1.26", "78", "7", "69.0", "1.53", "77"]}
{"pcdb_id": 500801, "raw": ["500801", "020197", "0", "2023/Feb/01 10:09", "Ebac Ltd", "Ebac Ventilation", "VA32RWH", "", "2022", "current", "", "3", "0", "2", "1", "3", "5", "1", "21.0", "0.74", "88", "2", "29.0", "0.81", "87", "3", "37.0", "0.93", "86", "4", "45.0", "1.14", "84", "5", "53.0", "1.38", "84"]}
{"pcdb_id": 500802, "raw": ["500802", "020027", "0", "2023/Feb/01 11:53", "Soler & Palau", "EnviroVent", "energiSava 200", "Issue B", "2022", "current", "", "3", "0", "2", "1", "4", "4", "1", "21.0", "0.79", "89", "2", "29.0", "0.91", "87", "3", "37.0", "1.14", "85", "4", "45.0", "1.43", "84"]}
{"pcdb_id": 500803, "raw": ["500803", "020004", "0", "2023/Feb/23 16:21", "Zehnder Group UK Ltd", "Zehnder", "ComfoAir Flex 250", "", "2022", "current", "", "3", "0", "2", "1", "3", "6", "1", "21.0", "0.68", "95", "2", "29.0", "0.63", "94", "3", "37.0", "0.68", "92", "4", "45.0", "0.77", "91", "5", "53.0", "0.87", "90", "6", "61.0", "1.03", "88"]}
{"pcdb_id": 500804, "raw": ["500804", "020004", "0", "2023/Feb/23 16:17", "Zehnder Group UK Ltd", "Zehnder", "ComfoAir Flex 350", "", "2022", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.59", "95", "2", "29.0", "0.58", "94", "3", "37.0", "0.62", "92", "4", "45.0", "0.73", "91", "5", "53.0", "0.85", "90", "6", "61.0", "1.00", "90", "7", "69.0", "1.16", "89"]}
{"pcdb_id": 500807, "raw": ["500807", "020027", "0", "2023/Mar/08 09:43", "S&P", "EnviroVent", "Sabik 350", "", "2022", "current", "", "3", "0", "2", "1", "3", "6", "1", "21.0", "0.68", "91", "2", "29.0", "0.65", "90", "3", "37.0", "0.71", "89", "4", "45.0", "0.84", "89", "5", "53.0", "0.94", "88", "6", "61.0", "1.10", "87"]}
{"pcdb_id": 500808, "raw": ["500808", "020002", "0", "2023/Mar/30 10:33", "Vent Axia Ltd", "Vent Axia", "MVDC-MSH Uniflex", "498502", "2022", "current", "", "1", "0", "2", "1", "", "4", "1", "21.0", "0.15", "", "2", "29.0", "0.15", "", "3", "37.0", "0.16", "", "4", "45.0", "0.18"]}
{"pcdb_id": 500809, "raw": ["500809", "020042", "0", "2023/Mar/20 16:56", "Brink Climate Systems B.V.", "Brink", "Flair 600 4/0 L EU", "", "2022", "current", "", "3", "0", "2", "1", "3", "6", "2", "29.0", "0.59", "94", "3", "37.0", "0.61", "94", "4", "45.0", "0.69", "94", "5", "53.0", "0.78", "93", "6", "61.0", "0.93", "92", "7", "69.0", "1.09", "92"]}
{"pcdb_id": 500810, "raw": ["500810", "020042", "0", "2023/Mar/20 16:59", "Brink Climate Systems B.V.", "Brink", "Flair 450 4/0 L EU", "", "2022", "current", "", "3", "0", "2", "1", "3", "6", "2", "29.0", "0.59", "94", "3", "37.0", "0.61", "94", "4", "45.0", "0.69", "94", "5", "53.0", "0.78", "93", "6", "61.0", "0.93", "92", "7", "69.0", "1.09", "92"]}
{"pcdb_id": 500811, "raw": ["500811", "020002", "0", "2023/Mar/30 12:53", "Vent Axia Ltd", "Vent Axia", "Sentinel Kinetic FH", "408167A", "2023", "current", "", "3", "0", "2", "1", "3", "5", "1", "21.0", "0.47", "89", "2", "29.0", "0.54", "88", "3", "37.0", "0.65", "86", "4", "45.0", "0.84", "84", "5", "53.0", "1.01", "84"]}
{"pcdb_id": 500812, "raw": ["500812", "020060", "0", "2023/Apr/12 16:41", "Vent Axia", "Addvent", "AVWH2X", "", "2020", "current", "500644", "1", "0", "2", "1", "", "6", "1", "21.0", "0.15", "", "2", "29.0", "0.14", "", "3", "37.0", "0.16", "", "4", "45.0", "0.18", "", "5", "53.0", "0.21", "", "6", "61.0", "0.26"]}
{"pcdb_id": 500813, "raw": ["500813", "020027", "0", "2023/Apr/13 11:24", "S&P UK Ventilation Systems Ltd", "EnviroVent", "Sabik 500", "", "2022", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.77", "84", "2", "29.0", "0.70", "84", "3", "37.0", "0.73", "85", "4", "45.0", "0.79", "85", "5", "53.0", "0.88", "85", "6", "61.0", "1.02", "85", "7", "69.0", "1.19", "85"]}
{"pcdb_id": 500835, "raw": ["500835", "020027", "0", "2023/May/24 16:06", "EnviroVent Ltd", "EnviroVent", "energiSava 260", "Issue A", "2023", "current", "", "3", "0", "2", "1", "4", "5", "1", "21.0", "0.66", "90", "2", "29.0", "0.75", "87", "3", "37.0", "0.94", "85", "4", "45.0", "1.21", "84", "5", "53.0", "1.49", "83"]}
{"pcdb_id": 500836, "raw": ["500836", "020027", "0", "2023/May/24 17:14", "EnviroVent Ltd", "EnviroVent", "energiSava 260", "Issue B", "2023", "current", "", "3", "0", "2", "1", "4", "5", "1", "21.0", "0.57", "88", "2", "29.0", "0.68", "85", "3", "37.0", "0.83", "83", "4", "45.0", "1.02", "82", "5", "53.0", "1.29", "81"]}
{"pcdb_id": 500837, "raw": ["500837", "020027", "0", "2023/Dec/08 10:41", "EnviroVent Ltd", "EnviroVent", "energiSava 260", "Issue C", "2023", "current", "", "3", "0", "2", "1", "4", "5", "1", "21.0", "0.58", "80", "2", "29.0", "0.66", "80", "3", "37.0", "0.82", "79", "4", "45.0", "1.06", "79", "5", "53.0", "1.28", "79"]}
{"pcdb_id": 500838, "raw": ["500838", "020122", "0", "2023/Jul/14 10:00", "Joule Ltd", "JOULE", "Modul-AIR All-E/ Green Comfort", "HHH-AEHP-00001/ HHH-GCPH-0001", "2021", "current", "", "4", "1", "2", "1", "", "7", "1", "21.0", "0.71", "", "2", "29.0", "0.65", "", "3", "37.0", "0.70", "", "4", "45.0", "0.76", "", "5", "53.0", "0.94", "", "6", "61.0", "1.11", "", "7", "69.0", "1.37"]}
{"pcdb_id": 500839, "raw": ["500839", "020007", "0", "2023/Jul/27 12:36", "Titon Hardware Ltd", "Titon", "HRV4 Q Plus Eco", "", "2023", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.42", "91", "2", "29.0", "0.43", "90", "3", "37.0", "0.50", "89", "4", "45.0", "0.60", "88", "5", "53.0", "0.73", "87", "6", "61.0", "0.90", "86", "7", "69.0", "1.08", "86"]}
{"pcdb_id": 500840, "raw": ["500840", "020007", "0", "2023/Jul/27 12:36", "Titon Hardware Ltd", "Titon", "HRV4.1 Q Plus Eco", "", "2023", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.43", "91", "2", "29.0", "0.47", "90", "3", "37.0", "0.55", "89", "4", "45.0", "0.68", "88", "5", "53.0", "0.83", "87", "6", "61.0", "1.03", "86", "7", "69.0", "1.24", "86"]}
{"pcdb_id": 500841, "raw": ["500841", "020007", "0", "2023/Jul/27 12:36", "Titon Hardware Ltd", "Titon", "HRV4.25 Q Plus Eco", "", "2023", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.47", "91", "2", "29.0", "0.49", "90", "3", "37.0", "0.54", "89", "4", "45.0", "0.65", "88", "5", "53.0", "0.75", "87", "6", "61.0", "0.91", "86", "7", "69.0", "1.09", "86"]}
{"pcdb_id": 500842, "raw": ["500842", "020211", "0", "2023/Aug/25 09:55", "Vasco bvba", "Vasco", "Vasco X350 - EasyFlow rigid oval duct system", "", "2017", "current", "", "3", "0", "2", "2", "3", "4", "1", "21.0", "0.85", "93", "2", "29.0", "0.78", "93", "3", "37.0", "0.83", "92", "4", "45.0", "0.89", "91"]}
{"pcdb_id": 500843, "raw": ["500843", "020211", "0", "2023/Aug/25 09:55", "Vasco bvba", "Vasco", "Vasco X350 - 90mm semi-rigid duct system", "", "2017", "current", "", "3", "0", "2", "2", "3", "6", "1", "21.0", "0.84", "93", "2", "29.0", "0.76", "93", "3", "37.0", "0.80", "92", "4", "45.0", "0.88", "91", "5", "53.0", "0.96", "90", "6", "61.0", "1.06", "90"]}
{"pcdb_id": 500844, "raw": ["500844", "020211", "0", "2023/Aug/25 09:54", "Vasco bvba", "Vasco", "X500 - EasyFlow rigid oval duct system", "", "2017", "current", "", "3", "0", "2", "2", "3", "4", "1", "21.0", "0.88", "92", "2", "29.0", "0.78", "91", "3", "37.0", "0.80", "90", "4", "45.0", "0.86", "90"]}
{"pcdb_id": 500845, "raw": ["500845", "020211", "0", "2023/Aug/25 09:54", "Vasco bvba", "Vasco", "X500 - 90mm semi-rigid duct system", "", "2017", "current", "", "3", "0", "2", "2", "3", "6", "1", "21.0", "0.79", "92", "2", "29.0", "0.73", "91", "3", "37.0", "0.76", "90", "4", "45.0", "0.87", "90", "5", "53.0", "0.90", "90", "6", "61.0", "1.00", "89"]}
{"pcdb_id": 500846, "raw": ["500846", "020002", "0", "2023/Sep/11 14:09", "Vent Axia Ltd", "Vent Axia", "Sentinel Econiq S", "499883", "2023", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.39", "93", "2", "29.0", "0.46", "92", "3", "37.0", "0.55", "91", "4", "45.0", "0.70", "91", "5", "53.0", "0.85", "90", "6", "61.0", "1.07", "89", "7", "69.0", "1.31", "89"]}
{"pcdb_id": 500847, "raw": ["500847", "020002", "0", "2023/Sep/11 14:08", "Vent Axia Ltd", "Vent Axia", "Sentinel Econiq M", "499632", "2023", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.41", "93", "2", "29.0", "0.41", "93", "3", "37.0", "0.46", "92", "4", "45.0", "0.55", "92", "5", "53.0", "0.66", "91", "6", "61.0", "0.81", "91", "7", "69.0", "1.00", "90"]}
{"pcdb_id": 500848, "raw": ["500848", "020002", "0", "2023/Sep/11 14:08", "Vent Axia Ltd", "Vent Axia", "Sentinel Econiq L", "499641", "2023", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.56", "93", "2", "29.0", "0.53", "93", "3", "37.0", "0.56", "93", "4", "45.0", "0.62", "92", "5", "53.0", "0.72", "91", "6", "61.0", "0.84", "91", "7", "69.0", "1.01", "90"]}
{"pcdb_id": 500849, "raw": ["500849", "020130", "0", "2023/Sep/25 15:07", "Vero Duco N.V.", "Duco", "DucoBox Energy Comfort D400", "", "2022", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.56", "90", "2", "29.0", "0.53", "90", "3", "37.0", "0.57", "90", "4", "45.0", "0.65", "89", "5", "53.0", "0.76", "89", "6", "61.0", "0.90", "88", "7", "69.0", "1.08", "88"]}
{"pcdb_id": 500850, "raw": ["500850", "020130", "0", "2023/Sep/25 15:01", "Vero Duco N.V.", "Duco", "DucoBox Energy Comfort Plus D350", "", "2022", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.56", "90", "2", "29.0", "0.53", "90", "3", "37.0", "0.57", "90", "4", "45.0", "0.65", "89", "5", "53.0", "0.76", "89", "6", "61.0", "0.90", "88", "7", "69.0", "1.08", "88"]}
{"pcdb_id": 500851, "raw": ["500851", "020130", "0", "2023/Sep/25 14:53", "Vero Duco N.V.", "Duco", "DucoBox Energy Comfort Plus D450", "", "2022", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.56", "90", "2", "29.0", "0.53", "90", "3", "37.0", "0.57", "90", "4", "45.0", "0.65", "89", "5", "53.0", "0.76", "89", "6", "61.0", "0.90", "88", "7", "69.0", "1.08", "88"]}
{"pcdb_id": 500852, "raw": ["500852", "020209", "0", "2023/Nov/15 08:55", "Airsmart BV", "AirSmart", "Ictus 350", "", "2021", "current", "", "3", "1", "2", "1", "3", "7", "1", "21.0", "0.68", "91", "2", "29.0", "0.66", "90", "3", "37.0", "0.70", "88", "4", "45.0", "0.81", "87", "5", "53.0", "0.96", "86", "6", "61.0", "1.12", "85", "7", "69.0", "1.31", "84"]}
{"pcdb_id": 500853, "raw": ["500853", "020209", "0", "2023/Nov/15 08:55", "Airsmart BV", "AirSmart", "Ictus 450", "", "2021", "current", "", "3", "1", "2", "1", "3", "7", "1", "21.0", "0.65", "89", "2", "29.0", "0.62", "88", "3", "37.0", "0.68", "87", "4", "45.0", "0.80", "86", "5", "53.0", "0.95", "85", "6", "61.0", "1.07", "84", "7", "69.0", "1.30", "83"]}
{"pcdb_id": 500854, "raw": ["500854", "020170", "0", "2023/Nov/30 10:08", "HEATPEX SP. Z O.O.", "HEATPEX", "ARIA VITALE 300", "", "2023", "current", "", "3", "0", "2", "1", "3", "5", "1", "21.0", "0.74", "88", "2", "29.0", "0.73", "88", "3", "37.0", "0.79", "86", "4", "45.0", "0.91", "85", "5", "53.0", "0.95", "85"]}
{"pcdb_id": 500855, "raw": ["500855", "020170", "0", "2023/Nov/30 10:28", "HEATPEX SP. Z O.O.", "HEATPEX", "ARIA VITALE 450", "", "2023", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.84", "89", "2", "29.0", "0.81", "88", "3", "37.0", "0.89", "86", "4", "45.0", "1.06", "85", "5", "53.0", "1.13", "85", "6", "61.0", "1.32", "84", "7", "69.0", "1.43", "84"]}
{"pcdb_id": 500856, "raw": ["500856", "020170", "0", "2023/Nov/30 10:28", "HEATPEX SP. Z O.O.", "HEATPEX", "ARIA VITALE 600", "", "2023", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.84", "89", "2", "29.0", "0.81", "88", "3", "37.0", "0.89", "86", "4", "45.0", "1.06", "85", "5", "53.0", "1.13", "85", "6", "61.0", "1.32", "84", "7", "69.0", "1.43", "84"]}
{"pcdb_id": 500857, "raw": ["500857", "020018", "0", "2023/Nov/28 15:22", "National Ventilation", "National Ventilation", "Monsoon Energysaver Intelli-Plus S", "MEI-Plus S", "2023", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.39", "93", "2", "29.0", "0.46", "92", "3", "37.0", "0.55", "91", "4", "45.0", "0.70", "91", "5", "53.0", "0.85", "90", "6", "61.0", "1.07", "89", "7", "69.0", "1.31", "89"]}
{"pcdb_id": 500858, "raw": ["500858", "020018", "0", "2023/Nov/28 15:23", "National Ventilation", "National Ventilation", "Monsoon Energysaver Intelli-Plus M", "MEI-Plus M", "2023", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.41", "93", "2", "29.0", "0.41", "93", "3", "37.0", "0.46", "92", "4", "45.0", "0.55", "92", "5", "53.0", "0.66", "91", "6", "61.0", "0.81", "91", "7", "69.0", "1.00", "90"]}
{"pcdb_id": 500859, "raw": ["500859", "020018", "0", "2023/Nov/28 15:23", "National Ventilation", "National Ventilation", "Monsoon Energysaver Intelli-Plus L", "MEI-Plus L", "2023", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.56", "93", "2", "29.0", "0.53", "93", "3", "37.0", "0.56", "93", "4", "45.0", "0.62", "92", "5", "53.0", "0.72", "91", "6", "61.0", "0.84", "91", "7", "69.0", "1.01", "90"]}
{"pcdb_id": 500860, "raw": ["500860", "020223", "0", "2023/Dec/15 12:35", "Ecovolt Ltd", "Ecovolt", "EVAir", "", "2023", "current", "", "1", "1", "2", "1", "", "6", "1", "21.0", "0.46", "", "2", "29.0", "0.33", "", "3", "37.0", "0.33", "", "4", "45.0", "0.39", "", "5", "53.0", "0.44", "", "6", "61.0", "0.54"]}
{"pcdb_id": 500871, "raw": ["500871", "020002", "0", "2024/Jan/02 17:07", "Vent Axia Ltd", "Vent Axia", "Sentinel Econiq-Cool", "412380", "2023", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.39", "93", "2", "29.0", "0.46", "92", "3", "37.0", "0.55", "91", "4", "45.0", "0.70", "91", "5", "53.0", "0.85", "90", "6", "61.0", "1.07", "89", "7", "69.0", "1.31", "89"]}
{"pcdb_id": 500872, "raw": ["500872", "020130", "0", "2024/Jan/04 12:16", "Vero Duco N.V.", "Duco", "DucoBox Energy Comfort D325", "", "2021", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.60", "91", "2", "29.0", "0.57", "91", "3", "37.0", "0.61", "91", "4", "45.0", "0.71", "90", "5", "53.0", "0.81", "90", "6", "61.0", "0.98", "89", "7", "69.0", "1.17", "89"]}
{"pcdb_id": 500873, "raw": ["500873", "020030", "0", "2024/Jan/30 11:22", "Aldes", "Aldes", "InspirAir Top 450 Premium", "", "2021", "current", "", "3", "0", "2", "1", "3", "6", "2", "29.0", "0.52", "92", "3", "37.0", "0.57", "92", "4", "45.0", "0.67", "92", "5", "53.0", "0.81", "92", "6", "61.0", "1.01", "92", "7", "69.0", "1.27", "91"]}
{"pcdb_id": 500874, "raw": ["500874", "020030", "0", "2024/Jan/31 12:48", "Aldes", "Aldes", "InspirAIR Top 300 Classic", "", "2021", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.51", "90", "2", "29.0", "0.48", "90", "3", "37.0", "0.54", "89", "4", "45.0", "0.64", "88", "5", "53.0", "0.76", "87", "6", "61.0", "0.94", "86", "7", "69.0", "1.16", "86"]}
{"pcdb_id": 500876, "raw": ["500876", "020094", "0", "2024/Mar/08 15:45", "Viessmann Ltd", "Viessmann", "Vitovent 300-W", "H32S A225", "2020", "current", "", "3", "0", "2", "1", "3", "6", "1", "21.0", "0.62", "92", "2", "29.0", "0.64", "91", "3", "37.0", "0.69", "90", "4", "45.0", "0.82", "89", "5", "53.0", "0.96", "88", "6", "61.0", "1.17", "88"]}
{"pcdb_id": 500877, "raw": ["500877", "020094", "0", "2024/Mar/08 15:46", "Viessmann Ltd", "Viessmann", "Vitovent 300-W", "H32S C325", "2020", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.55", "92", "2", "29.0", "0.52", "92", "3", "37.0", "0.55", "91", "4", "45.0", "0.63", "90", "5", "53.0", "0.73", "90", "6", "61.0", "0.86", "89", "7", "69.0", "1.00", "89"]}
{"pcdb_id": 500878, "raw": ["500878", "020094", "0", "2024/Mar/08 15:47", "Viessmann Ltd", "Viessmann", "Vitovent 300-W", "H32S C400", "2020", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.48", "92", "2", "29.0", "0.49", "91", "3", "37.0", "0.53", "90", "4", "45.0", "0.63", "90", "5", "53.0", "0.74", "90", "6", "61.0", "0.90", "89", "7", "69.0", "1.08", "89"]}
{"pcdb_id": 500879, "raw": ["500879", "020094", "0", "2024/Mar/08 15:48", "Viessmann Ltd", "Viessmann", "Vitovent 300-W", "H32S A600", "2020", "current", "", "3", "0", "2", "1", "3", "6", "2", "29.0", "0.59", "94", "3", "37.0", "0.61", "94", "4", "45.0", "0.69", "94", "5", "53.0", "0.78", "93", "6", "61.0", "0.93", "92", "7", "69.0", "1.09", "92"]}
{"pcdb_id": 500880, "raw": ["500880", "020094", "0", "2024/Mar/08 15:49", "Viessmann Ltd", "Viessmann", "Vitovent 300-C", "H32S B150", "2016", "current", "", "3", "0", "2", "1", "3", "3", "1", "21.0", "0.75", "88", "2", "29.0", "0.86", "85", "3", "37.0", "1.04", "84"]}
{"pcdb_id": 500881, "raw": ["500881", "020091", "0", "2024/Mar/20 15:10", "Sabiana", "Lindab", "RHR-CF-V", "280 PRO", "2022", "current", "", "3", "0", "2", "1", "3", "5", "1", "21.0", "0.62", "91", "2", "29.0", "0.55", "90", "3", "37.0", "0.62", "90", "4", "45.0", "0.77", "89", "5", "53.0", "0.92", "88"]}
{"pcdb_id": 500882, "raw": ["500882", "020091", "0", "2024/Mar/20 15:09", "SABIANA", "Lindab", "RHR-CF-V", "370 PRO", "2022", "current", "", "3", "0", "2", "1", "3", "5", "1", "21.0", "0.54", "91", "2", "29.0", "0.55", "91", "3", "37.0", "0.61", "90", "4", "45.0", "0.74", "89", "5", "53.0", "0.89", "89"]}
{"pcdb_id": 500883, "raw": ["500883", "020091", "0", "2024/Mar/20 15:09", "SABIANA", "Lindab", "RHR-CF-V", "460 PRO", "2022", "current", "", "3", "0", "2", "1", "3", "5", "3", "37.0", "0.71", "90", "4", "45.0", "0.85", "89", "5", "53.0", "1.03", "89", "6", "61.0", "1.30", "89", "7", "69.0", "1.61", "89"]}
{"pcdb_id": 500884, "raw": ["500884", "020091", "0", "2024/Mar/20 15:09", "SABIANA", "Lindab", "RHR-CF-V", "600 PRO", "2022", "current", "", "3", "0", "2", "1", "3", "6", "2", "29.0", "0.72", "91", "3", "37.0", "0.78", "90", "4", "45.0", "0.92", "90", "5", "53.0", "1.08", "89", "6", "61.0", "1.31", "89", "7", "69.0", "1.58", "89"]}
{"pcdb_id": 500885, "raw": ["500885", "020091", "0", "2024/Mar/20 15:08", "SABIANA", "Lindab", "RHR-CF-V", "280 PRO EL / ER", "2022", "current", "", "3", "0", "2", "1", "3", "5", "1", "21.0", "0.62", "91", "2", "29.0", "0.55", "90", "3", "37.0", "0.62", "90", "4", "45.0", "0.77", "89", "5", "53.0", "0.92", "88"]}
{"pcdb_id": 500886, "raw": ["500886", "020091", "0", "2024/Mar/20 15:08", "SABIANA", "Lindab", "RHR-CF-V", "370 PRO EL / ER", "2022", "current", "", "3", "0", "2", "1", "3", "5", "1", "21.0", "0.54", "91", "2", "29.0", "0.55", "91", "3", "37.0", "0.61", "90", "4", "45.0", "0.74", "89", "5", "53.0", "0.89", "89"]}
{"pcdb_id": 500887, "raw": ["500887", "020091", "0", "2024/Mar/20 15:08", "SABIANA", "Lindab", "RHR-CF-V", "460 PRO EL / ER", "2022", "current", "", "3", "0", "2", "1", "3", "5", "3", "37.0", "0.71", "90", "4", "45.0", "0.85", "89", "5", "53.0", "1.03", "89", "6", "61.0", "1.30", "89", "7", "69.0", "1.61", "89"]}
{"pcdb_id": 500888, "raw": ["500888", "020091", "0", "2024/Mar/20 15:07", "SABIANA", "Lindab", "RHR-CF-V", "600 PRO EL / ER", "2022", "current", "", "3", "0", "2", "1", "3", "6", "2", "29.0", "0.72", "91", "3", "37.0", "0.78", "90", "4", "45.0", "0.92", "90", "5", "53.0", "1.08", "89", "6", "61.0", "1.31", "89", "7", "69.0", "1.58", "89"]}
{"pcdb_id": 500889, "raw": ["500889", "020235", "0", "2024/Mar/20 09:18", "Sabiana S.p.A", "Sabiana SpA", "ENERGY SMART VERTICAL PRO", "ENY-SP-280", "2017", "current", "", "3", "0", "2", "1", "3", "5", "1", "21.0", "0.62", "91", "2", "29.0", "0.55", "90", "3", "37.0", "0.62", "90", "4", "45.0", "0.77", "89", "5", "53.0", "0.92", "88"]}
{"pcdb_id": 500890, "raw": ["500890", "020235", "0", "2024/Mar/20 09:18", "Sabiana S.p.A", "Sabiana SpA", "ENERGY SMART VERTICAL PRO", "ENY-SPEL/R-280", "2017", "current", "", "3", "0", "2", "1", "3", "5", "1", "21.0", "0.62", "91", "2", "29.0", "0.55", "90", "3", "37.0", "0.62", "90", "4", "45.0", "0.77", "89", "5", "53.0", "0.92", "88"]}
{"pcdb_id": 500891, "raw": ["500891", "020235", "0", "2024/Mar/20 09:17", "Sabiana S.p.A", "Sabiana SpA", "ENERGY SMART VERTICAL PRO", "ENY-SP-370", "2017", "current", "", "3", "0", "2", "1", "3", "5", "1", "21.0", "0.54", "91", "2", "29.0", "0.55", "91", "3", "37.0", "0.61", "90", "4", "45.0", "0.74", "89", "5", "53.0", "0.89", "89"]}
{"pcdb_id": 500892, "raw": ["500892", "020235", "0", "2024/Mar/20 09:17", "Sabiana S.p.A", "Sabiana SpA", "ENERGY SMART VERTICAL PRO", "ENY-SPEL/R-370", "2017", "current", "", "3", "0", "2", "1", "3", "5", "1", "21.0", "0.54", "91", "2", "29.0", "0.55", "91", "3", "37.0", "0.61", "90", "4", "45.0", "0.74", "89", "5", "53.0", "0.89", "89"]}
{"pcdb_id": 500893, "raw": ["500893", "020235", "0", "2024/Mar/20 09:17", "Sabiana S.p.A", "Sabiana SpA", "ENERGY SMART VERTICAL PRO", "ENY-SP-460", "2017", "current", "", "3", "0", "2", "1", "3", "5", "3", "37.0", "0.71", "90", "4", "45.0", "0.85", "89", "5", "53.0", "1.03", "89", "6", "61.0", "1.30", "89", "7", "69.0", "1.61", "89"]}
{"pcdb_id": 500894, "raw": ["500894", "020235", "0", "2024/Mar/20 09:16", "Sabiana S.p.A", "Sabiana SpA", "ENERGY SMART VERTICAL PRO", "ENY-SPEL/R-460", "2017", "current", "", "3", "0", "2", "1", "3", "5", "3", "37.0", "0.71", "90", "4", "45.0", "0.85", "89", "5", "53.0", "1.03", "89", "6", "61.0", "1.30", "89", "7", "69.0", "1.61", "89"]}
{"pcdb_id": 500895, "raw": ["500895", "020235", "0", "2024/Mar/20 09:16", "Sabiana S.p.A", "Sabiana SpA", "ENERGY SMART VERTICAL PRO", "ENY-SP-600", "2021", "current", "", "3", "0", "2", "1", "3", "6", "2", "29.0", "0.72", "91", "3", "37.0", "0.78", "90", "4", "45.0", "0.92", "90", "5", "53.0", "1.08", "89", "6", "61.0", "1.31", "89", "7", "69.0", "1.58", "89"]}
{"pcdb_id": 500896, "raw": ["500896", "020235", "0", "2024/Mar/20 09:15", "Sabiana S.p.A", "Sabiana SpA", "ENERGY SMART VERTICAL PRO", "ENY-SPEL/R-600", "2021", "current", "", "3", "0", "2", "1", "3", "6", "2", "29.0", "0.72", "91", "3", "37.0", "0.78", "90", "4", "45.0", "0.92", "90", "5", "53.0", "1.08", "89", "6", "61.0", "1.31", "89", "7", "69.0", "1.58", "89"]}
{"pcdb_id": 500900, "raw": ["500900", "020002", "0", "2024/May/15 13:33", "Vent Axia Ltd", "Vent Axia", "Sentinel Econiq SC", "411077", "2023", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.39", "93", "2", "29.0", "0.46", "92", "3", "37.0", "0.55", "91", "4", "45.0", "0.70", "91", "5", "53.0", "0.85", "90", "6", "61.0", "1.07", "89", "7", "69.0", "1.31", "89"]}
{"pcdb_id": 500901, "raw": ["500901", "020002", "0", "2024/May/15 13:33", "Vent Axia Ltd", "Vent Axia", "Sentinel Econiq MC", "499638", "2023", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.41", "93", "2", "29.0", "0.41", "93", "3", "37.0", "0.46", "92", "4", "45.0", "0.55", "92", "5", "53.0", "0.66", "91", "6", "61.0", "0.81", "91", "7", "69.0", "1.00", "90"]}
{"pcdb_id": 500902, "raw": ["500902", "020002", "0", "2024/May/15 13:33", "Vent Axia Ltd", "Vent Axia", "Sentinel Econiq LC", "499647", "2023", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.56", "93", "2", "29.0", "0.53", "93", "3", "37.0", "0.56", "93", "4", "45.0", "0.62", "92", "5", "53.0", "0.72", "91", "6", "61.0", "0.84", "91", "7", "69.0", "1.01", "90"]}
{"pcdb_id": 500903, "raw": ["500903", "020002", "0", "2024/May/15 13:33", "Vent Axia Ltd", "Vent Axia", "Sentinel Econiq SCP RH", "499890", "2023", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.39", "93", "2", "29.0", "0.46", "92", "3", "37.0", "0.55", "91", "4", "45.0", "0.70", "91", "5", "53.0", "0.85", "90", "6", "61.0", "1.07", "89", "7", "69.0", "1.31", "89"]}
{"pcdb_id": 500904, "raw": ["500904", "020002", "0", "2024/May/15 13:33", "Vent Axia Ltd", "Vent Axia", "Sentinel Econiq MCP RH", "499639", "2023", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.41", "93", "2", "29.0", "0.41", "93", "3", "37.0", "0.46", "92", "4", "45.0", "0.55", "92", "5", "53.0", "0.66", "91", "6", "61.0", "0.81", "91", "7", "69.0", "1.00", "90"]}
{"pcdb_id": 500905, "raw": ["500905", "020002", "0", "2024/May/15 13:33", "Vent Axia Ltd", "Vent Axia", "Sentinel Econiq LCP RH", "499648", "2023", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.56", "93", "2", "29.0", "0.53", "93", "3", "37.0", "0.56", "93", "4", "45.0", "0.62", "92", "5", "53.0", "0.72", "91", "6", "61.0", "0.84", "91", "7", "69.0", "1.01", "90"]}
{"pcdb_id": 500906, "raw": ["500906", "020027", "0", "2024/May/24 16:47", "S&P", "EnviroVent", "Sabik 350 E", "", "2022", "current", "", "3", "0", "2", "1", "3", "6", "1", "21.0", "0.54", "83", "2", "29.0", "0.55", "81", "3", "37.0", "0.56", "80", "4", "45.0", "0.66", "78", "5", "53.0", "0.78", "76", "6", "61.0", "0.97", "75"]}
{"pcdb_id": 500907, "raw": ["500907", "020027", "0", "2024/May/24 16:47", "S&P", "EnviroVent", "Sabik 500 E", "", "2022", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.71", "84", "2", "29.0", "0.65", "84", "3", "37.0", "0.64", "82", "4", "45.0", "0.75", "81", "5", "53.0", "0.87", "80", "6", "61.0", "1.00", "78", "7", "69.0", "1.18", "77"]}
{"pcdb_id": 500908, "raw": ["500908", "020027", "0", "2024/May/24 16:47", "S&P", "EnviroVent", "Altair 120 H", "", "2023", "current", "", "3", "0", "2", "1", "1", "2", "1", "21.0", "0.77", "80", "2", "29.0", "1.00", "80"]}
{"pcdb_id": 500909, "raw": ["500909", "020027", "0", "2024/May/24 16:48", "S&P", "EnviroVent", "Altair 160 H", "", "2023", "current", "", "3", "0", "2", "1", "1", "3", "1", "21.0", "0.65", "83", "2", "29.0", "0.75", "79", "3", "37.0", "0.94", "75"]}
{"pcdb_id": 500910, "raw": ["500910", "020031", "0", "2024/May/31 12:13", "NIBE Energy Systems Ltd", "NIBE", "NIBE S735-7 R EM 1X230V UK", "", "2023", "current", "", "1", "1", "2", "1", "", "6", "1", "21.0", "0.65", "", "2", "29.0", "0.56", "", "3", "37.0", "0.53", "", "4", "45.0", "0.57", "", "5", "53.0", "0.59", "", "6", "61.0", "0.66"]}
{"pcdb_id": 500911, "raw": ["500911", "020031", "0", "2024/May/31 12:12", "NIBE Energy Systems Ltd", "NIBE", "S735-7 R EM 1X230V UK + SAM S42", "", "2023", "current", "", "4", "1", "2", "1", "", "6", "1", "21.0", "1.21", "", "2", "29.0", "1.11", "", "3", "37.0", "1.13", "", "4", "45.0", "1.25", "", "5", "53.0", "1.36", "", "6", "61.0", "1.62"]}
{"pcdb_id": 500913, "raw": ["500913", "020050", "0", "2024/Jun/26 09:56", "Aereco SAS", "Aereco", "V4A2", "V4A2 Premium", "2024", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.17", "", "2", "29.0", "0.16", "", "3", "37.0", "0.16", "", "4", "45.0", "0.20", "", "5", "53.0", "0.23", "", "6", "61.0", "0.28"]}
{"pcdb_id": 500914, "raw": ["500914", "020050", "0", "2024/Jun/26 09:59", "Aereco Ltd", "Aereco", "V4A2", "V4A2 75mm semi-rigid", "2024", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.17", "", "2", "29.0", "0.16", "", "3", "37.0", "0.18", "", "4", "45.0", "0.20", "", "5", "53.0", "0.24", "", "6", "61.0", "0.29"]}
{"pcdb_id": 500915, "raw": ["500915", "020130", "0", "2024/Jul/19 08:47", "Vero Duco N.V.", "Duco", "DucoBox Energy Comfort Plus D550 UK", "", "2022", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.66", "88", "2", "29.0", "0.61", "88", "3", "37.0", "0.64", "88", "4", "45.0", "0.71", "88", "5", "53.0", "0.81", "88", "6", "61.0", "0.95", "87", "7", "69.0", "1.11", "87"]}
{"pcdb_id": 500916, "raw": ["500916", "020045", "0", "2024/Jul/31 10:01", "Daikin Europe NV", "Daikin Altherma", "EKHHEU200CV37", "", "2024", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.40", "", "2", "29.0", "0.41", "", "3", "37.0", "0.46", "", "4", "45.0", "0.58", "", "5", "53.0", "0.71", "", "6", "61.0", "0.90"]}
{"pcdb_id": 500917, "raw": ["500917", "020045", "0", "2024/Jul/31 10:03", "Daikin Europe NV", "Daikin Altherma", "EKHHEU260CV37", "", "2024", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.41", "", "2", "29.0", "0.41", "", "3", "37.0", "0.45", "", "4", "45.0", "0.55", "", "5", "53.0", "0.70", "", "6", "61.0", "0.89"]}
{"pcdb_id": 500918, "raw": ["500918", "020240", "0", "2024/Aug/14 10:09", "Systemair Ltd", "Systemair", "SAVE VTR 150/B", "", "2018", "current", "", "3", "0", "2", "1", "3", "4", "1", "21.0", "0.98", "69", "2", "29.0", "1.03", "71", "3", "37.0", "1.21", "73", "4", "45.0", "1.50", "73"]}
{"pcdb_id": 500919, "raw": ["500919", "020030", "0", "2024/Sep/24 08:30", "Aldes", "Exhausto", "VEX 40 T Classic", "", "2021", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.51", "90", "2", "29.0", "0.48", "90", "3", "37.0", "0.54", "89", "4", "45.0", "0.64", "88", "5", "53.0", "0.76", "87", "6", "61.0", "0.94", "86", "7", "69.0", "1.16", "86"]}
{"pcdb_id": 500920, "raw": ["500920", "020237", "0", "2024/Sep/16 16:05", "Siber Zone S.L.U", "SIBER", "SF ECO", "Higro", "2023", "current", "", "1", "0", "2", "1", "", "4", "1", "21.0", "0.27", "", "2", "29.0", "0.28", "", "3", "37.0", "0.30", "", "4", "45.0", "0.27"]}
{"pcdb_id": 500925, "raw": ["500925", "020002", "0", "2024/Oct/17 12:30", "Vent Axia Ltd", "Vent Axia", "Sentinel Econiq-Cool L", "413775", "2024", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.56", "93", "2", "29.0", "0.53", "93", "3", "37.0", "0.56", "93", "4", "45.0", "0.62", "92", "5", "53.0", "0.72", "91", "6", "61.0", "0.84", "91", "7", "69.0", "1.01", "90"]}
{"pcdb_id": 500928, "raw": ["500928", "020139", "0", "2024/Dec/11 17:35", "Ubbink UK Ltd", "Ubbink", "Vigor W600 4/0 L GB", "", "", "current", "", "3", "0", "2", "1", "3", "6", "2", "29.0", "0.59", "94", "3", "37.0", "0.61", "94", "4", "45.0", "0.69", "94", "5", "53.0", "0.78", "93", "6", "61.0", "0.93", "92", "7", "69.0", "1.09", "92"]}
{"pcdb_id": 500929, "raw": ["500929", "020030", "0", "2024/Dec/09 14:05", "Aldes", "Aldes", "InspirAIR Side 180 Classic (DHU)", "", "2024", "current", "", "3", "0", "2", "1", "3", "5", "1", "21.0", "0.67", "87", "2", "29.0", "0.74", "84", "3", "37.0", "0.90", "82", "4", "45.0", "1.15", "81", "5", "53.0", "1.41", "79"]}
{"pcdb_id": 500930, "raw": ["500930", "020030", "0", "2024/Dec/09 13:30", "Aldes", "Aldes", "InspirAIR Side 300 Classic (DHU)", "", "2024", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.56", "90", "2", "29.0", "0.57", "89", "3", "37.0", "0.65", "87", "4", "45.0", "0.81", "85", "5", "53.0", "0.97", "83", "6", "61.0", "1.19", "83", "7", "69.0", "1.45", "82"]}
{"pcdb_id": 500931, "raw": ["500931", "020139", "0", "2024/Dec/11 17:34", "Brink", "Ubbink", "Vigor W450 4/0 L GB", "", "2018", "current", "", "3", "0", "2", "1", "3", "6", "2", "29.0", "0.59", "94", "3", "37.0", "0.61", "94", "4", "45.0", "0.69", "94", "5", "53.0", "0.78", "93", "6", "61.0", "0.93", "92", "7", "69.0", "1.09", "92"]}
{"pcdb_id": 500932, "raw": ["500932", "020139", "0", "2024/Dec/11 17:34", "Ubbink UK Ltd", "Ubbink", "Vigor W225 4/0 L GB", "", "", "current", "", "3", "0", "2", "1", "3", "6", "1", "21.0", "0.62", "92", "2", "29.0", "0.64", "91", "3", "37.0", "0.69", "90", "4", "45.0", "0.82", "89", "5", "53.0", "0.96", "88", "6", "61.0", "1.17", "88"]}
{"pcdb_id": 500935, "raw": ["500935", "020130", "0", "2025/Jan/31 10:17", "Vero Duco N.V.", "Duco", "DucoBox Energy Sky D275 UK", "", "2024", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.64", "93", "2", "29.0", "0.63", "92", "3", "37.0", "0.68", "91", "4", "45.0", "0.83", "90", "5", "53.0", "0.97", "90", "6", "61.0", "1.16", "90", "7", "69.0", "1.39", "89"]}
{"pcdb_id": 500936, "raw": ["500936", "020130", "0", "2025/Jan/31 10:18", "Vero Duco N.V.", "Duco", "DucoBox Silent Connect UK", "00004455", "2013", "current", "", "1", "0", "2", "1", "", "6", "1", "21.4", "0.31", "", "2", "29.0", "0.26", "", "3", "37.0", "0.25", "", "4", "45.0", "0.26", "", "5", "53.6", "0.29", "", "6", "61.1", "0.32"]}
{"pcdb_id": 500937, "raw": ["500937", "020031", "0", "2024/Sep/26 09:56", "NIBE Energy Systems Ltd", "NIBE", "NIBE S735-4 R EM 1X230V UK", "", "2023", "current", "", "1", "1", "2", "1", "", "6", "1", "21.0", "0.65", "", "2", "29.0", "0.56", "", "3", "37.0", "0.53", "", "4", "45.0", "0.57", "", "5", "53.0", "0.59", "", "6", "61.0", "0.66"]}
{"pcdb_id": 500938, "raw": ["500938", "020031", "0", "2024/Sep/26 09:52", "NIBE Energy Systems Ltd", "NIBE", "S735-4 R EM 1X230V UK + SAM S42", "", "2023", "current", "", "4", "1", "2", "1", "", "6", "1", "21.0", "1.21", "", "2", "29.0", "1.11", "", "3", "37.0", "1.13", "", "4", "45.0", "1.25", "", "5", "53.0", "1.36", "", "6", "61.0", "1.62"]}
{"pcdb_id": 500939, "raw": ["500939", "020016", "0", "2025/Feb/24 16:38", "ProAir Heat Recovery and Ventilation Systems Ltd", "ProAir", "PA700LI", "", "2024", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.58", "95", "2", "29.0", "0.55", "95", "3", "37.0", "0.56", "94", "4", "45.0", "0.59", "93", "5", "53.0", "0.68", "93", "6", "61.0", "0.75", "92", "7", "69.0", "0.88", "91"]}
{"pcdb_id": 500940, "raw": ["500940", "020047", "0", "2025/Feb/18 11:48", "Mitsubishi Electric Europe B.V.", "Mitsubishi Electric", "VL-250CZPVU-L-E-2", "", "2024", "current", "", "3", "0", "2", "1", "3", "5", "1", "21.0", "0.62", "90", "2", "29.0", "0.67", "89", "3", "37.0", "0.79", "88", "4", "45.0", "1.00", "87", "5", "53.0", "1.19", "87"]}
{"pcdb_id": 500941, "raw": ["500941", "020047", "0", "2025/Feb/18 11:48", "Mitsubishi Electric Europe B.V.", "Mitsubishi Electric", "VL-250CZPVU-R-E-2", "", "2024", "current", "", "3", "0", "2", "1", "3", "5", "1", "21.0", "0.62", "90", "2", "29.0", "0.67", "89", "3", "37.0", "0.79", "88", "4", "45.0", "1.00", "87", "5", "53.0", "1.19", "87"]}
{"pcdb_id": 500942, "raw": ["500942", "020047", "0", "2025/Feb/18 11:48", "Mitsubishi Electric Europe B.V.", "Mitsubishi Electric", "VL-350CZPVU-L-E-2", "", "2024", "current", "", "3", "0", "2", "1", "3", "6", "1", "21.0", "0.86", "90", "2", "29.0", "0.80", "90", "3", "37.0", "0.84", "89", "4", "45.0", "0.96", "89", "5", "53.0", "1.08", "88", "6", "61.0", "1.28", "87"]}
{"pcdb_id": 500943, "raw": ["500943", "020047", "0", "2025/Feb/18 11:49", "Mitsubishi Electric Europe B.V.", "Mitsubishi Electric", "VL-350CZPVU-R-E-2", "", "2024", "current", "", "3", "0", "2", "1", "3", "6", "1", "21.0", "0.86", "90", "2", "29.0", "0.80", "90", "3", "37.0", "0.84", "89", "4", "45.0", "0.96", "89", "5", "53.0", "1.08", "88", "6", "61.0", "1.28", "87"]}
{"pcdb_id": 500944, "raw": ["500944", "020047", "0", "2025/Feb/18 11:49", "Mitsubishi Electric Europe B.V.", "Mitsubishi Electric", "VL-500CZPVU-L-E-2", "", "2024", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.80", "91", "2", "29.0", "0.72", "90", "3", "37.0", "0.74", "90", "4", "45.0", "0.82", "89", "5", "53.0", "0.91", "88", "6", "61.0", "1.09", "88", "7", "69.0", "1.24", "88"]}
{"pcdb_id": 500945, "raw": ["500945", "020047", "0", "2025/Feb/18 11:49", "Mitsubishi Electric Europe B.V.", "Mitsubishi Electric", "VL-500CZPVU-R-E-2", "", "2024", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.80", "91", "2", "29.0", "0.72", "90", "3", "37.0", "0.74", "90", "4", "45.0", "0.82", "89", "5", "53.0", "0.91", "88", "6", "61.0", "1.09", "88", "7", "69.0", "1.24", "88"]}
{"pcdb_id": 500946, "raw": ["500946", "020038", "0", "2025/Feb/20 15:52", "Titon Hardware Ltd", "Beam", "Axco MEV130 AIP", "", "2022", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.17", "", "2", "29.0", "0.16", "", "3", "37.0", "0.17", "", "4", "45.0", "0.20", "", "5", "53.0", "0.23", "", "6", "61.0", "0.26"]}
{"pcdb_id": 500947, "raw": ["500947", "020016", "0", "2025/Feb/24 16:13", "ProAir Heat Recovery and Ventilation Systems Ltd", "ProAir", "PA700HLI", "", "2024", "current", "", "3", "0", "2", "1", "1", "7", "1", "21.0", "0.65", "93", "2", "29.0", "0.67", "93", "3", "37.0", "0.75", "93", "4", "45.0", "0.88", "92", "5", "53.0", "1.05", "91", "6", "61.0", "1.26", "90", "7", "69.0", "1.53", "90"]}
{"pcdb_id": 500948, "raw": ["500948", "020073", "0", "2025/Feb/27 15:42", "Dantherm Air Handling A/S", "Dantherm", "RCC220 P2", "", "2024", "current", "", "3", "0", "2", "1", "3", "3", "1", "21.0", "1.00", "86", "2", "29.0", "1.19", "84", "3", "37.0", "1.49", "82"]}
{"pcdb_id": 500949, "raw": ["500949", "020065", "0", "2025/Feb/18 09:40", "Stiebel Eltron UK Ltd", "Stiebel Eltron", "VRC-W 600 Premium", "204714", "2024", "current", "", "3", "0", "2", "1", "3", "6", "2", "29.0", "0.46", "92", "3", "37.0", "0.49", "92", "4", "45.0", "0.55", "91", "5", "53.0", "0.63", "91", "6", "61.0", "0.75", "90", "7", "69.0", "0.90", "90"]}
{"pcdb_id": 500950, "raw": ["500950", "020065", "0", "2025/Feb/18 09:40", "Stiebel Eltron UK Ltd", "Stiebel Eltron", "VRC-W 600 E Premium", "204715", "2024", "current", "", "3", "0", "2", "1", "3", "6", "2", "29.0", "0.43", "87", "3", "37.0", "0.45", "85", "4", "45.0", "0.52", "83", "5", "53.0", "0.60", "82", "6", "61.0", "0.74", "80", "7", "69.0", "0.86", "79"]}
{"pcdb_id": 500951, "raw": ["500951", "020065", "0", "2025/Feb/18 09:41", "Stiebel Eltron UK Ltd", "Stiebel Eltron", "VRC-W 450 Premium", "204940", "2024", "current", "204940", "3", "0", "2", "1", "3", "6", "2", "29.0", "0.46", "92", "3", "37.0", "0.49", "92", "4", "45.0", "0.55", "91", "5", "53.0", "0.63", "91", "6", "61.0", "0.75", "90", "7", "69.0", "0.90", "90"]}
{"pcdb_id": 500952, "raw": ["500952", "020065", "0", "2025/Feb/18 09:41", "Stiebel Eltron UK Ltd", "Stiebel Eltron", "VRC-W 450 E Premium", "204941", "2024", "current", "", "3", "0", "2", "1", "3", "6", "2", "29.0", "0.43", "87", "3", "37.0", "0.45", "85", "4", "45.0", "0.52", "83", "5", "53.0", "0.60", "82", "6", "61.0", "0.74", "80", "7", "69.0", "0.86", "79"]}
{"pcdb_id": 500953, "raw": ["500953", "020248", "0", "2025/Feb/24 16:54", "Qvantum Energi AB", "Qvantum", "QE4", "", "2024", "current", "", "1", "1", "2", "1", "", "6", "1", "21.0", "0.27", "", "2", "29.0", "0.32", "", "3", "37.0", "0.41", "", "4", "45.0", "0.54", "", "5", "53.0", "0.68", "", "6", "61.0", "0.91"]}
{"pcdb_id": 500954, "raw": ["500954", "020248", "0", "2025/Feb/24 16:47", "Qvantum Energi AB", "Qvantum", "QE6", "", "2024", "current", "", "1", "1", "2", "1", "", "6", "1", "21.0", "0.27", "", "2", "29.0", "0.32", "", "3", "37.0", "0.41", "", "4", "45.0", "0.54", "", "5", "53.0", "0.68", "", "6", "61.0", "0.91"]}
{"pcdb_id": 500955, "raw": ["500955", "020204", "0", "2025/Mar/27 16:29", "Airbot Technologies AS", "AIROBOT", "AIROBOT-V3-HRV-R-W", "", "2022", "current", "", "3", "0", "2", "1", "4", "6", "1", "21.0", "0.81", "88", "2", "29.0", "0.79", "87", "3", "37.0", "0.87", "86", "4", "45.0", "1.04", "85", "5", "53.0", "1.23", "85", "6", "61.0", "1.51", "84"]}
{"pcdb_id": 500956, "raw": ["500956", "020038", "0", "2025/Mar/28 15:05", "Titon Hardware", "Beam", "AXCO C440", "", "2023", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.42", "91", "2", "29.0", "0.43", "90", "3", "37.0", "0.50", "89", "4", "45.0", "0.60", "88", "5", "53.0", "0.73", "87", "6", "61.0", "0.90", "86", "7", "69.0", "1.08", "86"]}
{"pcdb_id": 500957, "raw": ["500957", "020038", "0", "2025/Sep/17 09:51", "Titon Hardware Ltd", "Beam", "AXCO C570", "", "2023", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.47", "91", "2", "29.0", "0.49", "90", "3", "37.0", "0.54", "89", "4", "45.0", "0.65", "88", "5", "53.0", "0.75", "87", "6", "61.0", "0.91", "86", "7", "69.0", "1.09", "86"]}
{"pcdb_id": 500958, "raw": ["500958", "020242", "0", "2025/Apr/28 15:36", "Valsir Spa", "ARIOSA HV 170 E", "ARIOSA HV 170 Enthalpy", "", "2023", "current", "", "3", "0", "2", "1", "3", "3", "1", "21.0", "0.61", "85", "2", "29.0", "0.68", "84", "3", "37.0", "0.82", "83"]}
{"pcdb_id": 500959, "raw": ["500959", "020242", "0", "2025/Apr/28 15:37", "Valsir Spa", "ARIOSA HV 170 S", "ARIOSA HV 170 Sensible", "", "2023", "current", "", "3", "0", "2", "1", "3", "4", "1", "21.0", "0.65", "90", "2", "29.0", "0.70", "89", "3", "37.0", "0.83", "89", "4", "45.0", "1.04", "87"]}
{"pcdb_id": 500960, "raw": ["500960", "020242", "0", "2025/Apr/28 15:38", "Valsir Spa", "ARIOSA HV 250 E", "ARIOSA HV 250 Enthalpy", "", "2023", "current", "", "3", "0", "2", "1", "3", "5", "1", "21.0", "0.62", "85", "2", "29.0", "0.69", "84", "3", "37.0", "0.84", "83", "4", "45.0", "1.05", "83", "5", "53.0", "1.30", "82"]}
{"pcdb_id": 500961, "raw": ["500961", "020242", "0", "2025/Apr/28 15:40", "Valsir Spa", "ARIOSA HV 250 S", "ARIOSA HV 250 Sensible", "", "2023", "current", "", "3", "0", "2", "1", "3", "5", "1", "21.0", "0.64", "90", "2", "29.0", "0.70", "89", "3", "37.0", "0.88", "89", "4", "45.0", "1.10", "87", "5", "53.0", "1.38", "87"]}
{"pcdb_id": 500962, "raw": ["500962", "020248", "0", "2025/Apr/28 16:47", "Qvantum Energy Technology UK Limited", "Qvantum", "QE4 + QS", "", "2025", "current", "", "4", "1", "2", "1", "", "6", "1", "21.0", "0.55", "", "2", "29.0", "0.66", "", "3", "37.0", "0.86", "", "4", "45.0", "1.08", "", "5", "53.0", "1.35", "", "6", "61.0", "1.75"]}
{"pcdb_id": 500963, "raw": ["500963", "020248", "0", "2025/Apr/28 16:47", "Qvantum Energy Technology UK Limited", "Qvantum", "QE6 + QS", "", "2025", "current", "", "4", "1", "2", "1", "", "6", "1", "21.0", "0.55", "", "2", "29.0", "0.66", "", "3", "37.0", "0.83", "", "4", "45.0", "1.08", "", "5", "53.0", "1.35", "", "6", "61.0", "1.75"]}
{"pcdb_id": 500964, "raw": ["500964", "020130", "0", "2025/May/23 12:41", "Vero Duco N.V.", "Duco", "DucoBox Reno UK", "00004948", "2023", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.16", "", "2", "29.0", "0.19", "", "3", "37.0", "0.20", "", "4", "45.0", "0.22", "", "5", "53.0", "0.24", "", "6", "61.0", "0.27"]}
{"pcdb_id": 500966, "raw": ["500966", "020087", "0", "2025/Jun/26 11:19", "Sinergia Srl", "Panasonic", "P-VEN15XQAZE5", "", "2023", "current", "", "3", "0", "2", "1", "4", "4", "1", "21.0", "0.80", "87", "2", "29.0", "0.88", "84", "3", "37.0", "1.11", "84", "4", "45.0", "1.48", "83"]}
{"pcdb_id": 500967, "raw": ["500967", "020087", "0", "2025/Jun/26 11:20", "Sinergia Srl", "Panasonic", "P-VEN20XQAZE5", "", "2023", "current", "", "3", "0", "2", "1", "4", "6", "1", "21.0", "0.81", "88", "2", "29.0", "0.77", "87", "3", "37.0", "0.91", "85", "4", "45.0", "1.06", "85", "5", "53.0", "1.22", "84", "6", "61.0", "1.50", "83"]}
{"pcdb_id": 500968, "raw": ["500968", "020087", "0", "2025/Jun/26 11:26", "Sinergia Srl", "Panasonic", "P-VEN30XQAZE5", "", "2023", "current", "", "3", "0", "2", "1", "4", "5", "1", "21.0", "0.75", "88", "2", "29.0", "0.82", "86", "3", "37.0", "0.97", "85", "4", "45.0", "1.15", "84", "5", "53.0", "1.31", "84"]}
{"pcdb_id": 500969, "raw": ["500969", "020087", "0", "2025/Jun/26 11:28", "Sinergia Srl", "Panasonic", "P-VEN40XQAVE5", "", "2023", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.70", "90", "2", "29.0", "0.64", "89", "3", "37.0", "0.76", "88", "4", "45.0", "0.82", "88", "5", "53.0", "0.96", "87", "6", "61.0", "1.19", "87", "7", "69.0", "1.39", "87"]}
{"pcdb_id": 500970, "raw": ["500970", "020087", "0", "2025/Jun/26 11:31", "Sinergia Srl", "Panasonic", "P-VEN45XQAHE5", "", "2023", "current", "", "3", "0", "2", "1", "4", "7", "1", "21.0", "0.72", "90", "2", "29.0", "0.72", "88", "3", "37.0", "0.74", "88", "4", "45.0", "0.88", "85", "5", "53.0", "1.05", "84", "6", "61.0", "1.20", "84", "7", "69.0", "1.43", "83"]}
{"pcdb_id": 500971, "raw": ["500971", "020087", "0", "2025/Jun/26 11:36", "Sinergia Srl", "Panasonic", "P-VEN45XQAVE5", "", "2023", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.78", "91", "2", "29.0", "0.66", "89", "3", "37.0", "0.69", "90", "4", "45.0", "0.80", "88", "5", "53.0", "0.97", "88", "6", "61.0", "1.18", "87", "7", "69.0", "1.37", "87"]}
{"pcdb_id": 500972, "raw": ["500972", "020242", "0", "2025/Jun/26 15:58", "Valsir Spa", "ARIOSA 330 S", "ARIOSA HV 330 Sensible", "", "2025", "current", "", "3", "0", "2", "1", "3", "5", "1", "21.0", "0.69", "88", "2", "29.0", "0.77", "86", "3", "37.0", "0.88", "85", "4", "45.0", "1.08", "84", "5", "53.0", "1.28", "84"]}
{"pcdb_id": 500973, "raw": ["500973", "020242", "0", "2025/Jun/26 16:02", "Valsir Spa", "ARIOSA 330 E", "ARIOSA HV 330 Enthalpy", "", "2025", "current", "", "3", "0", "2", "1", "3", "5", "1", "21.0", "0.73", "84", "2", "29.0", "0.74", "83", "3", "37.0", "0.86", "82", "4", "45.0", "1.05", "82", "5", "53.0", "1.27", "81"]}
{"pcdb_id": 500974, "raw": ["500974", "020240", "0", "2025/Jun/26 10:27", "Systemair Ltd", "Systemair", "Save VTR 275/B L", "", "2023", "current", "", "3", "0", "2", "1", "3", "6", "1", "21.0", "0.84", "68", "2", "29.0", "0.84", "70", "3", "37.0", "0.91", "72", "4", "45.0", "1.08", "72", "5", "53.0", "1.24", "73", "6", "61.1", "1.47", "72"]}
{"pcdb_id": 500975, "raw": ["500975", "020112", "0", "2025/Jun/26 11:04", "Blauberg UK Ltd", "Blauberg", "Passiv-180-H", "", "2024", "current", "", "3", "0", "2", "1", "3", "4", "1", "21.0", "0.57", "89", "2", "29.0", "0.66", "87", "3", "37.0", "0.85", "86", "4", "45.0", "1.11", "85"]}
{"pcdb_id": 500976, "raw": ["500976", "020084", "0", "2025/Jul/07 15:19", "FRÄNKISCHE ROHRWERKE", "FRÄNKISCHE", "profi-air 130 flat", "", "2024", "current", "", "3", "0", "2", "1", "3", "3", "1", "21.0", "1.00", "86", "2", "29.0", "1.19", "84", "3", "37.0", "1.49", "82"]}
{"pcdb_id": 500977, "raw": ["500977", "020042", "0", "2025/Jul/23 09:00", "Brink Climate Systems B.V.", "Brink", "Ease 200", "", "2025", "current", "", "3", "0", "2", "1", "3", "5", "1", "21.0", "0.62", "86", "2", "29.0", "0.72", "85", "3", "37.0", "0.89", "84", "4", "45.0", "1.16", "84", "5", "53.0", "1.44", "83"]}
{"pcdb_id": 500981, "raw": ["500981", "020009", "0", "2025/Aug/08 12:22", "Vortice Ltd", "Vortice", "Invisible Mini Top", "", "2020", "current", "", "3", "0", "2", "1", "3", "2", "1", "21.0", "1.14", "76", "2", "29.0", "1.48", "73"]}
{"pcdb_id": 500982, "raw": ["500982", "020287", "0", "2025/Aug/05 09:46", "Rega Ventilation", "RegaVent", "250RS", "", "2025", "current", "", "3", "0", "2", "1", "3", "5", "1", "21.0", "0.94", "87", "2", "29.0", "0.94", "86", "3", "37.0", "1.06", "84", "4", "45.0", "1.25", "83", "5", "53.0", "1.50", "81"]}
{"pcdb_id": 500983, "raw": ["500983", "020047", "0", "2025/Sep/12 11:35", "Mitsubishi Electric Europe B.V.", "Mitsubishi Electric", "VL-520CZPVU-R-E", "", "2025", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.80", "87", "2", "29.0", "0.74", "88", "3", "37.0", "0.76", "88", "4", "45.0", "0.84", "88", "5", "53.0", "0.94", "87", "6", "61.0", "1.10", "86", "7", "69.0", "1.27", "86"]}
{"pcdb_id": 500984, "raw": ["500984", "020047", "0", "2025/Sep/12 11:37", "Mitsubishi Electric Europe B.V.", "Mitsubishi Electric", "VL-520CZPVU-L-E", "", "2025", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.80", "87", "2", "29.0", "0.74", "88", "3", "37.0", "0.76", "88", "4", "45.0", "0.84", "88", "5", "53.0", "0.94", "87", "6", "61.0", "1.10", "86", "7", "69.0", "1.27", "86"]}
{"pcdb_id": 500985, "raw": ["500985", "020288", "0", "2025/Aug/04 16:16", "Airsmart", "Airsmart", "ICTUS 250 Wall", "", "2025", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.58", "93", "2", "29.0", "0.53", "93", "3", "37.0", "0.55", "93", "4", "45.0", "0.62", "92", "5", "53.0", "0.72", "91", "6", "61.0", "0.86", "91", "7", "69.0", "1.04", "90"]}
{"pcdb_id": 500986, "raw": ["500986", "020288", "0", "2025/Aug/04 16:16", "Airsmart", "Airsmart", "ICTUS 350 Wall", "", "2025", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.58", "93", "2", "29.0", "0.53", "93", "3", "37.0", "0.55", "93", "4", "45.0", "0.62", "92", "5", "53.0", "0.72", "91", "6", "61.0", "0.86", "91", "7", "69.0", "1.04", "90"]}
{"pcdb_id": 500987, "raw": ["500987", "020288", "0", "2025/Aug/04 16:17", "Airsmart", "Airsmart", "ICTUS 450 Wall", "", "2025", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.59", "93", "2", "29.0", "0.56", "94", "3", "37.0", "0.57", "93", "4", "45.0", "0.65", "93", "5", "53.0", "0.75", "92", "6", "61.0", "0.88", "92", "7", "69.0", "1.02", "91"]}
{"pcdb_id": 500988, "raw": ["500988", "020288", "0", "2025/Aug/04 16:17", "Airsmart", "Airsmart", "ICTUS 550 Wall", "", "2025", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.59", "93", "2", "29.0", "0.56", "94", "3", "37.0", "0.57", "93", "4", "45.0", "0.65", "93", "5", "53.0", "0.75", "92", "6", "61.0", "0.88", "92", "7", "69.0", "1.02", "91"]}
{"pcdb_id": 500989, "raw": ["500989", "020145", "0", "2025/Sep/23 13:43", "KERS Innovations UK Ltd", "KERS Energy Recovery", "KERS MEV 230", "", "2020", "current", "", "1", "1", "2", "1", "", "6", "1", "21.0", "0.34", "", "2", "29.0", "0.32", "", "3", "37.0", "0.33", "", "4", "45.0", "0.40", "", "5", "53.0", "0.47", "", "6", "61.0", "0.56"]}
{"pcdb_id": 500990, "raw": ["500990", "020145", "0", "2025/Sep/23 13:43", "KERS Innovations UK Ltd", "KERS Energy Recovery", "KERS MEV 160", "", "2020", "current", "", "1", "1", "2", "1", "", "6", "1", "21.0", "0.34", "", "2", "29.0", "0.32", "", "3", "37.0", "0.33", "", "4", "45.0", "0.40", "", "5", "53.0", "0.47", "", "6", "61.0", "0.56"]}
{"pcdb_id": 500991, "raw": ["500991", "020145", "0", "2025/Sep/23 13:43", "KERS Innovations UK Ltd", "KERS Energy Recovery", "KERS MEV 300", "", "2020", "current", "", "1", "1", "2", "1", "", "6", "1", "21.0", "0.34", "", "2", "29.0", "0.32", "", "3", "37.0", "0.33", "", "4", "45.0", "0.40", "", "5", "53.0", "0.47", "", "6", "61.0", "0.56"]}
{"pcdb_id": 500993, "raw": ["500993", "020226", "0", "2025/Oct/31 09:18", "Airfi", "Airfi", "Model 60", "", "2019", "current", "", "3", "0", "2", "1", "3", "5", "1", "21.0", "0.96", "78", "2", "29.0", "0.95", "78", "3", "37.0", "1.07", "78", "4", "45.0", "1.23", "79", "5", "53.0", "1.46", "79"]}
{"pcdb_id": 500994, "raw": ["500994", "020226", "0", "2025/Oct/31 09:17", "Airfi", "Airfi", "Model 150", "", "2019", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.83", "73", "2", "29.0", "0.75", "75", "3", "37.0", "0.80", "77", "4", "45.0", "0.88", "78", "5", "53.0", "1.07", "78", "6", "61.0", "1.19", "79", "7", "69.0", "1.38", "79"]}
{"pcdb_id": 500995, "raw": ["500995", "020052", "0", "2025/Nov/03 16:40", "Brook Design Hardware Ltd", "Brookvent", "Airstream ACE 75mm Semi-Rigid", "", "2022", "current", "", "1", "0", "2", "2", "", "6", "1", "21.0", "0.20", "", "2", "29.0", "0.21", "", "3", "37.0", "0.25", "", "4", "45.0", "0.29", "", "5", "53.0", "0.34", "", "6", "61.0", "0.42"]}
{"pcdb_id": 500996, "raw": ["500996", "020240", "0", "2025/Nov/03 16:33", "Systemair Ltd", "Systemair", "SAVE VTR 350/B L", "", "2025", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.88", "73", "2", "29.0", "0.82", "76", "3", "37.0", "0.83", "78", "4", "45.0", "0.93", "79", "5", "53.0", "1.03", "79", "6", "61.0", "1.19", "80", "7", "69.0", "1.36", "80"]}
{"pcdb_id": 501001, "raw": ["501001", "020287", "0", "2025/Nov/28 09:24", "Rega Ventilation", "RegaVent", "600RS", "", "2025", "current", "", "3", "0", "2", "1", "3", "6", "2", "29.0", "0.82", "87", "3", "37.0", "0.80", "87", "4", "45.0", "0.87", "86", "5", "53.0", "1.00", "85", "6", "61.0", "1.19", "84", "7", "69.0", "1.33", "83"]}
{"pcdb_id": 501003, "raw": ["501003", "020003", "0", "2026/Jan/19 11:41", "The Nuaire Group", "Nuaire", "MRXBOXAB-ECO-VM1", "", "2025", "current", "", "3", "0", "2", "1", "3", "2", "1", "21.0", "0.75", "83", "2", "29.0", "0.95", "81"]}
{"pcdb_id": 501004, "raw": ["501004", "020204", "0", "2026/Jan/21 11:01", "Airbot Technologies AS", "AIROBOT", "V6-HRV", "", "2025", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.91", "95", "2", "29.0", "0.86", "94", "3", "37.0", "0.88", "94", "4", "45.0", "0.99", "93", "5", "53.0", "1.10", "92", "6", "61.0", "1.26", "92", "7", "69.0", "1.49", "91"]}
{"pcdb_id": 501005, "raw": ["501005", "020090", "0", "2026/Jan/19 15:26", "Aerauliqa SRL", "Elta", "HAVA 120HV", "", "2025", "current", "", "3", "0", "2", "2", "1", "1", "1", "21.0", "1.16", "82"]}
{"pcdb_id": 501006, "raw": ["501006", "020090", "0", "2026/Jan/19 15:29", "Aerauliqa SRL", "Elta", "HAVA 180H", "", "2025", "current", "", "3", "0", "2", "1", "4", "3", "1", "21.0", "0.78", "86", "2", "29.0", "0.83", "84", "3", "37.0", "0.96", "82"]}
{"pcdb_id": 501007, "raw": ["501007", "020090", "0", "2026/Jan/19 15:32", "Aerauliqa SRL", "Elta", "HAVA 280V", "", "2025", "current", "", "3", "0", "2", "1", "4", "4", "1", "21.0", "0.76", "91", "2", "29.0", "0.89", "90", "3", "37.0", "1.09", "88", "4", "45.0", "1.39", "87"]}
{"pcdb_id": 501008, "raw": ["501008", "020090", "0", "2026/Jan/19 15:34", "Aerauliqa SRL", "Elta", "HAVA 340H", "", "2025", "current", "", "3", "0", "2", "1", "4", "5", "1", "21.0", "0.78", "90", "2", "29.0", "0.83", "88", "3", "37.0", "0.96", "86", "4", "45.0", "1.18", "84", "5", "53.0", "1.42", "83"]}
{"pcdb_id": 501009, "raw": ["501009", "020090", "0", "2026/Jan/19 15:39", "Aerauliqa SRL", "Elta", "HAVA 400V", "", "2025", "current", "", "3", "0", "2", "1", "4", "7", "1", "21.0", "0.64", "84", "2", "29.0", "0.60", "84", "3", "37.0", "0.63", "84", "4", "45.0", "0.72", "83", "5", "53.0", "0.85", "82", "6", "61.0", "1.03", "82", "7", "69.0", "1.24", "81"]}
{"pcdb_id": 501010, "raw": ["501010", "020090", "0", "2026/Jan/19 15:42", "Aerauliqa SRL", "Elta", "HAVA 550V", "", "2025", "current", "", "3", "0", "2", "1", "4", "7", "1", "21.0", "0.62", "90", "2", "29.0", "0.61", "89", "3", "37.0", "0.64", "89", "4", "45.0", "0.78", "88", "5", "53.0", "0.92", "88", "6", "61.0", "1.08", "87", "7", "69.0", "1.28", "87"]}
{"pcdb_id": 501011, "raw": ["501011", "020139", "0", "2026/Jan/26 13:38", "Brink Climate Systems B.V.", "Ubbink", "Ubiflux Compact W200", "", "2024", "current", "", "3", "0", "2", "1", "3", "5", "1", "21.0", "0.62", "86", "2", "29.0", "0.72", "85", "3", "37.0", "0.89", "84", "4", "45.0", "1.16", "84", "5", "53.0", "1.44", "83"]}
{"pcdb_id": 501012, "raw": ["501012", "020050", "0", "2026/Feb/25 08:59", "Aereco Ltd", "Aereco", "C4A", "C4A 75mm Semi-Rigid", "2025", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.24", "", "2", "29.0", "0.22", "", "3", "37.0", "0.22", "", "4", "45.0", "0.26", "", "5", "53.0", "0.30", "", "6", "61.0", "0.34"]}
{"pcdb_id": 501013, "raw": ["501013", "020050", "0", "2026/Feb/25 09:00", "Aereco Ltd", "Aereco", "C4A", "C4A 90mm Semi-Rigid", "2025", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.28", "", "2", "29.0", "0.25", "", "3", "37.0", "0.26", "", "4", "45.0", "0.27", "", "5", "53.0", "0.32", "", "6", "61.0", "0.37"]}
{"pcdb_id": 501014, "raw": ["501014", "020050", "0", "2026/Feb/25 09:01", "Aereco Ltd", "Aereco", "C4A", "C4A Rigid Duct", "2025", "current", "", "1", "0", "2", "1", "", "6", "1", "21.0", "0.22", "", "2", "29.0", "0.26", "", "3", "37.0", "0.24", "", "4", "45.0", "0.27", "", "5", "53.0", "0.31", "", "6", "61.0", "0.33"]}
{"pcdb_id": 501015, "raw": ["501015", "020003", "0", "2026/Feb/09 15:04", "The Nuaire Group", "Nuaire", "MRXBOX-PH350", "", "2026", "current", "", "3", "0", "2", "1", "3", "7", "1", "21.0", "0.67", "94", "2", "29.0", "0.66", "94", "3", "37.0", "0.72", "93", "4", "45.0", "0.82", "93", "5", "53.0", "0.97", "92", "6", "61.0", "1.19", "91", "7", "69.0", "1.41", "91"]}
{"pcdb_id": 501016, "raw": ["501016", "020004", "0", "2026/Mar/30 15:39", "Zehnder Group UK Ltd", "Zehnder", "EVO 2", "EVO2-HRV-Z1-RW", "2026", "current", "", "3", "0", "2", "1", "3", "5", "1", "21.0", "0.62", "89", "2", "29.0", "0.67", "86", "3", "37.0", "0.84", "85", "4", "45.0", "1.06", "83", "5", "53.0", "1.34", "83"]}
{"pcdb_id": 501017, "raw": ["501017", "020004", "0", "2026/Mar/30 15:42", "Zehnder Group UK Ltd", "Zehnder", "EVO 3", "EVO3-HRV-Z1-RW", "2026", "current", "", "3", "0", "2", "1", "3", "6", "1", "21.0", "0.50", "90", "2", "29.0", "0.54", "88", "3", "37.0", "0.65", "87", "4", "45.0", "0.80", "86", "5", "53.0", "0.97", "85", "6", "61.0", "1.25", "84"]}
{"pcdb_id": 501018, "raw": ["501018", "020004", "0", "2026/Mar/30 15:45", "Zehnder Group UK Ltd", "Zehnder", "EVO 4", "EVO4-HRV-Z1-RW", "2026", "current", "", "3", "1", "2", "1", "3", "6", "2", "29.0", "0.71", "89", "3", "37.0", "0.74", "87", "4", "45.0", "0.91", "86", "5", "53.0", "1.07", "85", "6", "61.0", "1.30", "85", "7", "69.0", "1.56", "84"]}

View file

@ -16,10 +16,12 @@ from pathlib import Path
from domain.sap10_calculator.tables.pcdb.parser import (
DecentralisedMevRecord,
GasOilBoilerRecord,
MvhrRecord,
MvInUseFactorsRecord,
RawPcdbRecord,
parse_table_105,
parse_table_322,
parse_table_323,
parse_table_329,
parse_table_raw,
)
@ -27,6 +29,7 @@ from domain.sap10_calculator.tables.pcdb.parser import (
_TABLE_105_OUTPUT_FILENAME: str = "pcdb_table_105_gas_oil_boilers.jsonl"
_TABLE_322_OUTPUT_FILENAME: str = "pcdb_table_322_decentralised_mev.jsonl"
_TABLE_323_OUTPUT_FILENAME: str = "pcdb_table_323_centralised_mev_mvhr.jsonl"
_TABLE_329_OUTPUT_FILENAME: str = "pcdb_table_329_mv_in_use_factors.jsonl"
# Tables ingested as `RawPcdbRecord` (pcdb_id + raw) — per-field typing is
# deferred to follow-up slices when the cert-side wiring for each table
@ -84,6 +87,14 @@ def run_etl(*, source: Path, output_dir: Path) -> None:
for r in parse_table_322(dat_text)
],
)
# Table 323 (Centralised MEV and MVHR) — typed via `parse_table_323`,
# exposing the per-wet-room SFP + heat-recovery-efficiency test points
# for the SAP 10.2 §2.6.4/§2.6.6 MVHR cascade. Stored as raw row +
# typed-on-load (consistent with Table 322).
_write_ndjson(
output_path=output_dir / _TABLE_323_OUTPUT_FILENAME,
records=[_mvhr_record_to_jsonable(r) for r in parse_table_323(dat_text)],
)
# Table 329 (MV In-Use Factors) — typed via `parse_table_329`,
# exposing the per-ducting-type SFP IUF multipliers for "no
# approved scheme" installations (the only variant our cohort
@ -112,6 +123,13 @@ def _decentralised_mev_record_to_jsonable(
return {"pcdb_id": record.pcdb_id, "raw": list(record.raw)}
def _mvhr_record_to_jsonable(record: MvhrRecord) -> dict[str, object]:
"""Serialise a typed Table 323 record as `{pcdb_id, raw}` — same
shape as the other typed tables; the lookup re-decodes via
`parse_centralised_mv_row` at import time."""
return {"pcdb_id": record.pcdb_id, "raw": list(record.raw)}
def _mv_in_use_factors_record_to_jsonable(
record: MvInUseFactorsRecord,
) -> dict[str, object]:

View file

@ -523,10 +523,18 @@ def parse_table_322(dat_text: str) -> list[DecentralisedMevRecord]:
# pcdb10.dat carries Format 432 (header `$329,432,4,2021,11,25,2`), an
# extended-field version of spec Format 430. The spec's first 4 fields
# (system_type + 3 SFP factors for "no approved scheme") align with the
# Format 432 layout positions 0-3 — the only positions this slice
# decodes. Trailing fields (MVHR adjustments + "with-scheme" variants +
# additional Format 432 columns) are preserved verbatim in `raw` for
# follow-up slices.
# Format 432 layout positions 0-3. Format 432 expands each "adjustment"
# block to 7 columns (3 SFP + 4 MVHR-efficiency) and carries THREE
# blocks (positions 1-7 "no scheme", 8-14 "with scheme", 15-21 a third
# variant), then the timestamp. The MVHR efficiency-IUF columns within a
# block are 4 (vs Format 430's documented 2: uninsulated/insulated); the
# 3rd (index +6 within the block) is the "ducts inside the heated
# envelope" factor — worksheet-proven against simulated case 49 (Vent
# Axia 500140, system_type 3 → 0.90) and cross-checked against the
# default-data row (system_type 10 → 0.70, = SAP 10.2 Table 4g default
# heat-recovery in-use factor 0.70). The outside-envelope efficiency
# columns (indices +4/+5/+7) and the with-scheme blocks are preserved
# verbatim in `raw` (no corpus/worksheet fixture exercises them yet).
#
# System types per PCDF Spec §A.20 field 1:
# 1 = centralised MEV
@ -539,6 +547,10 @@ _MV_IUF_IDX_SYSTEM_TYPE: Final[int] = 0
_MV_IUF_IDX_SFP_FLEX_NO_SCHEME: Final[int] = 1
_MV_IUF_IDX_SFP_RIGID_NO_SCHEME: Final[int] = 2
_MV_IUF_IDX_SFP_NO_DUCT_NO_SCHEME: Final[int] = 3
# MVHR heat-recovery efficiency in-use factor, "no approved scheme" block,
# ducts inside the heated envelope (Format 432 position 6 = block-1 eff
# column index +2). See the block-layout note above.
_MV_IUF_IDX_MVHR_EFF_INSIDE_NO_SCHEME: Final[int] = 6
@dataclass(frozen=True)
@ -562,6 +574,10 @@ class MvInUseFactorsRecord:
sfp_iuf_flexible_no_scheme: Optional[float]
sfp_iuf_rigid_no_scheme: Optional[float]
sfp_iuf_no_duct_no_scheme: Optional[float]
# MVHR heat-recovery efficiency in-use factor for ducts inside the
# heated envelope, "no approved scheme" block (Format 432). None for
# system types that carry no heat-recovery efficiency (1/2/5).
mvhr_efficiency_iuf_inside_no_scheme: Optional[float]
raw: tuple[str, ...]
@ -588,6 +604,11 @@ def parse_mv_in_use_factors_row(row: str) -> MvInUseFactorsRecord:
sfp_iuf_no_duct_no_scheme=_parse_optional_float(
fields[_MV_IUF_IDX_SFP_NO_DUCT_NO_SCHEME]
),
mvhr_efficiency_iuf_inside_no_scheme=(
_parse_optional_float(fields[_MV_IUF_IDX_MVHR_EFF_INSIDE_NO_SCHEME])
if len(fields) > _MV_IUF_IDX_MVHR_EFF_INSIDE_NO_SCHEME
else None
),
raw=fields,
)
@ -629,3 +650,118 @@ def parse_decentralised_mev_row(row: str) -> DecentralisedMevRecord:
fan_configs=tuple(configs),
raw=fields,
)
# Table 323 (Centralised MEV and MVHR) — PCDF Spec Rev 6b §A.18 Format 426.
# pcdb10.dat carries Format 431 (header `$323,431,...`), which extends spec
# Format 426 by (a) slotting an extra blank "replacement_id" field between
# `final_year` (idx 9) and `main_type` (idx 11, mirroring Table 322's
# layout) and (b) compressing each per-configuration test group to a
# 4-field tuple `(num_wet_rooms, applicable_flow_l_per_s, sfp, efficiency)`
# — the spec's "Fan speed setting" + duplicate flow fields are dropped.
#
# Field 11 "Main type" (PCDF §A.18): 1=centralised MEV, 3=balanced
# whole-house MV WITH heat recovery, 4=...without heat recovery,
# 5=positive input ventilation. Only type 3 with a non-blank efficiency
# is MVHR (24a); the rest are extract/PIV and carry no heat-recovery
# efficiency.
#
# Each test group's leading field is the number of wet rooms; SAP 10.2
# §2.6.4 ("MVHR ... SFP is a single value depending on the number of wet
# rooms") selects the group whose wet-room count matches the dwelling
# lodgement. Worksheet-proven on simulated case 49 (000565, 2 wet rooms,
# Vent Axia Sentinel Kinetic B 500140 → group 2 = flow 21.0, SFP 0.88,
# efficiency 91%).
_CMV_IDX_BRAND_NAME: Final[int] = 5
_CMV_IDX_MODEL_NAME: Final[int] = 6
_CMV_IDX_MODEL_QUALIFIER: Final[int] = 7
_CMV_IDX_MAIN_TYPE: Final[int] = 11
_CMV_IDX_DUCT_TESTED: Final[int] = 13 # 1=flexible, 2=rigid (PCDF §A.18 f.13)
_CMV_IDX_NUM_CONFIGS: Final[int] = 16
_CMV_GROUP_START: Final[int] = 17
_CMV_GROUP_STRIDE: Final[int] = 4 # (wet_rooms, flow, sfp, efficiency)
_CMV_MAIN_TYPE_MVHR: Final[int] = 3
@dataclass(frozen=True)
class MvhrDataPoint:
"""One per-configuration test result from a Table 323 PCDB record.
`num_wet_rooms` is the configuration's wet-room count (the SAP 10.2
§2.6.4 selector); `flow_rate_l_per_s` is the applicable test flow
rate; `sfp_w_per_l_per_s` is the raw Specific Fan Power; `efficiency_pct`
is the raw MVHR heat-exchanger efficiency in % (None for MEV/PIV
records that carry no heat recovery). All are pre-in-use-factor.
"""
num_wet_rooms: int
flow_rate_l_per_s: Optional[float]
sfp_w_per_l_per_s: Optional[float]
efficiency_pct: Optional[float]
@dataclass(frozen=True)
class MvhrRecord:
"""PCDB Table 323 (Centralised MEV and MVHR) typed record.
SAP 10.2 §2.6.4/§2.6.6 a balanced whole-house MVHR system lodges a
single SFP + heat-exchanger efficiency per wet-room configuration in
the PCDB. SAP selects the data point matching the dwelling's wet-room
count; the raw values are multiplied by the PCDB Table 329 in-use
factors before use (SFP fan electricity (230a); efficiency the
(23c) effective-air-change credit in equation (2)).
Reference: PCDF Spec Rev 6b §A.18 (Format 426 in spec, Format 431 in
pcdb10.dat).
"""
pcdb_id: int
brand_name: str
model_name: str
model_qualifier: str
main_type: Optional[int] # =3 for balanced whole-house MV (with/without HR)
duct_type_tested: Optional[int] # 1=flexible, 2=rigid
data_points: tuple[MvhrDataPoint, ...]
raw: tuple[str, ...]
def parse_centralised_mv_row(row: str) -> MvhrRecord:
"""Decode one Table 323 (Centralised MEV / MVHR) Format-431 row into a
typed `MvhrRecord`. The header block holds the pcdb_id + manufacturer
identifiers + main type + tested duct type; the variable-length test
block carries one 4-field group per wet-room configuration."""
fields = tuple(row.rstrip("\r\n").split(","))
num_configs = _parse_optional_int(fields[_CMV_IDX_NUM_CONFIGS]) or 0
points: list[MvhrDataPoint] = []
for j in range(num_configs):
start = _CMV_GROUP_START + j * _CMV_GROUP_STRIDE
if start + _CMV_GROUP_STRIDE > len(fields):
break
wet_rooms_str = fields[start].strip()
if not wet_rooms_str:
continue
points.append(
MvhrDataPoint(
num_wet_rooms=int(wet_rooms_str),
flow_rate_l_per_s=_parse_optional_float(fields[start + 1]),
sfp_w_per_l_per_s=_parse_optional_float(fields[start + 2]),
efficiency_pct=_parse_optional_float(fields[start + 3]),
)
)
return MvhrRecord(
pcdb_id=int(fields[0]),
brand_name=fields[_CMV_IDX_BRAND_NAME],
model_name=fields[_CMV_IDX_MODEL_NAME],
model_qualifier=fields[_CMV_IDX_MODEL_QUALIFIER],
main_type=_parse_optional_int(fields[_CMV_IDX_MAIN_TYPE]),
duct_type_tested=_parse_optional_int(fields[_CMV_IDX_DUCT_TESTED]),
data_points=tuple(points),
raw=fields,
)
def parse_table_323(dat_text: str) -> list[MvhrRecord]:
"""Walk a PCDB dat string, yielding parsed Table 323 (Centralised MEV
and MVHR) records via `parse_centralised_mv_row`. Mirror of
`parse_table_322` for the decentralised-MEV table."""
return [parse_centralised_mv_row(row) for row in _walk_table_records(dat_text, "323")]

View file

@ -262,6 +262,19 @@ _RULE_3_TEN_HOUR_CODES: Final[frozenset[int]] = frozenset(
+ [691, 692, 693, 694, 699] # electric room heaters (Table 4a)
)
# §12 Unknown-meter exception: "main heating is ground source or water source
# heat pump" makes the dwelling dual even though the same heat pump on a Single
# meter stays standard. This is the GROUND/WATER-source subset of Table 4a
# (SAP 10.2 PDF p.176-177): ground 211/215/221/225 + warm-air 521/525, water
# 213/216/223/226 + warm-air 523/526. AIR-source (214/217/224/227, 524/527) is
# DELIBERATELY EXCLUDED — the spec names only ground/water source. A heat pump
# lodged via a PCDB database index without one of these SAP codes can't have
# its source type read from the code alone (coverage gap: rare, 0 corpus certs).
_GROUND_OR_WATER_SOURCE_HEAT_PUMP_CODES: Final[frozenset[int]] = frozenset(
{211, 215, 221, 225, 521, 525} # ground source (radiator + warm-air)
| {213, 216, 223, 226, 523, 526} # water source (radiator + warm-air)
)
def _meter_is_unknown(meter_type: object) -> bool:
"""True when the meter is the RdSAP "Unknown" sentinel (code 3 / the
@ -285,6 +298,7 @@ def rdsap_tariff_for_cert(
main_2_sap_code: Optional[int] = None,
main_1_is_heat_pump_database: bool = False,
main_2_is_heat_pump_database: bool = False,
water_is_off_peak_dual_immersion: bool = False,
) -> Tariff:
"""RdSAP 10 §12 page 62 — full meter+heating tariff dispatch.
@ -308,6 +322,12 @@ def rdsap_tariff_for_cert(
Table 362 heat-pump record. Callers compute this via
`heat_pump_record(main_heating_index_number) is not None`.
`water_is_off_peak_dual_immersion` signals the §12 Unknown-meter
exception "water heating ... intended to run off an off-peak tariff"
via the text-box "dual electric immersion" system (whc 903 + dual
immersion). On an Unknown meter this is enough to make the dwelling
"dual"; the 7-/10-hour choice then follows Rules 1-4 on the main.
Cert 000565 (Main 1 SAP code 224 ASHP + Dual meter) Rule 3
TEN_HOUR, matching the worksheet's "10 Hour Off Peak" lodging.
"""
@ -337,21 +357,45 @@ def rdsap_tariff_for_cert(
# Dual meter — §12 Rules 1-4, where Rule 4 is the 7-hour default.
if base is Tariff.SEVEN_HOUR:
return _rules_1_to_3() or Tariff.SEVEN_HOUR
# "Unknown" meter (code 3): the assessor didn't record the tariff, but
# an electric CPSU (Rule 1) or STORAGE (Rule 2) main is physical
# evidence the dwelling is on an off-peak tariff — these charge
# overnight at the low rate and cannot run economically on a single
# rate, so the tariff is implied. Direct-acting electric / room heaters
# / heat pumps (Rule 3) are NOT off-peak evidence (they run on demand
# and exist on single-rate meters too), so they keep STANDARD here
# rather than being mis-billed 100% at the off-peak low rate. A
# non-electric main also keeps STANDARD (no Rule 4 default — Unknown
# must not force off-peak on a gas dwelling).
# "Unknown" meter (code 3, inaccessible): §12 (PDF p.62) — "treat as
# single meter EXCEPT where: main heating OR WATER HEATING are intended to
# run off an off-peak tariff (per systems listed in the text box above) or
# main heating is ground source or water source heat pump. If that results
# in a dual meter, assign tariff per rules 1 to 4." The text-box off-peak
# systems are electric storage heaters (401-409), underfloor (421/422),
# dry-core/water-storage boiler (193/195), CPSU (192), and DUAL ELECTRIC
# IMMERSION. So the off-peak trigger is NOT "any electric main" — a
# direct-acting / room-heater main on its own keeps the dwelling on a
# single meter (STANDARD); it only goes off-peak when one of the text-box
# systems is present. Once triggered, the meter becomes "dual" and the
# 7-hour/10-hour choice is made by the SAME Rules 1-4 on the main heating
# (so e.g. room heaters + dual immersion → Rule 3 → 10-hour).
#
# Worksheet-validated (2026-06-23, Khalim's "simulated case 48": main 691
# room heaters + Unknown meter + 903 DUAL electric immersion): Elmhurst
# SAP 57; ours 45 when this stayed STANDARD, 55 once the dual-immersion
# trigger routes it through Rule 3 → 10-hour (7-hour gives 45 — confirms
# 10-hour). The dual-immersion trigger flips exactly ONE corpus cert
# (Apartment 241, the genuine -5.38 under-rater, main 691 + 903 dual
# immersion); every other Unknown+dual-immersion cert already has a
# storage main (Rule 2). Single-immersion 691 certs (Flat 7, Flat 2) and
# whc-909 instantaneous certs correctly STAY standard — they carry no
# text-box off-peak system. The §12 third exception bullet ("main heating
# is ground source or water source heat pump") is the
# `_GROUND_OR_WATER_SOURCE_HEAT_PUMP_CODES` check — AIR-source heat pumps
# (214/224 etc.) are NOT a trigger and stay standard (e.g. corpus certs
# "3/10 Bedford House", main 214 ASHP on Unknown meters — verified 2026-06-
# 23 they keep STANDARD). No corpus cert carries a GSHP/WSHP on an Unknown
# meter, so this trigger is a spec-completeness forward guard (0 impact).
if _meter_is_unknown(meter_type):
if main_codes & _RULE_1_CPSU_CODES:
return Tariff.TEN_HOUR
if main_codes & _RULE_2_STORAGE_CODES:
return Tariff.SEVEN_HOUR
off_peak_evidence = (
bool(main_codes & _RULE_1_CPSU_CODES)
or bool(main_codes & _RULE_2_STORAGE_CODES)
or bool(main_codes & _GROUND_OR_WATER_SOURCE_HEAT_PUMP_CODES)
or water_is_off_peak_dual_immersion
)
if off_peak_evidence:
return _rules_1_to_3() or Tariff.SEVEN_HOUR
return Tariff.STANDARD
# Single (code 2) or any other explicit non-off-peak meter.
return base

View file

@ -17,6 +17,7 @@ from __future__ import annotations
from typing import Final, Optional
from domain.sap10_calculator.exceptions import UnpricedFuelCode
from domain.sap10_calculator.tables.table_12a import Tariff
@ -184,8 +185,16 @@ STANDING_CHARGE_GBP_PER_YR: Final[dict[int, float]] = {
def unit_price_p_per_kwh(fuel_code: Optional[int]) -> float:
"""Unit price (p/kWh) for the given fuel code. Accepts either a
Table 32 code or a gov API `main_fuel_type` / `water_heating_fuel`
enum; translates the latter via `API_FUEL_TO_TABLE_32`. Unknown
mains gas (3.48 p/kWh)."""
enum; translates the latter via `API_FUEL_TO_TABLE_32`.
`None` (no fuel lodged) mains-gas default; callers resolve a
"no system" before pricing. A concrete but UNRECOGNISED code raises
`UnpricedFuelCode` rather than silently defaulting to the gas price
an unhandled fuel billed at 3.48 p/kWh mis-costs the dwelling (the
same failure mode as the dual-main wood-vs-electric over-cost). The
strict-raise surfaces the gap at the price boundary; 0 corpus certs
hit it today (every lodged fuel resolves), so the raise is a guard
against future / unmapped fuels, mirroring `MissingMainFuelType`."""
if fuel_code is None:
return _DEFAULT_P_PER_KWH
if fuel_code in UNIT_PRICE_P_PER_KWH:
@ -193,7 +202,7 @@ def unit_price_p_per_kwh(fuel_code: Optional[int]) -> float:
translated = API_FUEL_TO_TABLE_32.get(fuel_code)
if translated is not None and translated in UNIT_PRICE_P_PER_KWH:
return UNIT_PRICE_P_PER_KWH[translated]
return _DEFAULT_P_PER_KWH
raise UnpricedFuelCode(fuel_code)
def standing_charge_gbp(fuel_code: Optional[int]) -> float:

View file

@ -129,6 +129,25 @@ _DEFAULT_STOREY_HEIGHT_M: Final[float] = 2.5
_CONSERVATORY_WALL_THICKNESS_MM: Final[int] = 300
# SAP10.2 §3.2 curtain/blind thermal resistance applied to windows (and
# roof windows) — turns raw window U into the worksheet's (27) effective U.
#
# PERMANENT SHUTTERS ARE DELIBERATELY NOT APPLIED. RdSAP 10 Table 24 note
# (PDF p.51) genuinely specifies a larger R in formula (2) for permanent
# shutters (0.13 uninsulated / 0.16 insulated) instead of this 0.04 curtain
# allowance — but the accredited Elmhurst engine ("SAP 10 WORKSHEET ...
# Version 10.2, February 2022") does NOT implement it, and the lodged
# register we target was produced by that engine. Proven on Khalim's
# "simulated case 46" worksheet: its INSULATED-shutter window (Metal,
# U_raw 1.74) bills on (27) at U_eff 1.6268 = 1/(1/1.74 + 0.04), NOT the
# R=0.16 value 1.3611; its UNINSULATED-shutter window (Wood, U_raw 1.69)
# bills at 1.5830 = 1/(1/1.69 + 0.04), not the R=0.13 value 1.3856 — i.e.
# R=0.04 on every window regardless of the lodged shutter type. A reverted
# trial (`_window_added_resistance_m2k_per_w`, in git history) re-broke the
# Elmhurst-pinned 000565 e2e fixture. The gov-API path was separately tested
# (2026-06-21): 13 corpus certs lodge shuttered windows; applying the spec R
# WORSENS cohort MAE 1.067 -> 1.245 (8 of 13 certs move away from lodged,
# cert 41 +2.19 -> +3.94) while only band-gaming +3 borderline under-raters
# into within-0.5 — net negative, and it would diverge from the very engine
# that produced the lodged SAPs. Re-enable only if Elmhurst ships the clause.
_WINDOW_CURTAIN_RESISTANCE_M2K_PER_W: Final[float] = 0.04
# SAP10 glazing-type code (the cascade enum used on `SapWindow.glazing_type`,

View file

@ -960,7 +960,9 @@ def water_heating_from_cert(
combi = (
combi_loss_monthly_kwh_override
if combi_loss_monthly_kwh_override is not None
else combi_loss_monthly_kwh_table_3a_keep_hot_time_clock()
else combi_loss_monthly_kwh_table_3a_row_1_no_keep_hot(
daily_hot_water_monthly_l_per_day=daily_total,
)
)
zero12 = (0.0,) * 12
solar_storage = (

View file

@ -65,8 +65,12 @@ HERE = Path(__file__).parent
SESSION_DIR = HERE / ".elmhurst-session"
CREDS_FILE = HERE / ".elmhurst-creds.json" # gitignored; {"access":..,"pwd":..}
# The single reusable campaign assessment ("Khalim-test"). Overwrite it per UPRN.
ASSESSMENT_GUID = "B44A0DB4-4C08-4241-B818-86F060172105"
# The reusable campaign assessment ("Khalim-test"), overwritten per UPRN. Can be
# overridden per run via the `ELM_GUID` env var (e.g. a per-UPRN assessment under
# a different account) — see Limitations "parameterize the GUID".
ASSESSMENT_GUID = os.environ.get(
"ELM_GUID", "B44A0DB4-4C08-4241-B818-86F060172105"
)
ENTRY_URL = (
"https://rdsap10online.elmhurstenergy.co.uk/Processing/WebFormAddress.aspx"
f"?Guid={ASSESSMENT_GUID}"
@ -99,17 +103,31 @@ def session() -> Generator[tuple[BrowserContext, Page], None, None]:
headless=False,
accept_downloads=True,
viewport={"width": 1400, "height": 1000},
# Container /dev/shm is tiny (64M) → chromium renderer "Target
# crashed" mid-build without this. --no-sandbox for rootless Xvfb.
args=["--disable-dev-shm-usage", "--no-sandbox"],
)
page = ctx.pages[0] if ctx.pages else ctx.new_page()
page.on("dialog", lambda d: d.accept())
page.goto(ENTRY_URL, wait_until="networkidle", timeout=60_000)
if "WebFormLogin" in page.url:
access, pwd = _creds()
page.fill("#ctl00_ctl00_ContentBody_ContentBody_TextBoxAccessCode", access)
page.fill("#ctl00_ctl00_ContentBody_ContentBody_TextBoxPassword", pwd)
with page.expect_navigation(wait_until="networkidle", timeout=60_000):
page.click("#ctl00_ctl00_ContentBody_ContentBody_ImageButtonEnter")
page.wait_for_timeout(1000)
# Login can be slow/flaky; retry the whole goto+fill a few times.
for attempt in range(4):
try:
page.goto(ENTRY_URL, wait_until="domcontentloaded", timeout=60_000)
if "WebFormLogin" not in page.url:
break # already authed (server session still valid)
access, pwd = _creds()
ac = "#ctl00_ctl00_ContentBody_ContentBody_TextBoxAccessCode"
page.wait_for_selector(ac, state="visible", timeout=30_000)
page.fill(ac, access)
page.fill("#ctl00_ctl00_ContentBody_ContentBody_TextBoxPassword", pwd)
with page.expect_navigation(wait_until="networkidle", timeout=60_000):
page.click("#ctl00_ctl00_ContentBody_ContentBody_ImageButtonEnter")
page.wait_for_timeout(1000)
if "WebFormLogin" not in page.url:
break
except PlaywrightTimeoutError:
print(f" login attempt {attempt+1} timed out, retrying...", flush=True)
page.wait_for_timeout(2000)
try:
yield ctx, page
finally:

View file

@ -182,11 +182,17 @@ def main() -> None:
w05 = sum(1 for e in es if abs(e) < 0.5)
mabs = stats.mean(abs(e) for e in es)
waste = (cnt - w05) * mabs
# MEDIAN signed error is the outlier-RESISTANT bias lens. The
# `signed` mean is dragged by the fat-tail register anomalies, so a
# cohort can show a large mean bias while being symmetric noise
# (e.g. electric room heaters: mean -1.09 but median -0.01). Hunt
# slices by |median|, not |signed| — only |median| flags a TRUE
# one-directional systematic shift worth fixing.
bucket_lines.append((waste, (
f" {fn:22s}={val:<20.20s} n={cnt:4d} "
f"within0.5={w05 / cnt * 100:4.0f}% "
f"signed={stats.mean(es):+6.2f} mean|err|={mabs:5.2f} "
f"[waste={waste:6.0f}]"
f"signed={stats.mean(es):+6.2f} median={stats.median(es):+6.2f} "
f"mean|err|={mabs:5.2f} [waste={waste:6.0f}]"
)))
print(f"TOP ERROR-CARRYING BUCKETS (n_out x mean|err|; min-n={min_n}):")
for _, line in sorted(bucket_lines, key=lambda x: -x[0])[:40]:

View file

@ -65,6 +65,7 @@ from domain.sap10_calculator.rdsap.cert_to_inputs import (
_TABLE_4G_DEFAULT_MEV_SFP_W_PER_L_PER_S, # pyright: ignore[reportPrivateUsage]
dimensions_from_cert,
_table_12_factor_fuel_code, # pyright: ignore[reportPrivateUsage]
_table_12a_system_for_main, # pyright: ignore[reportPrivateUsage]
_is_electric_main, # pyright: ignore[reportPrivateUsage]
_is_heat_network_electric_main, # pyright: ignore[reportPrivateUsage]
_is_electric_water, # pyright: ignore[reportPrivateUsage]
@ -85,6 +86,7 @@ from domain.sap10_calculator.rdsap.cert_to_inputs import (
_secondary_heating_fraction_for_category, # pyright: ignore[reportPrivateUsage]
_section_12_4_4_summer_immersion_applies, # pyright: ignore[reportPrivateUsage]
_separately_timed_dhw, # pyright: ignore[reportPrivateUsage]
_main_2_space_heating_fuel_cost_gbp_per_kwh, # pyright: ignore[reportPrivateUsage]
_space_heating_fuel_cost_gbp_per_kwh, # pyright: ignore[reportPrivateUsage]
_tariff_high_low_rates_p_per_kwh, # pyright: ignore[reportPrivateUsage]
_thermal_mass_parameter_kj_per_m2_k, # pyright: ignore[reportPrivateUsage]
@ -473,6 +475,158 @@ def test_heat_network_primary_loss_uses_p1_h3_all_months_per_table_3() -> None:
assert abs(sum(wh_result.primary_loss_monthly_kwh) - expected_primary_kwh) <= 1e-6
def test_dual_main_system_2_costed_at_its_own_fuel_price() -> None:
# Arrange — SAP 10.2 §10a: main heating system 2's fuel cost (worksheet
# line (213)) is billed at ITS OWN Table 32 fuel price, separately from
# main system 1's (211). A dwelling with main-1 = electric room heaters
# (SAP 691, fuel 30 standard electricity @ 13.19 p/kWh) and main-2 =
# wood-log room heaters (SAP 633, fuel 6 @ 4.23 p/kWh), 50/50 split, on a
# single-rate meter (so the §10a standard path runs). Pre-fix the main-2
# column reused main-1's electric price, charging the wood at 13.19 p/kWh
# and grossly over-costing electric+wood dwellings (cert 10032957680
# "Copse Cottage" SAP 21.75 -> 45.94 vs lodged 45).
main_1_electric = MainHeatingDetail(
has_fghrs=False,
main_fuel_type=30, # standard electricity
heat_emitter_type=0,
emitter_temperature="NA",
main_heating_control=2106,
main_heating_category=10,
sap_main_heating_code=691,
main_heating_fraction=50,
)
main_2_wood = MainHeatingDetail(
has_fghrs=False,
main_fuel_type=6, # wood logs — Table 32 = 4.23 p/kWh
heat_emitter_type=0,
emitter_temperature="NA",
main_heating_control=2106,
main_heating_category=10,
sap_main_heating_code=633,
main_heating_fraction=50,
)
epc = make_minimal_sap10_epc(
total_floor_area_m2=_TYPICAL_TFA_M2,
habitable_rooms_count=4,
country_code="ENG",
sap_building_parts=[make_building_part(construction_age_band="D")],
sap_heating=make_sap_heating(
main_heating_details=[main_1_electric, main_2_wood],
),
)
# Act
inputs = cert_to_inputs(epc)
result = Sap10Calculator().calculate(epc)
fc = inputs.fuel_cost
main_2_kwh = result.main_2_heating_fuel_kwh_per_yr
# Assert — main-2 wood billed at 4.23 p/kWh (0.0423 £/kWh), NOT main-1's
# electric 13.19 p/kWh. (213) main_2_total_cost = kWh × wood price.
assert main_2_kwh > 0.0
assert abs(fc.main_2_total_cost_gbp - main_2_kwh * 0.0423) <= 1e-6
# And explicitly NOT the electric rate (the pre-fix value).
assert abs(fc.main_2_total_cost_gbp - main_2_kwh * 0.1319) > 1.0
def test_off_peak_main_2_non_electric_priced_at_own_fuel() -> None:
# Arrange — legacy/off-peak scalar path. Main 1 = electric room heaters,
# Main 2 = WOOD logs (fuel 6, Table 32 4.23 p/kWh). On an off-peak tariff
# the second main's space-heating rate must be its OWN fuel (wood flat
# rate), not main 1's electric rate — SAP 10.2 §10a worksheet (213).
from domain.sap10_calculator.tables.table_12a import Tariff
main_1_electric = MainHeatingDetail(
has_fghrs=False, main_fuel_type=30, heat_emitter_type=0,
emitter_temperature="NA", main_heating_control=2106,
main_heating_category=10, sap_main_heating_code=691,
main_heating_fraction=50,
)
main_2_wood = MainHeatingDetail(
has_fghrs=False, main_fuel_type=6, heat_emitter_type=0,
emitter_temperature="NA", main_heating_control=2106,
main_heating_category=10, sap_main_heating_code=633,
main_heating_fraction=50,
)
epc = make_minimal_sap10_epc(
sap_building_parts=[make_building_part(construction_age_band="D")],
sap_heating=make_sap_heating(
main_heating_details=[main_1_electric, main_2_wood],
),
)
# Act
rate = _main_2_space_heating_fuel_cost_gbp_per_kwh(
epc, Tariff.SEVEN_HOUR, SAP_10_2_SPEC_PRICES
)
# Assert — wood flat rate 4.23 p/kWh, not the off-peak electric rate.
assert abs(rate - 0.0423) <= 1e-9
def test_off_peak_main_2_electric_keeps_main_1_scalar() -> None:
# Arrange — both mains electric on an off-peak tariff. The electric
# second-main off-peak Table 12a split is the deferred §10a slice, so the
# helper keeps main 1's space-heating scalar (no per-system split here) to
# avoid regressing the off-peak electric cohort.
from domain.sap10_calculator.tables.table_12a import Tariff
main_1 = MainHeatingDetail(
has_fghrs=False, main_fuel_type=29, heat_emitter_type=0,
emitter_temperature="NA", main_heating_control=2106,
main_heating_category=10, sap_main_heating_code=691,
main_heating_fraction=50,
)
main_2 = MainHeatingDetail(
has_fghrs=False, main_fuel_type=29, heat_emitter_type=0,
emitter_temperature="NA", main_heating_control=2106,
main_heating_category=10, sap_main_heating_code=691,
main_heating_fraction=50,
)
epc = make_minimal_sap10_epc(
sap_building_parts=[make_building_part(construction_age_band="D")],
sap_heating=make_sap_heating(main_heating_details=[main_1, main_2]),
)
# Act — main 2's rate equals main 1's space-heating scalar.
main_2_rate = _main_2_space_heating_fuel_cost_gbp_per_kwh(
epc, Tariff.SEVEN_HOUR, SAP_10_2_SPEC_PRICES
)
main_1_rate = _space_heating_fuel_cost_gbp_per_kwh(
main_1, Tariff.SEVEN_HOUR, SAP_10_2_SPEC_PRICES
)
# Assert
assert abs(main_2_rate - main_1_rate) <= 1e-9
def test_elmhurst_main_2_solid_sap_code_derives_house_coal_not_main_1_fuel() -> None:
# Arrange — Elmhurst §14.1 Main Heating2 lodges SAP code 633 (solid-fuel
# room heater) with NO "Fuel Type" cell, on a dwelling whose Main 1 is
# electric. The second main must derive its fuel from the SAP code's
# Table 4a category (solid → house coal 11, per the documented modal sub-
# fuel convention), NOT inherit Main 1's electric fuel — otherwise the
# solid second main is billed at the electric rate (simulated case 47
# dual-main over-cost: SAP 37.81 -> 55.09).
from datatypes.epc.surveys.elmhurst_site_notes import MainHeating2
from datatypes.epc.domain.mapper import ( # pyright: ignore[reportPrivateUsage]
_map_elmhurst_main_heating_2,
)
mh2 = MainHeating2(
fuel_type="", # §14.1 omits the Fuel Type cell
percentage_of_heat=50,
main_heating_sap_code=633, # solid-fuel room heater
)
# Act — Main 1 resolved to electricity (fallback_fuel_type=30).
detail = _map_elmhurst_main_heating_2(mh2, fallback_fuel_type=30)
# Assert — house coal (11), not the inherited electric 30.
assert detail is not None
assert detail.main_fuel_type == 11
def test_cylinder_thermostat_assumed_present_per_sap_9_4_9() -> None:
# Arrange — SAP 10.2 §9.4.9 (PDF p.32): "A cylinder thermostat should be
# assumed to be present when the domestic hot water is obtained from a
@ -807,6 +961,49 @@ def test_no_system_electric_heaters_assumed_code_699_bills_direct_acting_split()
assert abs(inputs.space_heating_fuel_cost_gbp_per_kwh - 0.1109) <= 1e-9
def test_electric_boilers_191_195_map_to_distinct_table_12a_grid1_rows() -> None:
# Arrange — SAP 10.2 Table 4a electric boilers (PDF p.170) do NOT share
# one Table 12a Grid 1 row (PDF p.191). Read exactly: code 191
# "Direct-acting electric boiler (a)" → 7-hour 0.90 / 10-hour 0.50 (its
# OWN row, NOT the 1.00/0.50 "Other direct-acting electric heating"
# room-heater row); code 195 "Electric water storage boiler" → the
# "Electric dry core or water storage boiler" row → 7-hour 0.00 (charged
# wholly off-peak = 100% low rate, identical to the None fallback). This
# pins the spec-correct 0.00 so 195 can't be mis-"fixed" up to a wrong
# direct-acting fraction.
from domain.sap10_calculator.tables.table_12a import (
Table12aSystem,
Tariff,
space_heating_high_rate_fraction,
)
def _electric_boiler_main(code: int) -> MainHeatingDetail:
return MainHeatingDetail(
has_fghrs=False,
main_fuel_type=29, # electricity
heat_emitter_type=0,
emitter_temperature=1,
main_heating_control=2106,
main_heating_category=2, # boiler
sap_main_heating_code=code,
)
# Act
direct_acting = _table_12a_system_for_main(_electric_boiler_main(191))
storage = _table_12a_system_for_main(_electric_boiler_main(195))
# Assert — distinct rows with their published fractions.
assert direct_acting is Table12aSystem.DIRECT_ACTING_ELECTRIC_BOILER
assert storage is Table12aSystem.ELECTRIC_DRY_CORE_OR_WATER_STORAGE
assert (
space_heating_high_rate_fraction(direct_acting, Tariff.SEVEN_HOUR) == 0.90
)
assert (
space_heating_high_rate_fraction(direct_acting, Tariff.TEN_HOUR) == 0.50
)
assert space_heating_high_rate_fraction(storage, Tariff.SEVEN_HOUR) == 0.00
def test_heat_network_distribution_electricity_per_sap_10_2_appendix_c_3_2() -> None:
# Arrange — heat-network main (Table 4a code 301 = community heating,
# category 6). SAP 10.2 Appendix C §C3.2 (PDF p.51): distribution
@ -1658,6 +1855,56 @@ def test_ventilation_from_cert_applies_table_5_default_when_lodged_zero() -> Non
)
def test_ventilation_from_cert_dmev_takes_lodged_zero_fans_not_table_5_default() -> None:
# Arrange — on a dwelling with a whole-house mechanical EXTRACT system
# (dMEV → EXTRACT_OR_PIV_OUTSIDE) the lodged intermittent extract-fan
# count (7a) is explicit: a lodged 0 means 0 (the dMEV is the
# ventilation), NOT "unknown". The SAP 10.2 §2 Table 5 age-band default
# must NOT be substituted as it would on a NATURALLY ventilated dwelling.
# Worksheet-proven: two dMEV builds of cert 000565 — "simulated case 48"
# lodges (7a)=0 and Elmhurst's worksheet uses 0 (→ SAP 57 exact), while
# the original 000565 fixture lodges (7a)=2 and Elmhurst uses 2. The same
# Table 5 default that this age-G NATURAL case applies (1 fan above) must
# be suppressed here.
from domain.sap10_calculator.worksheet.ventilation import (
MechanicalVentilationKind,
)
age_g_part = make_building_part(
floor_dimensions=[
make_floor_dimension(total_floor_area_m2=45.0, floor=0),
make_floor_dimension(total_floor_area_m2=45.0, floor=1),
],
construction_age_band='G',
)
base = _typical_semi_detached_epc()
epc_dmev = make_minimal_sap10_epc(
total_floor_area_m2=_TYPICAL_TFA_M2,
habitable_rooms_count=4,
region_code="1",
sap_building_parts=[age_g_part],
sap_windows=base.sap_windows,
sap_heating=base.sap_heating,
sap_ventilation=SapVentilation(
extract_fans_count=0,
mechanical_ventilation_kind=(
MechanicalVentilationKind.EXTRACT_OR_PIV_OUTSIDE.name
),
),
)
# Act
v = ventilation_from_cert(epc_dmev)
# Assert — 0 intermittent fans contribute 0 to (8), so openings ACH = 0
# (no Table 5 age-G default fan); the mechanical system is applied via
# the separate (23a) 0.5 system air-change rate instead.
assert abs(v.openings_ach) <= 1e-9, (
f"openings ACH {v.openings_ach:.6f} should be 0 for a dMEV cert "
f"lodging 0 fans (no Table 5 default substituted)"
)
assert v.mv_system_ach == 0.5
def test_ventilation_from_cert_uses_lodged_fans_below_age_default_not_floored() -> None:
# Arrange — RdSAP 10 §4.1 Table 5 (PDF p.28): "Number of extract fans if
# known; if unknown: [age-band default]." The default is an UNKNOWN-
@ -3619,19 +3866,195 @@ def test_api_mechanical_ventilation_maps_extract_systems_to_cascade_kind() -> No
)
# Act / Assert — extract / positive-input-from-outside systems carry
# the (24c) kind; MV-no-HR carries (24b); natural and PIV-from-loft
# stay NATURAL; MVHR (4) is deferred (efficiency not yet plumbed) and
# stays NATURAL rather than mis-modelling as MV.
# the (24c) kind; MV-no-HR carries (24b); MVHR (4) carries (24a) (its
# heat-recovery efficiency is read from PCDB Table 323 in cert_to_
# inputs); natural and PIV-from-loft stay NATURAL.
assert _api_mechanical_ventilation_kind(0) is None # natural
assert _api_mechanical_ventilation_kind(1) == "MV" # MV, no HR
assert _api_mechanical_ventilation_kind(2) == "EXTRACT_OR_PIV_OUTSIDE" # MEV dc
assert _api_mechanical_ventilation_kind(3) == "EXTRACT_OR_PIV_OUTSIDE" # MEV c
assert _api_mechanical_ventilation_kind(4) is None # MVHR (deferred)
assert _api_mechanical_ventilation_kind(4) == "MVHR" # balanced + HR (24a)
assert _api_mechanical_ventilation_kind(5) is None # PIV from loft
assert _api_mechanical_ventilation_kind(6) == "EXTRACT_OR_PIV_OUTSIDE" # PIV outside
assert _api_mechanical_ventilation_kind(None) is None
def test_mvhr_system_values_apply_pcdb_wet_room_point_and_table_329_iufs() -> None:
# Arrange — simulated case 49 (000565 semi + MVHR + gas combi →
# Elmhurst Current SAP 72). The dwelling lodges Vent Axia Sentinel
# Kinetic B (PCDB Table 323 index 500140), 2 wet rooms, rigid ducting.
# SAP 10.2 §2.6.4 selects the 2-wet-room data point (raw SFP 0.88,
# efficiency 91%); the Table 329 system_type-3 in-use factors are SFP
# rigid 1.4 + heat-recovery-efficiency-inside-envelope 0.90.
import dataclasses
from domain.sap10_calculator.rdsap.cert_to_inputs import (
_mvhr_fan_kwh_per_yr_from_cert, # pyright: ignore[reportPrivateUsage]
_mvhr_system_values, # pyright: ignore[reportPrivateUsage]
dimensions_from_cert,
)
from tests.domain.sap10_calculator.worksheet import (
_elmhurst_worksheet_000565 as _w000565,
)
base = _w000565.build_epc()
assert base.sap_ventilation is not None
epc = dataclasses.replace(
base,
mechanical_ventilation_index_number=500140,
wet_rooms_count=2,
mechanical_vent_duct_type=2, # rigid
sap_ventilation=dataclasses.replace(
base.sap_ventilation, mechanical_ventilation_kind="MVHR"
),
)
# Act
values = _mvhr_system_values(epc)
fan_kwh = _mvhr_fan_kwh_per_yr_from_cert(epc)
# Assert — worksheet (23c) = 91 × 0.90 = 81.9%; in-use SFP = 0.88 ×
# 1.4 = 1.232 W/(l/s). The (230a) fan electricity is in-use SFP ×
# 1.22 × V; on the case-49 Summary (V = 276.7275 m³) this is exactly
# 415.9325 kWh (verified via run_elmhurst_summary). Here we pin the
# formula against this fixture's own volume (its geometry differs).
assert values is not None
assert abs(values.in_use_efficiency_pct - 81.9) <= 1e-6
assert abs(values.in_use_sfp_w_per_l_per_s - 1.232) <= 1e-9
expected_fan_kwh = 1.232 * 1.22 * dimensions_from_cert(epc).volume_m3
assert abs(fan_kwh - expected_fan_kwh) <= 1e-6
def test_mvhr_fan_electricity_bills_at_grid2_fan_fraction_on_off_peak() -> None:
# Arrange — an MVHR dwelling on an off-peak tariff. SAP 10.2 Table 12a
# Grid 2 (PDF p.191) bills "Fans for mechanical ventilation systems" at
# 0.71 (7-hour) / 0.58 (10-hour) high-rate fraction, distinct from "All
# other uses" (0.90 / 0.80) which covers circulation pumps + flue fans.
# The MVHR fan electricity (230a) was summed into the pumps/fans total
# but NOT into the cost-split mech-vent kWh, so on off-peak it billed at
# the 0.90/0.80 "all other uses" rate. Worksheet-proven on simulated
# case 50 (000565 + MVHR + dual immersion): +£5.87/yr, -0.23 SAP.
import dataclasses
from domain.sap10_calculator.rdsap.cert_to_inputs import (
_mvhr_fan_kwh_per_yr_from_cert, # pyright: ignore[reportPrivateUsage]
_tariff_high_low_rates_p_per_kwh, # pyright: ignore[reportPrivateUsage]
)
from domain.sap10_calculator.tables.table_12a import (
OtherUse,
Tariff,
other_use_high_rate_fraction,
)
from tests.domain.sap10_calculator.worksheet import (
_elmhurst_worksheet_000565 as _w000565,
)
base = _w000565.build_epc()
assert base.sap_ventilation is not None
epc = dataclasses.replace(
base,
mechanical_ventilation_index_number=500140,
wet_rooms_count=2,
mechanical_vent_duct_type=2, # rigid
sap_ventilation=dataclasses.replace(
base.sap_ventilation, mechanical_ventilation_kind="MVHR"
),
sap_energy_source=dataclasses.replace(
base.sap_energy_source, meter_type="1" # off-peak (10-hour)
),
)
# Act
inputs = cert_to_inputs(epc)
rate = inputs.pumps_fans_fuel_cost_gbp_per_kwh
# Assert — the resolved rate is the kWh-weighted blend of the MVHR fan
# portion at the FANS_FOR_MECH_VENT fraction and the remaining pumps at
# ALL_OTHER_USES. The presence of the MVHR fan in the split makes it
# strictly cheaper than billing the whole bucket at ALL_OTHER_USES.
tariff = Tariff.TEN_HOUR
high, low = _tariff_high_low_rates_p_per_kwh(tariff)
fan_frac = other_use_high_rate_fraction(OtherUse.FANS_FOR_MECH_VENT, tariff)
other_frac = other_use_high_rate_fraction(OtherUse.ALL_OTHER_USES, tariff)
fan_blend = fan_frac * high + (1.0 - fan_frac) * low
other_blend = other_frac * high + (1.0 - other_frac) * low
fan_kwh = _mvhr_fan_kwh_per_yr_from_cert(epc)
total_kwh = inputs.pumps_fans_kwh_per_yr
non_fan_kwh = total_kwh - fan_kwh
expected = (
(fan_kwh * fan_blend + non_fan_kwh * other_blend) / total_kwh / 100.0
)
assert rate is not None
assert fan_kwh > 0.0
assert abs(rate - expected) <= 1e-12
assert rate < other_blend / 100.0 # regression guard: fan portion is in the split
def test_mvhr_system_values_fall_back_to_table_4g_defaults_without_pcdb_index() -> None:
# Arrange — an MVHR cert lodged with NO PCDF index (corpus cert
# "Flat 1"). SAP 10.2 Table 4g (PDF p.176): default raw efficiency
# 66% + raw SFP 2.0, × the default-data in-use factors (Table 329
# system_type 10 — efficiency-inside 0.70, SFP 2.5).
import dataclasses
from domain.sap10_calculator.rdsap.cert_to_inputs import (
_mvhr_system_values, # pyright: ignore[reportPrivateUsage]
)
from tests.domain.sap10_calculator.worksheet import (
_elmhurst_worksheet_000565 as _w000565,
)
base = _w000565.build_epc()
assert base.sap_ventilation is not None
epc = dataclasses.replace(
base,
mechanical_ventilation_index_number=None,
sap_ventilation=dataclasses.replace(
base.sap_ventilation, mechanical_ventilation_kind="MVHR"
),
)
# Act
values = _mvhr_system_values(epc)
# Assert — efficiency 66 × 0.70 = 46.2%; SFP 2.0 × 2.5 = 5.0.
assert values is not None
assert abs(values.in_use_efficiency_pct - 46.2) <= 1e-6
assert abs(values.in_use_sfp_w_per_l_per_s - 5.0) <= 1e-9
def test_pcdb_combi_loss_keep_hot_time_clock_returns_explicit_flat_600() -> None:
# Arrange — SAP 10.2 Table 3a (PDF p.160): a PCDB combi declaring a
# keep-hot facility on a time clock (keep_hot_facility=1, keep_hot_
# timer=1) uses the flat 600 × n/365 row. The keep-hot status rides on
# the PCDB boiler record, NOT a separate cert field — a non-PCDB combi
# has no keep-hot and falls to the "without keep-hot" 600 × fu default.
# pcdb_combi_loss_override must return this row EXPLICITLY (it must not
# lean on the cascade default, which is now "without keep-hot").
# Vaillant Ecotec Pro (PCDB 10328) is the 000490 boiler.
from domain.sap10_calculator.rdsap.cert_to_inputs import pcdb_combi_loss_override
from domain.sap10_calculator.tables.pcdb import gas_oil_boiler_record
from domain.sap10_calculator.worksheet.water_heating import (
combi_loss_monthly_kwh_table_3a_keep_hot_time_clock,
)
record = gas_oil_boiler_record(10328)
assert record is not None
assert record.keep_hot_facility == 1
assert record.keep_hot_timer == 1
monthly = (200.0,) * 12 # energy content / daily HW unused for this row
# Act
override = pcdb_combi_loss_override(
record,
energy_content_monthly_kwh=monthly,
daily_hot_water_monthly_l_per_day=monthly,
)
# Assert — explicit flat keep-hot row, not None.
assert override == combi_loss_monthly_kwh_table_3a_keep_hot_time_clock()
def test_api_mechanical_ventilation_unmapped_code_raises() -> None:
# Arrange — an out-of-range `mechanical_ventilation` integer is a
# spec-coverage gap: raise rather than silently default to NATURAL
@ -4978,6 +5401,58 @@ def test_electric_water_heating_factors_use_annual_table_12_on_dual_rate_tariff(
)
def test_whc903_immersion_hw_co2_pe_factors_split_high_low_on_off_peak() -> None:
# Arrange — the flat-annual S0380.163 rule (preceding test) was validated
# only on HW-from-main "low-rate cost" certs (100% low, no high-rate
# split). For whc-903 ELECTRIC IMMERSION the Elmhurst worksheet bills HW
# CO2/PE as TWO lines — "Water heating - high rate cost" at the Table
# 12d/12e high-rate electricity factor + "low rate cost" at the low-rate
# factor — weighted by the SAME Table 13 fraction the COST path applies
# (simulated case 50: CO2 high 0.1475 + low 0.1238; PE high 1.5514 + low
# 1.4429; frac 0.1009). Our cascade previously applied the flat annual
# 0.136 / 1.501 to dual-rate immersion HW too — a spec gap, not a genuine
# Elmhurst divergence (case 50 worksheet proves the split). The split
# makes both factors fall BELOW the flat annual (the low-rate factor
# dominates at ~0.90 weight). Reconciled exactly by the case-50 e2e pin.
storage_main = MainHeatingDetail(
has_fghrs=False,
main_fuel_type=30,
heat_emitter_type="",
emitter_temperature="",
main_heating_control=2401,
sap_main_heating_code=402, # storage heater → off-peak
central_heating_pump_age_str="Unknown",
)
epc = make_minimal_sap10_epc(
total_floor_area_m2=_TYPICAL_TFA_M2,
habitable_rooms_count=4,
country_code="ENG",
has_hot_water_cylinder=True,
sap_building_parts=[make_building_part(construction_age_band="D")],
sap_heating=make_sap_heating(
water_heating_code=903, # electric immersion
water_heating_fuel=29,
cylinder_size=5,
immersion_heating_type=1, # dual immersion
main_heating_details=[storage_main],
),
)
# Unknown meter + dual electric immersion → 7-hour off-peak (§12 trigger).
epc.sap_energy_source.meter_type = "Unknown"
# Act
inputs = cert_to_inputs(epc)
co2 = inputs.hot_water_co2_factor_kg_per_kwh
pe = inputs.hot_water_primary_factor
# Assert — the Table 13 split is applied, so both factors are a genuine
# high/low blend strictly BELOW the flat-annual S0380.163 figures (and
# above the all-low-rate bound — not degenerate).
assert co2 is not None and pe is not None
assert 0.1238 < co2 < 0.136, f"expected split CO2 in (0.1238, 0.136); got {co2}"
assert 1.4429 < pe < 1.501, f"expected split PE in (1.4429, 1.501); got {pe}"
def test_gas_water_heating_co2_and_pe_factors_pass_through_annual_table_12() -> None:
# Arrange — RdSAP cert with mains-gas water heating
# (`water_heating_fuel=26` API mains gas → Table 12 code 1). Per
@ -5366,16 +5841,15 @@ def test_pcdb_combi_loss_override_preserves_separate_dhw_tests_1_routing_to_tabl
def test_pcdb_combi_loss_override_returns_none_or_raises_for_untested_or_storage_combis() -> None:
"""The override gate returns None — letting the worksheet fall back
to Table 3a row 3 (600 × n/365) whenever the PCDB record lodges
keep-hot with a time clock but has insufficient EN 13203 lab data,
or sits in a storage / FGHRS row (Table 3b/3c rows 2-5, deferred
until a fixture exercises them).
"""The override gate dispatches the PCDB record's keep-hot fields to
the matching Table 3a row, or returns None for a storage / FGHRS row
(Table 3b/3c rows 2-5, deferred until a fixture exercises them).
Per Slice S0380.21: keep_hot_facility {None, 0} dispatches to
Table 3a row 1 (`600 × fu × n/365`), keep_hot_facility=1 + no
timer dispatches to row 4 (`900 × n/365`). Only the electric
keep-hot variants (keep_hot_facility {2, 3}) now raise
keep_hot_facility {None, 0} Table 3a row 1 (`600 × fu × n/365`,
without keep-hot); keep_hot_facility=1 + timer=1 row 3 (`600 ×
n/365`, EXPLICIT the cascade default is now "without keep-hot");
keep_hot_facility=1 + no timer row 4 (`900 × n/365`). Only the
electric keep-hot variants (keep_hot_facility {2, 3}) raise
`UnresolvedPcdbCombiLoss` Table 3a Note 2 fuel-split deferred."""
# Arrange — a minimal record skeleton, mutated per scenario via
# dataclasses.replace.
@ -5402,7 +5876,7 @@ def test_pcdb_combi_loss_override_returns_none_or_raises_for_untested_or_storage
loss_factor_f1_kwh_per_day=0.5,
loss_factor_f2_kwh_per_day=0.001,
rejected_factor_f3_per_litre=0.00014,
keep_hot_facility=1, # lodges keep-hot → cascade default 600 is correct
keep_hot_facility=1, # lodges keep-hot, time clock → flat 600 row
keep_hot_timer=1,
raw=(),
)
@ -5416,17 +5890,19 @@ def test_pcdb_combi_loss_override_returns_none_or_raises_for_untested_or_storage
)
is None
)
# separate_dhw_tests=0 + keep_hot_facility=1 + timer=1 → None (no
# PCDB DHW test data, but cascade's row 3 default IS the right spec
# row → return None and let the cascade default fire).
assert (
pcdb_combi_loss_override(
replace(base, separate_dhw_tests=0),
energy_content_monthly_kwh=energy_content,
daily_hot_water_monthly_l_per_day=daily_hw,
)
is None
# separate_dhw_tests=0 + keep_hot_facility=1 + timer=1 → Table 3a row 3
# (600 × n/365, keep-hot time clock) returned EXPLICITLY. The cascade
# default is now "without keep-hot" (600 × fu), so the keep-hot row
# must be delivered here, not leaned on the default.
from domain.sap10_calculator.worksheet.water_heating import (
combi_loss_monthly_kwh_table_3a_keep_hot_time_clock,
)
assert pcdb_combi_loss_override(
replace(base, separate_dhw_tests=0),
energy_content_monthly_kwh=energy_content,
daily_hot_water_monthly_l_per_day=daily_hw,
) == combi_loss_monthly_kwh_table_3a_keep_hot_time_clock()
# separate_dhw_tests=0 + keep_hot_facility=None → Table 3a row 1
# (600 × fu × n/365) — Slice S0380.21 dispatch.
row_1 = pcdb_combi_loss_override(

View file

@ -0,0 +1,105 @@
"""Tests for the runtime PCDB Table 323 (Centralised MEV and MVHR) lookup.
The lookup loads pcdb_table_323_centralised_mev_mvhr.jsonl at import time
and caches a typed `MvhrRecord` per pcdb_id. `cert_to_inputs` invokes
`mvhr_record(pcdb_id)` to obtain the per-wet-room test points (SFP +
heat-recovery efficiency), selects the data point matching the dwelling's
wet-room count (SAP 10.2 §2.6.4: "MVHR ... SFP is a single value
depending on the number of wet rooms"), and applies the PCDB Table 329
in-use factors before feeding the (23c)/(230a) cascade.
Field positions are documented in PCDF Spec Rev 6b §A.18 (Format 426);
pcdb10.dat (header `$323,431,...`) carries Format 431, which compresses
each per-configuration test group to a (num_wet_rooms, flow_l_per_s,
sfp_w_per_l_per_s, efficiency_pct) tuple.
Reference: BRE PCDB pcdb10.dat (April 2026); PCDF Spec Rev 6b §A.18;
SAP 10.2 specification (14-03-2025) §2.6.4/§2.6.6.
"""
from __future__ import annotations
from domain.sap10_calculator.tables.pcdb import (
mv_in_use_factors_record,
mvhr_record,
)
def test_mvhr_record_returns_verified_vent_axia_500140_header() -> None:
"""Vent Axia Sentinel Kinetic B, PCDB index 500140 — the MVHR unit of
the worksheet-ground-truthed simulated case 49 (000565 semi + MVHR +
gas combi Elmhurst Current SAP 72).
Header fields cross-referenced against pcdb10.dat:
brand_name: "Vent Axia"
model_name: "Sentinel Kinetic B"
main_type: 3 (balanced whole-house MV per PCDF §A.18 field 11)
duct_type_tested: 2 (rigid per PCDF §A.18 field 13)
"""
# Arrange / Act
record = mvhr_record(500140)
# Assert
assert record is not None
assert record.pcdb_id == 500140
assert record.brand_name == "Vent Axia"
assert record.model_name == "Sentinel Kinetic B"
assert record.main_type == 3
assert record.duct_type_tested == 2
def test_mvhr_record_500140_data_point_selected_by_wet_rooms() -> None:
"""SAP 10.2 §2.6.4 selects the MVHR SFP/efficiency by the dwelling's
wet-room count. Record 500140 lodges five wet-room configurations;
the case-49 dwelling (000565, 2 wet rooms) resolves to the group whose
leading field is 2 flow 21.0 l/s, SFP 0.88 W/(l/s), efficiency 91%
(the values echoed on the U985 worksheet section 2).
"""
# Arrange / Act
record = mvhr_record(500140)
# Assert
assert record is not None
by_wet = {p.num_wet_rooms: p for p in record.data_points}
assert set(by_wet.keys()) == {1, 2, 3, 4, 5}
# Worksheet ground truth: 2 wet rooms → SFP 0.88, efficiency 91%.
assert by_wet[2].flow_rate_l_per_s == 21.0
assert by_wet[2].sfp_w_per_l_per_s == 0.88
assert by_wet[2].efficiency_pct == 91.0
# The 1-wet-room point is distinct (lower flow / SFP, same efficiency).
assert by_wet[1].flow_rate_l_per_s == 15.0
assert by_wet[1].sfp_w_per_l_per_s == 0.76
assert by_wet[1].efficiency_pct == 91.0
def test_mvhr_record_returns_none_for_unknown_pcdb_id() -> None:
"""An index not in Table 323 returns None so callers fall back to the
SAP 10.2 Table 4g default MVHR data (raw SFP 2.0, efficiency 66%)."""
# Arrange / Act
record = mvhr_record(99999999)
# Assert
assert record is None
def test_table_329_decodes_mvhr_efficiency_in_use_factor_for_balanced_mv() -> None:
"""PCDB Table 329 (Format 432) system_type 3 (balanced whole-house MV)
carries the MVHR heat-recovery efficiency in-use factor for ducts
inside the heated envelope = 0.90 (case-49 worksheet (23c) = 91 × 0.90
= 81.9%), plus the rigid/flexible SFP in-use factors 1.4 / 1.7.
The default-data row (system_type 10) carries the SAP 10.2 Table 4g
default heat-recovery in-use factor 0.70 in the same column a
cross-check that the decoded column is the efficiency factor.
"""
# Arrange / Act
balanced = mv_in_use_factors_record(3)
default = mv_in_use_factors_record(10)
# Assert
assert balanced is not None
assert balanced.sfp_iuf_rigid_no_scheme == 1.4
assert balanced.sfp_iuf_flexible_no_scheme == 1.7
assert balanced.mvhr_efficiency_iuf_inside_no_scheme == 0.9
assert default is not None
assert default.mvhr_efficiency_iuf_inside_no_scheme == 0.7

View file

@ -62,17 +62,69 @@ def test_unknown_meter_infers_off_peak_from_electric_storage_main() -> None:
def test_unknown_meter_does_not_infer_off_peak_for_room_heater_or_heat_pump() -> None:
# Arrange — direct-acting electric room heaters (Rule 3, SAP 691) and
# heat pumps run ON DEMAND and exist on single-rate meters too, so they
# are NOT evidence of an off-peak tariff. On an Unknown meter they keep
# STANDARD — billing them 100% at the off-peak low rate would
# over-credit (room heaters draw mostly at the high rate).
# Arrange — RdSAP 10 §12 (PDF p.62): on an Unknown meter the off-peak
# exception fires only when a text-box off-peak SYSTEM is present (storage
# / underfloor / dry-core / CPSU main, OR dual electric immersion water
# heating, OR GSHP/WSHP main). A direct-acting room-heater (Rule 3, SAP
# 691) or heat-pump main is NOT by itself such a system — absent a
# dual-immersion (or GSHP/WSHP) trigger the dwelling stays on a single
# meter (STANDARD). The 7-/10-hour choice in Rules 1-4 only applies ONCE
# the meter is already established as dual.
# Act / Assert
# Act / Assert — room heater / heat pump with no dual-immersion trigger.
assert rdsap_tariff_for_cert(3, main_1_sap_code=691) is Tariff.STANDARD
assert rdsap_tariff_for_cert(3, main_1_is_heat_pump_database=True) is Tariff.STANDARD
def test_unknown_meter_dual_electric_immersion_triggers_off_peak_via_rules() -> None:
# Arrange — RdSAP 10 §12 (PDF p.62): "If the electricity meter is unknown,
# treat as single meter EXCEPT where ... water heating [is] intended to
# run off an off-peak tariff (per systems listed in the text box above)"
# — the text box lists DUAL ELECTRIC IMMERSION. "If that results in a dual
# meter, assign tariff per rules 1 to 4." So an Unknown meter + dual
# electric immersion makes the dwelling dual; the 7-/10-hour choice then
# follows Rules 1-4 on the MAIN heating. Worksheet-validated on Khalim's
# "simulated case 48" (main 691 room heaters + Unknown meter + 903 dual
# immersion → Elmhurst 10-Hour Off Peak, SAP 57; ours 45→55). Corpus cert
# "Apartment 241" (main 691 + dual immersion) moved -5.38 → -1.05.
# Act / Assert — dual immersion + room-heater main → Rule 3 → 10-hour;
# + storage main → Rule 2 → 7-hour (already off-peak); + gas main → Rule 4
# default → 7-hour. WITHOUT the dual-immersion flag, the room-heater main
# stays STANDARD (single electric immersion is not a trigger).
assert rdsap_tariff_for_cert(
3, main_1_sap_code=691, water_is_off_peak_dual_immersion=True
) is Tariff.TEN_HOUR
assert rdsap_tariff_for_cert(
3, main_1_sap_code=402, water_is_off_peak_dual_immersion=True
) is Tariff.SEVEN_HOUR
assert rdsap_tariff_for_cert(
3, main_1_sap_code=102, water_is_off_peak_dual_immersion=True
) is Tariff.SEVEN_HOUR
assert rdsap_tariff_for_cert(
3, main_1_sap_code=691, water_is_off_peak_dual_immersion=False
) is Tariff.STANDARD
def test_unknown_meter_ground_or_water_source_heat_pump_triggers_off_peak() -> None:
# Arrange — RdSAP 10 §12 (PDF p.62) third Unknown-meter exception bullet:
# "main heating is ground source or water source heat pump." Per SAP 10.2
# Table 4a (PDF p.176-177) ground source = 211/215/221/225 (+ warm-air
# 521/525), water source = 213/216/223/226 (+ warm-air 523/526); AIR
# source (214/224 etc.) is NOT named, so it stays standard. Once the GSHP/
# WSHP makes the meter dual, Rules 1-4 (Rule 3, heat pump 211-224) → 10h.
# 0 corpus certs carry a GSHP/WSHP on an Unknown meter (the only Unknown-
# meter HPs are 3/10 Bedford House, main 214 = AIR source) — this is a
# spec-completeness forward guard.
# Act / Assert — ground/water source → 10-hour; air source → STANDARD.
assert rdsap_tariff_for_cert(3, main_1_sap_code=211) is Tariff.TEN_HOUR
assert rdsap_tariff_for_cert(3, main_1_sap_code=213) is Tariff.TEN_HOUR
assert rdsap_tariff_for_cert(3, main_1_sap_code=521) is Tariff.TEN_HOUR
assert rdsap_tariff_for_cert(3, main_1_sap_code=214) is Tariff.STANDARD
assert rdsap_tariff_for_cert(3, main_1_sap_code=224) is Tariff.STANDARD
def test_unknown_meter_with_non_electric_main_stays_standard() -> None:
# Arrange — an "Unknown" meter on a GAS-heated dwelling (SAP 102) has
# no off-peak evidence, so it must NOT pick up the Rule-4 Dual default

View file

@ -13,6 +13,7 @@ from __future__ import annotations
import pytest
from domain.sap10_calculator.exceptions import UnpricedFuelCode
from domain.sap10_calculator.tables.table_12a import Tariff
from domain.sap10_calculator.tables.table_32 import (
additional_standing_charges_gbp,
@ -143,9 +144,9 @@ def test_unit_price_translates_api_fuel_enum_via_api_fuel_to_table_32() -> None:
def test_unit_price_defaults_to_mains_gas_when_code_is_none() -> None:
"""Mirrors `table_12.unit_price_p_per_kwh` behaviour: unknown / missing
fuel codes fall back to mains gas. cert_to_inputs occasionally has to
resolve a price for a cert with a missing main_fuel_type."""
"""A `None` fuel code (no fuel lodged) falls back to mains gas — callers
resolve a "no system" before pricing, so None is not an error. A concrete
UNRECOGNISED code raises instead (see the next test)."""
# Arrange
fuel_code = None
@ -156,6 +157,20 @@ def test_unit_price_defaults_to_mains_gas_when_code_is_none() -> None:
assert price == 3.48
def test_unit_price_raises_on_unrecognised_fuel_code() -> None:
"""A concrete (non-None) fuel code that resolves to neither a Table 32
price nor a translatable gov-API enum raises `UnpricedFuelCode` rather
than silently defaulting to the mains-gas price an unhandled fuel
billed at 3.48 p/kWh mis-costs the dwelling (the dual-main wood-vs-
electric failure mode). Guards against future/unmapped fuels."""
# Arrange — 999 is not a Table 32 code nor a gov-API fuel enum.
fuel_code = 999
# Act / Assert
with pytest.raises(UnpricedFuelCode):
unit_price_p_per_kwh(fuel_code)
@pytest.mark.parametrize(
"fuel_code, expected_standing_gbp, fuel_name",
[

View file

@ -42,7 +42,10 @@ from domain.sap10_ml.tests._fixtures import (
)
from domain.sap10_calculator.worksheet.solar_gains import RoofWindowInput, RooflightInput
from domain.sap10_calculator.worksheet.ventilation import MechanicalVentilationKind
from domain.sap10_calculator.worksheet.water_heating import TABLE_J1_TCOLD_FROM_MAINS_C
from domain.sap10_calculator.worksheet.water_heating import (
TABLE_J1_TCOLD_FROM_MAINS_C,
combi_loss_monthly_kwh_table_3a_keep_hot_time_clock,
)
from tests.domain.sap10_calculator.worksheet._elmhurst_fixtures import (
SECTION_8C_ALL_ZERO_MONTHLY,
@ -284,9 +287,12 @@ MIXER_SHOWER_FLOW_RATES_L_PER_MIN: tuple[float, ...] = (7.0,)
COLD_WATER_TEMPS_C: tuple[float, ...] = TABLE_J1_TCOLD_FROM_MAINS_C
LOW_WATER_USE: bool = False
# Vaillant Ecotec Pro combi, "Combi keep hot type = Gas/Oil, time clock":
# the orchestrator's default (Table 3a row "time-clock keep-hot")
# reproduces this fixture exactly. No override needed.
COMBI_LOSS_OVERRIDE: Optional[tuple[float, ...]] = None
# SAP 10.2 Table 3a flat keep-hot row (600 × n/365). The orchestrator's
# default is now "without keep-hot" (600 × fu × n/365, the modal lodging),
# so this keep-hot fixture supplies the override explicitly.
COMBI_LOSS_OVERRIDE: Optional[tuple[float, ...]] = (
combi_loss_monthly_kwh_table_3a_keep_hot_time_clock()
)
ELECTRIC_SHOWER_OVERRIDE: Optional[tuple[float, ...]] = None
# §4 Water heating energy requirements

View file

@ -0,0 +1,113 @@
"""Mapper-driven cascade pin against the Elmhurst U985-0001-000565
"simulated case 50" worksheet an all-electric Economy-7 dwelling with
MVHR + electric storage heaters + a DUAL-immersion hot-water cylinder.
Like 000565 / the _rr cases, this fixture does NOT hand-build the
EpcPropertyData: it routes the Summary PDF through
ElmhurstSiteNotesExtractor + from_elmhurst_site_notes so the SAP-result
pin grid exercises the WHOLE extractor + mapper + calculator pipeline.
This case was hand-built (Khalim) to ground-truth the dual-immersion
cylinder water-heating path, and it exercises two distinct off-peak
tariff mechanics that the gas/standard-tariff fixtures don't reach:
- The Table 13 HW high-rate fraction for a whc-903 DUAL electric
immersion (0.1009 high / 0.8991 low) the COST (6.4878 p/kWh) AND
the CO2/PE split ("Water heating - high/low rate cost", fixed in
`_electric_immersion_hw_high_rate_fraction`).
- The Table 12a Grid 2 fan fraction (0.71/0.58) for MVHR fan
electricity (315.64 kWh, 100% MVHR per worksheet line 230a) billed
distinct from "all other uses" 0.90/0.80 (fixed by including the MVHR
fan in `mev_kwh_for_cost_split`).
Unknown meter + dual electric immersion resolves to 7-hour off-peak via
the §12 trigger. After both fixes the existing-dwelling rating reconciles
to the U985 worksheet EXACTLY, including the (272) rating CO2.
Cert shape: 000565 semi shell, main = electric storage heaters (SAP 402,
manual charge control), portable electric secondary (SAP 693), water
heating from a whc-903 dual electric immersion + 160 L foam cylinder (no
cylinder stat), MVHR (Vent Axia, PCDB 500140), one instantaneous electric
shower, no PV, Economy-7.
Source: user-simulated PDFs at `sap worksheets/golden fixture debugging/
simulated case 50/`. The Summary is mirrored into the tracked
`backend/documents_parser/tests/fixtures/Summary_000565_case50.pdf` so the
test runs without depending on the unstaged workspace.
Worksheet pin targets (U985-0001-000565 block 1 existing dwelling SAP):
- SAP rating 39 (258); continuous 38.8426; ECF 4.4252 (257)
- Total fuel cost £1317.0116 (255)
- Total CO2 2397.1237 kg/year (272)
- Space heating 14318.4904 kWh/year ((98c))
- Main 1 fuel 12170.7169 kWh/year (211)
- Secondary fuel 2147.7736 kWh/year (215)
- Hot water fuel 1668.0788 kWh/year (219)
- Lighting 435.3204 kWh/year (232)
- Pumps/fans 315.6384 kWh/year (231)
Per [[feedback-zero-error-strict]] + [[feedback-e2e-validation-
philosophy]]: pins are abs=1e-4 against the worksheet PDF. The pin
values live in `test_e2e_elmhurst_sap_score._FIXTURE_PINS`.
"""
from __future__ import annotations
import re
import subprocess
from pathlib import Path
from typing import Final
from backend.documents_parser.elmhurst_extractor import ElmhurstSiteNotesExtractor
from datatypes.epc.domain.epc_property_data import EpcPropertyData
from datatypes.epc.domain.mapper import EpcPropertyDataMapper
# parents[0]=worksheet/, [1]=sap10_calculator/, [2]=domain/, [3]=tests/,
# [4]=repo root.
_SUMMARY_PDF: Final[Path] = (
Path(__file__).resolve().parents[4]
/ "backend" / "documents_parser" / "tests" / "fixtures"
/ "Summary_000565_case50.pdf"
)
def _summary_pdf_to_textract_style_pages(pdf_path: Path) -> list[str]:
"""Convert a Summary PDF into the per-page text format the
ElmhurstSiteNotesExtractor expects (label\\nvalue sequences). Mirror
of the helper in the other `_elmhurst_worksheet_*` fixtures.
"""
info = subprocess.run(
["pdfinfo", str(pdf_path)], capture_output=True, text=True, check=True,
).stdout
m = re.search(r"Pages:\s+(\d+)", info)
if m is None:
raise RuntimeError(f"Could not parse page count from {pdf_path}")
page_count = int(m.group(1))
pages: list[str] = []
for i in range(1, page_count + 1):
layout = subprocess.run(
[
"pdftotext", "-layout", "-f", str(i), "-l", str(i),
str(pdf_path), "-",
],
capture_output=True, text=True, check=True,
).stdout
tokens: list[str] = []
for line in layout.splitlines():
if not line.strip():
tokens.append("")
continue
parts = [p for p in re.split(r"\s{2,}", line.strip()) if p]
tokens.extend(parts)
pages.append("\n".join(tokens))
return pages
def build_epc() -> EpcPropertyData:
"""Route the simulated case-50 Summary through extractor + mapper.
No hand-built EpcPropertyData the extractor and mapper are part of
the test target.
"""
pages = _summary_pdf_to_textract_style_pages(_SUMMARY_PDF)
site_notes = ElmhurstSiteNotesExtractor(pages).extract()
return EpcPropertyDataMapper.from_elmhurst_site_notes(site_notes)

View file

@ -0,0 +1,110 @@
"""Mapper-driven cascade pin against the Elmhurst U985-0001-000565
"simulated case 52" worksheet a REGULAR (non-combi) mains-gas boiler
feeding a hot-water CYLINDER, on standard tariff.
Like 000565 / the _rr cases, this fixture does NOT hand-build the
EpcPropertyData: it routes the Summary PDF through
ElmhurstSiteNotesExtractor + from_elmhurst_site_notes so the SAP-result
pin grid exercises the WHOLE extractor + mapper + calculator pipeline.
This case was hand-built (Khalim) to ground-truth the LAST untested
branch of the cylinder/water-heating chain that the combi/immersion
fixtures don't reach: a regular boiler + cylinder heated from the main,
exercising SAP 10.2 §4
- Cylinder storage loss via Table 2 loss factor (51) 0.0181, Table 2a
volume factor (52) 0.9086, Table 2b temperature factor (53) 0.7020
(NO cylinder thermostat) (55) 1.8466.
- PRIMARY circuit loss (59) 128.3772 (winter) the Table 3 path for
UNINSULATED primary pipework + no cylinder stat. Case 50 (immersion,
no boiler) couldn't reach this branch.
- Combi loss (61) correctly 0 (regular boiler, not a combi).
The whole chain reconciles to the U985 worksheet EXACTLY with no
calculator change it pins the cylinder-loss derivation as correct.
Cert shape: 000565 semi shell, single main = mains-gas REGULAR boiler
(SAP code 102, control 2106 programmer + room stat + TRVs), water
heating from main (WHC 901) via a 160 L foam-insulated cylinder (no
cylinder stat, uninsulated primary pipework, in heated space), one
instantaneous electric shower, no secondary, no PV, standard tariff.
Source: user-simulated PDFs at `sap worksheets/golden fixture debugging/
simulated case 52/`. The Summary is mirrored into the tracked
`backend/documents_parser/tests/fixtures/Summary_000565_case52.pdf` so the
test runs without depending on the unstaged workspace.
Worksheet pin targets (U985-0001-000565 block 1 existing dwelling SAP):
- SAP rating 57 (258); continuous 57.2904; ECF 3.0616 (257)
- Total fuel cost £911.1973 (255)
- Total CO2 3834.8434 kg/year (272)
- Space heating 10563.5170 kWh/year ((98c))
- Main 1 fuel 13371.5405 kWh/year (211)
- Secondary fuel 0.0 kWh/year (215)
- Hot water fuel 3929.7635 kWh/year (219)
- Lighting 435.3204 kWh/year (232)
- Pumps/fans 401.6384 kWh/year (231)
Per [[feedback-zero-error-strict]] + [[feedback-e2e-validation-
philosophy]]: pins are abs=1e-4 against the worksheet PDF. The pin
values live in `test_e2e_elmhurst_sap_score._FIXTURE_PINS`.
"""
from __future__ import annotations
import re
import subprocess
from pathlib import Path
from typing import Final
from backend.documents_parser.elmhurst_extractor import ElmhurstSiteNotesExtractor
from datatypes.epc.domain.epc_property_data import EpcPropertyData
from datatypes.epc.domain.mapper import EpcPropertyDataMapper
# parents[0]=worksheet/, [1]=sap10_calculator/, [2]=domain/, [3]=tests/,
# [4]=repo root.
_SUMMARY_PDF: Final[Path] = (
Path(__file__).resolve().parents[4]
/ "backend" / "documents_parser" / "tests" / "fixtures"
/ "Summary_000565_case52.pdf"
)
def _summary_pdf_to_textract_style_pages(pdf_path: Path) -> list[str]:
"""Convert a Summary PDF into the per-page text format the
ElmhurstSiteNotesExtractor expects (label\\nvalue sequences). Mirror
of the helper in the other `_elmhurst_worksheet_*` fixtures.
"""
info = subprocess.run(
["pdfinfo", str(pdf_path)], capture_output=True, text=True, check=True,
).stdout
m = re.search(r"Pages:\s+(\d+)", info)
if m is None:
raise RuntimeError(f"Could not parse page count from {pdf_path}")
page_count = int(m.group(1))
pages: list[str] = []
for i in range(1, page_count + 1):
layout = subprocess.run(
[
"pdftotext", "-layout", "-f", str(i), "-l", str(i),
str(pdf_path), "-",
],
capture_output=True, text=True, check=True,
).stdout
tokens: list[str] = []
for line in layout.splitlines():
if not line.strip():
tokens.append("")
continue
parts = [p for p in re.split(r"\s{2,}", line.strip()) if p]
tokens.extend(parts)
pages.append("\n".join(tokens))
return pages
def build_epc() -> EpcPropertyData:
"""Route the simulated case-52 Summary through extractor + mapper.
No hand-built EpcPropertyData the extractor and mapper are part of
the test target.
"""
pages = _summary_pdf_to_textract_style_pages(_SUMMARY_PDF)
site_notes = ElmhurstSiteNotesExtractor(pages).extract()
return EpcPropertyDataMapper.from_elmhurst_site_notes(site_notes)

View file

@ -48,6 +48,8 @@ from tests.domain.sap10_calculator.worksheet import (
_elmhurst_worksheet_001431_case6 as _w001431_case6,
_elmhurst_worksheet_001431_case7 as _w001431_case7,
_elmhurst_worksheet_001431_case20 as _w001431_case20,
_elmhurst_worksheet_000565_case50 as _w000565_case50,
_elmhurst_worksheet_000565_case52 as _w000565_case52,
)
from tests.domain.sap10_calculator.worksheet._elmhurst_fixtures import (
ALL_FIXTURES as _ELMHURST_FIXTURES,
@ -296,6 +298,39 @@ _FIXTURE_PINS: Final[dict[str, FixtureCascadePins]] = {
lighting_kwh_per_yr=246.3083,
pumps_fans_kwh_per_yr=0.0,
),
# Mapper-driven — Summary_000565_case50.pdf → extractor → mapper →
# calculator. All-electric Economy-7: storage-heater main (SAP 402) +
# MVHR + whc-903 DUAL electric immersion + 160 L cylinder. Exercises
# the Table 13 HW high/low split (cost + CO2/PE) AND the Table 12a
# Grid 2 MVHR fan fraction (0.71/0.58). Reconciles to the worksheet
# EXACTLY after both off-peak fixes (incl. the (272) rating CO2).
"000565_case50": FixtureCascadePins(
sap_score=39, sap_score_continuous=38.8426, ecf=4.4252,
total_fuel_cost_gbp=1317.0116, co2_kg_per_yr=2397.1237,
space_heating_kwh_per_yr=14318.4904,
main_heating_fuel_kwh_per_yr=12170.7169,
secondary_heating_fuel_kwh_per_yr=2147.7736,
hot_water_kwh_per_yr=1668.0788,
lighting_kwh_per_yr=435.3204,
pumps_fans_kwh_per_yr=315.6384,
),
# Mapper-driven — Summary_000565_case52.pdf → extractor → mapper →
# calculator. Regular (non-combi) mains-gas boiler (SAP 102) + a
# 160 L foam cylinder heated from the main (WHC 901), no cylinder
# stat + uninsulated primary pipework, standard tariff. Validates the
# cylinder storage loss (51-55) + PRIMARY loss (59) chain — the
# branch immersion/combi fixtures can't reach. Reconciles to the
# worksheet EXACTLY with no calculator change.
"000565_case52": FixtureCascadePins(
sap_score=57, sap_score_continuous=57.2904, ecf=3.0616,
total_fuel_cost_gbp=911.1973, co2_kg_per_yr=3834.8434,
space_heating_kwh_per_yr=10563.5170,
main_heating_fuel_kwh_per_yr=13371.5405,
secondary_heating_fuel_kwh_per_yr=0.0,
hot_water_kwh_per_yr=3929.7635,
lighting_kwh_per_yr=435.3204,
pumps_fans_kwh_per_yr=401.6384,
),
}
@ -315,6 +350,8 @@ _FIXTURE_MODULES: Final[dict[str, ModuleType]] = {
"001431_case6": _w001431_case6,
"001431_case7": _w001431_case7,
"001431_case20": _w001431_case20,
"000565_case50": _w000565_case50,
"000565_case52": _w000565_case52,
}

View file

@ -970,13 +970,17 @@ def test_water_heating_from_cert_matches_elmhurst_worksheet_000490() -> None:
# Arrange
epc = _w000490.build_epc()
# Act
# Act — 000490 lodges "Combi keep hot type = time clock" (U985 §15),
# so the (61)m combi loss is the Table 3a flat keep-hot row, not the
# "without keep-hot" 600 × fu default that `water_heating_from_cert`
# now applies when no override is supplied.
result = water_heating_from_cert(
epc=epc,
mixer_shower_flow_rates_l_per_min=(7.0,),
has_bath=True,
cold_water_temps_c=TABLE_J1_TCOLD_FROM_MAINS_C,
low_water_use=False,
combi_loss_monthly_kwh_override=combi_loss_monthly_kwh_table_3a_keep_hot_time_clock(),
)
# Assert — annual output equals the days-month-weighted sum of (64)m

View file

@ -194,9 +194,41 @@ _CORPUS = Path(
# stress worksheet (simulated case 46): closed its last ventilation residual
# (our Jan ACH 9.14 -> 9.0748 exact; SAP 29 -> 30 = accredited Elmhurst).
_MIN_WITHIN_HALF_SAP = 0.72
_MAX_SAP_MAE = 0.82
# 0.793 -> 0.789 via the §12 Unknown-meter + dual-electric-immersion off-peak
# trigger (RdSAP 10 PDF p.62): Apartment 241 (main 691 + 903 dual immersion)
# -5.38 -> -1.05. Worksheet-validated on "simulated case 48" (Elmhurst SAP 57,
# 10-Hour Off Peak). Then 0.789 -> 0.788 (within-0.5 72.5% -> 72.6%) via the
# dMEV intermittent-fan fix: an EXTRACT_OR_PIV_OUTSIDE cert lodging 0 fans now
# takes 0 (not the Table 5 age-band default) — same "case 48" worksheet closes
# its space-heating demand to land SAP 57 exact.
# 0.788 -> 0.782 (within-0.5 72.6% -> 72.7%, PE 3.6 -> 3.5) via MVHR (24a) heat-
# recovery support: the gov-API `mechanical_ventilation=4` cohort (balanced
# whole-house MV with heat recovery) was treated as natural; now credited via
# PCDB Table 323 efficiency × Table 329 in-use factor and the §2.6.6 eq (2)
# effective-air-change formula + (230a) fan electricity. Worksheet-proven on
# simulated case 49 (Vent Axia 500140, every MVHR line — (33) 100.5923, (23c)
# 81.9%, (230a) 415.9325, (231) 501.9325 — matching Elmhurst exactly). Corpus
# MVHR certs: Flat 1 +6 -> 0, 12a Princes Gate +3 -> +1; Apartment 707's -4 ->
# -6 is a separate baseline under-rate (it under-rated as natural too).
# Then 0.782 -> 0.781 via extending the dMEV "lodged 0 extract fans, no Table 5
# default" rule to MVHR (the balanced system is the ventilation, so a lodged
# (7a)=0 is explicit): case 49's (8) openings line is 0.0000 — our default had
# added 20 m3/h (0.0723 ach), inflating (22b)/(25)/(38) and demand (SAP 70.90
# -> 71.43; the worksheet's own continuous SAP is 71.69 -> rounds to 72).
# Then 0.781 -> 0.774 (within-0.5 72.7% -> 73.3%, PE 3.5 -> 3.4) via the combi
# keep-hot fix: SAP 10.2 Table 3a (PDF p.160) — keep-hot rides on the PCDB
# boiler record (Table 105 keep_hot_facility/timer), NOT a separate cert field.
# (a) A non-PCDB / generic-SAP-code combi has no keep-hot → "without keep-hot"
# row 600 × fu × n/365 (fu = V_d/100 when V_d < 100), now the cascade default;
# the cascade had wrongly defaulted every non-PCDB combi to the flat keep-hot
# 600 × n/365 row. (b) `pcdb_combi_loss_override` now returns the keep-hot row
# EXPLICITLY for keep_hot_facility=1/timer=1 (was returning None to lean on the
# old flat default — so flipping the default had silently turned 190 PCDB
# keep-hot combis into no-keep-hot). Closes case 49 EXACTLY (cost £726.696,
# SAP 72 = the worksheet to the digit).
_MAX_SAP_MAE = 0.775
_MAX_CO2_MAE_TONNES = 0.09 # t CO2 / yr vs co2_emissions_current
_MAX_PE_PER_M2_MAE = 3.7 # kWh / m2 / yr vs energy_consumption_current
_MAX_PE_PER_M2_MAE = 3.5 # kWh / m2 / yr vs energy_consumption_current
def _load_corpus() -> list[dict[str, Any]]: