Recently my attention was brought to a SDR tool for receiving wireless 
sensor data (TFA IT+ KlimaLogg Pro, LaCrosse, WeatherHub). See: 
https://github.com/baycom/tfrec.

I wrote a weewx driver which parsed and stored the tfrec data of my 9 
KlimaLogg sensors. The weewx driver can be found here: 
https://github.com/matthewwall/weewx-tfrc

After this success I searched for a package that reads the radio data of 
Vantage Pro weather stations with a (cheap) RTL-SDR dongle and found: the 
rtldavis package on: https://github.com/bemasher/rtldavis.

With this package were a few problems:
1. The development of the package stopped three years ago.
2. The set of European frequencies appeared not to be useful.
3. The package could only handle one transmitter (at a time).
4. The package is written in GO. Not a big issue, but the GO language is 
new for me.

With two Vantage Pro2 systems, an anemometer station and a leaf-soil 
station the challenge was to get this package concurrently working for more 
than one transmitter (four in my case).

With some modifications of main.go and protocol.go and trial and error I 
could find a reasonable set of the European frequencies which are used in 
the frequency hop sequence.
The next step was to get the data of more than one sensor wich each its own 
hopping timing. 
The last step will be to parse the data packets and store the data in 
Weewx. This part is easy because this was already done by me via the 
parsing of the raw meteostick data in the weewx-meteostick driver, see: 
https://github.com/matthewwall/weewx-meteostick.

The hopping mechanism has some prograss today. The principle is as follows.
1. Wait long enough on a fixed frequency until you have seen at least one 
message of each transmitter. For the five EU frequencies this process takes 
17 seconds or less. For the 51 US frequencies this will take about ten 
times as much time.
2, Calculate with help of the lastVisitedTimes of all transmitters what the 
nextVisitTimes (in the near future) will be and how many hops would be 
needed to get here.
3. Detect the smallest nextVisitTime. This will be of the transmitter which 
follows first.
4. Calculate the hop channel for this transmitter.
5. Calculate the loopPeriod for this transmitter. In case the signal of 
this transmitter is missed we don't want to wait too long and miss packets 
of other transmitters too.
6. Start the hop process and wait for new data.

I combined the weewx-sdr and weewx-meteostick drivers fr this weewx-rtld 
driver.
The results so far:

The first 1000 messages were read with the new driver.
Average percentage of received signals is 94,8 %, see table.

     ok missed tot  pctGood
     341  19     360  94,7
     335  16     351  95,4
     324  20     344  94,2
    ----  --    ----  ---- 
tot 1000  55 1055  94,8

The FreqError in general varies between -1000 and +1000.
When abs(FreqError) > 10000 the weewx-rtld driver will restart program 
rtldavis.

For a comparison between the Meteostick and rtld driver data see: 
http://www.lucdesign.nl/_weewx/bootstrap_rtld/hour.html

There is one challence left: how to get local barometer data in my 
Raspberry PI? 
I could use a BMP280 pressure/temp sensor... so, more to come.

Cheers, Luc

-- 
You received this message because you are subscribed to the Google Groups 
"weewx-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to