Smart Weather App

[work in progress…]

Just got this nice Waveshare 2.9″ e-Paper module as a present. It looks like an ideal display for a weather station. An esp8266 board could update the display with information from the web before entering deep sleep mode for an hour or so. A unique feature of these displays is that they only draw power during update. This means that last updated weather information remains visible, even if the esp8266 is sleeping.






Searching for a free web service that offers actual weather data, as well as weather forecasts, I noticed that their reliability can be as unpredictable as the weather. So my new project is to build a ‘smart’ weather station for esp8266. It will retrieve weather information from 6* independent sources on an hourly basis, and initially show averaged values for all items of interest.

The ‘smart’ part is that the algorithm accepts feedback. Firstly, there’s automatic feedback from a calibrated BME280 sensor that measures the actual temperature, humidity and air pressure at my location. These measurements will constantly be compared with the predicted values, resulting in weight factors being assigned to the source values for the prediction. When I’m satisfied with the result, the BME280 sensor can be removed.

Secondly, in my prototype version for TFT touchscreen, the screen has a manual feedback option: clicking on the ‘actual weather’ icon will display all possible weather condition icons. If necessary, an icon that describes the actual conditions more accurately can be clicked to overrule the algorithm’s choice and adjust the weight factors accordingly.

The feedback from the weather station will learn de (php) algorithm how to weigh all externally retrieved data in order to send the best fitting results to the display. Eventually, this will result in a weather station that shows more – and more reliable – information than each of the individual sources.

Meanwhile, the php part of the project is finished. A video of the station in action will follow after the esp8266 sketch is ready as well.


* Apart from global services Wunderground and Openweathermap, I use two Dutch weather services (KNMI and Buienradar), as well as METAR/TAF info from two nearby airfields. Although the esp8266 could probably handle all json/xml decoding, I decided to leave that to a php script on my webserver. On request, it returns the weighted averages to the esp8266, or processes its feedback.