This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Status check for provisioned BL Mesh Devices

Hi,

I am trying to develop the interactive_pyaci serial interface so that it can restore itself once it has been closed. 

To do so it would be useful, once the db is loaded, to check if the devices are still connected to mesh (presuming they're on) - is there a preferred (BLE Mesh Spec Compliant)  Health Check / Status Get message for the devices? 

Thanks in advance,
Tim

Setup:

- mac OSx
- nRF5 SDK for Mesh v3.1
- 2x PCA10040 nRF52 Dev boards with 1x Serial Example and 1x Light Switch Server example

Parents
  • Yes, there is a health status message in Bluetooth Mesh. If you run the regular light switch example with the provisioner example on a 52 DK, see the relevant code below:

    static void app_health_event_cb(const health_client_t * p_client, const health_client_evt_t * p_event)
    {
        switch (p_event->type)
        {
            case HEALTH_CLIENT_EVT_TYPE_CURRENT_STATUS_RECEIVED:
                __LOG(LOG_SRC_APP,
                      LOG_LEVEL_INFO,
                      "Node 0x%04x alive with %u active fault(s), RSSI: %d\n",
                      p_event->p_meta_data->src.value,
                      p_event->data.fault_status.fault_array_length,
                      ((p_event->p_meta_data->p_core_metadata->source == NRF_MESH_RX_SOURCE_SCANNER)
                           ? p_event->p_meta_data->p_core_metadata->params.scanner.rssi
                           : 0));
                break;
            default:
                break;
        }
    }

    I also recommend to take a look at the health_client.h header file.

Reply
  • Yes, there is a health status message in Bluetooth Mesh. If you run the regular light switch example with the provisioner example on a 52 DK, see the relevant code below:

    static void app_health_event_cb(const health_client_t * p_client, const health_client_evt_t * p_event)
    {
        switch (p_event->type)
        {
            case HEALTH_CLIENT_EVT_TYPE_CURRENT_STATUS_RECEIVED:
                __LOG(LOG_SRC_APP,
                      LOG_LEVEL_INFO,
                      "Node 0x%04x alive with %u active fault(s), RSSI: %d\n",
                      p_event->p_meta_data->src.value,
                      p_event->data.fault_status.fault_array_length,
                      ((p_event->p_meta_data->p_core_metadata->source == NRF_MESH_RX_SOURCE_SCANNER)
                           ? p_event->p_meta_data->p_core_metadata->params.scanner.rssi
                           : 0));
                break;
            default:
                break;
        }
    }

    I also recommend to take a look at the health_client.h header file.

Children
Related