手动使用Espressif SDK示例为Zigbee开关进行配网
是否可以在不发送commissioning消息的情况下,使用IDF Zigbee SDK手动注册多个Zigbee Green Power设备?我很难decipher(解读)在 这里 找到的示例,以及我可以注入必要信息的位置。通常我会没问题,因为我对IDF比较熟悉,但这个特定的SDK让我相当困惑。
我使用的是Esp32-C6开发板,正在用VSCode搭配IDF插件(1.11.1)进行编码,如有需要。
为澄清的修改:我把Esp32作为Zigbee的“网关”,在其中运行前述示例以将一组Zigbee Green Power开关配对到它。我的目标是,不使用开关端稍显复杂的发送commissioning消息的方法,而是手动注册它们,因为我能够获取执行所需的信息(源ID和安全密钥)。
我需要帮助的是,识别在commissioning序列中,在哪里可以手动注入id和 key以预注册开关,这样就不必使用配对序列了。由于SDK不是开源的,且API的文档也不是特别有帮助,因此很难判断是否可行。
解决方案
从示例中你可以提取类似如下的内容 [(...) 是占位符,不是省略号]
esp_zb_init(&zb_nwk_cfg);
/* GP global/sink config */
esp_zb_zgp_set_skip_gpdf(false);
esp_zb_zgp_set_shared_security_key_type(...);
esp_zb_zgp_set_shared_security_key(my_gp_shared_key);
esp_zb_zgp_set_link_key(my_gp_link_key);
esp_zb_zgps_set_mapping_table(my_gp_mapping_table, &my_gp_mapping_table_size);
esp_zb_zgps_set_communication_mode(ESP_ZB_ZGP_COMMUNICATION_MODE_GROUPCAST_DERIVED);
esp_zb_zgps_set_commissioning_exit_mode(ESP_ZGP_COMMISSIONING_EXIT_MODE_ON_PAIRING_SUCCESS);
esp_zb_zgps_set_commissioning_window(180);
esp_zb_zgps_set_functionality(...);
esp_zb_zgps_set_security_level(...);
/* register endpoints/clusters */
esp_zb_device_register(ep_list);
ESP_ERROR_CHECK(esp_zb_start(false));
esp_zb_stack_main_loop();
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。