Bluetooth mesh sensor client example gives different outputs in different mobile devices

Hello

I tried bluetooth mesh sensor server and client example, everything is good including provisioning process in mobile but the output is different with different mobiles. i have 2 mobiles where i tested in both mobiles i get output of this part as shown in picture-1

picture-1

and

picture-2

and from the picture-2 of code except chip temperature i can see other printk functions in output.

I tried this in my colleague mobile in that i can see picture-2 outputs but not picture-1 output.

I am really confused, why this happens? Can anyone help me as soon as possible please...

Regards

SaSu

Parents
  • Hi,

    1. Which devices did you use for the sensor server and client samples?
    2. Could you add the output you see on your mobiles as well? 
    3. Are there any differences between the mobiles? Different OS'?

    Kind regards,
    Andreas

  • Hello

    Sorry for late response. 1. For sensor_server thingy:53 with nRF5340DK and for sensor_client nRF52840DK

    2. From my colleague mobile i dont have screenshot also he is not available now its android and output comes from picture-2 i.e "chip temperature is .. ", "presence detected" and so on. I have two mobiles one is android and other is IOS so in both i could not see "chip temperature" output line its directly jumping to picture-1 i.e "Relative runtime in 0 to 30 degrees : 0.0000 percent" and also i can see presence detected lines when i press button on thingy-53.

    3. Already answered in point 2

    Regards

  • SaSu said:
    1. In "sensor_cli_data_cb", I am not getting the first if output i.e "Chip temperature" and i want that.

    Is it the sensor_cli_data_cb callback that is not triggering, or the printk() that is not printing?

    SaSu said:
    3. It worked only once with my colleague mobile and he dont remember how he did it at that time also i got only "chip temperature" output but not " sesnor_cli_series_entry_cb" output

    What is supposed to trigger sesnor_cli_series_entry_cb() in your application?

  • 1. printk("chip temperature : ........") from sensor_cli_data_cb is not printing.

    2. In "sensor_cli_series_entry_cb" output is just like picture in 3rd point last before reply only that is triggering everytime for me but i want "chip temperature" output.

    Regards

  • SaSu said:
    1. printk("chip temperature : ........") from sensor_cli_data_cb is not printing.

    But have you debugged to see if the sensor_cli_data_cb() is actually being called?

  • 1. Yes its calling how i know is, when i press button on thingy-53,

    else if (sensor->id ==
               bt_mesh_sensor_time_since_presence_detected.id) {
            if (value->val1) {
                printk("%s second(s) since last presence detected\n",
                       bt_mesh_sensor_ch_str_real(value));
            } else {
                printk("No presence detected, or under 1 second since presence detected\n");
            }    This part is being executed and i can see output of "%s second(s) since last presence detected" on PuTTY screen also if i don't press i can see "No presence detected, or under 1 second since presence detected".

    2. FYI,

             if (sensor->id == bt_mesh_sensor_present_dev_op_temp.id) {
            printk("Chip temperature: %s\n",
                   bt_mesh_sensor_ch_str_real(value));
        } else if (sensor->id == bt_mesh_sensor_presence_detected.id) {
            if (value->val1) {
                printk("Precense detected\n");
            } else {
                printk("End of presence\n");
            }   This part is not being executed, I also cannot see "Precense detected" and "End of presence" along with "Chip temperature"

    Regards

  • You need to understand that I don't have your application files, so these snippets mean nothing to me. Are they in the same function?

    Why should the last part be called? Where is it called from? is (sensor->id == bt_mesh_sensor_present_dev_op_temp.id) returning true? 

Reply Children
  • sensor_server.zipsensor_client.zip

    Here is the code and i could not understand the second line of your reply

    Regards

  • Ok, so I see that you have the callback function in you sensor_client:

    static void sensor_cli_data_cb(struct bt_mesh_sensor_cli *cli,
    			       struct bt_mesh_msg_ctx *ctx,
    			       const struct bt_mesh_sensor_type *sensor,
    			       const struct sensor_value *value)
    {
    	if (sensor->id == bt_mesh_sensor_present_dev_op_temp.id) {
    		printk("Chip temperature: %s\n",
    		       bt_mesh_sensor_ch_str_real(value));
    	} else if (sensor->id == bt_mesh_sensor_presence_detected.id) {
    		if (value->val1) {
    			printk("Precense detected\n");
    		} else {
    			printk("End of presence\n");
    		}
    	} else if (sensor->id ==
    		   bt_mesh_sensor_time_since_presence_detected.id) {
    		if (value->val1) {
    			printk("%s second(s) since last presence detected\n",
    			       bt_mesh_sensor_ch_str_real(value));
    		} else {
    			printk("No presence detected, or under 1 second since presence detected\n");
    		}
    	}
    }

    If you set a breakpoint inside sensor_cli_data_cb, is this ever triggered?

    And if it does, is sensor->id equal to bt_mesh_sensor_present_dev_op_temp.id?

    BR,
    Edvin

  • It is triggering and sensor->id is not equal to bt_mesh_sensor_present_dev_op_temp.id.

    Here are the screenshots for that. And i want the bt_mesh_sensor_present_dev_op_temp.id same as sensor->id. What should i do?

    Regards

  • Ok, so the issue is not that printk() is not working. The issue is that it never enters the condition:

    else if (sensor->id == bt_mesh_sensor_presence_detected.id)

    I am not that familiar with the sensor_cli API. But apparently, you are triggering the callback with sensor->id == bt_mesh_sensor_time_since_presence_detected.id. How do you trigger this?

  • sensor->id == bt_mesh_sensor_time_since_presence_detected.id this is triggering when button is pressed on thingy-53. I need the solution for my problem (i.e., bt_mesh_sensor_present_dev_op_temp.id should be same as sensor->id). I am really waiting for the answer, its been so many days i posted this and its really very important to me.

    Thank You and Regards

Related