Flora Liu Hardware Engineer

05 Outdoor weathering monitor

Outdoor weathering monitor

One-minute weather readings in, a dashboard anyone can filter out.

A logger writes 1,440 readings a day. How do you keep what they say without storing every one?

An outdoor weathering site records temperature, humidity, UV and light every minute, next to a weather station's rainfall. This tooling loads both into MySQL and turns them into an Excel dashboard and a PDF report.

github.com/floraliu-dev/outdoor-weathering-monitor ↗ · Python · MySQL · Excel · Demo runs on synthetic data.

30 times fewer rows, same accuracy

Every reading is 1,440 rows a day; a sample alone would lose the extremes. The importer keeps the two apart:

  • It keeps one row every 30 minutes, with the value at that moment.
  • Daily average, minimum, maximum and range come from all 1,440 readings of the day.
  • Daily light and UV dose are integrated from the full one-minute data.
  • The station's temperature, humidity and rainfall are merged into the same table.

A dashboard that follows the question

Eight linked charts read from that table: temperature, humidity, UV, light, precipitation, rainfall ratio, and daily UV and light dose. Month and year slicers pick one month, several, or a range across the new year, and every chart follows.

The same data also feeds a script that writes an eight-panel chart, a Markdown summary and a PDF report from one workbook.

Try it

  • Download the demo dashboard (Excel) ↗, filled with a year of synthetic data laid out like the real table.
  • Importer: pip install -r requirements.txt, set your MySQL credentials, then python deploy_all_data.py. It creates the database on the first run.
  • The site's own logger and station files are confidential and not in the repository.