|
|
|
@ -21,17 +21,20 @@ |
|
|
|
#include <Adafruit_LittleFS.h> |
|
|
|
#include <InternalFileSystem.h> |
|
|
|
static const uint8_t bsec_config_iaq[] = { |
|
|
|
#include "config/generic_33v_3s_28d/bsec_iaq.txt" |
|
|
|
#include "config/generic_33v_3s_28d/bsec_iaq.txt" // 3.3v, LP, 28 day background calibration window |
|
|
|
}; |
|
|
|
static Bsec bsec_iaq; |
|
|
|
static float bsec_temperature = 0; |
|
|
|
static float bsec_humidity = 0; |
|
|
|
static float bsec_pressure_hpa = 0; |
|
|
|
static float bsec_iaq_val = 0; |
|
|
|
static uint8_t bsec_accuracy = 0; |
|
|
|
static bool bsec_active = false; |
|
|
|
static bool bsec_data_ready = false; |
|
|
|
static Bsec bsec_iaq; |
|
|
|
static float bsec_temperature = 0; |
|
|
|
static float bsec_humidity = 0; |
|
|
|
static float bsec_pressure_hpa = 0; |
|
|
|
static float bsec_iaq_val = 0; |
|
|
|
static uint8_t bsec_accuracy = 0; |
|
|
|
static bool bsec_active = false; |
|
|
|
static bool bsec_data_ready = false; |
|
|
|
static bool bsec_first_save_done = false; |
|
|
|
static uint32_t bsec_last_save_ms = 0; |
|
|
|
#define BSEC_STATE_FILE "/bsec_state.bin" |
|
|
|
#define BSEC_SAVE_INTERVAL_MS (8UL * 60 * 60 * 1000) // 8 hour state-save interval
|
|
|
|
#endif |
|
|
|
|
|
|
|
#ifdef ENV_INCLUDE_BME680 |
|
|
|
@ -501,7 +504,6 @@ static uint8_t init_bme680_bsec(TwoWire* wire, uint8_t addr) { |
|
|
|
|
|
|
|
static void query_bme680_bsec(uint8_t ch, uint8_t, CayenneLPP& lpp) { |
|
|
|
if (!bsec_data_ready) return; |
|
|
|
bsec_data_ready = false; |
|
|
|
lpp.addTemperature(ch, bsec_temperature); |
|
|
|
lpp.addRelativeHumidity(ch, bsec_humidity); |
|
|
|
lpp.addBarometricPressure(ch, bsec_pressure_hpa); |
|
|
|
@ -906,9 +908,18 @@ void EnvironmentSensorManager::loop() { |
|
|
|
bsec_iaq_val = bsec_iaq.iaq; |
|
|
|
bsec_accuracy = bsec_iaq.iaqAccuracy; |
|
|
|
bsec_data_ready = true; |
|
|
|
if (bsec_accuracy >= 2 && bsec_accuracy > prev_accuracy) |
|
|
|
bsec_save_state(); |
|
|
|
|
|
|
|
if (bsec_accuracy == 3) { |
|
|
|
if (!bsec_first_save_done) { |
|
|
|
bsec_save_state(); |
|
|
|
bsec_last_save_ms = millis(); |
|
|
|
bsec_first_save_done = true; |
|
|
|
} else if ((millis() - bsec_last_save_ms) >= BSEC_SAVE_INTERVAL_MS) { |
|
|
|
bsec_save_state(); |
|
|
|
bsec_last_save_ms = millis(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
#endif |
|
|
|
#endif // ENV_INCLUDE_BME680_BSEC
|
|
|
|
} |
|
|
|
#endif // ENV_INCLUDE_GPS || ENV_INCLUDE_BME680_BSEC
|
|
|
|
|