diff --git a/include/driver/bme680.h b/include/driver/bme680.h
index a054afd6b4323161682096a9a27ed584f693914e..acf6059a2d2d4c7100f87da55330748d4a7f7102 100644
--- a/include/driver/bme680.h
+++ b/include/driver/bme680.h
@@ -451,6 +451,15 @@ class BME680 {
 		*/
 		int8_t getSensorSettings(uint16_t desired_settings);
 
+		inline void configure(uint8_t os_hum, uint8_t os_pres, uint8_t os_temp, uint8_t run_gas, uint16_t heatr_dur, uint16_t heatr_temp) {
+			tph_sett.os_hum = os_hum;
+			tph_sett.os_pres = os_pres;
+			tph_sett.os_temp = os_temp;
+			gas_sett.run_gas = run_gas;
+			gas_sett.heatr_dur = heatr_dur;
+			gas_sett.heatr_temp = heatr_temp;
+		}
+
 		inline void setHumidityOversampling(uint8_t os) {
 			tph_sett.os_hum = os;
 		}
diff --git a/model/driver/bme680.dfa b/model/driver/bme680.dfa
index 72061ce75a5616de73ab6266da348bf1a80fb19f..69e1c6376097dd65c26ba4cbac136efd3512ba52 100644
--- a/model/driver/bme680.dfa
+++ b/model/driver/bme680.dfa
@@ -136,6 +136,28 @@ transition:
     - name: degc
       values: [100, 150, 200, 250, 300]
       parameter: heater_temperature_degc
+  configure:
+    src: [SLEEP, SLEEP_PENDING_ATTR]
+    dst: SLEEP_PENDING_ATTR
+    arguments:
+    - name: os_hum
+      values: ['BME680_OS_NONE', 'BME680_OS_1X', 'BME680_OS_2X', 'BME680_OS_4X', 'BME680_OS_8X', 'BME680_OS_16X']
+      parameter: humidity_oversampling
+    - name: os_pres
+      values: ['BME680_OS_NONE', 'BME680_OS_1X', 'BME680_OS_2X', 'BME680_OS_4X', 'BME680_OS_8X', 'BME680_OS_16X']
+      parameter: pressure_oversampling
+    - name: os_temp
+      values: ['BME680_OS_NONE', 'BME680_OS_1X', 'BME680_OS_2X', 'BME680_OS_4X', 'BME680_OS_8X', 'BME680_OS_16X']
+      parameter: temperature_oversampling
+    - name: run_gas
+      values: ['BME680_DISABLE_GAS_MEAS', 'BME680_ENABLE_GAS_MEAS']
+      parameter: gas_enabled
+    - name: heatr_dur
+      values: [10, 30, 60, 100, 150, 200]
+      parameter: heater_duration_ms
+    - name: heatr_temp
+      values: [100, 150, 200, 250, 300]
+      parameter: heater_temperature_degc
   setSensorSettings:
     src: [SLEEP_PENDING_ATTR]
     dst: SLEEP
@@ -145,6 +167,8 @@ transition:
   setSensorMode:
     src: [SLEEP]
     dst: FORCED
+    codegen:
+      delay_after_ms: 500
   getSensorData:
     src: [FORCED]
     dst: SLEEP