Hello,
In my setup, I have 5 clients (buttons) that all report to the same server (lightbulb).
I'm using the Mesh SDK 3.2 light switch example with static provisioning. If i'm using multiple servers with 1 client, there is no problem.
But when i'm having multiple clients, problems occur. Only 1 client gets provisioned by the provisioner.
#define SERVER_NODE_COUNT (30) #if SERVER_NODE_COUNT > 30 #error Maximum 30 servers currently supported by client example. #endif /** Number of active clients nodes. */ #define CLIENT_NODE_COUNT (5) /** Number of On-Off client models on the Switch Node */ #define CLIENT_MODEL_INSTANCE_COUNT (2)
I have tried changing the CLIENT_NODE_COUNT (Light_switch_example_common.h) to 5, but nothing changed.
Also, in the provisioner main.c file there are following statements which I think only let 1 client provision.
if (!m_node_prov_setup_started)
{
/* If previously provisioned device is not configured, start node setup procedure. */
if (m_nw_state.configured_devices < m_nw_state.provisioned_devices)
{
/* Execute configuration */
__LOG(LOG_SRC_APP, LOG_LEVEL_INFO, "Waiting for provisioned node to be configured ...\n");
node_setup_start(m_nw_state.last_device_address, PROVISIONER_RETRY_COUNT,
m_nw_state.appkey, APPKEY_INDEX, NETKEY_INDEX, m_nw_state.p_client_uri);
hal_led_pin_set(APP_CONFIGURATION_LED, 1);
}
else if (m_nw_state.provisioned_devices == 0)
{
/* Start provisioning - First provision the client with known URI hash */
__LOG(LOG_SRC_APP, LOG_LEVEL_INFO, "Waiting for Client node to be provisioned ...\n");
static const char * uri_list[] = {EX_URI_LS_CLIENT, EX_URI_ENOCEAN, EX_URI_DM_CLIENT};
prov_helper_provision_next_device(PROVISIONER_RETRY_COUNT, m_nw_state.next_device_address,
uri_list, ARRAY_SIZE(uri_list));
prov_helper_scan_start();
hal_led_pin_set(APP_PROVISIONING_LED, 1);
}
else if (m_nw_state.provisioned_devices < (SERVER_NODE_COUNT + CLIENT_NODE_COUNT))
{
/* Start provisioning - rest of the devices, depending on the client that was provisioned. */
__LOG(LOG_SRC_APP, LOG_LEVEL_INFO, "Waiting for Server node to be provisioned ...\n");
static const char * uri_list[1];
uri_list[0] = server_uri_index_select(m_nw_state.p_client_uri);
__LOG(LOG_SRC_APP, LOG_LEVEL_INFO, "Server URI index: %d\n", uri_list[0]);
prov_helper_provision_next_device(PROVISIONER_RETRY_COUNT, m_nw_state.next_device_address,
uri_list, ARRAY_SIZE(uri_list));
prov_helper_scan_start();
hal_led_pin_set(APP_PROVISIONING_LED, 1);
}
else
{
__LOG(LOG_SRC_APP, LOG_LEVEL_INFO, "All servers provisioned\n");
return;
}
I'm using: nRF5 SDK 15.3.0 / MESH SDK 3.20
Can anyone help me with this problem?
Thanks in advance.
Kind regards,
Dmore