Plantelli

Autonomous Garden, Build & Sourcing Guide

Phase 2 → 3  Self-watering, self-feeding, permission-based · target under $250 · Edmonton, layman-friendly

This turns your garden into a closed loop. It measures soil moisture and the local weather, works out what each bed needs, asks your permission by phone, and then waters or doses liquid fertilizer on its own once you tap yes. It bolts onto what you already have (the watering engine, the Open-Meteo feed, and the Phase-2 sensor contract in hardware/SENSOR-SPEC.md). No electronics background needed, and nothing here needs soldering.

The golden rule of budget: start with one ESP32 + two soil sensors + one valve + the fertilizer pump on your two thirstiest beds. Prove it for two weeks, then add sensors/valves a bed at a time. The full starter kit below lands around $154 CAD from AliExpress, well under $250, with headroom for shipping and a spare part or two.

01How the self-maintaining loop works

Five stages run on a timer (every 30 minutes) plus a daily “feeding check.” You stay in control because nothing actuates without your approval (you can later flip individual beds to fully automatic once you trust it).

1 · Sense
Soil + airCapacitive probes read each bed’s moisture; a BME280 reads air temp/humidity.
2 · Decide
+ weatherReadings combine with Open-Meteo rain, ET₀ and frost, the same math as scripts/watering.py.
3 · Notify
Ask youPhone alert: “Bed B3 dry (18% VWC), no rain 48 h, water 6 min?” with Approve / Skip.
4 · Act
On approvalThe ESP32 opens that bed’s valve, or runs the dosing pump from the fertilizer tank, for a computed time.
5 · Log
RecordThe action is written back so the dashboard’s treatment log stays accurate.

It already knows your plants’ needs (the dashboard has per-bed weekly_mm targets and feeding intervals), so a dry reading on a drought-tolerant bed won’t trigger the same alert as a dry reading on the squash.

02What it costs, the bill of materials

Prices are approximate CAD for the cheapest reliable sourcing (AliExpress). Buying the same parts on Amazon.ca for next-day delivery typically adds 30-45%. This is a 2-bed starter that waters two beds and doses fertilizer to the drip line.

PartWhat it doesQty~CAD
ESP32 dev board (WROOM-32)The brain, Wi-Fi built in, runs the whole thing1$10
Capacitive soil moisture sensor v2.0One per bed. Capacitive, not resistive (resistive corrodes in a season)3$15
BME280 temp/humidity/pressureLocal microclimate + a second frost signal1$6
4-channel relay module (5V, opto-isolated)Switches the valves & pump. Inductive loads never touch the ESP32 directly1$8
12V solenoid valve ½″, normally-closedOne inline per watered bed; closed = no water if power fails2$26
12V peristaltic dosing pumpDraws diluted liquid feed from the tank into the drip line1$18
12V 3A power supplyPowers valves + pump1$15
12V→5V buck / USB converterPowers the ESP32 from the same 12V supply1$4
IP65 enclosure + cable glandsKeeps the electronics dry outdoors1$14
Drip tubing, emitters, fittings½″ mainline + ¼″ to each plant1 kit$30
Flyback diodes, terminal blocks, wireProtect relays from coil kickback; tidy connections1$8
Fertilizer tank (reuse a 10-20 L jug/pail)Holds the diluted liquid feed (e.g. your Miracle-Gro at ¼-½ strength)1$0
Estimated total (AliExpress)$154

Optional upgrades: swap bare sensors for DFRobot Gravity IP65 “waterproof” capacitive sensors (~$11 ea) for multi-season outdoor durability; add an 18650 + small solar panel (~$12) if you can’t run a power cable; a flow meter (~$8) to confirm water actually moved.

Where to buy (Edmonton)

ChannelBest forTrade-off
AliExpressESP32, sensors, relay, valves, dosing pump, cheapest by far2-4 week shipping
Amazon.caSame parts, fast; “capacitive soil moisture 5-pack”, “12V solenoid valve ½ inch”, “12V peristaltic pump”~30-45% more
RobotShop.ca / ABRA Electronics / DigiKey.caCanadian-stocked ESP32, BME280, quality connectorsMid-price, reliable
Lee Valley (Edmonton) / Canadian Tire / Home DepotDrip tubing, emitters, 12V supply, hose fittings, the tank/pailIn-person today

03The two control options (software is free)

Path A, Home Assistant + ESPHome recommended

Best fit because your spec already assumes an always-on machine running an MQTT broker. Home Assistant (HA) is free and runs on a spare PC, a Raspberry Pi, or that always-on Mac.

  • Flashing is codeless: ESPHome has a browser “web installer”, plug the ESP32 in by USB, click install.
  • Approval notifications: the HA Companion app (iOS/Android, free) sends actionable notifications with real buttons, Water now / Skip. Tapping a button runs the automation.
  • Weather built in: HA’s Open-Meteo/Met.no integration gives rain & frost; you gate watering on it exactly like the dashboard.
  • Local & private: no cloud account required.

