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.
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.
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.
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).
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.
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.
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.
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.
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.
Presence is proven in many ESPHome builds. 80 SPS is enough for heart rate in principle (published BCG work uses 50–200 Hz), but this is unproven in Open Bed Climate.