Root-zone state estimation with the TEROS-12 sensor
A TEROS-12 capacitance probe measures three things in your pot. This guide explains what each number means, why the raw reading is not the truth, and how to turn it into safe irrigation decisions.
What this is, and who it's for
A TEROS-12 is a small probe you bury in growing media: coco, rockwool or soil. It reports three things down a single digital wire: how much water is in the media, how salty that water is, and the temperature. This guide explains, from zero, what each of those numbers means, how the probe arrives at them, and why you should never wire the probe straight to a valve.
A single probe is one noisy local witness. It samples a roughly 1010 mL pocket of one pot, not the whole zone.[8] Everything that follows turns that one local, uncertain reading into a number you can actually steer irrigation on.
- The TEROS-12 reports volumetric water content (VWC), bulk electrical conductivity (EC) and substrate temperature over a digital protocol called SDI-12.
- Its ‘volume of influence’ is only about 1010 mL of media around the prongs. It sees one local spot, not the average of a tray or a zone.
- The goal is to convert that noisy local reading into a trustworthy estimate of stored water, with the uncertainty stated openly rather than hidden.
- No prior knowledge of soil sensors is assumed. Every term is defined the first time it appears.
This is for anyone putting a moisture probe in a pot who wants to steer on it honestly. It pairs with the smart watering (VWC/EC) guide and the coco crop-steering paper.
Accuracy, self-review, and grain-of-salt notes
We've gone to great lengths to keep these guides honest. One of the main ways we do that is self-review: we actively look for claims that are subjective, only lightly backed by literature, or based on grower practice rather than a controlled study, and we call those out instead of dressing them up as settled science.
Often there simply is no paper for the decision you're making. In those cases we're drawing on what other growers report and what has worked in our own rooms. That can still be useful, but it is not a lab proof. Do what works for your plants, your room, and your meters. If a table disagrees with your crop, believe the crop and log the difference.
- Capacitance probes estimate VWC via permittivity; media calibration matters
- Pore-water EC estimation has real limits (Hilhorst-class caveats)
- Install depth, volume of influence, and multi-pot placement habits
- Manufacturer accuracy specs as guaranteed on every uncalibrated pack
See something glaringly wrong? Tell us and we'll fix it. Please open a GitHub issue with the paper name and what looks off (include a source if you have one): Report an accuracy issue. Local law, labels, and licences always override any recipe here. Inline notes labelled grain of salt flag the highest-risk over-trust points in the text.
Key terms, defined once
Here is the small set of words this whole field hangs on. You don't need to memorise them. Each one comes back in context.
How the probe turns an electric field into a water number
The TEROS-12 is a capacitance probe. Its prongs create a high-frequency electric field in the surrounding media and measure how strongly the media stores that field, which is its permittivity. Because water's permittivity (~80) towers over dry media (~3–5) and air (~1), the bulk permittivity rises steeply and predictably as water content rises. That makes permittivity a stand-in for VWC.[1]
The sensor then applies a calibration equation (a generic mineral-soil curve by default) to map measured permittivity to a VWC number, reporting it to 0.001 m³/m³ resolution. The catch is baked in from the start: that mapping is media-specific, and the generic curve is only good to ±0.03 m³/m³.[8]
- Capacitance and permittivity are the physical quantity. VWC is a derived, calibrated estimate sitting on top of it.
- The permittivity-to-VWC curve is nonlinear, especially near saturation, where the response flattens and can fake a ‘full’ reading.
- Substrate temperature is read as a useful output and because temperature shifts the dielectric response, a known effect that can masquerade as a water swing.[4]
- The probe outputs over SDI-12. A stale, NaN, or railed value (pinned at 0 or full-scale) is a hardware fault, not data.
Calibration: why the default number lies a little
Out of the box the TEROS-12 uses a generic mineral-soil calibration, which makes VWC accurate to only ±0.03 m³/m³. A substrate-specific calibration for your exact coco or rockwool tightens that to ±0.01–0.02 m³/m³.[3] That difference is not academic. Crop-steering dryback windows are often narrower than the ±0.03 generic error band, so steering on uncalibrated VWC means steering inside the noise.
A worked headroom example shows the consequence directly. A naive 256 mL of ‘room to water’ shrinks to a safe ~109 mL once you account for ±0.02 accuracy, and to just ~54 mL under the generic ±0.03. Same pot, same probe. The only thing that changed is how honestly you treat the error band.[7]
| Calibration type | VWC accuracy | Resolution | Tight steering? |
|---|---|---|---|
| Generic mineral (default) | ±0.03 m³/m³ | 0.001 m³/m³ | No. Error wider than dryback window |
| Substrate-specific | ±0.01–0.02 m³/m³ | 0.001 m³/m³ | Yes. Required for tight steering |
Calibration corrects an additive offset, but gain error and nonlinearity near saturation persist and do not cancel out in later math. Treat substrate-specific calibration as mandatory for tight steering, not optional, and still respect the residual error.
What EC tells you, and what the probe cannot see
The TEROS-12 measures bulk EC, the conductivity of the whole wet-media mixture, 0–20000 µS/cm. What growers care about is pore-water EC: the salt concentration in the solution actually touching the roots. You get pore-water EC by combining bulk EC, VWC and temperature through the Hilhorst (2000) model.[2]
That model is genuinely useful, but it is parameter-sensitive at roughly ±20% and unreliable below VWC 0.10 m³/m³, where it should not be used at all. The deeper limit is representativeness. The probe integrates one ~1010 mL spot, so channeling, dry pockets, or poor probe-to-media contact can make a perfectly healthy probe report a number that is simply not true of the zone.[3]
- Bulk EC is the raw measurement (0–20000 µS/cm). Pore-water EC is the derived quantity the roots experience.
- Hilhorst (2000) converts bulk EC + VWC + temp to pore-water EC, but is ~±20% sensitive and invalid below VWC 0.10 m³/m³.[2]
- Representativeness fault: the probe can be fine while its 1010 mL is not representative of the zone (channeling, air gap, pulled probe).
- The sensor cannot see per-pot runoff, effective substrate volume (it shrinks as roots grow), or whether a commanded irrigation shot was truly delivered.
| The probe CAN see | The probe CANNOT see | Workaround |
|---|---|---|
| VWC (local spot) | True zone average across pots | Multiple probes, a cohort model |
| Bulk EC | Per-pot runoff volume | Runoff trays / drain sensors |
| Substrate temperature | Effective substrate volume (shrinks with roots) | Periodic re-learning of DUL |
| Derived pore-water EC | Whether an emitter actually fired | Flow meter or load-cell weight jump |
Using it to steer irrigation, step by step
The practical recipe is one demotion and one promotion. Demote the raw VWC reading from ‘truth’ to ‘one noisy witness with a confidence score’. Promote a small running water-balance model that holds the belief about stored water and is only nudged by trusted readings.
You track dryback (the VWC fall between shots), watch specific yield (S = change in VWC per delivered mL) to sense when the pot is filling, and anchor your ceiling on the observed DUL rather than a guessed number. Steer on derivatives, the shape and slope of the dryback, more than the absolute level, because trends shrug off additive calibration error[6]. Never act on a derivative alone without a second witness such as runoff timing or pot weight.
- 1Calibrate to your substrateSubstrate-specific calibration is mandatory for tight steering. Without it you steer inside the error band.
- 2Verify probe contact and positionGood media contact and a fixed, representative spot. A loose probe reports its air gap, not your root zone.
- 3Learn this pot's DULAnchor the ceiling on ~5 corroborated runoff/weight events, not one, and prefer water-volume space over a raw VWC number.
- 4Steer on shape, gated by safe headroomAct on dryback slope and specific yield, bounded by a lower-confidence headroom estimate, not the naive point estimate.
- 5Require a second witnessRunoff onset or load-cell mass must confirm before any signal moves a valve. The reading never reaches the valve alone.
Troubleshooting and pitfalls
Most TEROS-12 disappointments are not the sensor breaking. They are the sensor being believed when it shouldn't be. Make the first distinction clearly. A wrong reading (the probe is fine but its 1010 mL isn't the zone) is a representativeness fault that should lower your trust in absolute VWC. A railed, flatline, NaN or stale value is a hardware or cable fault that should stop you acting entirely.
Watch for VWC that tracks the daily substrate-temperature swing. That is a contact or calibration artifact, not a real storage change[5]. Watch for wetting-versus-drying paths that diverge abnormally (channeling or hydrophobic media), and for one pot that drifts away from its identically-treated siblings (a dud probe or blocked emitter).
Temperature and EC should move your trust in the reading, never the stored-water number directly. A diurnal-temperature artifact can drive a real dielectric shift in dry media that mimics a water change[4]. If you let it write VWC, you will chase ghosts.
| Symptom | Likely cause | What it is NOT | Response |
|---|---|---|---|
| VWC railed / flatline / NaN / stale | Hardware or cable fault | Real water reading | Stop steering. Run a bounded safe routine. Page a human |
| VWC swings with diurnal temp | Poor contact / cal artifact | A real water change | Down-trust absolute VWC; check contact[5] |
| Wetting vs drying diverge oddly | Channeling / hydrophobic media | Sensor failure | Inspect media; re-wet; check probe seating |
| One pot unlike its siblings | Dud probe or blocked emitter | A plant problem (yet) | Inspect emitter and probe before blaming the plant |
Never let one manual reading or a single human observation hard-write your capacity anchor or override a safety interlock. Anchors earn their place from corroborated events, not from one good look.
Realistic expectations
A single TEROS-12 will not give you a per-zone, ground-truth picture of your root zone, and treating it as one is the most common and most expensive mistake. With substrate-specific calibration you can realistically resolve dryback trends and approximate stored water to about ±0.01–0.02 m³/m³ in the spot the probe occupies. That is good enough to steer if you account for the uncertainty and cross-check it.[3]
- Best case with calibration: trustworthy dryback shape and ~±0.01–0.02 m³/m³ stored-water estimate for the probe's local spot.
- Not achievable alone: per-zone runoff, delivery verification, or a true zone average across pots.
- A load cell (pot weight) is the highest-value add-on because it is the one measurement that does not route through dielectric physics.
- Expect, and design for, explicit ‘I cannot tell’ outputs rather than false precision. Control authority should be earned, not assumed.
The mature stance is to demand that the system say when it cannot tell, rather than emit a confident number it has not earned. Get the probe calibrated, add one independent witness, and read the smart watering (VWC/EC) guide for how those signals drive shots, and the signal-and-noise paper for separating a real trend from sensor noise.
Building the same measurement yourself
Everything above is about the measurement, not the badge on the probe. The TEROS-12 is the reference instrument, and it is worth the money if you need one thing you can trust absolutely. But the conversion from raw sensor counts to water content is published in the METER manual,[8] and several probes on the market answer the same SDI-12 protocol and return the same raw counts. If a probe returns TEROS-12 counts, the METER equations apply to it directly, with no reverse engineering.
That is the basis of an open-source node that reads one of these probes on a small ESP32, runs the whole conversion on the device, and serves the result on its own web page. The code, wiring diagrams and the full calibration procedure are published.[9] This section covers what that build gets you and, more importantly, where it does not let you off the hook.
Building your own changes the price of a reading and who owns the data. It does not change the physics. A cheap probe in the wrong spot is still one noisy local witness, still needs substrate-specific calibration, and still deserves a second witness before you act on it. Every caution in this paper applies to a DIY node exactly as written.
The equations, written out
This paper has so far described the conversion without giving you the coefficients. Here they are. R is the raw calibrated count the probe reports, roughly 1800 in air and 3600 in water. Output is in m³/m³, so multiply by 100 for a percentage.
| What you want | From raw counts |
|---|---|
| VWC, soilless media | θ = 6.771e-10·R³ − 5.105e-6·R² + 1.302e-2·R − 10.848 |
| VWC, mineral soil | θ = 3.879e-4·R − 0.6956 |
| Apparent permittivity | εa = (2.887e-9·R³ − 2.080e-5·R² + 5.276e-2·R − 43.39)² |
| Pore water EC (Hilhorst) | σp = εp · σb / (εb − ε0), with ε0 = 4.1 |
| Pore water permittivity | εp = 80.3 − 0.37·(T − 20), T in °C |
The temperature term in the last row matters more than people expect. Leaving εp as a fixed 80.3 quietly biases pore EC as substrate temperature drifts across the day, which is exactly the kind of artefact that masquerades as a real root-zone change.[4]
Handling the dry end, where Hilhorst gives up
Earlier this paper flagged that the Hilhorst model is invalid below about 0.10 m³/m³.[2] That is not a rounding problem. As the media dries, the denominator εb − ε0 collapses toward zero and the computed pore EC runs away, which is where the 50 dS/m spikes and the sudden blank readings come from.
The practical fix is to stop pretending one model covers the whole range. Use Hilhorst while the media is wet, fall back to a simple mass balance (σb divided by water content) while it is dry, and cross-fade between them across a window you set for your substrate. The open node defaults to blending between 40–60 % VWC in rockwool and lower in coco. You get a pore EC number that stays continuous through a full dryback instead of going ragged at the bottom.
Cross-fading removes the spikes, which makes the number usable for logging and alerts. It does not make pore EC in dry media accurate. Hilhorst is roughly ±20 % at its best and worse at the edges. Treat dry-end pore EC as a trend, not a measurement.
What the probes actually cost, and who makes them
The TEROS-12 protocol clones are mostly built by one Chinese OEM and sold under several names. The Infiwin MT22A is protocol-compatible with the TEROS 12, the MT22B with the TEROS 11, and the MT20A with the older Decagon 5TE.[10] Knowing that is worth real money, because the same measurement is sold across a wide price range.
| What you buy | Roughly | What the money buys |
|---|---|---|
| TEROS-12 protocol clone | 60–150 USD | The measurement. Expect unit-to-unit variance, calibrate each one |
| Genuine METER TEROS 12 | 300–370 USD | Tight consistency, rugged build, calibration backed by published work |
| Own-brand substrate probe | ~300 USD | Vendor support and a supported ecosystem |
| Platform sensor plus subscription | 550 USD and up, plus monthly | Managed software, dashboards, someone to call |
None of that makes the expensive options a rip-off. A commercial room buying support and a warranty is making a reasonable trade. But if you are a grower who wants ten sensors instead of two, the clone plus an open node is how you get there, and the measurement underneath is the same one this paper describes.
Colour codes are not consistent between brands, and the usual assumption is wrong on at least one common probe. On the Infiwin MT22 the red wire is the SDI-12 data line, not power, white is power and bare is ground. On a METER TEROS 12 it is orange for data and brown for power. On a Growlink TerraLink M8 lead, red is 12 V and white is signal. Only bare-is-ground holds across all three. Wire by habit and you put supply voltage straight onto a data pin.
Where a DIY node genuinely helps
The honest case for building your own is not that it measures better, because it does not. It is that cheap sensors change what you can afford to do:
- More witnesses. This paper keeps insisting on a second witness. That advice is much easier to follow when a probe costs less than a bag of coco. Three cheap probes in one room, cross-checked, beat one expensive probe treated as gospel.
- The derived numbers come for free. Dryback since the last peak, dryback rate, shot detection, EC stacking against pore EC at field capacity and a drained-upper-limit estimate learned from the running peak can all be computed on the device, which is the shape-of-the-curve steering this paper argues for.
- Your data stays yours. Local web page, MQTT, CSV, or a Home Assistant integration, with no cloud account and nothing to renew.
What it does not do is remove the work. You still calibrate to your substrate, you still verify probe contact, you still learn your own drained upper limit over several corroborated events, and you still refuse to act on a derivative without a second witness. A cheap sensor makes those steps cheaper to repeat. It does not make them optional.
References
- Topp, G. C., Davis, J. L., & Annan, A. P. (1980). Electromagnetic determination of soil water content: Measurements in coaxial transmission lines. Water Resources Research, 16(3), 574-582. https://doi.org/10.1029/WR016i003p00574
- Hilhorst, M. A. (2000). A Pore Water Conductivity Sensor. Soil Science Society of America Journal, 64(6), 1922-1925. https://doi.org/10.2136/sssaj2000.6461922x
- Fragkos, A., Loukatos, D., Kargas, G., & Arvanitis, K. G. (2024). Response of the TEROS 12 Soil Moisture Sensor under Different Soils and Variable Electrical Conductivity. Sensors, 24(7), 2206. https://doi.org/10.3390/s24072206
- Nasta, P., Coccia, F., Lazzaro, U., Bogena, H. R., Huisman, J. A., Sica, B., Mazzitelli, C., Vereecken, H., & Romano, N. (2024). Temperature-Corrected Calibration of GS3 and TEROS-12 Soil Water Content Sensors. Sensors, 24(3), 952. https://doi.org/10.3390/s24030952
- Kapilaratne, R. G. C. J. & Lu, M. (2012). Correcting the Temperature Influence on Soil Capacitance Sensors Using Diurnal Temperature and Water Content Cycles. Sensors, 12(7), 9773-9790. https://doi.org/10.3390/s120709773
- Tavan, M., Wee, B., Brodie, G., Fuentes, S., Pang, A., & Gupta, D. (2021). Optimizing Sensor-Based Irrigation Management in a Soilless Vertical Farm for Growing Microgreens. Frontiers in Sustainable Food Systems, 4, 622720. https://doi.org/10.3389/fsufs.2020.622720
- Nemali, K. S. & van Iersel, M. W. (2006). An automated system for controlling drought stress and irrigation in potted plants. Scientia Horticulturae, 110(3), 292-297. https://doi.org/10.1016/j.scienta.2006.07.009
- METER Group, Inc. (2023). TEROS 11/12 User Manual & Specifications. METER Group, Pullman, WA. (industry/manufacturer or non-journal source) https://metergroup.com/products/teros-12/
- Isdale, B. (2026). TDR-Sensor: an open-source ESPHome SDI-12 substrate sensor node for crop steering. GitHub. (industry/manufacturer or non-journal source) https://github.com/JakeTheRabbit/TDR-Sensor
- Dalian Endeavour Technology. MT22 SDI-12 Soil Moisture, EC and Temperature Sensor, user manual v6.01. (industry/manufacturer or non-journal source) infwin.com
Citations marked in-text as [n] map to this list. Primary literature and official guidance except where noted. Cannabis tissue culture is strongly genotype-dependent, verify dilutions, hormone doses and local regulations against the primary sources before relying on them.