Thingy53: use of Bluetooth mesh sensor model

Dear community,

I am working on the Sensor Server bluetooth mesh model that I have implemented on the Thingy53.

Code is based on the existing sensor server sample available in nRF Connect SDK 3.2.99. i.e. github.com/.../

My questions concerns

(1) the sensor data that can be retrieved from the Thingy53 (for instance from bme680 sensor, or other existing sensor?)

(2) the number of sensor data readings that can be achieved with the sensor server model.

****************************************

Résumé of my problem

****************************************

(1) type of Sensor Data

Currently I manage to get the following 4 sensor readings from Thingy53 :

Temperature, Relative Humidity, air Pressure & presence (presence is actually detected not from a sensor, but with a button press). 

However I have difficulty to get the VOC concentration.

And I wonder also how to get readings from the light sensor (this reading does not come with BME680).

(2) Number of Sensor Data

I do not manage to read more than 4 sensor types/channels at a time. If I try to add & read a fifth one, it does not manage.

(1) type of sensor data

************************************************************

The Sensor Server model (sensor_srv) requires a list of bt_mesh_sensor pointers.

Here is the list of 5 sensor instances I am using.

Then each bt_mesh_sensor  is defined as such (example with Temperature), with a type and a get function to read data.

Each sensor type is assigned its own Device Property ID, as specified in the Bluetooth mesh device properties specification. Here bt_mesh_sensor_present_dev_op_temp corresp to the property ID 0x0054.

And each sensor type may consist of one or more channels. Sensor_channel_get() function enables to retrieve the data corresponding to the channel(s) of the sensor type.

The only channel corresponding to the type bt_mesh_sensor_present_dev_op_temp is SENSOR_CHAN_AMBIENT_TEMP

My first Question is about VOC concentration that should be read from bme680. Here is the corresponding table I use between the sensors pointers, the type and the channel attached.

This is working well except for VOC.

In nRF SDK documentation, for gas sensor, I see only two types = {bt_mesh_sensor_present_amb_voc_concentration; bt_mesh_sensor_present_amb_co2_concentration}

To try to get VOC, I am using the first one, i.e. bt_mesh_sensor_present_amb_voc_concentration.

As for channel, I try to use either SENSOR_CHAN_VOC or SENSOR_CHAN_GAS_RES.

The combination bt_mesh_sensor_present_amb_voc_concentration / SENSOR_CHAN_VOC provides me with empty result.

The combination bt_mesh_sensor_present_amb_voc_concentration / SENSOR_CHAN_GAS_RES provides me with FE FF result, which looks strange. No?

(It is worth mentionning that I read FE FF result from 3 different sensor clients, the nRF mesh app, and two others nodes/nRF5280DK programmed with sensor client model).

=> I am interested in knowing how to retrieve correct VOC values.

Also as Temperature, Relative Humidity, VOC relate to BME680 sensor.

=> I am also interested in knowing how to read data from other sensor(s) present on Thingy53? Would it be possible ot read data from the light sensor for instance?

(2) Number of data readings (limited to 4?)

************************************************************

I am surprised also that I manage to read (only) 4 sensors at a time. It means I can defined the sensors[] list with 4 sensors instances maximum.

Here with 5 instances, it will returns only the four first ones.

Would you know any reason for this?

Thank you very much for any tips on these observations !

Related