Design phase: no unit has been built or measured yet. Help build the first one

Parts catalog

Roles first, brands second.

Each role says what is needed. Each example is one way to fill it, with a source and the date someone checked it. Find a cheaper, better or local part and it goes in as another option, never as the only one.

20roles
13confirmed in a datasheet
21listing only
7unverified: help wanted

Verify a part. Check one unverified or listing-only example against its datasheet, or suggest a new one. No coding needed.

Suggest or verify a part
Datasheet
key specs confirmed in the manufacturer datasheet
Listing only
only seen in a distributor or retailer listing
Unverified
plausible, not yet confirmed: please verify
Rejected
checked and found unsuitable, kept so nobody re-checks it
Safety
the role affects the limits in the safety concept

Power

aux_psu

Safety

Requirement: Certified, 12 V, IEC inlet, sized so the continuous load stays ≤ 80 % of the rating (kit check: 25 W per zone + 15 W shared, i.e. ≥ 50 W for one zone, ≥ 82 W for two). Feeds pumps, fans, control MCU and hub.

  • Mean Well GST90A12-P1M (desktop)Datasheetchecked 2026-10-11

    Confirmed: 12 V / 6.67 A / 80 W (not 90 W: the 90 W versions are the 15 V and up models), IEC320-C14 inlet, DC plug P1M (5.5 x 2.5 x 11 mm, center positive), UL/CSA/EN/IEC 62368-1, PF > 0.91 at 230 VAC. Enough for one zone (Solo Starter, 40 W load); too small for two zones (65 W > 80 % of 80 W).

  • Same GST family, 12 V / 120 W class. Confirm current rating, IEC C14 inlet and DC plug in the datasheet.

polarity_relay

Safety

Requirement: DPDT, ≥ 20 A contacts at 24 V DC, 12 V coil; plus a per-zone enable relay between TEC driver and TECs whose coil goes through the thermal cutoffs, and a per-zone DC fuse.

  • A10 series datasheet: 2C contacts rated 25 A / 30 A at 14 VDC on NO and 20 A / 25 A at 14 VDC on NC, max switching voltage 28 VDC, limiting continuous current 30/25 A (NO/NC) at 23 C, derated to 25/20 A at 85 C. The relay sits after the buck driver so it never sees 24 V; the voltage ceiling is 14 V (TEC_VOLTAGE_CEILING_V). With 18 A per zone the NC side is marginal at temperature, so wire the load through the NO contacts in both polarities (H-bridge-style: two SPDT relays, or the 2C with the NO pair cross-wired) and switch only at zero current. Datasheet copy is a distributor mirror: confirm against citrelay.com.

  • Distributor listing: 30 A contacts, ~67 mA coil, 16 VDC max switching voltage, sealed. DC contact curve not checked; get the manufacturer datasheet before use.

tec_drive

Safety

Requirement: Smooth DC, current-controlled (ripple < 10 % of max current), ≥ 18 A per zone (4 TECs in parallel at 4.5 A), controllable from a 3.3 V MCU. Its current limit is set by software, so the per-zone DC fuse and zone relay are required as backstops.

Polarity for heat/cool comes from a DPDT relay (role polarity_relay), switched only at zero current; the firmware enforces a 2 s dead time. Raw PWM is not allowed: it cuts TEC efficiency, and DIY builds that used it ran their capacitors hot.

  • One per zone. Output ≤ ~90 % of input, so it needs the 24 V supply. Output ripple not yet measured: please measure it. Early units had a failed output capacitor. Register map cross-checked against community sources (Scargill thread script, haarer/pyDPS5015): 0x0000 U-set, 0x0001 I-set, 0x0002 U-out, 0x0003 I-out, 0x0009 on/off, 16-bit holding registers; 2 decimals (x100) for voltage and, on the DPS5020, current. The vendor protocol PDF (Ruideng, V1.2) could not be fetched here (bot wall), so function codes 0x03/0x06/0x10 and the exact DPS5020 current scaling are from secondary sources: verify on your unit. Note the second register block at 0x0050+ is stored memory group M0 (U-set/I-set/OVP/OCP/OPP...), not the live setpoint.

  • Riden RD6012 (60 V / 12 A, Modbus RTU)Listing onlychecked 2026-10-10

    12 A, so it covers 2 TECs in parallel at 5 A (Solo Starter). An ESPHome community config exists.

  • Tier 1 power board candidate. The datasheet has TEC guidance (PWM + 2nd-order LC filter, ripple < 10 %). Needs a custom PCB.

  • Meerstetter TEC-1091 / TEC-1122Rejectedchecked 2026-10-10

    Excellent but far over budget (≈ USD 370–1,600 each, reseller prices); the 1091 is only ±4 A.

