Bosch Sensortec Community

    cancel
    Showing results for 
    Search instead for 
    Did you mean: 
    SOLVED

    bme680 Strange values of static_iaq

    bme680 Strange values of static_iaq

    subsib
    New Poster

    Hi,

    I'm using a bme680 with an esp32 in spi, in a very simple loop. The project uses the bsec library. The project is compiled using the Arduino IDE 1.8.11 (because the project does not compile until now with the Bsec library using the Arduino IDE 1.8.12 version but with 1.8.11 yes)

    (init)

      
    iaqSensor.begin(UINT8_C(0x77), Wire);
    
    bsec_virtual_sensor_t sensorList[10] = {
        BSEC_OUTPUT_RAW_TEMPERATURE,
        BSEC_OUTPUT_RAW_PRESSURE,
        BSEC_OUTPUT_RAW_HUMIDITY,
        BSEC_OUTPUT_RAW_GAS,
        BSEC_OUTPUT_IAQ,
        BSEC_OUTPUT_STATIC_IAQ,
        BSEC_OUTPUT_CO2_EQUIVALENT,
        BSEC_OUTPUT_BREATH_VOC_EQUIVALENT,
        BSEC_OUTPUT_SENSOR_HEAT_COMPENSATED_TEMPERATURE,
        BSEC_OUTPUT_SENSOR_HEAT_COMPENSATED_HUMIDITY,
      };
    
      iaqSensor.updateSubscription(sensorList, 10, BSEC_SAMPLE_RATE_LP);
      checkIaqSensorStatus();

    (loop)

     

    if (iaqSensor.run()) { // If new data is available
    
        StaticJsonDocument<500> JSONdocument;
    
        JSONdocument["measurment"] = "esp32_children";
        JsonObject tags = JSONdocument.createNestedObject("tags");
        tags["location"] = "childrensroom";
        JsonObject fields = JSONdocument.createNestedObject("fields");
    
        fields["temperature"] = iaqSensor.temperature;
        fields["pressure"] = iaqSensor.pressure;
        fields["humidity"] = iaqSensor.humidity;
        fields["iaq"] = iaqSensor.iaq;
        fields["iaq_accuracy"] = iaqSensor.iaqAccuracy;
        fields["gas_resistance"] = iaqSensor.gasResistance;
        fields["static_iaq"] = iaqSensor.staticIaq;
        fields["co2Equivalent"] = iaqSensor.co2Equivalent;
        fields["breath_voc_equivalent"] = iaqSensor.breathVocEquivalent;
    
        char buffer[500];
        serializeJsonPretty(JSONdocument, buffer);
        Serial.println(buffer);
        client.publish("esp32/children/output", buffer);
        Serial.println("sent to mqtt");
      } else {
        checkIaqSensorStatus();
      }

    I've noticed several things that seem strange to me.
    First of all, iaq and iaq_static values sometimes exceed 500. I don't know if the air in my house is particularly impure, but it's out of the official range. How can this happen?

    As an example, that is a JSON received from the device :

    {
      "measurment": "esp32_children",
      "tags": {
        "location": "childrensroom"
      },
      "fields": {
        "temperature": 22.90531,
        "pressure": 101038,
        "humidity": 66.33105,
        "iaq": 187.3018,
        "iaq_accuracy": 3,
        "gas_resistance": 132382,
        "static_iaq": 434.5628,
        "co2Equivalent": 4345.628,
        "breath_voc_equivalent": 244.1985
      }
    }

    Here, the value is not over 500, but there is a correlation between co2equivalent and static_iaq and I wonder if it is normal that much.

    Also, I noticed that the co2Equivalent value is 10 times static_iaq, would that be relevant?

    I wonder if there isn't a configuration or overflow problem somewhere?

    Thanks in advance.

    3 REPLIES 3

    Vincent
    Community Moderator
    Community Moderator

    1.  if there is a suddenly humidity change in short term,  it is possible to output IAQ as 500.  Then sensor needs time to recover and back to normal IAQ output value.  ULP mode needs much more time compared to LP mode to return to meaningful output.

    2. The equivalent CO2 value is compensated via static IAQ value.  so your observation is making sense here. 

    Hum. Thanks, but I'm still wondering  about the iaq_static how possible it is to reach values as in this capture :

    Capture.PNG

    Vincent
    Community Moderator
    Community Moderator

    The static iaq is calculated by the raw gas resistance and the good air standard.

    When such situation happens, it could cause by a relative higher concentration of bVOC gas.

    Sometimes, you did not find any difference inside the room, but gas flow would cause such increase.

    For more accurate evaluation, using one box is a better choice.

    Icon--AD-black-48x48Icon--address-consumer-data-black-48x48Icon--appointment-black-48x48Icon--back-left-black-48x48Icon--calendar-black-48x48Icon--center-alignedIcon--Checkbox-checkIcon--clock-black-48x48Icon--close-black-48x48Icon--compare-black-48x48Icon--confirmation-black-48x48Icon--dealer-details-black-48x48Icon--delete-black-48x48Icon--delivery-black-48x48Icon--down-black-48x48Icon--download-black-48x48Ic-OverlayAlertIcon--externallink-black-48x48Icon-Filledforward-right_adjustedIcon--grid-view-black-48x48IC_gd_Check-Circle170821_Icons_Community170823_Bosch_Icons170823_Bosch_Icons170821_Icons_CommunityIC-logout170821_Icons_Community170825_Bosch_Icons170821_Icons_CommunityIC-shopping-cart2170821_Icons_CommunityIC-upIC_UserIcon--imageIcon--info-i-black-48x48Icon--left-alignedIcon--Less-minimize-black-48x48Icon-FilledIcon--List-Check-grennIcon--List-Check-blackIcon--List-Cross-blackIcon--list-view-mobile-black-48x48Icon--list-view-black-48x48Icon--More-Maximize-black-48x48Icon--my-product-black-48x48Icon--newsletter-black-48x48Icon--payment-black-48x48Icon--print-black-48x48Icon--promotion-black-48x48Icon--registration-black-48x48Icon--Reset-black-48x48Icon--right-alignedshare-circle1Icon--share-black-48x48Icon--shopping-bag-black-48x48Icon-shopping-cartIcon--start-play-black-48x48Icon--store-locator-black-48x48Ic-OverlayAlertIcon--summary-black-48x48tumblrIcon-FilledvineIc-OverlayAlertwhishlist