Nick's Weather Station

  1. I have a small weather station on my amateur radio antenna tower. The weather station is a Maplin USB Touchscreen Wireless Weather Forecaster which seems to be a re-branded WH1081 by Fine Offset Electronics Co.
  2. I am using fowsr on a Netgear / OpenWrt Linux WiFi router to pull the data from it over USB. I used to use an OpenSUSE Linux box for this bit. Any Linux / OpenWrt machine with USB should be fine.
  3. A "NoseyWX" wrapper around the fowsr software sends data in Weather Underground format to "wunder2aprs" on my NoseyNick server.
  4. Wunder2aprs can re-post the data to Weather Underground...
  5. ... but more importantly it also converts it to APRS format (see APRS101 or Philip Gladstone's APRS WX format page) and submits it to the APRS-IS/CWOP network.
  6. This is then picked up, directly or indirectly, by a whole bunch of other sites, including big government agencies - see my main weather page for the list.

If you wish to use NoseyWX wunder2aprs yourself...

Assuming you already have one of the compatible USB weather-stations... Install fowsr on any Linux box, or even any USB-equipped router capable of running OpenWrt. OpenWRT "Chaos Calmer" unfortunately has no fowsr package, but you can, surprisingly, wget Barrier Breaker's fowsr and opkg install that. Oh, make sure you have a working "cron" installed too.

Download /usr/bin/noseywx.sh which should look like...

#!/bin/sh

if [ -e /var/log/fowsr/fowsr.dat ]; then
  # Newer fowsr seems to take different args and store data in the dir above
  fowsr -fw -n/var/wunderground.log >> /var/noseywx.log 2>&1
else
  /usr/bin/fowsr -w >> /var/noseywx.log 2>&1
fi

# Sleep a "random" time from 5-104 secs,       
# to avoid the nasty APRS spikes from 1000s of NTP-synced WX stations:       
sleep 5 `cut -c1-2 /proc/sys/kernel/random/boot_id | tr a-f- 0-9`

NWURL="http://noseynick.net/wx/wunder2aprs.cgi?MYCALL=$1&MYPASS=$2&LATLON=$3"
shift; shift; shift
if [ -n "$1" ]; then
  NWURL="$NWURL&ID=$1&PASSWORD=$2"
  shift; shift
fi
# if you want to add a note/shoutout/neighbourhood/village/town/city:
if [ -n "$*" ]; then
  NWURL="$NWURL&NOTE=$*"
fi
NWURL="$NWURL&`head -1 /var/wunderground.log`"

wget -q -O- `echo "$NWURL" | tr ' ' +` > /var/noseywx.log

# Keep 1 previous version. If you prefer to keep an entire history, comment
# out these, but then you probably want to rotate logs another way:
mv /var/wunderground.log /var/wunderground.last
mv /var/noseywx.log      /var/noseywx.last

Don't forget to:

chmod 755 /usr/bin/noseywx.sh

Wunder2aprs takes the same parameters as Weather Underground (which fowsr writes to /var/wunderground.log by default), then the extra params MYCALL, MYPASS, LATLON, and an optional NOTE. Unlike Weather Underground, you're not supposed to send to APRS/CWOP more than once every 5 minutes though. APRS also gets hammered precisely every 5 mins by a whole load of NTP-synced weather stations, so noseywx.sh includes a deliberate randomised delay before you upload. Don't be too surprised if it takes nearly 2 minutes to run!

You probably want a crontab entry something like...

#min hr day mth dow command
*/5  *  *   *   *   /usr/bin/noseywx.sh MYCALL MYPASS LATLON
# For example...
*/5  *  *   *   *   /usr/bin/noseywx.sh VA3NNW-13 12345 4327.07N/08033.98W

If you do want NoseyWX to forward to wunderground.com, your crontab might look like:

#min hr day mth dow command
*/5  *  *   *   *   /usr/bin/noseywx.sh MYCALL MYPASS LATLON ID PASSWORD
# For example...
*/5  *  *   *   *   /usr/bin/noseywx.sh VA3NNW-13 12345 4327.07N/08033.98W IONTARIO333 12345

Any further arguments in the cron command-line are swallowed into "NOTE=", so you can add a few short words about your software, hardware, neighbourhood/village/town/city etc:

#min hr day mth dow command
*/5  *  *   *   *   /usr/bin/noseywx.sh MYCALL MYPASS LATLON ID PASSWORD NOTES
# For example...
*/5  *  *   *   *   /usr/bin/noseywx.sh VA3NNW-13 12345 4327.07N/08033.98W IONTARIO333 12345 fowsr OpenWRT WH1081 Waterloo

Beware of word-wrapping in your crontab!

Enjoy!