Bosch Sensortec Community

    cancel
    Showing results for 
    Search instead for 
    Did you mean: 

    BME680: IAQ accuracy going from 3 o 1

    BME680: IAQ accuracy going from 3 o 1

    micha_pr
    Established Member

    Hello,

    using the BME680 as indoor sensor in office room I can see red marked IAQ accuracy

    18:57:52.693 -> 164814095, 24.24, 101317.00, 54.56, 731373.00, 38.85, 3, 24.18, 54.75, 32.37, 529.50, 0.56
    18:57:55.732 -> 164817096, 24.24, 101321.00, 54.58, 721204.00, 39.58, 3, 24.18, 54.77, 32.77, 531.06, 0.56
    18:57:58.729 -> 164820096, 24.25, 101319.00, 54.62, 729001.00, 36.84, 1, 24.19, 54.79, 31.31, 525.23, 0.55
    18:58:01.735 -> 164823096, 24.24, 101319.00, 54.63, 721976.00, 37.78, 1, 24.18, 54.84, 31.81, 527.22, 0.55
    18:58:04.726 -> 164826095, 24.25, 101317.00, 54.64, 712818.00, 42.12, 1, 24.19, 54.82, 34.12, 536.47, 0.57

    There was no reason for changing the accuracy to 1, I think...
    I understand that after a while in little changing environmental conditions the accuracy may fall down to value 2 until it can come back to value 3, but why to value 1?

    Value 1 will be there for at least 14 hours, as I can see.

    (BTW: it was taking 3 days until the IAQ accuracy was set to 3 - in office room. I know... stable environment ...)

    And - does it make sense to (auto-)save this config state (with value 1) and overwrite the existing state 3?
    Or can it help to save the old config state and reload it if there are no changes in environmental conditions?

    Thanks!

    Michael

    20 REPLIES 20

    micha_pr
    Established Member

    Hello,

    thanks, I know these definitions, already working with the sensors since a very long time.

    In these older logs was a wide range of IAQ and VOC values. Later the range was normal for a working room, IAQ between 25 and 90.
    In any case the described accuracy change was seen.

    I have changed not the code and request the values after some more than 3 seconds using a delay in the loop.
    After 2 days I see the normal recalibration if the IAQ is going down to 25.00, so that a calibration could be needed. The values are stable.

    Will tell you after next days the results and can provide the logs then.

    Thanks!

    BSTRobin
    Community Moderator
    Community Moderator

    Hello micha_pr,

    Did it work well on your side?

    micha_pr
    Established Member

    Hi,

    no, not solved,... see attached log.
    After some time the sensor is going "for ever" (at least for >24 hours) to accuracy = 1 and will not come back.
    Before all is normal, it is working at accuracy "3" and sometimes is going o "2" and coming back to "3".

    Header of the syslog data:

     

    "Sensor, Timestamp [ms], raw temperature [°C], pressure [hPa], raw relative humidity [%], gas [Ohm], IAQ, IAQ accuracy, temperature [°C], relative humidity [%]"

     

    Code used basically Github:

     

    const uint8_t bsec_config_iaq[] = {
    #include "config/generic_33v_3s_4d/bsec_iaq.txt"
    };
    
    void setup(void)
    {...
      iaqSensor1.setConfig(bsec_config_iaq);
      iaqSensor2.setConfig(bsec_config_iaq);
      checkIaqSensorStatus();
      loadState();  
    ...
      iaqSensor1.updateSubscription(sensorList, 10, BSEC_SAMPLE_RATE_LP);
      iaqSensor2.updateSubscription(sensorList, 10, BSEC_SAMPLE_RATE_LP);
      checkIaqSensorStatus();
    ...
    }
    
    void loop(void)
    {
    ...
      if (iaqSensor1.run()) {
        delay(50); // If new data is available
        output = "1, " + String(millis());
        output += ", " + String(iaqSensor1.rawTemperature);
        output += ", " + String(iaqSensor1.pressure);
        output += ", " + String(iaqSensor1.rawHumidity);
        output += ", " + String(iaqSensor1.gasResistance);
        output += ", " + String(iaqSensor1.iaq);
        output += ", " + String(iaqSensor1.iaqAccuracy);
        output += ", " + String(iaqSensor1.temperature);
        output += ", " + String(iaqSensor1.humidity);
        output += ", " + String(iaqSensor1.staticIaq);
        output += ", " + String(iaqSensor1.co2Equivalent);
        output += ", " + String(iaqSensor1.breathVocEquivalent);
        Serial.println(output);
        syslog.log(LOG_INFO, output);
        updateState();
      } else {
        checkIaqSensorStatus();
      }
      if (iaqSensor2.run()) {
        delay(50);// If new data is available
        output = "2, " + String(millis());
        output += ", " + String(iaqSensor2.rawTemperature);
        output += ", " + String(iaqSensor2.pressure);
        output += ", " + String(iaqSensor2.rawHumidity);
        output += ", " + String(iaqSensor2.gasResistance);
        output += ", " + String(iaqSensor2.iaq);
        output += ", " + String(iaqSensor2.iaqAccuracy);
        output += ", " + String(iaqSensor2.temperature);
        output += ", " + String(iaqSensor2.humidity);
        output += ", " + String(iaqSensor2.staticIaq);
        output += ", " + String(iaqSensor2.co2Equivalent);
        output += ", " + String(iaqSensor2.breathVocEquivalent);
        Serial.println(output);
        syslog.log(LOG_INFO, output);
        updateState();
      } else {
        checkIaqSensorStatus();
      }
      delay(3000);
    }

     

     

    Maybe you have any idea?
    In this time I restart the ESP32, if a very long time the accuracy is "1", then it is going back after some time to "3" (reading before the config state)

    Thanks!

    Michael

    BSTRobin
    Community Moderator
    Community Moderator

    Hello micha_pr,

    Let's check and give you feedback later.

    BSTRobin
    Community Moderator
    Community Moderator

    Hello micha_pr,

    We have checked the data log, there's nothing wrong with data.

    IAQ accuracy drops to 1 may because of sensor lacking of stimuli.

    image-2022-01-18-16-19-56-734.png

    Gas data curve is really smooth, that may have caused the change of IAQ accuracy.

    You could try to open the windows or put a glass of wine next to sensor, check if IAQ accuracy would goes up to 3.

    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