Page 1 of 1

readme-1.txt errata

Posted: Wed 25 Dec 2013 6:20 pm
by tlum
I just happened to read the 1.9.4 readme and I wanted to comment on the following:
Davis stations calculate Sea Level Pressure from Station Pressure using a formula based on several parameters such as temperature, humidity, etc, rather than just using altitude as most other stations do. CWOP require 'Altimeter Pressure' to be uploaded, i.e. a value calculated simply using altitude. The station does not provide this value directly, nor the station pressure, so Cumulus has to read some extra data once a minute in order to do the calculation. This can take several seconds, so it means that a 'normal' data reading may be missed, so you might miss a high gust value, for example. If you don't use CWOP, or you are happy for Cumulus to send Sea-Level pressure to CWOP (the difference is small unless you are at high altitude) add a line to the [Station] section of cumulus.ini:...
  • CWOP/MADIS/NWS/MesoWest/et al. are NOT happy for Cumulus to send MSLP! Nor are the other ~8,540 CWOP submitters who may end up with poor data quality scores as a result. Please observe the specifications and think of your fellow hobbyists and your downstream consumers.
  • There is no reason to be missing any gust data if wind gust is being handled properly.
  • The station does/can supply both altimeter and station pressure.
When it comes to MSLP vs. Altimeter the error is caused by temperature and humidity deviation from a standard atmosphere. Altitude is a multiplier. The error will exist at any altitude above 0 and will be continuously variable from minute to minute. Altitude will multiply the magnitude of this continuously changing error.

Around about February 2010 Davis released v1.90 firmware for the console and envoy. V1.90 contains important changes relevant to pressure and wind gust. The firmware now includes the new LPS command and another LOOP packet format known as LOOP2. Software developers should consider LOOP packets to be deprecated [according to me]. LOOP2 includes important enhancements that are especially important to the correct operation with newer station console models.

At a glance
  • Altimeter and Station Pressure is directly available.
  • Pressure in no longer expected to use a fixed reduction method, so a new flag has been added to express the reduction method employed. Under certain conditions failure to use and interpret this will cause data errors.
  • Correct standard wind measurements are directly available.
CWOP altimeter pressure can and should be read directly from the LOOP2 packet, there is no longer a reason to employ specialized reduction formulas.

V1.90 firmware, and above, now allows for the console/envoy to send, what once was MSLP using a fixed reduction table, as one of three different reduction methods. What I'm now calling "Legacy Pressure" can no longer be assumed to be MSLP. With the introduction of the Vantage Vue console the user now has the ability to select the reduction method - as either MSLP, Altimeter, or User Defined Offset - which will result in data errors when the value is assumed to be MSLP and the user has selected a different reduction method. Software developers must now check the Barometric Reduction Method in the LOOP2 in order to get the correct context, or at the very least, advise users that settings other than NOAA Bar Reduction is not supported.

All of this of course requires the user to upgrade the firmware to >= 1.90. Therefor, its up to the developer to decide whether to check for and continue to support prior versions.

Wind data is officially defined as:
  • Wind speed is the mean of the last 2-minute interval.
  • Wind gust is the highest instantaneous value in the last 10-minute interval.
These values are directly available from the LOOP2 packet. Older methods of deriving this are unreliable, inaccurate, and should not longer be used.

Re: readme-1.txt errata

Posted: Wed 25 Dec 2013 6:41 pm
by steve
Cumulus doesn't use LOOP packets, it uses a DLL supplied by Davis, which handles communication with the station on its behalf. The version of the DLL which Cumulus uses does not support the LOOP2 packet. The later version of the DLL which does support the LOOP2 packet has issues which mean that I cannot use it. I have reported the issues to Davis and had no response. So regardless of whether the older method of obtaining the altimeter pressure or anything else is unreliable or whatever, it's what Cumulus has to do and that is not going to change in the near future.

The Davis supplied DLL does not catch every LOOP packet. This means that gusts are missed, particularly when it has to stop fetching LOOP data and read the barometer data, and Cumulus compensates by reading today's high gust figure from the station periodically. This only works if the meteorological day being used ends at midnight, as the station does not support the standard used in many countries where the meteorological day ends at 0900. Incidentally, the standard in the UK for average wind speed is the average over the last 10 minutes. This is also the WMO standard.

Cumulus isn't written to work specifically with Davis stations, it works with a number of different stations and they all work differently. As Cumulus is a 'spare time' activity, I cannot possibly provide a version which works optimally with every station type, so compromises have to be made. If anyone does not like this, they are free to use some other software. Equally, they can choose not to upload data to CWOP. Or CWOP can choose not to accept data from Cumulus. I'm not aware of any issues with the data currently supplied by Cumulus to CWOP, however.

But thanks for the lecture anyway.

Re: readme-1.txt errata

Posted: Wed 25 Dec 2013 9:45 pm
by tlum
I'm simply correcting the statement in the document. The stations have supplied it for almost 4 years. Other software vendors have been using it for that same time. If the SDK API is broken that's a whole other thing. Didn't know it uses the Davis API. Naturally assumed it had its own serial driver since the reason we write our own software is to escape that mess which is Davis software. ;) What is the issue with the v2.42 API? Does it have to do with localization?

LOOP and LOOP2 do include 10-minute average wind. With legacy firmware its often best to force the archive interval to 10 minutes or less and take the max wind speed from there.

Cumulus is the #3 CWOP supplier with a 10% share. Forty four percent Fine Offset, 43% Davis, 8% Oregon Scientific, 3% La Crosse, and 2% easy weather format.

I am not aware of any significant data issue(s) at this time either as long users are on the latest version and have everything configured correctly. However, Vue support is on shaky ground and adds another pressure configuration permutation that isn't handled.

Re: readme-1.txt errata

Posted: Wed 25 Dec 2013 9:54 pm
by steve
I agree that the statement in the readme suggests to people that they have a choice about sending MSLP when really they don't, and I'll remove it.

The problem I found with the latest DLL is that before it requests a LOOP packet, it reads the station type and firmware version - every time. This slows down the reading of each LOOP packet such that it takes around nine seconds.

I was aware that the Vue had a setting for the pressure that it displays, but I didn't realise that it also affected the readings supplied to software. I guess I'll have to look into that when I get chance.

I'm actually in the middle of a new version of Cumulus which doesn't use the Davis DLL (it's proven to be more trouble than it's worth) so I'll actually be able to use the LOOP2 packet in that (it maikes things easier for me anyway). But progress is slow...

Re: readme-1.txt errata

Posted: Tue 31 Dec 2013 12:53 am
by tlum
I was gonna say I'd help you beat on Davis over their SDK API issue(s), but talking directly to the console eliminates that and many other problems. If I can help you out with the serialcom stuff let me know.

The Vue setting came as a surprise to me too. I too figure that it just set the display units, but with the the help of some Vue users we managed to prove that's not the case. Then in that light, when you look at the docs, it's clear that flag is meant to be used to interpret the value.

Good Luck!

-Ted-

Re: readme-1.txt errata

Posted: Tue 31 Dec 2013 12:15 pm
by steve
OK, thanks Ted. I do have some experience of using the serial protocol directly, as the abandoned 'Cumulus 2' uses/used it.