diff --git a/include/bme.h b/include/bme.h index e854e55..ce0669a 100644 --- a/include/bme.h +++ b/include/bme.h @@ -1,5 +1,7 @@ #pragma once +#if ADAFRUIT_BME + #include namespace Bme { @@ -47,4 +49,59 @@ namespace Bme { Adafruit_BME280::SAMPLING_X1, // humidity Adafruit_BME280::FILTER_OFF); } -} \ No newline at end of file +} +#else + +#include + +namespace Bme { + + BME280 bme; // I2C Interface + bool initialised = false; + + struct { + float temp; + float humidity; + float pressure; + float readTemp() { + char buf[10]; + sprintf(buf, "%.1f", bme.readTempC()); + temp = atof(buf); + return temp; + } + float readHumidity() { + char buf[10]; + sprintf(buf, "%.1f", bme.readFloatHumidity()); + humidity = atof(buf); + return humidity; + } + void readAll() { + if (!initialised) return; + // bme.takeForcedMeasurement(); + readTemp(); + readHumidity(); + pressure = bme.readFloatPressure(); + } + } data; + + void setup() { + Serial.println(F("BME280 setup")); + + bme.setI2CAddress(0x76); + if (!bme.beginI2C()) { + Serial.println(F("Could not find a valid BME280 sensor, check wiring!")); + return; + } + initialised = true; + + /* Settings from examples: advancedsettings.ino */ + // -- Weather Station Scenario -- + // Serial.println("-- Weather Station Scenario --"); + // bme.setSampling(Adafruit_BME280::MODE_FORCED, /* Operating Mode. */ + // Adafruit_BME280::SAMPLING_X1, // temperature + // Adafruit_BME280::SAMPLING_X1, // pressure + // Adafruit_BME280::SAMPLING_X1, // humidity + // Adafruit_BME280::FILTER_OFF); + } +} +#endif diff --git a/platformio.ini b/platformio.ini index f5443ef..addf460 100644 --- a/platformio.ini +++ b/platformio.ini @@ -20,9 +20,10 @@ lib_deps = jchristensen/Timezone@^1.2.4 adafruit/Adafruit Unified Sensor @ ^1.1.4 adafruit/Adafruit BME280 Library@^2.2.4 + sparkfun/SparkFun BME280@^2.0.9 https://git.hodos.ro/libraries/wifi.git@^1.0.1 https://git.hodos.ro/libraries/ha-mqtt.git@^1.0.0 -build_flags = -D WIFI_ALWAYS_ON=1 +build_flags = -D WIFI_ALWAYS_ON=1 -D ADAFRUIT_BME=1 [env:laptop_home]