DIY & Open API

Build your own sensors. We'll do the charts.

An ESP32, a soil probe, and a DHT22 are $15 total. Point them at Garden.gg's IoT endpoints and every reading lands on the right plot — no homegrown dashboard needed.

Get Started — It's Free Read the build guide

Three builds, one API

Pick one or stack all three on the same device. The Ecowitt ingest path accepts form-encoded data from anything — including your custom firmware.

Soil moisture node

Capacitive probe on a battery-powered ESP32. Reports soilmoisture1 to your raised bed's plot every 15 minutes. Monthly uptime on two 18650s.

~$10 in parts

Weather node

DHT22 + BMP280 in a screened enclosure. Reports temperature, humidity, and pressure to your outdoor plot. Cheaper alternative to a full Ecowitt stack.

~$15 in parts

Timelapse camera

ESP32-CAM uploads a photo every 15 minutes. Garden.gg's Plot Photo Playlist picks them up automatically — drag the speed slider to play three weeks in ten seconds.

~$12 in parts

Two endpoints, no surprises

Nothing bespoke for DIY — you're using the same endpoints Ecowitt gateways and the core Garden.gg apps use.

POST /i/e/{token}

Ecowitt-format form body — tempf1=…&humidity1=…&soilmoisture1=…. Token is the auth; no headers needed. Great for battery-powered builds.

POST /api/v1/iot/photo

Multipart upload with X-API-Key. Photos land in the plot's gallery and auto-populate the timelapse playlist.

GET /api/v1/iot/plots

Optional. List the user's plots via API key — useful for one-time provisioning scripts that need to discover plot IDs.

What your build gets on the other side

Per-plot temperature, humidity, and soil moisture charts
Free S3-compatible photo storage (5 GB on Sprout)
Variable-speed timelapse playlist on web, iOS, Android
Raw sensor payload preserved for future charting
One device can feed up to 10 plots in parallel
CSV / JSON export of everything you've ingested

Start your build

Arduino sketch and full wiring diagram in the build guide. Free account to get your first device token.