tec_psu

Safety

Requirement: Certified (IEC/EN/UL 62368-1), active PFC, 24 V, ≥ 280 W per zone. The builder must never wire mains: IEC C14 inlet or molded mains cord only.

24 V because the TEC driver is a buck converter: TECs need ~11.5 V at 5 A, so a 12 V input is too low. Big 600–750 W units (Mean Well RSP-750, UHP-750) have mains screw terminals and are only allowed inside a pre-assembled, closed power module (Tier 1).

  • Confirmed: 24 V / 11.67 A / 280.08 W, 85-264 VAC, PF > 0.95 at 230 VAC (the datasheet gives a PF figure, not the words 'active PFC'), 93 % efficiency, IEC320-C14 inlet, output plug C6P = Molex 39-01-2060 equivalent (6-pin). Safety: UL/CSA/EN/IEC 62368-1. One unit per zone (280 W covers ~18 A at ~11.5 V through the buck with margin).

  • Tier 1 only. AC input on terminal block TB1, so the mains side must be assembled and tested by a qualified person. Has a fan.

  • Loud high-RPM fans (bedroom), the certification does not cover the DIY breakout, and pinouts vary by model.

Control

control_mcu

Safety

Requirement: Runs the Open Bed Climate control firmware (port of opod.control): PID, supervisor, watchdog. Separate from any Wi-Fi/network chip.

leak_sensor

Safety

Requirement: Detects water in the hub drip tray and at the hub-side couplings; digital or analog input to the control MCU.

  • HW group WLD Relay + WLD sensing cableListing onlychecked 2026-10-11

    12 V module with a cable (rope) input that also alarms when the sensing cable is disconnected, so it is open-wire detectable. Output contact rating not stated on the page: check before wiring to a 3.3 V GPIO (use the contact with a pull-up, or an optocoupler).

  • 12 or 24 V AC/DC supply; SPCO relay output 1 A at 24 VDC for 'leak' and a system-fault output for sensor or lead cable damage or disconnection. Bulky, so mounting space in the hub matters. A bare conductive-polymer rope on a raw GPIO is NOT recommended: it reads only ~20-150 on a 10-bit ADC, and DC excitation corrodes it.

temp_sensors

Safety

Requirement: Read by the firmware today, per zone: one water temperature (G1/4 inline 10k NTC, ADS1115 ch0/ch2) and one TEC hot-face/heatsink temperature (10k NTC, ch1/ch3). Room temperature/RH (e.g. SHT45) on the hub for the dew-point guard. Planned, not yet read: water out, and a second sensor per cold plate for a plausibility check.

thermal_cutoff

Safety

