From e81a1f7acf621f929a85d919bb57753f969a7c43 Mon Sep 17 00:00:00 2001 From: "David F. Mulcahey" Date: Mon, 23 Sep 2024 08:34:24 -0400 Subject: [PATCH] Add config to ZHA to allow disabling polling of mains powered devices when the network is started (#125473) --- homeassistant/components/zha/const.py | 1 + homeassistant/components/zha/helpers.py | 3 +++ homeassistant/components/zha/strings.json | 1 + tests/components/zha/data.py | 14 ++++++++++++++ 4 files changed, 19 insertions(+) diff --git a/homeassistant/components/zha/const.py b/homeassistant/components/zha/const.py index 3986a99cf3f..18705c40608 100644 --- a/homeassistant/components/zha/const.py +++ b/homeassistant/components/zha/const.py @@ -49,6 +49,7 @@ CONF_GROUP_MEMBERS_ASSUME_STATE = "group_members_assume_state" CONF_ENABLE_IDENTIFY_ON_JOIN = "enable_identify_on_join" CONF_CONSIDER_UNAVAILABLE_MAINS = "consider_unavailable_mains" CONF_CONSIDER_UNAVAILABLE_BATTERY = "consider_unavailable_battery" +CONF_ENABLE_MAINS_STARTUP_POLLING = "enable_mains_startup_polling" CONF_ZIGPY = "zigpy_config" CONF_DEVICE_CONFIG = "device_config" diff --git a/homeassistant/components/zha/helpers.py b/homeassistant/components/zha/helpers.py index 8e22e412e60..cc3fb2898e6 100644 --- a/homeassistant/components/zha/helpers.py +++ b/homeassistant/components/zha/helpers.py @@ -150,6 +150,7 @@ from .const import ( CONF_ENABLE_ENHANCED_LIGHT_TRANSITION, CONF_ENABLE_IDENTIFY_ON_JOIN, CONF_ENABLE_LIGHT_TRANSITIONING_FLAG, + CONF_ENABLE_MAINS_STARTUP_POLLING, CONF_ENABLE_QUIRKS, CONF_FLOW_CONTROL, CONF_GROUP_MEMBERS_ASSUME_STATE, @@ -1163,6 +1164,7 @@ CONF_ZHA_OPTIONS_SCHEMA = vol.Schema( CONF_CONSIDER_UNAVAILABLE_BATTERY, default=CONF_DEFAULT_CONSIDER_UNAVAILABLE_BATTERY, ): cv.positive_int, + vol.Required(CONF_ENABLE_MAINS_STARTUP_POLLING, default=True): cv.boolean, }, extra=vol.REMOVE_EXTRA, ) @@ -1235,6 +1237,7 @@ def create_zha_config(hass: HomeAssistant, ha_zha_data: HAZHAData) -> ZHAData: enable_identify_on_join=zha_options.get(CONF_ENABLE_IDENTIFY_ON_JOIN), consider_unavailable_mains=zha_options.get(CONF_CONSIDER_UNAVAILABLE_MAINS), consider_unavailable_battery=zha_options.get(CONF_CONSIDER_UNAVAILABLE_BATTERY), + enable_mains_startup_polling=zha_options.get(CONF_ENABLE_MAINS_STARTUP_POLLING), ) acp_options: AlarmControlPanelOptions = AlarmControlPanelOptions( master_code=ha_acp_options.get(CONF_ALARM_MASTER_CODE), diff --git a/homeassistant/components/zha/strings.json b/homeassistant/components/zha/strings.json index 5d81556564a..f98ad170e0a 100644 --- a/homeassistant/components/zha/strings.json +++ b/homeassistant/components/zha/strings.json @@ -183,6 +183,7 @@ "enable_identify_on_join": "Enable identify effect when devices join the network", "default_light_transition": "Default light transition time (seconds)", "consider_unavailable_mains": "Consider mains powered devices unavailable after (seconds)", + "enable_mains_startup_polling": "Refresh state for mains powered devices on startup", "consider_unavailable_battery": "Consider battery powered devices unavailable after (seconds)" }, "zha_alarm_options": { diff --git a/tests/components/zha/data.py b/tests/components/zha/data.py index eb135c7e8fe..e5ed43e26a0 100644 --- a/tests/components/zha/data.py +++ b/tests/components/zha/data.py @@ -55,6 +55,12 @@ BASE_CUSTOM_CONFIGURATION = { "optional": True, "default": 21600, }, + { + "default": True, + "name": "enable_mains_startup_polling", + "required": True, + "type": "boolean", + }, ] }, "data": { @@ -65,6 +71,7 @@ BASE_CUSTOM_CONFIGURATION = { "always_prefer_xy_color_mode": True, "group_members_assume_state": False, "enable_identify_on_join": True, + "enable_mains_startup_polling": True, "consider_unavailable_mains": 7200, "consider_unavailable_battery": 21600, } @@ -126,6 +133,12 @@ CONFIG_WITH_ALARM_OPTIONS = { "optional": True, "default": 21600, }, + { + "default": True, + "name": "enable_mains_startup_polling", + "required": True, + "type": "boolean", + }, ], "zha_alarm_options": [ { @@ -157,6 +170,7 @@ CONFIG_WITH_ALARM_OPTIONS = { "always_prefer_xy_color_mode": True, "group_members_assume_state": False, "enable_identify_on_join": True, + "enable_mains_startup_polling": True, "consider_unavailable_mains": 7200, "consider_unavailable_battery": 21600, },