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

  • Hello,

    Andreas is currently out of office, so I will look into your ticket.

    I am trying to understand what you are doing here. Your nRF chip is reading a chip temperature (using an external temperature sensor?) 

    Is the issue that you don't get the sensor_cli_series_entry_cb() to trigger in your nRF chip's application? What is supposed to trigger it? How is that set up?

    SaSu said:
    Everytime i do same as steps as give in the sample documentation

    What sample documentation? Your colleague's sample documentation, or some documentation from our side?

    SaSu said:
    3. I see the same output everytime. also attaching the output i get everytime . My problem is i need the "chip temperature" output on the screen which is important to me.

    So you don't get the sensor_cli_data_cb() to trigger either? What is supposed to trigger it?

    SaSu said:
    I did not do any changes just added printk functions why its not working before (if) thats it.

    When was it working, and what did you do in the meantime? (because something obviously changed). Have you tried debugging, setting a breakpoint in the callbacks? Is the issue that the callbacks doesn't trigger, or that the printk() doesn't print anything?

    BR,

    Edvin

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

    2. Sample Document means https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/samples/bluetooth/mesh/sensor_server/README.html. (i.e i have done same provisioning process except publish thing in sensor_server because i couldn't do it even though i am setting to existing group its not setting up to the group. Even i created a forum question about this issue cannot set publish in sensor_server( Could not set publication in sensor server(Mesh Sensor) example in mobile App) as my colleague told me publish is not required in sensor_server i closed the forum question.(As explained in previous reply))

    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

    4. Recently again i tested with my colleague mobile that time same output as with my mobile devices and the output is I can see " sesnor_cli_series_entry_cb" output but not "chip temperature" output in "sensor_cli_data_cb"

    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?

Reply Children
  • 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? 

  • 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

Related