-
Notifications
You must be signed in to change notification settings - Fork 10
User Manual
Check out one of the OS-specific pages to learn how to download, compile (maybe), and install this app. This documentation assumes that you got it installed one way or another.
You'll need an amateur radio license or membership in the Citizen Weather Observers Program. Once you have your ham radio callsign or whatever CWOP uses, great!
You'll also need to know your location (latitude and longitude) and have some weather data to report. If you don't even own a thermometer, go drive by a bank or something.
This app was designed to be a quick and dirty way to submit weather station data. Maybe you're typing this all on the command line, or maybe you're using this to power some script. No matter what, there's going to be a lot of typing. (This will change in a future release that I'm still brainstorming that.)
There are two ways to use this app.
- If you specify an APRS server, port, username, and password, then your APRS data will be sent to the APRS-IS network.
- If you do not specify all four of those things, the APRS packet will be printed to your terminal (on
stdout
). This may be useful if you're using another app to send APRS data, like Direwolf to a locally-connected radio that sends your weather data over the air!
To learn how to use this, type aprs-weather-submit
for quick help, and aprs-weather-submit --help
(/?
on DOS) to see all of the options that are available:
$ aprs-weather-submit --help
aprs-weather-submit, version 1.7.2.
Copyright (c) 2019-2024 Colin Cogle.
This program comes with ABSOLUTELY NO WARRANTY. This is free software, and you
are welcome to redistribute it under certain conditions. See the GNU Affero
General Public License (version 3.0) for more details.
Usage: aprs-weather-submit --callsign [CALLSIGN[-SSID]] --latitude [LATITUDE] --longitude [LONGITUDE] [OTHER PARAMETERS]
Special parameters:
-H, --help Show this help and exit.
-v, --version Show version and licensing information, and exit.
-C, --compressed-position Create a packet with the compressed position format.
-Q, --no-comment Don't include this app's name and version in the comment field.
Required parameters:
-k, --callsign Your callsign, with SSID if desired.
-e, --longitude The longitude of your weather station, in degrees east of the Prime Meridian.
-n, --latitude The latitude of your weather station, in degrees north of the equator.
APRS-IS IGate parameters:
-I, --server Name of the APRS-IS IGate server to submit the packet to.
-o, --port Port that the APRS-IS IGate service is listening on.
-u, --username Authenticate to the server with this username.
-d, --password Authenticate to the server with this password.
Optional parameters:
-A, --altitude The altitude of your weather station (in feet above mean sea level).
-b, --pressure Barometric pressure (millibars or hectopascals).
-c, --wind-direction Direction that the wind is blowing (degrees).
-F, --water-level-above-stage Water level above flood stage or mean tide (feet).
-g, --gust Peak wind speed in the last five minutes (miles per hour).
-h, --humidity Relative humidity (percentage).
-i, --icon Override the default symbol table code and identifier (/_).
-L, --luminosity Luminosity (watts per square meter).
-M, --comment Add a custom comment to the packet.
-p, --rainfall-last-24-hours Total rainfall in the past 24 hours (inches).
-P, --rainfall-since-midnight Total rainfall since midnight local time (inches).
-r, --rainfall-last-hour Total rainfall in the past hour (inches).
-s, --snowfall-last-24-hours Total snowfall in the past 24 hours (inches).
-S, --wind-speed Sustained wind speed in the past minute (miles per hour).
-t, --temperature Temperature (degrees Fahrenheit).
-T, --temperature-celsius Temperature (degrees Celsius).
-V, --voltage Battery voltage of your weather station.
-X, --radiation Radiation levels (nanosieverts per hour).
Find this project online at https://github.com/rhymeswithmogul/aprs-weather-submit
macOS and Linux users can also use man aprs-weather-submit
to read the man page, where each option is explained in excruciating detail.
If you've worked with APRS at a low-level before, you may find that many of the short options (such as -T
) correspond to their APRS equivalents. However, this isn't always the case, so please double-check your typing or use the long options instead.
If you want to send your data to the APRS-IS network, you'll need to pick one of the [APRS-IS Tier 2 servers]. You can use rotate.aprs2.net
but you may find it better to pick a local server such as noam.aprs2.net
for North America. The default port is TCP 14580.
You should have your APRS-IS username and password. The username is your callsign (without an SSID) and your password isn't something you set somewhere; rather, it's formulaic and can be determined by many open-source tools and web forms.
Find the latitude and longitude of your weather station (not your current location, but where your measuring tools are located). You can use a GPS, a GPS app on your phone, or look at Google Maps or something to find your exact coordinates. You'll need them in decimal format; if you have them in DMS or dd.mmmm format, find a conversion tool online.
Build your command line. It may look something like this:
aprs-weather-submit --callsign WX1CLUB-13 \
--latitude 41.123456 --longitude -73.987654 \
--username WX1CLUB --password 12345 --server noam.aprs2.net --port 14580 \
--temperature-celsius 20 \
--rainfall-last-hour 0.25 \
--pressure 1000
This will make an APRS packet with the following information:
- Callsign WX1CLUB-13 is reporting that,
- at coordinates 41.123456°N 73.987654°W,
- the temperature is 20°C,
- there was one quarter-inch of rainfall in the past hour,
- and the barometric pressure is 1000 millibars.
aprs-weather-submit
does not do any mapping on its own, other than sending packets with location information. There are several websites that will collect APRS-IS data and display it on a map. The most popular one seems to be APRS.fi. If you send an APRS packet, that site will eventually hear about it, log it, and display it.
If you mistype something and send it to the APRS-IS network, it's permanent! All you can do is correct your input and send a second packet.
This app only supports what APRS supports. Considering that the creator, Bob Bruninga, is now a silent key, it's highly likely that APRS version 1.2.1 is the final version ever. I'm not going to create non-standard extensions, as no other software or hardware would support that. If you want to specify some custom data, you can use the --comment
parameter to type a little bit of freeform text.
For example, let's say you wanted to report the wind chill. That's not supported by APRS, but you could do:
aprs-weather-submit [everything else] --temperature 0 --wind-speed 15 --comment "Wind chill: -10°F"
While this app doesn't have a way to save preferences or commonly-used options (yet?), you can write a wrapper script to "pre-fill" some data. This is what I use on my computer, a little script I call aprs-weather-report
:
#!/bin/bash
aprs-weather-submit --callsign W1DNS \
--latitude 41.123456 --longitude -73.987654 \
--username W1DNS --password 12345 --server noam.aprs2.net --port 14580 \
$*
The $*
is a Bash expression meaning "everything else I typed," or more specifically, all of the arguments I specified on the command line.
Then, I can just do something like aprs-weather-report --temperature-celsius 20
to send a report!
APRS-IS passcodes are algorithmically-generated, and there's little to no security built into APRS itself (though the Tier 2 servers have some protections). You can use this app to spam the APRS-IS network with incorrect, wrong, and misleading data (but you can do that over RF, too). Please be good and don't make me regret making this tool.