Even at once every 10 minutes, it should manage almost 3 weeks without requiring a recharge.
Some options that definitely help is to quicken the Wifi reconnect. ESPHome has options to disable AP scanning and doing a fast-and-dirty connect&send. Using MQTT also helped a lot compared to using HTTP.
The most important part is to reduce the on-time as much as possible. 30 seconds is still way above the lower limit that I can do. If you halve it you can double the amount of data points without additional energy by reducing the sleep time.
I'm working on replacing the battery with a solar panel and supercap to power it from ambient shadow light entirely, the numbers to agree that it is possible in my case. Would help to keep it alive in cold weather.
After a few months it stopped working, I think some moisture got in and the DHT11 failed.
A bare chip makes it much easier, and you need to balance what comes online and how long it sleeps to still work in your use case.
It's not all that easy in some cases, but it can be done. I've used [1] as a resource before in my own projects.
[1] https://github.com/z2amiller/sensorboard/blob/master/PowerSa...
Biggest problem we found was enterprise networks would randomly kick you off if you were using DHCP. I think because they would assume that if you hadn't transmitted in five to ten minutes it meant you'd gone away. Using static IP fixed that.
Edit: Friend of mine that mucks with ESP8266's uses the low power timer to reset and wake the device up out of deep sleep. (Via a simple hack I think just connecting a timer pin to the reset).
Star-mesh topology, with batteries on the leaf nodes. Solar further in. Excerpt: "Iām expecting about 3 months at a 5min log interval using a 2000mAh lipo battery."
Right now I'm looking to create smart blinds. The motors don't use that much power, but the issue is the MCU listening for commands. The ESP32 support BLE, but it's power consumption is still rather high, so batteries would only last a few days at most.