I now have a weather station on the windowsill, and it mostly works, which feels like the honest description of every project I have ever finished. An ESP32, a BME280 over I2C, and a deep-sleep loop that wakes up every couple of minutes, reads the sensor, publishes to MQTT, and goes back to sleep.
Temperature and humidity are solid. They match the cheap shop-bought thermometer next to them to within half a degree, which is more than I expected from a sensor that cost about the price of a coffee. The pressure reading is also fine, once I stopped expecting it to mean anything in isolation and started looking at the trend.
The bit that does not work is the enclosure. The sensor sits too close to the ESP32's regulator, so on a still day it reads a degree or two warm from the board's own heat. The deep sleep helps, but I clearly need to move the BME280 onto a flying lead away from anything that gets warm. That is a job for next weekend, alongside actually weatherproofing the thing rather than trusting a margarine tub.
Still, real numbers off my own windowsill, flowing into Home Assistant, updating a graph I built. For a couple of evenings of fiddling that is a good trade.