Cost if you already have an always-on computer: $0. A dedicated Raspberry Pi adds ~$60-110 (keeps you near budget only if you skip it / reuse hardware).

Path B, Blynk (no extra computer) cheapest

If you have no always-on machine, run the ESP32 with a small Arduino sketch and the free Blynk app.

  • No host: the ESP32 talks to Blynk’s free cloud directly.
  • Approval: Blynk push notification + a button widget you tap to confirm watering/feeding.
  • Weather: the ESP32 fetches Open-Meteo over Wi-Fi itself (no key) and applies the same rain/frost skip.
  • Trade-off: free tier limits datastreams/devices; less powerful dashboards than HA.

Cost: $0 software, nothing extra to buy.

04Build it, step by step

A · Bench-test indoors first (30 min)

  1. Plug the ESP32 into your computer by USB.
  2. Wire one capacitive sensor: VCC→3V3, GND→GND, signal→an ADC pin (e.g. GPIO34).
  3. Flash ESPHome via the web installer (Path A) or upload the Blynk sketch (Path B).
  4. Confirm a moisture number appears: dry in air = low %, finger-wet = high %.

B · Calibrate each sensor (10 min each)

  1. Hold the probe in air, record the raw reading = 0% VWC.
  2. Stand it in a glass of water to the line, record the raw reading = 100% VWC.
  3. Enter both numbers so the firmware maps linearly. The watering engine’s thresholds are <20% = water now, 20-30% = water soon, >30% = skip (loam; recalibrate against a finger-test on clay beds).

C · Wire the valves & pump through the relay

  1. Mount the relay board in the enclosure. ESP32 control pins → relay IN1..IN4.
  2. Run the 12V supply through each relay’s COM→NO to one valve or the pump. Never drive a valve or pump from an ESP32 pin, they pull amps and will fry it.
  3. Put a flyback diode across each valve/pump coil (stripe to +12V) to absorb the kickback when it switches off.
  4. Power the ESP32 from the 12V supply via the buck/USB converter, so it’s all one plug.
  5. Seal cable entries with the glands; keep the enclosure off the ground.
Low-voltage only. This whole system is 12V DC, safe and the right choice outdoors. Plug the 12V adapter into a GFCI-protected outdoor outlet. Do not switch mains-voltage pumps with this.

D · Plumb the water

  1. Tap a garden tap or rain barrel → a pressure regulator (drip kits include one) → ½″ mainline.
  2. Put one solenoid valve inline per bed, then ¼″ tubing with emitters to each plant.
  3. If you have no tap pressure (barrel only), add a small 12V diaphragm pump (~$18) on its own relay channel.

E · Add the liquid-fertilizer tank

  1. Fill the tank with pre-diluted liquid feed, e.g. your Miracle-Gro 24-8-16 mixed to ¼-½ the normal strength so the pump can run it straight.
  2. Peristaltic pump inlet hose → bottom of the tank; outlet → a tee into the drip mainline (after the valve).
  3. The pump is self-priming and only the silicone tube touches the fertilizer, so it tolerates the salts well.
  4. On a feeding day the loop opens a bed’s valve, runs the pump for N seconds (dose = your per-plant rate), then flushes with plain water.

Cheaper, non-electric alternative: a venturi injector ($10-20) draws fertilizer by suction from the tank using water flow, no pump, no power, but it isn’t precisely dose-controlled and needs a pressure drop. The peristaltic pump is the right call for software-controlled dosing.

F · Turn on the brain

  1. Path A: in Home Assistant, add an automation: if bed VWC < threshold and no rain in next 48 h and no frost tonight → send an actionable notification. The Water now button calls the valve switch for the computed seconds.
  2. Path B: the sketch posts the same decision to Blynk and waits for your button tap.
  3. Set a separate daily feeding check that proposes a dose when a plant’s feeding interval is due (the dashboard already tracks this).

05The decision logic (so it’s never dumb)

06Safety & winterizing (Edmonton)

07Scaling & staying in budget

The $154 starter covers 2 beds. Each additional bed is just +1 sensor (~$4) and +1 valve (~$13) on spare relay channels, roughly $17/bed. One ESP32 comfortably handles 3-4 sensors and a 4-channel relay; a second ESP32 (+$10) and an 8-channel relay (~$10) take you to a fully wired multi-bed garden still under $250.

Reality check: exact prices drift with the market and shipping. Treat the totals as a tight estimate, confirm current listings on AliExpress/Amazon.ca before ordering, and buy one spare sensor, they’re the part most likely to need replacing.

08Sources

Current pricing, wiring practice, and the control/notification approach were drawn from: