§1.1 · Topology
Three ESP32 boards publish to one Raspberry Pi hub running Mosquitto. The hub forwards both into a local SQLite ring buffer (edge path) and an AWS Aurora cluster (cloud path) via a thin Lambda ingest. All three boards run the same firmware variant, with sensor presence auto-discovered over I²C at boot.
DRAFT — block diagram pending §1 finalisation.
§1.2 · Parts list
| Component | Role | Quantity | Source |
|---|---|---|---|
| ESP32-WROOM-32 | Sensor microcontroller | 3 | Generic dev boards |
| Raspberry Pi 4B 4GB | Hub + MQTT broker | 1 | Official |
| BME280 | Temp / humidity / pressure | 3 | I²C 0x76 |
| Capacitive soil moisture v2.0 | Soil moisture | 4 | ADC |
| BH1750 | Ambient light (lux) | 2 | I²C 0x23 |
| MH-Z19B | CO₂ ppm | 1 | UART (greenhouse interior) |
| 5V solenoid valve | Watering actuator | 1 | Outdoor relay |
| MOSFET relay module | Solenoid driver | 1 | GPIO-driven |
DRAFT — wiring diagrams + photos by 2026-07.
§1.3 · Variants
Three boards run the same firmware (single main.cpp) but differ in which
sensors are populated. The PlatformIO environment selects which I²C
addresses + ADC channels are scanned.
esp32-1— Watering / interior BME280 + capacitive soil moisture + solenoid valve driver. Lives in the greenhouse, runs the auto-watering loop driven by MQTT commands from the hub.esp32-2— Air quality / interior BME280 + BH1750 + MH-Z19B (CO₂). No actuators. Highest-cadence sampling of the greenhouse atmosphere.esp32-3— Outdoor reference BME280 + capacitive soil moisture for outdoor beds (Zone A, Zone B). Reference signal for the paired-measurement comparison in §3.
DRAFT — config-tables in
esp32/src/config.hare the source of truth; document them inline by 2026-07.
§1.4 · Wiring + power
[Cabling decisions, weatherproofing, what fails when, UPS battery sizing for the hub.] One paragraph each, photo-driven.
DRAFT — annotated photos pending; the rig has been operational since 2026-Q1 but wasn’t documented to publication standard.
§1.5 · Failure modes seen so far
The rig has seen three operationally-significant failure modes since 2026-Q1; each is logged as an incident in §5 and motivates remediation in the alarm system (Phase 5.9 of the personal-OS roadmap).
- 2026-04-23 — INC-001: four-day silent gap. UPS exhausted during
hub power loss; no alarm fired. Remediation:
LIVE-001..004watchdog Lambdas. See/thesis/2026/incidents. - Two further failure modes pending documentation by 2026-07.
Status: structural draft v0.1, 2026-05-07. Citation:
https://plantir.garden/thesis/2026/hardwareis locked per ADR-011. Related ADRs:docs/adr/008-node-architecture.md.