Skip to content

Commit f1251d4

Browse files
author
Jan C
committed
trying to resolve #1490 in an alternative way
1 parent 2c910f1 commit f1251d4

1 file changed

Lines changed: 10 additions & 21 deletions

File tree

custom_components/solax_modbus/__init__.py

Lines changed: 10 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -260,15 +260,14 @@ def Gen4Timestring(numb):
260260
m = numb >> 8
261261
return f"{h:02d}:{m:02d}"
262262

263-
def is_entity_enabled(hass, entity_id): # Check if the entity is enabled in Home Assistant
264-
state = hass.states.get(entity_id)
265-
if state is None:
266-
_LOGGER.debug(f"Entity {entity_id} not found in state manager, assuming disabled - skipping unless declared internal")
267-
return False
268-
if state.state in ['unavailable', 'unknown']: # Check if the entity state is 'unavailable' or 'unknown'
269-
return True
270-
# If none of the above conditions are met, assume the entity is enabled
271-
return True
263+
def is_entity_enabled(hass, hubname, key): # Check if the entity is enabled in Home Assistant
264+
for platform in ("sensor", "number", "select", "switch",):
265+
state = hass.states.get(f"{platform}.{hubname}_{key}")
266+
if state is not None:
267+
return True
268+
_LOGGER.debug(f"Entity sensor.{hubname}_{key} not found in state manager, assuming disabled - skipping unless declared internal")
269+
return False
270+
272271

273272
@dataclass
274273
class block():
@@ -1073,25 +1072,15 @@ def splitInBlocks( self, descriptions):
10731072
d_newblock = False
10741073
d_enabled = False
10751074
for sub, d in descr.items():
1076-
d_enabled = ( d_enabled or d_internal
1077-
or is_entity_enabled(self._hass, f"sensor_{self._name}_{descr.key}")
1078-
or is_entity_enabled(self._hass, f"number_{self._name}_{descr.key}") # number with the same id
1079-
or is_entity_enabled(self._hass, f"select_{self._name}_{descr.key}") # select
1080-
or is_entity_enabled(self._hass, f"switch_{self._name}_{descr.key}") #
1081-
)
1075+
d_enabled = d_enabled or d.internal or is_entity_enabled(self._hass, self._name, d.key)
10821076
d_newblock = d_newblock or d.newblock
10831077
d_unit = d.unit
10841078
d_wordcount = 1 # not used here
10851079
d_key = d.key # does not matter which key we use here
10861080
d_regtype = d.register_type
10871081
else: # normal entity
10881082
entity_id = f"sensor.{self._name}_{descr.key}"
1089-
d_enabled = ( descr.internal
1090-
or is_entity_enabled(self._hass, f"sensor_{self._name}_{descr.key}")
1091-
or is_entity_enabled(self._hass, f"number_{self._name}_{descr.key}") # number with the same id
1092-
or is_entity_enabled(self._hass, f"select_{self._name}_{descr.key}") # select
1093-
or is_entity_enabled(self._hass, f"switch_{self._name}_{descr.key}") #
1094-
)
1083+
d_enabled = descr.internal or is_entity_enabled(self._hass, self._name, descr.key)
10951084
d_newblock = descr.newblock
10961085
d_unit = descr.unit
10971086
d_wordcount = descr.wordcount

0 commit comments

Comments
 (0)