โฐ Menu
๐ Overview
0. THE BINDING CONSTRAINT โ READ THIS FIRST
1. PROJECT OVERVIEW
2. HARDWARE โ ALREADY OWNED (No Cost)
3. CARPUTER โ HARDWARE TO PURCHASE
4. SYSTEM ARCHITECTURE โ THREE TIERS
5. POWER ARCHITECTURE (the keystone)
6. ESP32 NODE NETWORK (Tier 0)
7. CAMERA SYSTEM + NVR
8. CAN BUS INTEGRATION
9. SOFTWARE STACK
10. THERMAL MANAGEMENT
11. HOME RAG SERVER (HP Z440 #1)
12. OFF-GRID MESH + REMOTE ACCESS (Phase 2/3)
13. PENDING ACTIONS
14. PHASED ROADMAP
15. COST SUMMARY
16. ARCHITECTURE AT A GLANCE
17. MASTER PARTS LIST (BOM) (rev 3.43)
โฃ Wire Diagrams
Full Wiring 6 โ Bed-battery combiner (BED board + DC Monitor)
๏ผ
๏ผ
Fit
100%
wheel / pinch = zoom ยท drag = pan
fw6_combiner
FULL WIRING SHEET 6 โ BED-BATTERY COMBINER DEEP-DIVE: contactor + pre-charge, pin-by-pin (rev 3.31 โ driven by the BED board, Option B)
WHY: two big low-ESR LiFePO4 banks + the inverter's input capacitors. Slam the contactor closed at a 0.5V difference and the only resistance is ~15 milliohm of cable -> a 30-60A+ spike and the caps look like a
dead short for milliseconds = arcing, welded contacts, BMS overcurrent trips. The 5R resistor makes the worst case a gentle 2.7A.
HOW IT SWITCHES TO FULL POWER: nothing 'switches over' โ the contactor (milliohms) simply closes IN PARALLEL with the 5R resistor; current naturally takes the metal path. Then the pre-charge relay opens to take the resistor out.
LEGEND: red thick = 2 AWG battery power ยท red thin = 16 AWG pre-charge branch ยท dark-red = coil power ยท purple dashed = controller DO ยท blue = voltage sense ยท black = ground
batt
BED BATTERY 300-440Ah LiFePO4
(removable)
sb
ANDERSON SB175 + handle
+ contact
- contact
batt->sb:n
2 AWG
bfuse
FUSE 100-150A (MRBF terminal fuse
or ANL) โ AT the battery + post
batt->bfuse
2 AWG (fuse FIRST, at the post)
cont
CONTACTOR 150-200A continuous-duty, 12V coil, NORMALLY OPEN
(White-Rodgers 120-105-class / EV200-class)
STUD A (battery side)
STUD B (bus side)
coil +
coil -
sb:p->cont:sa
2 AWG
bneg
BED - BUS BAR
sb:n->bneg
2 AWG โ straight to bed - bus
(only the POSITIVE is switched)
disc
ROTARY BATTERY DISCONNECT 275A-class
(red removable key, ~$12) โ at the pack
OFF = plug/unplug ALWAYS dead + service lockout
(independent of software/contactor)
bfuse->disc
2 AWG
disc->sb:p
2 AWG
bbus
BED + BUS BAR (Sheet 1)
(always tied to front bus via the trunk)
cont:sb->bbus
2 AWG
cont:cm->bneg
coil return
sense
Modbus RTU DC Monitor (SKU 33931) on the BED board RS485
ch2 = bed stud-A V ยท ch1 = front-V (or over Ethernet)
0-36V, 16-bit, common-GND (star) โ this is how the board
KNOWS the voltages match. (current ch = small loads only,
ยฑ8A; main-bank current stays on the WonVon shunt)
cont:sa->sense
tap at stud A
seq
SEQUENCE (state machine in ESPHome)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
0 ISOLATED โ both relays off. Contactor is NO ->
ESP32 dead / power lost = bed isolated. FAIL-SAFE.
1 COMBINE REQUEST (auto or app) โ read ADC1 vs ADC2.
2 PRE-CHARGE โ O6 on -> current through the 5R: I = deltaV/5
(fault/0V case -> 2.7A / 36W <- WHY the 25-50W rating).
FIXES IN SECONDS: inverter caps (tau = 5R x ~10mF = 50ms)
+ surface charge (recent charge/discharge froth).
CANNOT FIX EVER: a real SoC difference โ 0.1-0.4A into
100-440Ah moves SoC ~0.05%/hr. deltaV still there after
~15s = a GENUINE SoC gap; more waiting will not close it.
3 DECIDE at ~15s, by deltaV band (inrush ~ deltaV / R_loop,
R_loop ~ 15-25 milliohm of cable + cell resistance):
deltaV <= 0.3V -> CLOSE. Inrush ~10-20A blip. Trivial.
(the COMMON case โ LiFePO4 rests 13.0-13.4V over
most of SoC, healthy banks usually land here)
0.3-0.7V AND charge source ON -> CLOSE = managed
merge: brief 20-50A into the low bank, decays to
charger rate (~0.1C on 300-440Ah โ battery is fine).
> 0.7V -> STAY ISOLATED + alert (default). 80-120A+
inrush is hard on contacts over cycles, and the
FRONT bank would dump into the bed.
FORCE-MERGE OVERRIDE (the stored-bed-battery,
leaving-now case): allowed ONLY if ignition ON +
DC-DC active + user confirms (PWA gate / override
switch). Profile: ~100-120A for the first 1-2 min
(the SoC cliff lifts bed V fast), then 30-60A with
the DC-DC backfilling 40A. The close itself is cheap
(contactor make-rated for 1000s of such cycles) โ
keep it RARE because the inrush is UNCONTROLLED
(ratings headroom, not regulation) and because the
0-5% STORAGE habit it implies is what actually harms
the pack (low-SoC aging + BMS drain -> brick risk).
Store at 50-60% instead -> every reinstall is a normal
merge, routine forever.
TRUNK FUSE MUST BE 125A (100A = nuisance blow).
REFUSE below ~11V pack (damaged/BMS-tripped ->
bench supply only, doc 5.10).
4 CLOSE โ O5 on -> contactor closes (milliohm path in
parallel with the 5R; it just takes over).
5 0.5s later: O6 off -> resistor out of circuit. COMBINED.
6 SEPARATE โ O5 off (LVD, fault, request) -> back to 0.
7 SEPARATE-ON-CHARGE-LOSS (key-off / DC-DC + solar gone):
if the bed is still BELOW the flat band (rest < ~13.0V,
i.e. a force-merge that isn't done) -> OPEN the contactor.
Otherwise the paralleled banks MUST equalize: the front
100Ah bleeds 60-80Ah into a low bed overnight (15-25A
tapering) until both sit ~20% โ no damage (charge just
moves), but the critical front reserve is silently gone.
Healthy banks (both flat-band, OCVs ~equal) -> negligible
cross-current -> staying combined parked is fine/intended.
Re-merge automatically when a charge source returns
(morning solar counts).
ESP32 REBOOT (watchdog / brownout / EVERY OTA update):
DOs go dark during reboot -> both relays drop -> contactor
opens -> banks isolate. Mid-PRECHARGE: trivial. Mid-
COMBINED: contactor breaks under load (rated for it), front
bank carries everything ~5-15s, boot re-reads ADCs, deltaV
~0 -> band 1 recombine. SELF-HEALING โ IF the firmware:
ยท restore_mode ALWAYS_OFF on O5/O6 (NEVER restore relay
state from flash โ battery may have been swapped)
ยท force-merge confirm does NOT persist across reboot
ยท ~10s boot settle before energizing anything (also kills
brownout relay-chatter); no O5 until ADCs read + banded
DEEPLY-DEPLETED RULE (the >0.7V band): the resistor
CANNOT fill a dead bank (0.2A into 440Ah ~ forever).
Combine only while a CHARGE SOURCE is active: the charger
raises the bed bank toward charge voltage, banks meet there,
THEN pre-charge + close. The SOURCE fills the bank, not the
front battery.
STORAGE TIP: store the bed pack at ~50-60% (rest 13.2V),
top up quarterly โ never face the 12.0V morning. Check the
BMS is awake (meter the SB175 pins) + no charge below 0 C.
PLUG-IN TIMELINE (no user action needed)
ยท contactor is OPEN -> SB175 mates onto a dead circuit
(only the ~110k sense, ~0.1mA) -> NO SPARK
ยท ADC2 jumps to pack V instantly; firmware waits ~5s stable
ยท auto-sequence -> COMBINED in ~15-25s (common case,
banks within 0.3V); bigger gaps follow the deltaV bands
ยท announce over MQTT/PWA (+ TTS if the 5080 is awake)
UNPLUG RULE: separate FIRST (PWA / override switch / rotary
OFF), THEN pull the SB175. While COMBINED, ADC2 reads BUS
voltage through the closed contactor -> the ESP32 cannot see
a yank, and the connector would break load current (arc).
res
5R / 25-50W wirewound resistor
ALUMINUM-HOUSED, bolted to metal
(heatsink for the fault case)
res->cont:sa
16 AWG -> lands on STUD A (battery side)
= the bypass AROUND the contactor
diode
1N4007 flyback diode ACROSS the
contactor coil (stripe to coil +)
โ protects RLY-O5's contacts from the
coil's inductive kick
diode->cont:cp
r5
RLY-O5 contactor driver (in box)
86
85
30 = F4 5A
87
r5:p87->cont:cp
16-18 AWG, ~0.6-1A coil
rpc
RLY-PC pre-charge (in box)
86
85
30 = F10 5A
87
rpc:p87->res
16 AWG
parts
SHOPPING LIST (combiner subsystem)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
ยท 150-200A 12V continuous-duty NO contactor
ยท 5R 25-50W aluminum-shell resistor
ยท 2x Bosch relay (already in box: O5 + PC slots)
ยท 1N4007 diode (across contactor coil)
ยท MRBF/ANL 100-150A fuse + holder (battery post)
ยท Anderson SB175 pair + handle
ยท 275A rotary battery disconnect (red key)
ยท divider resistors (100k/10k) + 1A fuse (sense)
ยท wire: 2 AWG (battery/studs/bus) ยท 16 AWG
(pre-charge branch) ยท 16-18 (coil) ยท 22 (sense)
esp
BED Waveshare ESP32-S3-POE-ETH-8DI-8DO (Option B, sec 6.5)
runs the combiner state machine LOCALLY (in the bed)
DO1 sinks RLY-O5 (contactor) ยท DO2 sinks RLY-PC (pre-charge)
bed-V + front-V read via the DC Monitor (Modbus) below
Ethernet to the front board for coordination
esp->r5:p85
DO1 sink (bed board)
esp->rpc:p85
DO2 sink (bed board)
sense->esp
V over Modbus (RS485)
open the PDF version โบ
โน prev
next โบ