[nrf52, zigbee] Add sensor (#12187)

Co-authored-by: Jonathan Swoboda <154711427+swoboda1337@users.noreply.github.com>
This commit is contained in:
tomaszduda23andJonathan Swoboda authored and GitHub committed 2026-01-07 08:20:01 -10:00
1 parent d6554702d8
commit ada4e6d5e9
12 files changed
+471 -54

No files matched your search

+64 -8
View File
@@ -138,9 +138,26 @@ void ZigbeeComponent::setup() {
}
#ifdef USE_ZIGBEE_WIPE_ON_BOOT
erase_flash_(FIXED_PARTITION_ID(ZBOSS_NVRAM));
erase_flash_(FIXED_PARTITION_ID(ZBOSS_PRODUCT_CONFIG));
erase_flash_(FIXED_PARTITION_ID(SETTINGS_STORAGE));
bool wipe = true;
#ifdef USE_ZIGBEE_WIPE_ON_BOOT_MAGIC
// unique hash to store preferences for this component
uint32_t hash = 88498616UL;
uint32_t wipe_value = 0;
auto wipe_pref = global_preferences->make_preference<uint32_t>(hash, true);
if (wipe_pref.load(&wipe_value)) {
wipe = wipe_value != USE_ZIGBEE_WIPE_ON_BOOT_MAGIC;
ESP_LOGD(TAG, "Wipe value in preferences %u, in firmware %u", wipe_value, USE_ZIGBEE_WIPE_ON_BOOT_MAGIC);
}
#endif
if (wipe) {
erase_flash_(FIXED_PARTITION_ID(ZBOSS_NVRAM));
erase_flash_(FIXED_PARTITION_ID(ZBOSS_PRODUCT_CONFIG));
erase_flash_(FIXED_PARTITION_ID(SETTINGS_STORAGE));
#ifdef USE_ZIGBEE_WIPE_ON_BOOT_MAGIC
wipe_value = USE_ZIGBEE_WIPE_ON_BOOT_MAGIC;
wipe_pref.save(&wipe_value);
#endif
}
#endif
ZB_ZCL_REGISTER_DEVICE_CB(zcl_device_cb);
@@ -152,15 +169,54 @@ void ZigbeeComponent::setup() {
zigbee_enable();
}
void ZigbeeComponent::dump_config() {
bool wipe = false;
static const char *role() {
switch (zb_get_network_role()) {
case ZB_NWK_DEVICE_TYPE_COORDINATOR:
return "coordinator";
case ZB_NWK_DEVICE_TYPE_ROUTER:
return "router";
case ZB_NWK_DEVICE_TYPE_ED:
return "end device";
}
return "unknown";
}
static const char *get_wipe_on_boot() {
#ifdef USE_ZIGBEE_WIPE_ON_BOOT
wipe = true;
#ifdef USE_ZIGBEE_WIPE_ON_BOOT_MAGIC
return "ONCE";
#else
return "YES";
#endif
#else
return "NO";
#endif
}
void ZigbeeComponent::dump_config() {
char ieee_addr_buf[IEEE_ADDR_BUF_SIZE] = {0};
zb_ieee_addr_t addr;
zb_get_long_address(addr);
ieee_addr_to_str(ieee_addr_buf, sizeof(ieee_addr_buf), addr);
zb_ext_pan_id_t extended_pan_id;
char extended_pan_id_buf[IEEE_ADDR_BUF_SIZE] = {0};
zb_get_extended_pan_id(extended_pan_id);
ieee_addr_to_str(extended_pan_id_buf, sizeof(extended_pan_id_buf), extended_pan_id);
ESP_LOGCONFIG(TAG,
"Zigbee\n"
" Wipe on boot: %s",
YESNO(wipe));
" Wipe on boot: %s\n"
" Device is joined to the network: %s\n"
" Current channel: %d\n"
" Current page: %d\n"
" Sleep threshold: %ums\n"
" Role: %s\n"
" Long addr: 0x%s\n"
" Short addr: 0x%04X\n"
" Long pan id: 0x%s\n"
" Short pan id: 0x%04X",
get_wipe_on_boot(), YESNO(zb_zdo_joined()), zb_get_current_channel(), zb_get_current_page(),
zb_get_sleep_threshold(), role(), ieee_addr_buf, zb_get_short_address(), extended_pan_id_buf,
zb_get_pan_id());
}
static void send_attribute_report(zb_bufid_t bufid, zb_uint16_t cmd_id) {