16 explicit BME280(int8_t address = 0x77,
float altitude = NAN)
17 : address(address), sensorStatus(
false), altitude(altitude) {
21 float value = TEMPERATURE_NOT_AVAILABLE;
22 bool retryDone =
false;
24 if (!sensorStatus || isnan(value)) {
25 sensorStatus = bme.begin(address);
28 value = TEMPERATURE_NOT_AVAILABLE;
30 value = bme.readTemperature();
32 }
while (isnan(value) && !retryDone);
37 float value = HUMIDITY_NOT_AVAILABLE;
38 bool retryDone =
false;
40 if (!sensorStatus || isnan(value)) {
41 sensorStatus = bme.begin(address);
44 value = HUMIDITY_NOT_AVAILABLE;
46 value = bme.readHumidity();
48 }
while (isnan(value) && !retryDone);
52 double getPressure() {
53 float value = PRESSURE_NOT_AVAILABLE;
54 bool retryDone =
false;
56 if (!sensorStatus || isnan(value)) {
57 sensorStatus = bme.begin(address);
60 value = PRESSURE_NOT_AVAILABLE;
62 value = bme.readPressure() / 100.0;
64 }
while (isnan(value) && !retryDone);
65 if (!isnan(altitude)) {
66 value = bme.seaLevelForAltitude(altitude, value);
72 sensorStatus = bme.begin(address);
74 pressureChannel.setNewValue(getPressure());
75 channel.setNewValue(getTemp(), getHumi());
78 void setAltitude(
float newAltitude) {
79 altitude = newAltitude;