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 . /etc/profile >/dev/null mkdir -p /var/log/fowsr /usr/bin/fowsr -w >> /var/noseywx.log 2>&1 \ || fowsr -fw -n/var/wunderground.log >> /var/noseywx.log 2>&1 # 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&`tail -1 /var/wunderground.log`" wget -q -O- `echo "$NWURL" | tr ' ' +` \ | tee -a /var/noseywx.log | logger -t noseywx # 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!
You'll need any of the super-cheap ($20 or less) Realtek-based USB TV tuner dongles compatible with rtl-sdr. You'll need rtl_433. When it runs, it should output something like:
$ /usr/local/bin/rtl_433 -G -T 115 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ time : 2019-06-09 23:59:22 model : Acurite 5n1 sensor sensor_id : 1234 channel : C sequence_num: 2 battery : OK message_type: 49 wind_speed: 15.1 km/h wind_dir_deg: 67.5 Rainfall Accumulation: 63.68 in _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ time : 2019-06-09 23:59:40 model : Acurite 5n1 sensor sensor_id : 1234 channel : C sequence_num: 0 battery : OK message_type: 56 wind_speed: 9.3 km/h temperature: 73.6 F humidity : 56 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
You'll need Acurite2wunder.pl. You'll probably want to write a little wrapper which listens for 2 minutes of rtl_433, and feeds it into Acurite2wunder.pl. An example script might look like:
#!/bin/sh -f URL="http://noseynick.net/wx/wunder2aprs.cgi" # if you have APRS-IS creds, uncomment and edit into here: # URL="$URL?MYCALL=VA3NNW-13&MYPASS=123454" # URL="$URL&LATLON=4327.07N/08033.98W&NOTE=AcuRite+Beechwood" # replace with your wunderground creds: ID=IONTARIO333 PASS=12345 # Remove both ISODATE lines if you DO NOT want to keep a copy of # the raw rtl_433 capture (1 file per day): ISODATE=$(date '+%F') /usr/local/bin/rtl_433 -G -T 115 2>&1 \ | tee -a $ISODATE.wx \ | Acurite2wunder.pl --url "$URL" --ID "$ID" --PASSWORD "$PASS" \ >> noseywx.log
See above for details of MYCALL, MYPASS, and expectially LATLON. Don't forget to:
chmod 755 Acurite2wunder.pl path/to/the/above/wrapper
Arrange for the above to be called under cron, perhaps with a crontab entry something like...
#min hr day mth dow command */5 * * * * path/to/the/above/wrapper >> wx-log 2>>&1
Again, beware of word-wrapping in your crontab!