fieldmesh

Weather stations to recommend#

Which weather stations a farm on fieldmesh should be pointed to, and the ideas around them: what to measure, where to put it, how to check it, and how it gets into the log. Soil probes have a note of their own: soil sensors. Nothing here has been run on a real station yet (UNTESTED).

What a farm's station is for#

FAO-56 wants the measurements "at 2 m above an extensive surface of grass or short crop". Neither a roof nor a fence by the barn will do.

What makes a station worth recommending#

  1. The data stays on the farm. A local API, or a radio anyone can decode, rather than a vendor's cloud the farm reads back from. This is fieldmesh's first principle, and it also keeps the station working when the internet is down.
  2. It measures sunshine properly. Solar radiation is the largest term in ET, and the weakest sensor on cheap stations. Some measure light (lux) and convert it to W/m² with a fixed factor. Fine Offset's WH24 and WH65B send light_lux (rtl_433's decoder, src/devices/fineoffset.c), and their app shows it as W/m². A pyranometer measures the energy itself.
  3. Parts can be replaced: cups, bearings, the rain funnel, the humidity element.
  4. It speaks an open protocol, or is open hardware.

The candidates#

what it is measures reaches fieldmesh open? caveat
Build it: ESPHome An ESP32 with a cup anemometer, vane and tipping bucket, such as SparkFun's Weather Meter Kit: passive reed switches, 0.2794 mm per tip. Add a temperature and humidity sensor in a radiation shield. wind, rain, temperature, humidity; sunshine only with a pyranometer added Today, through the MQTT bridge's ESPHome profile firmware and wiring yours you calibrate and maintain it; the shield matters
Build it: 3D-PAWS UCAR and the National Weather Service's international office's 3D-printed station, built locally for a few hundred dollars, with "open-source electronics", used by weather services in many countries wind, wind direction, rain, temperature, humidity, pressure; no solar sensor in the typical build Through MQTT or its own outputs (to build) open designs a project to build, not a product to buy
Ready-made, cheap: the Fine Offset family Sold as Ecowitt, Ambient, Misol and others, read through an Ecowitt gateway (GW1100, GW2000 and others, which serve a local HTTP API with no cloud account) or straight off the air by rtl_433 temperature, humidity, wind, rain, light/UV; some models add more Today: off the air through rtl_433 and the bridge's rtl_433 profile, or through Home Assistant's MQTT state stream protocols decoded openly (rtl_433, GPL-2.0, 386 device protocols) sunshine from a light sensor; plastic mechanics
Ready-made: WeatherFlow Tempest One unit, no moving parts; the hub broadcasts each minute's observation on the local network (UDP port 50222) temperature, humidity, pressure, wind, rain by impact, solar radiation Today: its UDP broadcast through sdk/station_adapters.py, or Home Assistant documented local broadcast the maker calls the local broadcast a backup to its cloud
Ready-made, durable: Davis Vantage Pro2 with WeatherLink Live A long-serving station whose WeatherLink Live unit serves current conditions over local HTTP and broadcasts wind and rain over UDP, both documented temperature, humidity, wind, rain; solar with the optional sensor Today: its local API polled by sdk/station_adapters.py, or Home Assistant documented local API Davis's AirLink is an air-quality monitor, not this
Research grade: METER ATMOS 41 Gen 2 All-in-one, no moving parts, SDI-12 or Modbus RTU over RS-485 on enabled units, with its registers documented solar radiation (±5%), temperature (±0.2 °C at 25 °C), humidity, pressure, wind, rain, lightning Through fieldmesh's Modbus RTU driver, which reads holding and input registers; the register binding is to build documented protocol the most to buy; the way to a pilot's reference station

Software that sits between.

Either can feed fieldmesh's MQTT bridge, once the bridge has a profile for its topics.

What I'd recommend:

for station why
a farm that builds ESPHome, with a silicon pyranometer it works with fieldmesh now
a farm that buys cheaply the Fine Offset family through an Ecowitt gateway the data stays local
a pilot's reference station ATMOS 41 Gen 2 on Modbus its sunshine and temperature are what scores everything else
a community or school network 3D-PAWS it is open, local and built to be maintained

Ideas worth doing whatever the station#

What fieldmesh would build next#

In the order I'd do them:

  1. The clear-sky check on solar radiation, beside the range and flatline checks. Built 2026-10-11 (sdk/checks.clear_sky, sdk/sun.py). On a year of NOAA's reference station at Crossville, Tennessee, it raised nothing on healthy readings. With faults put in (tools/clear_sky_scan.py):

    • a clock on local time read as UTC was caught on 363 of 366 days;
    • a clock an hour out, on 219;
    • lux sent as watts, every day;
    • a sensor 30% high, on only 46. The check is a ceiling, not a calibration; the clear-day ratio over weeks is still to build.
  2. An rtl_433 profile in the MQTT bridge. It reaches every cheap station on 433/868/915 MHz without a vendor's gateway or Home Assistant in between. Built 2026-10-11:

    • it reads rtl_433's events topic under the decoder's own field names;
    • it takes -M time:unix epoch seconds as the reading's time;
    • it reports a station whose id changed with its batteries as unbound, by its new name.

    It has been tested against the decoder's source, not yet a station on the air.

  3. A Modbus binding for the ATMOS 41 Gen 2, for a pilot's reference station. Built 2026-10-11: sdk/modbus_collector.py polls it from its register map.

    • It reads input registers 3001–3044 in one burst, as the guide asks, because a read resets the station's accumulators.
    • Each reading records the span it covers.
    • Writing the decoder against the guide found a slip in it: its example of the float byte order prints 0x471F2000 for 123456.0, which is 0x47F12000.

    Tested with a fake station answering over a pseudo-terminal, not yet a real one.

  4. ET from the farm's own station into the soil advisory, for beds without a probe and for watering by the weather. Built 2026-10-11 (sdk/eto.py; by the weather). With no probe, on the virtual farm's 2013 and 2012, it used 225 and 347 mm, against the probe's 208 and 319, with no stressed hour (the simulator of 2026-10-16; the balance counts the crop's use a fifth over FAO-56's estimate, its margin).

  5. Ecowitt's local API, Tempest's broadcast and WeatherLink Live's HTTP API as direct adapters (§10), for farms without Home Assistant. Built 2026-10-11 (sdk/station_adapters.py). Each station's own messages are parsed and written by the MQTT bridge's bindings and rules.

    • Tempest: its hub's obs_st UDP broadcast, field by field as WeatherFlow's UDP reference lays it out.
    • WeatherLink Live: its current_conditions, rain left as counts of the gauge's own size for a calibration to turn into millimetres.
    • Ecowitt: the gateway's customized upload, rather than its less documented polling API. It is plain HTTP on the farm's network, so it takes only bound PASSKEYs and will not start without the gateway's address.

    Tested over real sockets on loopback with the makers' documented messages, not yet with a station.

Sources#