From d86048cc2d238fe8339f6a637bd2e24d7ca61254 Mon Sep 17 00:00:00 2001 From: tomaszduda23 Date: Wed, 28 Jan 2026 17:41:04 +0100 Subject: [PATCH] [nrf52,zigbee] Address change (#13580) --- esphome/components/zigbee/__init__.py | 8 ++++++++ esphome/components/zigbee/const_zephyr.py | 1 + esphome/components/zigbee/zigbee_zephyr.py | 8 ++++++++ tests/components/zigbee/test.nrf52-xiao-ble.yaml | 1 + 4 files changed, 18 insertions(+) diff --git a/esphome/components/zigbee/__init__.py b/esphome/components/zigbee/__init__.py index 8179220507..1b1da78308 100644 --- a/esphome/components/zigbee/__init__.py +++ b/esphome/components/zigbee/__init__.py @@ -12,6 +12,7 @@ from esphome.core import CORE from esphome.types import ConfigType from .const_zephyr import ( + CONF_IEEE802154_VENDOR_OUI, CONF_MAX_EP_NUMBER, CONF_ON_JOIN, CONF_POWER_SOURCE, @@ -58,6 +59,13 @@ CONFIG_SCHEMA = cv.All( cv.Optional(CONF_POWER_SOURCE, default="DC_SOURCE"): cv.enum( POWER_SOURCE, upper=True ), + cv.Optional(CONF_IEEE802154_VENDOR_OUI): cv.All( + cv.Any( + cv.int_range(min=0x000000, max=0xFFFFFF), + cv.one_of(*["random"], lower=True), + ), + cv.requires_component("nrf52"), + ), } ).extend(cv.COMPONENT_SCHEMA), zigbee_set_core_data, diff --git a/esphome/components/zigbee/const_zephyr.py b/esphome/components/zigbee/const_zephyr.py index 0372f22593..03c1bb546f 100644 --- a/esphome/components/zigbee/const_zephyr.py +++ b/esphome/components/zigbee/const_zephyr.py @@ -22,6 +22,7 @@ POWER_SOURCE = { "EMERGENCY_MAINS_CONST": "ZB_ZCL_BASIC_POWER_SOURCE_EMERGENCY_MAINS_CONST", "EMERGENCY_MAINS_TRANSF": "ZB_ZCL_BASIC_POWER_SOURCE_EMERGENCY_MAINS_TRANSF", } +CONF_IEEE802154_VENDOR_OUI = "ieee802154_vendor_oui" # Keys for CORE.data storage KEY_ZIGBEE = "zigbee" diff --git a/esphome/components/zigbee/zigbee_zephyr.py b/esphome/components/zigbee/zigbee_zephyr.py index 67a11d3685..b3bd10bfab 100644 --- a/esphome/components/zigbee/zigbee_zephyr.py +++ b/esphome/components/zigbee/zigbee_zephyr.py @@ -49,6 +49,7 @@ from esphome.cpp_generator import ( from esphome.types import ConfigType from .const_zephyr import ( + CONF_IEEE802154_VENDOR_OUI, CONF_ON_JOIN, CONF_POWER_SOURCE, CONF_WIPE_ON_BOOT, @@ -152,6 +153,13 @@ async def zephyr_to_code(config: ConfigType) -> None: zephyr_add_prj_conf("NET_IP_ADDR_CHECK", False) zephyr_add_prj_conf("NET_UDP", False) + if CONF_IEEE802154_VENDOR_OUI in config: + zephyr_add_prj_conf("IEEE802154_VENDOR_OUI_ENABLE", True) + random_number = config[CONF_IEEE802154_VENDOR_OUI] + if random_number == "random": + random_number = random.randint(0x000000, 0xFFFFFF) + zephyr_add_prj_conf("IEEE802154_VENDOR_OUI", random_number) + if config[CONF_WIPE_ON_BOOT]: if config[CONF_WIPE_ON_BOOT] == "once": cg.add_define( diff --git a/tests/components/zigbee/test.nrf52-xiao-ble.yaml b/tests/components/zigbee/test.nrf52-xiao-ble.yaml index d2ce552de3..254f370ca7 100644 --- a/tests/components/zigbee/test.nrf52-xiao-ble.yaml +++ b/tests/components/zigbee/test.nrf52-xiao-ble.yaml @@ -3,3 +3,4 @@ zigbee: wipe_on_boot: once power_source: battery + ieee802154_vendor_oui: 0x231