Bosch Sensortec Community

    Showing results for 
    Search instead for 
    Did you mean: 

    BME680: BSEC warning code: 100

    BME680: BSEC warning code: 100

    Established Member

    I have tried to use two BME680 at ESP32 for compare the values for two identical sensors.

    Using for each BME a seperate I2C bus.

    If I try the BME680_basic_data_logging sample all is working fine, I get values from both sensors.

    Using the BME680_config_state sample I will get for the second sensor the iaqSensor.status value "100" back.
    Didn't found it in documentation / source code - what does this mean?

    As explanation - I use an array for the sensors - maybe the bsec lib have any problems here with it?

    Bsec iaqSensor[2];
    iaqSensor[0].begin(BME680_I2C_ADDR_PRIMARY, I2Cone);
    iaqSensor[1].begin(BME680_I2C_ADDR_PRIMARY, I2Ctwo);
    void loop(void)

    if (iaqSensor[0].run()) {
    if (iaqSensor[1].run()) {

    of course modified the functions:

    checkIaqSensorStatus(int n)
    updateState(int n)
    loadState(int n)

    So two questions:
    - what does mean the errorcode 100
    - is it possible to use the bsce lib with two sensors in one sketch?



    EDIT: In the meantime I have seen that it seems not to be possible without major changes in lib to use 2 sensors with this samples.


    6 REPLIES 6

    Hi Bernd1,

    For the email notifications, we are in the middle step where the UI is there, but it is not yet activated. For a variety of reasons this will take some time before it is enabled, sorry about that.

    The example on GitHub uses a different method for handling multiple sensor. The BSEC Arduino library is a C++ wrapper over the BSEC C library. Since the C++ language is object-oriented, it instantiates 2 full instances of BSEC, in addition to using 2 save states.

    This method uses more RAM than reusing the same BSEC library instance with multiple sensors, but does save some CPU cycles by avoiding the constant swapping of bytes in and out of BSEC internal buffers. It also does not work in C, which has wider compatibility than C++.

    *PS: The Arduino programming language is C++, so it works on AVR targets, but is not portable to other targets without an available C++ compiler.



    jumping in two years later, I just want to add that I think, C++ creating two BSEC library instances, as described in the previous post, might possibly not be the case.

    While the Github example indeed creates two instances of the C++ type Bsec, there is still only one instance of the BSEC C library.
    What actually happens in the Github example bsec.cpp, is the usual state switching (calling bsec_init, _update_subscriptions and _set_state), which was added in November 2019:

    Screenshot from 2022-03-11 11-04-11.png