ESPHome 2026.6.0-dev
Loading...
Searching...
No Matches
bme680.h
Go to the documentation of this file.
1#pragma once
2
6
7namespace esphome::bme680 {
8
20
30
33 uint16_t t1;
34 int16_t t2;
35 int8_t t3;
36
37 uint16_t p1;
38 int16_t p2;
39 int8_t p3;
40 int16_t p4;
41 int16_t p5;
42 int8_t p6;
43 int8_t p7;
44 int16_t p8;
45 int16_t p9;
46 int8_t p10;
47
48 uint16_t h1;
49 uint16_t h2;
50 int8_t h3;
51 int8_t h4;
52 int8_t h5;
53 uint8_t h6;
54 int8_t h7;
55
56 int8_t gh1;
57 int16_t gh2;
58 int8_t gh3;
59
63
64 float tfine;
66};
67
69 public:
71 void set_temperature_oversampling(BME680Oversampling temperature_oversampling);
73 void set_pressure_oversampling(BME680Oversampling pressure_oversampling);
75 void set_humidity_oversampling(BME680Oversampling humidity_oversampling);
77 void set_iir_filter(BME680IIRFilter iir_filter);
78
79 void set_temperature_sensor(sensor::Sensor *temperature_sensor) { temperature_sensor_ = temperature_sensor; }
80 void set_pressure_sensor(sensor::Sensor *pressure_sensor) { pressure_sensor_ = pressure_sensor; }
81 void set_humidity_sensor(sensor::Sensor *humidity_sensor) { humidity_sensor_ = humidity_sensor; }
82 void set_gas_resistance_sensor(sensor::Sensor *gas_resistance_sensor) {
83 gas_resistance_sensor_ = gas_resistance_sensor;
84 }
85
95 void set_heater(uint16_t heater_temperature, uint16_t heater_duration);
96
97 // ========== INTERNAL METHODS ==========
98 // (In most use cases you won't need these)
99 void setup() override;
100 void dump_config() override;
101 void update() override;
102
103 protected:
105 uint8_t calc_heater_resistance_(uint16_t temperature);
107 uint8_t calc_heater_duration_(uint16_t duration);
109 void read_data_();
110
112 float calc_temperature_(uint32_t raw_temperature);
114 float calc_pressure_(uint32_t raw_pressure);
116 float calc_humidity_(uint16_t raw_humidity);
118 float calc_gas_resistance_(uint16_t raw_gas, uint8_t range);
121
127 uint16_t heater_temperature_{320};
128 uint16_t heater_duration_{150};
129
134};
135
136} // namespace esphome::bme680
This class simplifies creating components that periodically check a state.
Definition component.h:585
uint8_t calc_heater_duration_(uint16_t duration)
Calculate the heater duration value to send to the BME680 register.
Definition bme680.cpp:279
void read_data_()
Read data from the BME680 and publish results.
Definition bme680.cpp:295
sensor::Sensor * humidity_sensor_
Definition bme680.h:132
void set_pressure_sensor(sensor::Sensor *pressure_sensor)
Definition bme680.h:80
uint8_t calc_heater_resistance_(uint16_t temperature)
Calculate the heater resistance value to send to the BME680 register.
Definition bme680.cpp:248
float calc_humidity_(uint16_t raw_humidity)
Calculate the relative humidity in % using the provided raw ADC value.
Definition bme680.cpp:419
BME680Oversampling pressure_oversampling_
Definition bme680.h:124
BME680CalibrationData calibration_
Definition bme680.h:122
void set_pressure_oversampling(BME680Oversampling pressure_oversampling)
Set the pressure oversampling value. Defaults to 16X.
Definition bme680.cpp:498
BME680Oversampling temperature_oversampling_
Definition bme680.h:123
void set_humidity_sensor(sensor::Sensor *humidity_sensor)
Definition bme680.h:81
void set_temperature_sensor(sensor::Sensor *temperature_sensor)
Definition bme680.h:79
BME680Oversampling humidity_oversampling_
Definition bme680.h:125
void set_temperature_oversampling(BME680Oversampling temperature_oversampling)
Set the temperature oversampling value. Defaults to 16X.
Definition bme680.cpp:495
sensor::Sensor * temperature_sensor_
Definition bme680.h:130
float calc_gas_resistance_(uint16_t raw_gas, uint8_t range)
Calculate the gas resistance in Ω using the provided raw ADC value.
Definition bme680.cpp:455
void set_heater(uint16_t heater_temperature, uint16_t heater_duration)
Set how the internal heater should operate.
Definition bme680.cpp:505
void set_gas_resistance_sensor(sensor::Sensor *gas_resistance_sensor)
Definition bme680.h:82
sensor::Sensor * pressure_sensor_
Definition bme680.h:131
void set_iir_filter(BME680IIRFilter iir_filter)
Set the IIR Filter value. Defaults to no IIR Filter.
Definition bme680.cpp:504
uint32_t calc_meas_duration_()
Calculate how long the sensor will take until we can retrieve data.
Definition bme680.cpp:472
float calc_temperature_(uint32_t raw_temperature)
Calculate the temperature in °C using the provided raw ADC value.
Definition bme680.cpp:351
void set_humidity_oversampling(BME680Oversampling humidity_oversampling)
Set the humidity oversampling value. Defaults to 16X.
Definition bme680.cpp:501
float calc_pressure_(uint32_t raw_pressure)
Calculate the pressure in hPa using the provided raw ADC value.
Definition bme680.cpp:377
sensor::Sensor * gas_resistance_sensor_
Definition bme680.h:133
BME680IIRFilter iir_filter_
Definition bme680.h:126
This Class provides the methods to read/write bytes from/to an i2c device.
Definition i2c.h:132
Base-class for all sensors.
Definition sensor.h:47
Range range
Definition msa3xx.h:0
uint8_t duration
Definition msa3xx.h:0
BME680IIRFilter
Enum listing all IIR Filter options for the BME680.
Definition bme680.h:10
@ BME680_IIR_FILTER_63X
Definition bme680.h:17
@ BME680_IIR_FILTER_15X
Definition bme680.h:15
@ BME680_IIR_FILTER_OFF
Definition bme680.h:11
@ BME680_IIR_FILTER_3X
Definition bme680.h:13
@ BME680_IIR_FILTER_31X
Definition bme680.h:16
@ BME680_IIR_FILTER_127X
Definition bme680.h:18
@ BME680_IIR_FILTER_7X
Definition bme680.h:14
@ BME680_IIR_FILTER_1X
Definition bme680.h:12
BME680Oversampling
Enum listing all oversampling options for the BME680.
Definition bme680.h:22
@ BME680_OVERSAMPLING_2X
Definition bme680.h:25
@ BME680_OVERSAMPLING_4X
Definition bme680.h:26
@ BME680_OVERSAMPLING_16X
Definition bme680.h:28
@ BME680_OVERSAMPLING_NONE
Definition bme680.h:23
@ BME680_OVERSAMPLING_8X
Definition bme680.h:27
@ BME680_OVERSAMPLING_1X
Definition bme680.h:24
static void uint32_t
Struct for storing calibration data for the BME680.
Definition bme680.h:32
uint16_t temperature
Definition sun_gtil2.cpp:12