Soil moisture and temperature sensor data per soil node, at 2 depths
Soil node readings at 2 depths about every 10 minutes, plus hourly and daily roll-ups, 17 fields across 3 datasets, the series the soil-window models and the water balance read.
A soil node reports about every 10 minutes on its own radio link, entirely independent of the weather station. The raw view is every packet as it arrived: 2 moisture channels and 2 temperature channels, battery and link quality, all tagged by node. The hourly view takes the mean of each channel per hour, the exact series the soil-window disease models read. The daily view takes the day’s mean along with battery and link quality, the shape the water balance turns straight into millimetres.
Moisture scale
A node reports moisture on its own 0 to 100 scale, not in volume percent. The soil baseline instead gives field capacity and wilting point for the location in volume percent, and the water balance is where those 2 scales finally meet. At Naivasha the probe reads 72 to 74 against a field capacity in the 30s, so the balance reports saturated and marks its own output as a sensor proxy until someone calibrates the probe, a 2-point fit done once per node. It’s exactly the failure mode a buyer of a soil node should know about going in.
Reading the soil sensor data samples
The 24-hour chart shows both moisture channels running flat, the deeper channel reading a point wetter than the shallow one, with no irrigation and no rain anywhere in the window. Soil temperature moves only 2 degrees over the day where the air above it moves 14, and lags the air by hours besides. The 30-day chart shows a month of daily means per node; the second node, sitting a few metres away, tracks the first within 1 or 2 points throughout. When the 2 nodes diverge, one of them has moved, dried out at the contact, or lost its cell, and the battery column says exactly which.
Joining the soil sensor data with other datasets
Soil against air: join on the hour or the day with the weather station data. Soil against irrigation: the water balance runs 1 row per station per day on that same stamp. Soil against the crop: the satellite indices run weekly, so aggregate this series up to weeks first before joining it.
Access to the soil sensor data
A key sees only the nodes approved on its own account and nothing beyond that; dev_eui in a query gets set from that same list and simply cannot reach a node on another farm.
Soil node readings
Raw ~10-minute uplinks from soil probes. Nodes uplink independently of the gateway; gateway_id is a logical farm key only.
The last uplinks from 2 soil nodes, the potato station at Naivasha, 2,490 m
Time UTC
Node
Moisture ch1 %
Moisture ch2 %
Temp ch1 °C
Temp ch2 °C
Battery mV
RSSI dBm
SNR dB
09:38
node 1
76
82
16.7
17.2
3200
-115
-2.8
09:39
node 2
71
83
16.6
17.1
3480
-113
0.8
09:48
node 1
76
82
16.7
17.3
3198
-115
-0.8
09:49
node 2
71
83
16.6
17.1
3486
-112
4.2
09:58
node 1
76
82
16.7
17.3
3198
-117
-1.2
09:59
node 2
71
84
16.6
17.1
3458
-110
5.5
10:08
node 1
76
82
16.7
17.3
3194
-113
1
10:09
node 2
71
84
16.6
17.1
3442
-109
6.2
10:18
node 1
76
82
16.7
17.2
3190
-116
-2.2
10:19
node 2
71
84
16.7
17.1
3434
-115
-2.2
10:28
node 1
76
82
16.7
17.2
3188
-116
-1.2
10:30
node 2
71
84
16.7
17.1
3426
-112
3.5
Each node carries 2 depth channels. Moisture is the codec's 0 to 100 scale, so 72 is a reading against the probe's own range; the water balance converts it with the soil baseline. RSSI near −116 dBm is a long link that still decodes.
Dataset idfarm.soil.raw
Cadence~10 min
EndpointGET /farm/soil
Key scopefarm:read
Declared fields8
History2026-03 to today
Coverageyour own soil nodes
StatusOwn sensors, own account
Narrowed to your own gateways and to devices approved for API exposure.
Only for the account that owns the hardware. Readings and everything computed from them are served to keys on the owning account and to nobody else. The way to get this dataset is a station on your own field, or your own sensors sent in through Sensor Ingest. A NuaSense station on the field is what produces these rows; the hardware is described at nuasense.com/products.
Through the MCP connector the same read is the platform_dataset tool with dataset=farm.soil.raw. Through a scheduled export it is one job with the same filters, delivered as a file. Every dataset takes the same arguments: start and end, every with agg, fields, limit up to 5,000, order, and the tags it declares.
Hourly soil roll-up
Hourly means from the soil probes: moisture and temperature at both measured positions, rolled up server-side from the raw uplinks of each node.
24 hours at 2 depths, node 1, the potato station at Naivasha, 2,490 m
channel 1channel 2moisture, codec scale
83.879.575.2
11:0015:0019:0023:0003:0007:0010:32
Both channels flat across the day: no irrigation and no rain in the window, and the deeper channel a point wetter than the shallow one.
channel 1channel 2°C
17.917.216.5
11:0015:0019:0023:0003:0007:0010:32
Soil temperature lags the air by hours and swings by 2 degrees where the air swings by 14. The soil-window models for scab and rhizoctonia read this series.
Dataset idfarm.soil.hourly
Cadencehourly
EndpointGET /farm/soil/hourly
Key scopefarm:read
Declared fields4
History2026-03 to today
Coverageyour own soil nodes
StatusOwn sensors, own account
Narrowed to your own gateways and to devices approved for API exposure.
Only for the account that owns the hardware. Readings and everything computed from them are served to keys on the owning account and to nobody else. The way to get this dataset is a station on your own field, or your own sensors sent in through Sensor Ingest. A NuaSense station on the field is what produces these rows; the hardware is described at nuasense.com/products.
Through the MCP connector the same read is the platform_dataset tool with dataset=farm.soil.hourly. Through a scheduled export it is one job with the same filters, delivered as a file. Every dataset takes the same arguments: start and end, every with agg, fields, limit up to 5,000, order, and the tags it declares.
Daily soil roll-up
Daily means from the soil probes: moisture, temperature and the node's battery and radio state, rolled up server-side from the raw uplinks.
30 days, daily means per node, the potato station at Naivasha, 2,490 m
channel 1channel 2moisture, codec scale
88.678.468.3
09-1909-2309-2710-0110-0510-0910-1310-19
32 daily rows for this node. A drying curve between irrigations is the shape the water balance turns into millimetres.
channel 1channel 2moisture, codec scale
88.479.770.9
09-1909-2309-2710-0110-0510-0910-1310-19
32 daily rows for this node. A drying curve between irrigations is the shape the water balance turns into millimetres.
Dataset idfarm.soil.daily
Cadencedaily
EndpointGET /farm/soil/daily
Key scopefarm:read
Declared fields5
History2026-03 to today
Coverageyour own soil nodes
StatusOwn sensors, own account
Narrowed to your own gateways and to devices approved for API exposure.
Only for the account that owns the hardware. Readings and everything computed from them are served to keys on the owning account and to nobody else. The way to get this dataset is a station on your own field, or your own sensors sent in through Sensor Ingest. A NuaSense station on the field is what produces these rows; the hardware is described at nuasense.com/products.
Through the MCP connector the same read is the platform_dataset tool with dataset=farm.soil.daily. Through a scheduled export it is one job with the same filters, delivered as a file. Every dataset takes the same arguments: start and end, every with agg, fields, limit up to 5,000, order, and the tags it declares.
Related datasets
Also in Soil data
Root-zone water balance and irrigation need, daily1 row per station per day: root-zone depletion against the water the soil holds, with the day's evapotranspiration and rain, the numbers behind the irrigation advisory.
Read together with this page
Soil profile and water-retention data for your fieldThe physical soil under each station, read once per location from open soil maps: texture, stones, density, bedrock, terrain, and the water-retention profile at 5 depths that the water balance runs on. Nutrients and pH are excluded on purpose.
Disease and pest risk data for potato, onion and coffeeRisk per threat for the station's crop, every hour: percent, level, threat score, accumulated disease severity, the conducive hours behind the score and how much input data backed it. 22 models across potato, onion and coffee.
Field polygons and sensor settings for your farmField polygons as GeoJSON with crop and area, and per-node settings with crop assignment, planting and phenology dates, last spray date and the growing-degree-day accumulator. 25 fields across 2 datasets.