February 2017, I ordered and received an Argent Data Systems Weather wind/rain sensor package (Weather Sensor Assembly p/n 80422) with anemometer, wind vane, and rain gage. These come with a short mast, and reasonably sturdy mounting brackets, and cables for a remote outdoor weather station. The assembly consists just of reed switch sensors – you add your own electronics to read wind speed, direction, or amount of rainfall. Could this be the ideal open-source weather hardware platform?
Price single unit: $68 plus
Shipping: USPS priority shipping.
The sensors use reed-switches actuated by proximity a moving magnet. Cabling is RJ11 similar to phone lines, require 2 conductors per sensor. The wind vane and anemometer I understand use sealed ball bearings.
A data sheet is available which provides enough information to get started. There is also a small active Yahoo group with some interesting stuff, product history, implementation and use cases, stuff like a mod / hack to keep the anemometer bearing dry.
Construction. All parts are a made from a tough molded plastic, are reasonably well designed for durability, low cost, and I guess we’ll see what the long haul is. The equipment is not designed for user-replaceable parts but some maintenance and repairs may be possible. Durability will be important. Anything on a mast outdoors is just asking for trouble.
QA Issues: Unfortunately, the equipment I received had electrical issues.
Great customer support. Fortunately Argent customer support is excellent. I just used email, and heard back from Scott the next day. Argent has a straightforward 90 day fault replacement statement on the website. Scott has already swapped out the wind vane and a replacement anemometer is being shipped. In any case I’m satisfied with the customer support and with the swapout. Take on this QA problem. It’s unfortunate to have problems but I do a lot of sensor and open source work these days, and I’m used to occasional errors … bad cable, cold solder joints and wiring errors. A cost for Argent – and they likely need to follow up with their suppliers. Obviously most of their customers are fault intolerant. From the data sheet, we learn that Argent is the importer for this equipment and not the OEM. Supply chains are always of interest – it’s the nature of industry.
While waiting for the replacement vane, I stuck a couple of magnets to the anemometer rotor housing and a 3144 hall effect sensor affixed to the hub, and it’s been spinning all weekend, making data.
The arduino controller is USB attached to a raspberry Pi and this data gets sent to another weather server which uploads to Weather Underground. This is a temporary situation while we’re prototyping and developing, but it’s cool to have a proof of concept reporting to the Wx Underground.
It rained last night but the bucket tipped 4 times in a five minute period during which there’s a 40 mph gust … the raingage may need a better platform than the wood fence. (These glitches have since been fixed by addition of 0.1uf bypass caps from each long signal lines to ground – both sides, and a bypass from VCC to Gnd.)
Update 2/23/17 – the replacement anemometer came in a couple of days ago, installed it today. Swapped interrupts with the raingage and patched in the new wiring scheme. This anemometer has a single magnet – wind speed suddenly doubled so a small scripting change. Looks good to go.
We might also consider writing a one-wire interface.
No immediate hurry to go down the path of writing a lot of data comm code.
Updated the pws scripting. hoku gets a log from the arduino running the argent package of 60 5 second samples and uses this data to provide a 5m running average wind speed output, running gust report, and a simple consensus wind direction report. The 5 minute sample is scp’d to maui2. Used a hash structure for the wind dir buffer. First time I’ve done it in python – it’s a bit quirky compared to perl and I have no opinion of the relative internal implementation. The hash accepts an integer key (azimuth), and increments a count value of samples from that azimuth:
azm = int(dat)
dirH[azm] += 1
Then after all the samples are read in:
#get the wind azimuth with most direction counts
maxv = 0
maxdir = 90
for azimuth,count in dirH.items():
if (count > maxv):
maxdir = azimuth
maxv = count
The idiosyncratic part of python is initializing the hash elements to zero. I had to hard code it … couldn’t do it dynamically – got errors. Not real sure why. “Real” python programmers know of course what this tuple vrs list problem is … for me – laterz. But it’s a lot easier than doing it in C!
- OEM Source: https://www.argentdata.com/catalog/product_info.php?products_id=145
- Datasheet : https://www.argentdata.com/files/80422_datasheet.pdf
- User group: https://groups.yahoo.com/neo/groups/ads-ws1/conversations/messages