The APRS specification dates from the early 2000's, and as you probably know, was first and foremost a specification for doing packet radio... coupled with APRS-IS the packets can flow fairly seamlessly over the internet via. land lines in addition to RF.
Weather was but one "application layer specification" [terminology mine, not theirs] that was implemented in the APRS specification (Chapter 12). APRS is really a "meshed publish/subscribe" network [again, terminology mine, not theirs]. HAM's could publish weather data, but who would subscribe to it?
That's where CWOP comes in. The MADIS system over at the NWS effectively became a subscriber to the APRS weather data, which it terms the APRSWXNET mesonet - findu is the gateway - among the may things it does - which technically subscribes to the weather data, parses it, archives it, and generates periodic batch files formatted for MADIS. findu is one, but not the only parser - I'll come back to this later.
The early HAM implementers believed that imagining 100 reporting weather stations probably constituted delusions of grandeur... as of this moment, more than 20 year on, there are ~15,800 stations actively reporting in the last hour, and more than 40,000 station identifiers have been issued - to non-HAMs, who's station identifier is also their call sign.
So, to some extent the APRS specification became a victim of it's unexpected and overwhelming success, and in ways that certainly were never imagined. In the last hour only 1.7% of reporting stations were using the APRS private network, which is "RF capable". So you have a decades old packet radio specification being used for a predominantly non-packet radio application by an audience that is predominantly not licensed and unable to contribute to the original core purpose of the specification. Consequently, little was ever done to update the original specification (de jure) beyond the initial use cases of the target audience, which defines the "APRS Software Type" field as:
d = APRSdos
M = MacAPRS
P = pocketAPRS
S = APRS+SA
W = WinAPRS
X = X-APRS (Linux)
and defines the Weather Unit Type as:
a 2–4 character code uuuu for the type of weather station unit. The following codes have been allocated:
Dvs = Davis
HKT = Heathkit
PIC = PIC device
RSW = Radio Shack
U-II = Original Ultimeter U-II (auto mode)
U2R = Original Ultimeter U-II (remote mode)
U2k = Ultimeter 500/2000
U2kr = Remote Ultimeter logger
U5 = Ultimeter 500
Upkm = Remote Ultimeter packet mode
Users may specify any other 2–4 character code for devices not in this list.
So, you'll see two different de facto standards in use. In the first case people are sticking to the official schema of 'tuuuu'. Davis, for example uses 'eDvs' - they use a Type code not in the list, but constrain it to the single character. The other de facto standard is simply whatever long string the findu parser doesn't choke on. Because the "Weather Unit Type" was defined as a 2-4 character code, that allows someone to implement a new code of their choosing as necessary, so the specification can accommodate new station hardware, however, no such allowance was made for "APRS Software Type", so using anything not is the list is "off book" as it were. Whether you can make up new codes or not is a fairly moot point, though.
So, going back to parsers and a meshed publish/subscribe network, specifications are an absolute necessity if multiple arbitrary subscribers are to interpret what's being published. Even if a specification allows a publisher to make up a value for a field, downstream subscribers have no way of knowing how to interpret made up values whether the specification allowed them to or not, but then there is making up codes within the established schema and there is going totally off-book and violating the schema all together. As a publisher you don't necessarily know who your consumers may be, so you also don't necessarily understand the breadth of the effect of what you're publishing. In this case, findu is one obvious consumer, but it's not the only one. For example, this is Philip Gladstone trying to make sense out of these fields, which is behind the "
Station type/software:
" field on the WXQC site page
https://weather.gladstonefamily.net/cgi-bin/wxequip.pl
which is a snapshot of just about everything that just about everyone is throwing out there. If you do make something up then it'll land in an "Unknown" bucket, unless and until someone decides to create a rule to categorize it... which isn't likely to happen if when there is a high rate of unique one-off values showing up.
Also, there are certain non-obvious implementation details to know about:
While the packets contain a timestamp findu doesn't use it for MADIS, findu uses the ephemeral timestamp from the APRS-IS server, which is lost when the packets are saved to a file, for example. If you try to replay the data from an archive file, and the APRS packet timestamp differs from the APRS-IS transport timestamp, you'll get a different result.
While the APRS packet MAY contain an optional APRS "position" with optional amounts of resolution, MADIS uses the coordinates that were registered when the ID was created. If you try to replay data from an archive file, and the
APRS "position" is different or not present, you'll get a different result.
While the APRS specification allows for "position-less" reports, position-less packets will often be excluded from archive files because the packet is not worth the space it would occupy. What the APRS specification ALLOWS is not necessarily useful in certain contexts. So, even things that are legal don't necessarily work.
For example:
http://www.wxqa.com/lum_search.htmWhat I'm saying is that in an environment with multiple anonymous consumers right and wrong boils down to what comes closest to making all of them happy, and context matters because some have access to things that others don't.
Regards,
Ted