Hi;
i am using sdk 17.0.2 and mesh 5.0.0.
i am using light switch instance.In addition, the system works properly when provisioning is made with a smartphone.
I want self provisioning in this example. In other words, I want it to know both its own addressing and the address of the node to which it will send.
I took the code from the https://devzone.nordicsemi.com/f/nordic-q-a/44515/mesh-node-self-provisioninglink and made the node get its own address. but I couldn't find any information on how to determine the address to send to.
#define APPKEY_INDEX (0)
#define NETKEY_INDEX (0)
#define GROUP_ADDRESS (0xCAFE)
uint8_t netkey[16] = {0x79, 0xF5, 0xF1, 0x6A, 0x43, 0x22, 0x17, 0xDF, 0x1D, 0xC1, 0x59, 0x10, 0x13, 0x0A, 0x31, 0x6F};
uint8_t appkey[16] = {0x5B, 0xD8, 0xDE, 0xB4, 0x49, 0xAB, 0x15, 0x1B, 0x72, 0x7F, 0xD4, 0x56, 0xF5, 0x49, 0x81, 0x9B};
nrf_mesh_network_secmat_t KEY;
//static const uint8_t KEY[NRF_MESH_KEY_SIZE] = NETKEY;
dsm_local_unicast_address_t local_address = {0x0060, ACCESS_ELEMENT_COUNT};
dsm_handle_t net_handle, dev_handle, app_handle, vendor_handle, handle;
handle = DSM_HANDLE_INVALID;
dev_handle = DSM_HANDLE_INVALID;
ERROR_CHECK(dsm_local_unicast_addresses_set(&local_address));
ERROR_CHECK(dsm_subnet_add(0, KEY.privacy_key, &net_handle));
ERROR_CHECK(dsm_devkey_add(local_address.address_start, net_handle, KEY.privacy_key, &dev_handle));
KEY.privacy_key[15] = 0xA0;
ERROR_CHECK(dsm_appkey_add(0, net_handle, KEY.privacy_key, &app_handle));
//PERSISTENT_STORAGE
ERROR_CHECK(config_server_bind(dev_handle));
//bool IsValid = vendor_handle_get(&vendor_handle);
//if (IsValid == 0)
// while (1)
//; //stay locked
ERROR_CHECK(access_model_application_bind(m_clients_simple.model_handle, app_handle));
// Add the address to the DSM as a subscription address:
int i = dsm_address_subscription_add(GROUP_ADDRESS, &handle);
// Add the subscription to the model:
i = access_model_subscription_add(m_clients_simple.model_handle, handle);
//dsm_address_publish_add(0x0051,
custom_change_publish_address(0x0051);
mesh_stack_device_reset(); //power cycle after self provisioning
The above code allowed the node to get its own address, but when I send it, I get a Publication not configured for client warning. What is the missing code for the provisioning process?