From 5143a8586c448b324b2bbfa66c692815b5ce6965 Mon Sep 17 00:00:00 2001 From: jan iversen Date: Thu, 7 Mar 2024 14:06:25 +0100 Subject: [PATCH 1/4] Validate empty modbus configuration. --- homeassistant/components/modbus/validators.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/modbus/validators.py b/homeassistant/components/modbus/validators.py index 431d9de0cf16c..7843ebf183580 100644 --- a/homeassistant/components/modbus/validators.py +++ b/homeassistant/components/modbus/validators.py @@ -370,12 +370,14 @@ def validate_entity( if not validate_modbus(hub, hub_name_inx): del config[hub_inx] continue - for component, conf_key in PLATFORMS: + minimum_scan_interval = 9999 + no_entities = True + for _component, conf_key in PLATFORMS: if conf_key not in hub: continue + no_entities = False entity_inx = 0 entities = hub[conf_key] - minimum_scan_interval = 9999 while entity_inx < len(entities): if not validate_entity( hub[CONF_NAME], @@ -388,7 +390,11 @@ def validate_entity( del entities[entity_inx] else: entity_inx += 1 - + if no_entities: + err = f"Modbus {hub[CONF_NAME]} is instable without entities, please add entities!" + _LOGGER.warning(err) + # Ensure timeout is not started/handled. + hub[CONF_TIMEOUT] = -1 if hub[CONF_TIMEOUT] >= minimum_scan_interval: hub[CONF_TIMEOUT] = minimum_scan_interval - 1 _LOGGER.warning( From eb26c04128bedf6dd078b2f713688e3209ead34e Mon Sep 17 00:00:00 2001 From: jan iversen Date: Fri, 8 Mar 2024 16:44:13 +0100 Subject: [PATCH 2/4] ruff. --- homeassistant/components/modbus/validators.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/modbus/validators.py b/homeassistant/components/modbus/validators.py index 7843ebf183580..67d84b661518d 100644 --- a/homeassistant/components/modbus/validators.py +++ b/homeassistant/components/modbus/validators.py @@ -372,7 +372,7 @@ def validate_entity( continue minimum_scan_interval = 9999 no_entities = True - for _component, conf_key in PLATFORMS: + for component, conf_key in PLATFORMS: if conf_key not in hub: continue no_entities = False From 2435d6e78c846fe6c9b934fa5d6cafaeaaf87e12 Mon Sep 17 00:00:00 2001 From: jan iversen Date: Fri, 8 Mar 2024 16:57:43 +0100 Subject: [PATCH 3/4] Review comments. --- homeassistant/components/modbus/validators.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/modbus/validators.py b/homeassistant/components/modbus/validators.py index 67d84b661518d..ab62d5407b836 100644 --- a/homeassistant/components/modbus/validators.py +++ b/homeassistant/components/modbus/validators.py @@ -391,7 +391,7 @@ def validate_entity( else: entity_inx += 1 if no_entities: - err = f"Modbus {hub[CONF_NAME]} is instable without entities, please add entities!" + err = f"There are no entities defined for Modbus {hub[CONF_NAME]}, this will cause the integration to be unstable, please add at least one entity!" _LOGGER.warning(err) # Ensure timeout is not started/handled. hub[CONF_TIMEOUT] = -1 From 07995babe98d34905c4f2500e36619ccf9bd40d8 Mon Sep 17 00:00:00 2001 From: jan iversen Date: Fri, 8 Mar 2024 17:12:12 +0100 Subject: [PATCH 4/4] Line length. --- homeassistant/components/modbus/validators.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/modbus/validators.py b/homeassistant/components/modbus/validators.py index ab62d5407b836..c484b270afc6e 100644 --- a/homeassistant/components/modbus/validators.py +++ b/homeassistant/components/modbus/validators.py @@ -391,7 +391,7 @@ def validate_entity( else: entity_inx += 1 if no_entities: - err = f"There are no entities defined for Modbus {hub[CONF_NAME]}, this will cause the integration to be unstable, please add at least one entity!" + err = f"Modbus {hub[CONF_NAME]} contain no entities, this will cause instability, please add at least one entity!" _LOGGER.warning(err) # Ensure timeout is not started/handled. hub[CONF_TIMEOUT] = -1