What happend to gust and wind for Davis?

Moderator: leecollings

Post Reply
norrland
Posts: 8
Joined: Monday 28 November 2016 22:59
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

What happend to gust and wind for Davis?

Post by norrland »

The Davis serial logger does not report gust, only wind speed, and gust has used to be a flat-line zero in Domoticz.

Some change has been made so that gust is now calculated, but only for every other reading (or at least row in database). I suspect it has to do with the fix of the wind direction graph that also used to be blank. In DavisLoggerSerial.cpp it still returns gust=0;

The other question is that wind speeds and the calculated gust does not match what the Davis station report.
For example, today Davis says max wind is 15,6 m/s. Domoticz says wind speed max is 14,7 m/s and gust max is 17,9 m/s.

- How is gust calculated?
- What could cause the speed to differ?

I'm running version 3.6235 now but this started with an older beta release, cannot say for sure which one.

Here is an excerpt from the wind table in database:

Code: Select all

100          274.0       142         130         2016-12-27 08:35:01
100          304.0       93          0           2016-12-27 08:40:01
100          276.0       93          174         2016-12-27 08:45:01
100          277.0       102         0           2016-12-27 08:50:01
100          276.0       107         156         2016-12-27 08:55:01
100          282.0       116         0           2016-12-27 09:00:01
100          290.0       111         134         2016-12-27 09:05:01
100          280.0       93          0           2016-12-27 09:10:01
100          283.0       93          152         2016-12-27 09:15:01
100          285.0       98          0           2016-12-27 09:20:01
100          305.0       120         121         2016-12-27 09:25:01
100          280.0       102         0           2016-12-27 09:30:02
100          288.0       84          125         2016-12-27 09:35:01
100          288.0       89          0           2016-12-27 09:40:00
100          283.0       102         0           2016-12-27 09:45:01
100          283.0       116         161         2016-12-27 09:50:01
100          285.0       107         0           2016-12-27 09:55:01
100          285.0       98          152         2016-12-27 10:00:01
norrland
Posts: 8
Joined: Monday 28 November 2016 22:59
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

Re: What happend to gust and wind for Davis?

Post by norrland »

I've digged some more into this now and I'm curious about the approach used by the Davis hardware integration. At a first glance it looks like Domoticz are missing out on LOOP packages from the logger since it asks for one package every 30s. The logger will produce one package every 3 seconds.

The major issue, in my opinion, is that Domoticz get an incorrect reading since it reads one of the generated packages, thus no average. Especially for Wind readings this can generate some major differences between accurate values and the values Domoticz reports. For example today was a windy day and the Davis console says max wind was 19.2 m/s and Domoticz says 14.7 m/s.

Would it be possible for Domoticz to read at least 10 packages each 30s or read new packages every 3s instead of every 30 to increase accuracy?

I could have gotten something wrong here. Sorry if that is the case.

I'm mostly basing this on what I found in the technical manual for WeatherLink:
Assuming that you want a virtually continuous stream of loop packets, one approach is to ask for a large number (say 1000) of packets in one LOOP command, another approach is to ask for a few packets (5-10) in one LOOP command and repeat the request when they have arrived. In either case there is the possibility that missed characters or other communication difficulties may cause the receiver to become unsynchronized with the link as to where the data packets begin. If this happens you should first stop the stream of LOOP data by sending another valid command (like a read of Link memory). Then clear your receive buffer and send the LOOP command again.
In DavisLoggerSerial.cpp it says (line 154):

Code: Select all

			case DSTATE_LOOP:
				m_statecounter++;
				if (m_statecounter>=DAVIS_READ_INTERVAL)
				{
					m_statecounter=0;
					write("LOOP 1\n", 7);
				}
				break;

where DAVIS_READ_INTERNAL is 30.
Post Reply

Who is online

Users browsing this forum: No registered users and 0 guests