Requirement: Bimetal, normally closed, auto-reset: opens at 50 °C (cold plates) and 80 °C (heatsinks). Switches relay coils, not load current. Certified (UL/VDE/ENEC) preferred.

  • KSD301 / KSD9700 class, NC, 50 °C and 80 °CListing onlychecked 2026-10-11

    Cheap, but the listings show no certification, and retail listings often mix up NO and NC at 50 C. Datasheets found (KSD9700 spec sheets) show 250 V / 5 A (CQC) or 10 A resistive, +-5 C tolerance, reset >= 35 C for the 50 C NC part; UL is often only 125 V. Test every unit (hot-air gun + thermometer) before use.

  • SPST NC bimetal, auto-reset, +-5 C. 67L050 resets at 30 C; 67L080 (https://nl.farnell.com/sensata-airpax/67l080/switch-thermal-n-c-80-c/dp/1524704) resets at 55 C. Rated only 0.5-1 A at 48 VDC / 120 VAC, which is plenty for a relay coil (the intended use) but not for load current. Per the Sensata 6700 datasheet VDE approval applies to the P (bracket) suffix; I found no UL listing, so the certification wish is only partly met. Manufacturer PDF not opened: only distributor excerpts, so treat as a listing.

  • The certified part found has the wrong temperature (70 °C). Help wanted: a certified NC part at 50 °C.

Hub

hub_controller

Requirement: Wi-Fi, Home Assistant integration, schedules, UI. Can only request setpoints.

  • Tier 0 default. The OPL client is an ESPHome external component (local C++ component).

  • Raspberry Pi (Zero 2 W or larger)Datasheetchecked 2026-10-11

    For heavier on-device biometrics (piezo grid). Confirmed: quad Cortex-A53 at 1 GHz, 512 MB RAM, 2.4 GHz Wi-Fi + BT 4.2, 40-pin header (unpopulated on the base model), in production until at least January 2030.

Thermal

cold_plate

Requirement: Aluminium or copper water block for 40×40 mm TECs, G1/4 or barbed ports. Do not mix copper and aluminium in one loop.

flow_sensor

Safety

Requirement: Reliable reading at 0.15–1 L/min (the flow interlock trips below 0.15 L/min).

heatsink

Requirement: Heat rejection ≤ 0.07 K/W per zone (Duo) or ≤ 0.11 K/W (Solo) at quiet fan speed (bedroom target ≤ 30 dB(A) at 1 m).

pump

Safety

Requirement: 12 V, tach output, ≥ 0.5 L/min at ≥ 1 m head, continuous duty, quiet at low speed (PWM).

  • Laing/Xylem D5 PWM 12 VListing onlychecked 2026-10-10

    Massively oversized (max ~3.7 m head), but reliable, with tach and PWM. Run it slow for silence.

  • Laing DDC 12 V PWMListing onlychecked 2026-10-10
  • DC40-class brushless 12 V pumpUnverifiedchecked 2026-10-10

    Cheaper; sold under many names on marketplaces (search "DC40 12V brushless pump tach"). Check that it has a tach wire.

reservoir

Safety

Requirement: ≈ 0.5 L, top fill port, air purge, non-contact level sensor for the LOW_WATER fault.

  • PC-watercooling tube reservoir + capacitive non-contact level sensorUnverified

    Help wanted.

tec_module

Requirement: 40×40 mm, 127 couples, Imax ≈ 6 A, Vmax ≈ 15 V. Datasheet with Qmax/ΔTmax curves preferred.

  • TEC1-12706 (HB / Thermonamic datasheet)Datasheetchecked 2026-10-10

    Qmax 50 W, ΔTmax 66 K, Imax 6.4 A, Vmax 14.4 V, R 1.98 Ω. Quality varies a lot between sellers, so buy from a source with a datasheet.

  • Same Sky CP85438Listing onlychecked 2026-10-10

    Branded, datasheet-backed, but an 8.5 A part: adjust max_tec_current_a and re-run the kit check.

Water mat

quick_disconnect

Safety

Requirement: Dry-break (non-spill) couplings at the hub for each line. Spill per disconnect ≤ 0.5 mL.

  • CPC NS4 non-spill couplingListing onlychecked 2026-10-10

    < 0.1 mL spill per disconnect (CPC data via a distributor). Commercial bed-cooling systems also use CPC-type couplings.

  • No spill figure published. One DIY builder reported quick disconnects that did not self-seal, so test before use.

water_mat

Safety

Requirement: Even water distribution under one sleeper's torso and legs, comfortable, does not kink under body weight, works at ≤ 0.5 bar, washable or covered.

The hardest part to source, and the most needed contribution. Parallel channels (not one long serpentine) keep flow resistance low and prevent pinch-off.

Sensing

bcg_sensing

Requirement: Presence, plus heart rate and breathing via ballistocardiography (BCG). Three options; see docs/design/03-sensing-biometrics.md.

Add-ons

Rendered from hardware/parts.toml at build time. Source.