1 """Support for a ScreenLogic light 'circuit' switch."""
3 from dataclasses
import dataclass
5 from screenlogicpy.const.data
import ATTR, DEVICE
6 from screenlogicpy.const.msg
import CODE
7 from screenlogicpy.device_const.circuit
import GENERIC_CIRCUIT_NAMES, INTERFACE
12 LightEntityDescription,
17 from .const
import LIGHT_CIRCUIT_FUNCTIONS
18 from .entity
import ScreenLogicCircuitEntity, ScreenLogicPushEntityDescription
19 from .types
import ScreenLogicConfigEntry
24 config_entry: ScreenLogicConfigEntry,
25 async_add_entities: AddEntitiesCallback,
28 entities: list[ScreenLogicLight] = []
29 coordinator = config_entry.runtime_data
30 gateway = coordinator.gateway
31 for circuit_index, circuit_data
in gateway.get_data(DEVICE.CIRCUIT).items():
34 or ((circuit_function := circuit_data.get(ATTR.FUNCTION))
is None)
35 or circuit_function
not in LIGHT_CIRCUIT_FUNCTIONS
38 circuit_name = circuit_data[ATTR.NAME]
39 circuit_interface = INTERFACE(circuit_data[ATTR.INTERFACE])
44 subscription_code=CODE.STATUS_CHANGED,
45 data_root=(DEVICE.CIRCUIT,),
47 entity_registry_enabled_default=(
48 circuit_name
not in GENERIC_CIRCUIT_NAMES
49 and circuit_interface != INTERFACE.DONT_SHOW
58 @dataclass(frozen=True, kw_only=True)
60 LightEntityDescription, ScreenLogicPushEntityDescription
62 """Describes a ScreenLogic light entity."""
66 """Class to represent a ScreenLogic Light."""
68 entity_description: ScreenLogicLightDescription
69 _attr_color_mode = ColorMode.ONOFF
70 _attr_supported_color_modes = {ColorMode.ONOFF}
None async_setup_entry(HomeAssistant hass, ScreenLogicConfigEntry config_entry, AddEntitiesCallback async_add_entities)