For the BME680 and BSEC library to work and calculate IAQ values, the sensor has to be running all the time and feeding values into the closed source BSEC libraries.
Therefor the deep-sleep example cannot be applied.
The BSEC library will tell the hosting code how long to wait until calling it again. The processor can then be made to sleep until that point in time.
I do recall that the rate choices for BSEC seemed to be “very fast” or “very slow” without any pacing that felt useful to me. And sticking a big binary blob in an embedded firmware was a non-starter anyway… their insistence on making it closed and secret basically made it unusable.
But it does not actually prevent suspending the processor.
Indeed, 300s for quoted average current ~0.1mA or every 3s for two combos of readings, one of which is ~0.1mA, or full speed of 1s for all those Sci-Fi movie moments when the volatile gasses are pouring out in to the room.
The wrinkle Bosch don’t highlight so well is that if you do go to sleep, the Arduino library implementation relies on millis() being up to date, so you either add a value on when you wake up in time for the next reading or you, on AVR, use SLEEP_MODE_IDLE which is a bit academic as it wakes every millisecond and uses almost the same amount of power. If you lose RAM per ESP32, you have to save some data structures, sleep and upon awake, restore data & rejig the timer.