HI i want to use nRF52840 as Zigbee HA1.2 Coordinator, how to coding ?
nRF52840 support this stack or not ?
Thank
HI i want to use nRF52840 as Zigbee HA1.2 Coordinator, how to coding ?
nRF52840 support this stack or not ?
Thank
Hi UL Dara,
there is one, ultimately important point mentioned by Bjørn:
A Zigbee Home Automation device can join a Zigbee 3.0 Centralized Network that does not require a key exchange.
The key exchange is required in Nordic's coordinator example by default. I know this causes a lot of headaches, when you try to do some interoperability tests, but consider it as a security precaution.
There is an API to disable/enable this so-called compatibility mode. It can be called after ZB_BDB_SIGNAL_DEVICE_FISRT_START/REBOOT signals. For debug purposes, it may be wise to just call it inside zboss_signal_handler, upon reception of those signals.
I hope this helps . For further investigation of your case, you may try to post traffic dump from the failed attempt. There is a nrf52840-based sniffer available on github to do so.
Dear tomchy
Tanke for your reply
The code put like this right ?
and how to put requited key
void zboss_signal_handler(zb_uint8_t param)
{
/* Read signal description out of memory buffer. */
zb_zdo_app_signal_type_t sig = zb_get_app_signal(param, NULL);
zb_ret_t status = ZB_GET_APP_SIGNAL_STATUS(param);
zb_ret_t zb_err_code;
zb_bool_t comm_status;
switch(sig)
{
case ZB_BDB_SIGNAL_DEVICE_FIRST_START: // Device started and commissioned first time after NVRAM erase.
case ZB_BDB_SIGNAL_DEVICE_REBOOT: // BDB initialization completed after device reboot, use NVRAM contents during initialization. Device joined/rejoined and started.
zb_bdb_set_legacy_device_support(0);
if (status == RET_OK)
{
NRF_LOG_INFO("Device started OK. Start network steering.");
bsp_board_led_on(ZIGBEE_NETWORK_STATE_LED);
comm_status = bdb_start_top_level_commissioning(ZB_BDB_NETWORK_STEERING);
ZB_COMM_STATUS_CHECK(comm_status);
}
else
{
NRF_LOG_ERROR("Device startup failed. Status: %d. Retry network formation after 1 second.", status);
bsp_board_led_off(ZIGBEE_NETWORK_STATE_LED);
zb_err_code = ZB_SCHEDULE_ALARM(bdb_restart_top_level_commissioning, 0, ZB_TIME_ONE_SECOND);
ZB_ERROR_CHECK(zb_err_code);
}
break;
case ZB_BDB_SIGNAL_STEERING:
if (status == RET_OK)
{
/* Schedule an alarm to notify about the end of steering period */
NRF_LOG_INFO("Network steering started");
zb_err_code = ZB_SCHEDULE_ALARM(steering_finished, 0, ZB_TIME_ONE_SECOND * ZB_ZGP_DEFAULT_COMMISSIONING_WINDOW);
ZB_ERROR_CHECK(zb_err_code);
}
else
{
NRF_LOG_INFO("Network steering failed to start. Status: %d. Retry network formation after 1 second.", status);
bsp_board_led_off(ZIGBEE_NETWORK_STATE_LED);
zb_err_code = ZB_SCHEDULE_ALARM(bdb_restart_top_level_commissioning, 0, ZB_TIME_ONE_SECOND);
ZB_ERROR_CHECK(zb_err_code);
}
break;
case ZB_ZDO_SIGNAL_PRODUCTION_CONFIG_READY:
if (status != RET_OK)
{
NRF_LOG_WARNING("Production config is not present or invalid");
}
break;
default:
/* Unhandled signal. For more information see: zb_zdo_app_signal_type_e and zb_ret_e */
NRF_LOG_INFO("Unhandled signal %d. Status: %d", sig, status);
break;
}
/* All callbacks should either reuse or free passed buffers. If param == 0, the buffer is invalid (not passed) */
if (param)
{
ZB_FREE_BUF_BY_REF(param);
}
}
Thank
The key you posted appears to be the same used in the example, i.e. the one found in nRF5_SDK_for_Thread_and_Zigbee_v2.0.0\external\zboss\include\zb_config.h , on line 161.
/* 5.1.2.3.2 test specification - The default value for DUT-GPP being a Basic Combo pr a Basic Proxy
* is "ZigBeeAlliance09", i.e. {0x5A 0x69 0x67 0x42 0x65 0x65 0x41 0x6C 0x6C 0x69 0x61 0x6E
* 0x63 0x65 0x30 0x39}. */
#define ZB_ZGP_DEFAULT_LINK_KEY "ZigBeeAlliance09"
Hi UL Dara,
There should be no need to register a key. It should just work You code looks fine.
I would put the "zb_bdb_set_legacy_device_support(0);" a couple of lines further, after checking status to be RET_OK. That way, this code will be executed only if the coordinator is able to create a new Zigbee network.
What is the current status of your interoperability test? Were you able to add new devices using my advices?
Hi UL Dara,
There should be no need to register a key. It should just work You code looks fine.
I would put the "zb_bdb_set_legacy_device_support(0);" a couple of lines further, after checking status to be RET_OK. That way, this code will be executed only if the coordinator is able to create a new Zigbee network.
What is the current status of your interoperability test? Were you able to add new devices using my advices?
Dear tomchy
i can add zigbee devices to Coordinator, but i didn't see and traffic from device.
i'm sure device connected with coordinator how to enable traffic log ?
Thanks