WeatherLink Live, local API and barometer

A few weeks ago, I made the switch from reading my Davis sensors with the Meteostick to the Davis made WeatherLink Live. Though I still like the concept of the Meteostick, the reception is fairly poor and sometimes it would stop receiving data and require a reboot.

One thing you don’t have with the WeatherLink, is reception issues. My transmitters are picked up immediately and updates are received without fault.

The local API allows you to query the current status of your sensors at any time, and it even offers a UDP broadcast option for wind and rain. This means that whenever I subscribe to a specific endpoint, the WeatherLink will start sending data back to me on port 22222 at 2,5 second intervals. A simple Java application on a Raspberry Pi listens to these updates 24/7. For the other sensors, I request an update every 10 seconds. Depending on the documented update interval of the sensor, I then forward the current value to the meteodrenthe.nl server. This does complicate things a little bit. Ideally, the WeatherLink would broadcast any sensor update it receives immediately. As is, it is impossible to determine the exact timestamp of a reading, since the response gives all current sensor values at once.

The WeatherLink also submits data to the Davis servers, of course. But if you have your own database, you can use the local API to avoid having to pay to see your data at a decent refresh rate. The basic free plan only offers 15 minute update intervals.

I like that the WeatherLink has battery backup. For the Meteostick I created something similar by linking the Raspberry Pi Zero W responsible for reading the data to a UPS (uninterruptible power supply). There is a downside I will need to fix, though. In case of a power outage – which really rarely happens here, so it’s mostly theoretical – I would need to maintain a WiFi network in order to keep receiving updates. The WeatherLink on batteries will keep failed updates to the Davis servers in its buffer and submit them when able. This is not the case for any data received or requested via the local API. So, I am considering either linking my router to a battery backup, or using Raspberry Pi with a UPS as a second access point.

As I’ve written before, finding a good barometer has been an issue for me. I currently use a BMP280 sensor as my primary pressure sensor. The WeatherLink comes with an internal barometer (as well as a thermometer and hygrometer, but those aren’t very interesting). How does it fare compared to the BMP280?

The graph is showing the WeatherLink pressure reading (in blue) at sea level. The WeatherLink app allows you to specify an altitude. The API then presents two values, an absolute reading and a reading relative to sea level. I will note that I never did such a thing for the BMP280. The value shown is what it reads. It happens to be pretty close to the two nearest official KNMI stations.

It is noticeable that the BMP280 graph is more smooth. The WLL jumps up and down a bit more. My guess is that this is just regular sensor noise. I avoid this as best I can with the BMP280 by taking hundreds of readings during a 30 second period and then averaging the result. If I didn’t do that, the red line would be a lot more erratic.

So how accurate is the WeatherLink? This evening at 21.10, the two nearest KNMI stations read 1015,0 (Hoogeveen at 13,3 km) and 1014,5 (Eelde at 30,5 km). At that time, the WeatherLink reads 1014,5. Based on previous observations, it might be giving slightly low results, but this is really in the range of 0,1 to 0,3 hPa. However, the bottom line is, this barometer is giving me the best results our of the box of any I have yet tried. I will be observing it a bit more, but I’ll likely make the WeatherLink my primary barometer sensor in the near future.