There is a pot of basil on a shelf in the kitchen, 11 centimetres across, and stuck into it is a Zigbee capacitive soil probe of the kind that costs less than the basil. It reports moisture as a percentage, temperature from a head that sits above the soil rather than in it, and a battery figure we have learned to ignore, because the cells are NiMH and read about a third full when they are new. This is the story of what happened when we finally poured a known amount of water into that pot and watched the number.
The plumbing around it is modest. A slider holds a dryness threshold; a template binary sensor goes on when the moisture has been under the slider for six hours; an automation then sends one reminder to the phone and the desk machine at 19:00 every evening until somebody waters the thing, or straight away if the plant crosses the line between seven and ten at night, on the grounds that waiting for tomorrow's 19:00 would be a long time to be a basil.
Seventy grams, one probe, two hours
The pot had been at 8 percent since mid-morning. At 21:43 we poured in 70 grams of water, weighed, and the probe did the following. The reading in the second the water went in was 69. A minute later, 45. Nine minutes after that, 48. Then 59, then 66, then 70, and at 23:53, two hours and ten minutes after the pour, 71. It gained one more point overnight, peaked at 73 the next morning, and then began the slow slide of a plant drinking.
So the first reading is a spike, because water is running past the probe on its way down. The second is a trough, because the water has gone below it. The truth arrives over the next two hours, as the peat wicks it back up to the probe's level. Anyone who reads the sensor in that first hour is reading low, by as much as twenty-five points, and the one figure that looks about right, the 69 in the first second, is right by accident: that is water falling past an electrode, not water in soil.
The calibration that came out of it: 8 to about 72 is 64 points for 70 grams, so roughly 1.1 grams of water per percentage point in this pot. Almost certainly not linear across the whole range, which means a few more weighed waterings before we trust it anywhere but the middle.
Two things we got wrong the same evening
We wrote the calibration down after the one-minute reading. 8 to 45, 37 points, 1.9 grams a point, neatly entered and completely wrong. It took until the next day and the whole curve to replace it with the number above.
Worse, we predicted the direction. An older note said that after watering the pot reads about 60 and settles to about 35, so when the probe showed 45 we confidently expected it to drift down. It went up. The older note was true; it just described settling over days, as the plant drinks and the surface dries, not over the hours it takes water to wick sideways. Two time scales, one word, and we had mixed them.
The mistake was timing, not dose
With the pour understood, the dose was easy to check. The pot is 11 centimetres across the rim and 9 deep, tapering towards the base, which comes to about 0.52 litres of soil once you leave a finger's width at the top. Peat holds roughly 235 millilitres of that at field capacity, the water still in it once free drainage has stopped. Seventy grams is about a third of that: a moderate drink, not a soaking to the drainage holes, which would take 120 to 150 millilitres and rinse the nutrients out of the pot, and about right for basil on a shelf with no saucer under it.
So we looked at when we had been watering instead, and there the news was worse. One drying cycle sat in the recorder end to end, 66 percent to 8 in 3.4 days from the pour, an average of about 0.7 points an hour. It passes 30 on the second day, sags gently from 26 to 21 over the next two, and then falls off the edge: 21 to 8 in a single morning.
The threshold was 16 percent, with the six-hour delay on top, so the flag came on in the middle of the fourth afternoon and the automation, which only speaks at 19:00, spoke at 19:00. That is about 3.8 days after watering, by which time the pot had been sitting at 8 percent for nine hours. Basil does not put up with this; it wilts, drops its lower leaves and looks at you. The threshold is now 30, which the pot crosses at about 1.4 days, which becomes a flag six hours later and a message at the next 19:00: roughly 1.8 days after watering, a rhythm of about every two days, and a pot that lives between 30 and 70 instead of visiting 8. At 1.1 grams a point, a top-up from 30 back to 70 is about 45 grams, so the 70 was a test pour into a pot that had gone much too far down. A slider, one afternoon, entirely reversible. Picking a threshold from your own history rather than your own feelings is the standing advice; this is what ignoring it cost one plant.
A chart that proved nothing, correctly
We wondered whether the kitchen air had anything to do with how fast the soil dried, so we put a week of soil moisture next to the humidity from the kitchen air sensor, the one that detects cooking, and looked. Two clean drying runs, with the waterings cut out along with the minutes where the probe was pulled out, pushed back in and briefly reported zero: one dried at 1.98 points an hour in air averaging 58.1 percent humidity, the other at 0.95 an hour in air at 58.9. Both were measured over the steep stretch in the first day after a watering, where a pot sheds points several times faster than its cycle average. The air was the same to within a point, and the soil dried twice as fast.
Then the trap. A plain Pearson correlation over the raw hourly levels, 78 samples, comes out at about minus 0.35, which looks like a finding. It is an artefact. Soil moisture is a sawtooth: a jump at each watering, a straight slide after. Kitchen humidity is a daily wobble around a mean. Correlating a ramp with a wobble tells you when the plant was watered and nothing about physics. The honest test is drying slope against humidity in the same window, and it needs more waterings and some days on which the kitchen humidity actually varies, since so far it has sat at 58 to 59 percent and declined to provide any variance to correlate with. The chart stays on the tab with a paragraph beneath it saying exactly this, a small monument to the number that was not.
Six pots, one pump, and what we would have to promise
This section was written before any of it existed. The plan below is the one we held ourselves to; what we actually built, and how it has behaved since, follows further down.
One pump, six pots, and no way to give any of them a different day. So the pump sets the rhythm for everyone and the drippers argue about portions. The rhythm belongs to the thirstiest plant, which is the basil: its probe calls for a run when it reads under about 35, settled. Basil wants about 22 grams a day and rosemary about 7, so the rosemary's dripper is pinched to a third of the basil's. The other four pots sort into the two classes, thirsty (parsley, mint) on the basil setting and dry (thyme, sage) on the rosemary's, and are watered on trust. A covered five-litre reservoir at about 90 grams a day lasts some eight weeks.
Rosemary is not basil with less water. It does not die of drought, it dies of wet roots, so it gets a gritty mix, about a third perlite, and a lower threshold of its own, 20 to 25 percent, on its own slider, since a capacitive probe reads lower in grit than in peat. Much the same dose as the basil, 40 to 45 grams against its 40 to 50, every five to seven days rather than two. And its probe is not a trigger but a tuning instrument and a veto: if its low point just before a run never dips under 25, the dripper is too open, and it only vetoes a run outright above 55, because a veto starves the basil. "Too often for rosemary" was always going to mean "never dries out" rather than "every other day".
Seven safeguards, then, because a pump on a smart plug without them is a description of a flood. The rules for automations that must never be wrong already say most of this in the abstract; a pump is what they look like with water in them. A level-triggered watchdog kills the plug after 90 seconds, whatever the watering automation thinks and whatever a restart forgot. A three-hour lockout after any run, because we now know the probe drops to 45 a minute after a pour and is still climbing an hour later, and anything reading that trough would cheerfully pour again. An outcome check two and a half hours later: the basil is up ten points, or the automation disables itself and says why, whether that is an empty tank, a blocked line or a dead pump. And the plug set to power on off, since our other plugs come back exactly as they were, and a pump that was running when the lights went out would still be running when they came back. The other three are in the file: staleness, since a probe that speaks every five minutes and has said nothing for ninety looks exactly like a probe with good news; one run a day; and a check valve, so the tank cannot siphon itself into the basil overnight without the pump's involvement at all.
Seventy grams of water taught us most of that list. The rest we would rather learn from the list than from the shelf.
Built, with a brake
The pump exists now. It sits on a plug with a hardware timer, so that if the software dies mid-watering the plug switches itself off anyway, which is the only kind of promise a pump should be allowed to make. Two minutes is about sixty grams. The basil's probe decides when; a sensor in the drip tray decides whether anything is allowed to happen at all, and locks the pump the moment it sees water where water should not be. Two and a half hours after every run a checker asks the probe whether the water actually arrived, because a pump that runs is not the same thing as a plant that drinks.
The rosemary got the second dripper and has used it to demonstrate that a line can be perfectly connected and deliver nothing. Its probe has read zero for weeks, the line is blocked somewhere between the splitter and the pot, and nobody is home to look. The basil, meanwhile, is watered every two or three days by a machine that has locked itself exactly once, at the wrong moment, for the reasons described among the traps. Every run, every check and every lock is now logged, with the moisture of both pots and the temperature of the room, so that when we finally sit down to ask why one pot drinks twice as much as the other, the answer is already written down.