diff --git a/bellows/config/__init__.py b/bellows/config/__init__.py index 29ffe647..74d91d9c 100644 --- a/bellows/config/__init__.py +++ b/bellows/config/__init__.py @@ -18,6 +18,9 @@ cv_boolean, ) +CONF_BELLOWS_CONFIG = "bellows_config" +CONF_MANUAL_SOURCE_ROUTING = "manual_source_routing" + CONF_USE_THREAD = "use_thread" CONF_EZSP_CONFIG = "ezsp_config" CONF_EZSP_POLICIES = "ezsp_policies" @@ -31,6 +34,12 @@ {vol.Optional(str): int} ), vol.Optional(CONF_USE_THREAD, default=True): cv_boolean, + # The above config really should belong in here + vol.Optional(CONF_BELLOWS_CONFIG, default={}): vol.Schema( + { + vol.Optional(CONF_MANUAL_SOURCE_ROUTING, default=False): bool, + } + ), } ) diff --git a/bellows/zigbee/application.py b/bellows/zigbee/application.py index 69f4059c..66c5ae42 100644 --- a/bellows/zigbee/application.py +++ b/bellows/zigbee/application.py @@ -25,8 +25,10 @@ import bellows from bellows.config import ( + CONF_BELLOWS_CONFIG, CONF_EZSP_CONFIG, CONF_EZSP_POLICIES, + CONF_MANUAL_SOURCE_ROUTING, CONF_USE_THREAD, CONFIG_SCHEMA, ) @@ -781,7 +783,10 @@ async def _reset_mfg_id(self, mfg_id: int) -> None: async def _set_source_route( self, nwk: zigpy.types.NWK, relays: list[zigpy.types.NWK] ) -> bool: - if FirmwareFeatures.MANUAL_SOURCE_ROUTE in self._ezsp._xncp_features: + if ( + FirmwareFeatures.MANUAL_SOURCE_ROUTE in self._ezsp._xncp_features + and self.config[CONF_BELLOWS_CONFIG][CONF_MANUAL_SOURCE_ROUTING] + ): await self._ezsp.xncp_set_manual_source_route(nwk, relays) return True else: