@@ -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
274273class 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