ESPHome 2025.5.0
Loading...
Searching...
No Matches
bme680.h
Go to the documentation of this file.
1#pragma once
2
6
7namespace esphome {
8namespace bme680 {
9
21
31
34 uint16_t t1;
35 uint16_t t2;
36 uint8_t t3;
37
38 uint16_t p1;
39 int16_t p2;
40 int8_t p3;
41 int16_t p4;
42 int16_t p5;
43 int8_t p6;
44 int8_t p7;
45 int16_t p8;
46 int16_t p9;
47 int8_t p10;
48
49 uint16_t h1;
50 uint16_t h2;
51 int8_t h3;
52 int8_t h4;
53 int8_t h5;
54 uint8_t h6;
55 int8_t h7;
56
57 int8_t gh1;
58 int16_t gh2;
59 int8_t gh3;
60
64
65 float tfine;
67};
68
70 public:
72 void set_temperature_oversampling(BME680Oversampling temperature_oversampling);
74 void set_pressure_oversampling(BME680Oversampling pressure_oversampling);
76 void set_humidity_oversampling(BME680Oversampling humidity_oversampling);
78 void set_iir_filter(BME680IIRFilter iir_filter);
79
80 void set_temperature_sensor(sensor::Sensor *temperature_sensor) { temperature_sensor_ = temperature_sensor; }
81 void set_pressure_sensor(sensor::Sensor *pressure_sensor) { pressure_sensor_ = pressure_sensor; }
82 void set_humidity_sensor(sensor::Sensor *humidity_sensor) { humidity_sensor_ = humidity_sensor; }
83 void set_gas_resistance_sensor(sensor::Sensor *gas_resistance_sensor) {
84 gas_resistance_sensor_ = gas_resistance_sensor;
85 }
86
96 void set_heater(uint16_t heater_temperature, uint16_t heater_duration);
97
98 // ========== INTERNAL METHODS ==========
99 // (In most use cases you won't need these)
100 void setup() override;
101 void dump_config() override;
102 float get_setup_priority() const override;
103 void update() override;
104
105 protected:
107 uint8_t calc_heater_resistance_(uint16_t temperature);
109 uint8_t calc_heater_duration_(uint16_t duration);
111 void read_data_();
112
114 float calc_temperature_(uint32_t raw_temperature);
116 float calc_pressure_(uint32_t raw_pressure);
118 float calc_humidity_(uint16_t raw_humidity);
120 float calc_gas_resistance_(uint16_t raw_gas, uint8_t range);
122 uint32_t calc_meas_duration_();
123
129 uint16_t heater_temperature_{320};
130 uint16_t heater_duration_{150};
131
136};
137
138} // namespace bme680
139} // namespace esphome
This class simplifies creating components that periodically check a state.
Definition component.h:301
uint8_t calc_heater_duration_(uint16_t duration)
Calculate the heater duration value to send to the BME680 register.
Definition bme680.cpp:283
void read_data_()
Read data from the BME680 and publish results.
Definition bme680.cpp:299
sensor::Sensor * humidity_sensor_
Definition bme680.h:134
void set_pressure_sensor(sensor::Sensor *pressure_sensor)
Definition bme680.h:81
uint8_t calc_heater_resistance_(uint16_t temperature)
Calculate the heater resistance value to send to the BME680 register.
Definition bme680.cpp:252
float calc_humidity_(uint16_t raw_humidity)
Calculate the relative humidity in % using the provided raw ADC value.
Definition bme680.cpp:423
BME680Oversampling pressure_oversampling_
Definition bme680.h:126
BME680CalibrationData calibration_
Definition bme680.h:124
void set_pressure_oversampling(BME680Oversampling pressure_oversampling)
Set the pressure oversampling value. Defaults to 16X.
Definition bme680.cpp:502
BME680Oversampling temperature_oversampling_
Definition bme680.h:125
void set_humidity_sensor(sensor::Sensor *humidity_sensor)
Definition bme680.h:82
float get_setup_priority() const override
Definition bme680.cpp:237
void set_temperature_sensor(sensor::Sensor *temperature_sensor)
Definition bme680.h:80
BME680Oversampling humidity_oversampling_
Definition bme680.h:127
void set_temperature_oversampling(BME680Oversampling temperature_oversampling)
Set the temperature oversampling value. Defaults to 16X.
Definition bme680.cpp:499
sensor::Sensor * temperature_sensor_
Definition bme680.h:132
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:459
void set_heater(uint16_t heater_temperature, uint16_t heater_duration)
Set how the internal heater should operate.
Definition bme680.cpp:509
void set_gas_resistance_sensor(sensor::Sensor *gas_resistance_sensor)
Definition bme680.h:83
sensor::Sensor * pressure_sensor_
Definition bme680.h:133
void set_iir_filter(BME680IIRFilter iir_filter)
Set the IIR Filter value. Defaults to no IIR Filter.
Definition bme680.cpp:508
uint32_t calc_meas_duration_()
Calculate how long the sensor will take until we can retrieve data.
Definition bme680.cpp:476
float calc_temperature_(uint32_t raw_temperature)
Calculate the temperature in °C using the provided raw ADC value.
Definition bme680.cpp:355
void set_humidity_oversampling(BME680Oversampling humidity_oversampling)
Set the humidity oversampling value. Defaults to 16X.
Definition bme680.cpp:505
float calc_pressure_(uint32_t raw_pressure)
Calculate the pressure in hPa using the provided raw ADC value.
Definition bme680.cpp:381
sensor::Sensor * gas_resistance_sensor_
Definition bme680.h:135
BME680IIRFilter iir_filter_
Definition bme680.h:128
This Class provides the methods to read/write bytes from/to an i2c device.
Definition i2c.h:133
Base-class for all sensors.
Definition sensor.h:57
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:11
@ BME680_IIR_FILTER_63X
Definition bme680.h:18
@ BME680_IIR_FILTER_15X
Definition bme680.h:16
@ BME680_IIR_FILTER_OFF
Definition bme680.h:12
@ BME680_IIR_FILTER_3X
Definition bme680.h:14
@ BME680_IIR_FILTER_31X
Definition bme680.h:17
@ BME680_IIR_FILTER_127X
Definition bme680.h:19
@ BME680_IIR_FILTER_7X
Definition bme680.h:15
@ BME680_IIR_FILTER_1X
Definition bme680.h:13
BME680Oversampling
Enum listing all oversampling options for the BME680.
Definition bme680.h:23
@ BME680_OVERSAMPLING_2X
Definition bme680.h:26
@ BME680_OVERSAMPLING_4X
Definition bme680.h:27
@ BME680_OVERSAMPLING_16X
Definition bme680.h:29
@ BME680_OVERSAMPLING_NONE
Definition bme680.h:24
@ BME680_OVERSAMPLING_8X
Definition bme680.h:28
@ BME680_OVERSAMPLING_1X
Definition bme680.h:25
Providing packet encoding functions for exchanging data with a remote host.
Definition a01nyub.cpp:7
Struct for storing calibration data for the BME680.
Definition bme680.h:33
uint16_t temperature
Definition sun_gtil2.cpp:12