The basic idea is that you send a single record at regular intervals (I currently do this every 10 minutes). However, do not send on 5 minute boundaries, or else send at an odd interval (e.g. 9 minutes 30 seconds). There are significant problems with large numbers of sites all hitting the servers at the same time. This record contains your identity (CW number), location and the various readings. I believe in 'document by example', so here goes:
|CW0003||Your CW number|
|/241505z||The ddhhmm in UTC of the time that you generate the report. However, the timestamp is pretty much ignored by everybody as it is assumed that your clock is not set correctly! If you want to omit this field, then just send an exclamation mark '!' instead.|
|4220.45N/07128.59W||Your location. This is ddmm.hh -- i.e. degrees, minutes and hundreths of minutes. The Longitude has three digits of degrees and leading zero digits cannot be omitted.|
|_032||The direction of the wind from true north (in degrees).|
|/005||The average windspeed in mph|
|g008||The maximum gust windspeed in mph (over the last five minutes)|
|t054||The temperature in degrees Farenheit -- if not available, then use '...' Temperatures below zero are expressed as -01 to -99.|
|r001||The rain in the last 1 hour (in hundreths of an inch) -- this can be omitted|
|p078||Rain in the last 24 hours (in hundreths of an inch) -- this can be omitted|
|P044||The rain since the local midnight (in hundreths of an inch) -- this can be omitted|
|h50||The humidity in percent. '00' => 100%. -- this can be
The barometric pressure in tenths of millbars -- this can be omitted. This is a corrected pressure and not the actual (station) pressure as measured at your weatherstation. The pressure is adjusted according to altimeter rules -- i.e. the adjustment is purely based on station elevation and does not include temperature compensation.
|e1w||The equipment you are using. This is the string that I use to identify my software. Please use something different. In particular, please include the version number of your software and the type of hardware sensors attached. For example: eMyWx123DVP -- MyWx version 1.2.3 with Davis Vantage Pro hardware. Being explicit here allows other software to automatically determine the type of station software in use. It can also be used to encourage people to upgrade to the current version! Weather Display has a table of codes that cover most weather station types and it would be helpful to use the same codes.|
The letters are all case sensitive. The fields should be sent in the order that they appear in the table above.
Once you have formed this record, open a connection to port 14580 on 'cwop.aprs.net' and then send the following:
user CW0003 pass -1 vers linux-1wire 1.00(substitute your CW number), followed by CR,LF (i.e. two characters), followed by your data record. Then disconnect. Also, it works best with a three second delay between the USER command and the data packet. Also wait three seconds after sending the data to close the connection.
'cwop.aprs.net' is a DNS entry that rotates between the various CWOP servers. Do not hardcode any of the IP addresses!
Information on this system can be found at Servers to use.
Use of default values turns out to be a significant
issue with rainfall numbers. Most of the time, the value 'r000' is
valid (and likely). But once it starts to rain, the value is
dangerously wrong, and could prevent flood warnings from being issued.
Other useful resources can be found from Joining APRSWXNET. The actual APRS protocol specification is available in a PDF file. The information presented above actually works, and is somewhat different to what is in this document.
Once you are submitting data, you can sign up with the Weather Data Quality Monitor which will send you email when your data goes 'bad'. For more information about the quality checks, see APRSWXNET Data Quality.