The most honest irrigation signal is weight: a pot gets lighter as the plant drinks. This node weighs a pot on a load cell, reports water use as a drydown slope, and runs a local weigh-and-water loop; the watering decision lives entirely on the device.
What it does.
Weighs a pot or basket on a load cell (via an HX711), emits weight and water-use as oat-ods, and runs a local weigh-and-water loop: one cheap build, two signals and an irrigation trigger.
That’s the Collect layer for one more kind of sensor: it reads the instrument, shapes each reading into the one oat-ods message every Open Agriculture Technology device speaks, and pushes it to a place you own. The value is what you do with the reading later; this just gets it flowing.
What it reads.
Each reading goes out as its own oat-ods message, filed under the place you name, so swapping the hardware later never breaks the record:
What you need.
Wiring. The HX711’s DOUT and SCK go to two GPIOs (default 16 / 17), plus VCC / GND; the load cell’s four wires go to the HX711. The valve / pump sits on the relay GPIO (default 25), usually a 12 V solenoid on its own supply, separate from the ESP32. Set “active high” to match your relay module.
What it sends.
It pushes to wherever you point it (Webhook (HTTP POST) or MQTT) as
oat-ods/0.3. One measurement per message; here’s a reading from this node:
{
"schema": "oat-ods/0.3",
"observed_at": "2026-06-25T14:30:00Z",
"stream": { "id": "bench3-pot", "name": "…", "location": "…" },
"measurement": "weight",
"value": 1840,
"unit": "g",
"source": { "tier": "oat-loadcell-water", "gateway_id": "…", "physical_id": "hx711:bench3" }
}
That’s the same envelope the whole library speaks. Point it at your webhook, an Home Assistant broker, or Open Agriculture Technology; the receiver can’t tell which node produced it. The developer reference has the full spec.
Get it & build it.
The project downloads whole: the sketch plus the shared oat_ods library it needs, so it
builds as-is:
Full PlatformIO project (.zip) Just the sketch (.ino)
Two ways to put it on a board, both free:
- PlatformIO (builds all four ESP32 chips): unzip, then
cd oat-loadcell-water && pio run -t upload. The bundledlib/oat_ods/resolves automatically. - Arduino IDE: open the
.ino, install the libraries below from the Library Manager, pick your ESP32 board, and upload.
Compile-verified on our side (it builds clean with the pinned toolchain), but not yet run on the bench with real sensors, so it ships as source rather than a browser image. If you run it, tell the collective how it went; that’s what turns it into a flash-from-browser sketch.
Set it up.
Setup happens on the device’s own page: nothing to install, works with no internet:
- Power the node from any USB charger or your computer.
- Join its Wi-Fi network
OAT-LoadCell-XXXX, and the setup page opens (or visithttp://192.168.4.1). - Sign in, set your Wi-Fi, where the readings go, and the sensor details above, then save.
- Point delivery at the test endpoint and watch your first reading arrive, checked against the standard.
Settings persist across reboots; a fresh flash wipes them, on purpose, so a re-used board never carries the last owner’s Wi-Fi or endpoint.
Notes.
- Calibrate on the live-status page: empty the cell and Tare, then put a known weight on and Set scale with its grams.
- Weight gives two signals from one cheap build: the current weight and the drydown slope (water use) between samples.
For makers & trainers.
Frequently asked questions.
Can you automate watering without a cloud service?
Yes. A microcontroller can weigh a pot, decide when it is light enough to water, and switch a valve entirely on the device, with no internet involved. Safety comes from local rules: the relay starts closed, each watering has a hard time cap, a cooldown prevents rapid cycling, and it acts only on a valid calibrated reading. Readings are still sent out for monitoring, but the decision never depends on the network.
How do you measure how much water a plant uses?
Weigh the pot over time. As the plant transpires and the medium dries, the pot gets lighter; the rate of weight loss (grams per hour) is a direct measure of water use. A load cell with an HX711 amplifier on a microcontroller gives the weight, and the slope between readings gives the drydown rate.