1 """Support for a ScreenLogic '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
13 from .const
import LIGHT_CIRCUIT_FUNCTIONS
15 ScreenLogicCircuitEntity,
16 ScreenLogicPushEntityDescription,
17 ScreenLogicSwitchingEntity,
19 from .types
import ScreenLogicConfigEntry
22 @dataclass(frozen=True, kw_only=True)
24 SwitchEntityDescription, ScreenLogicPushEntityDescription
26 """Describes a ScreenLogic switch entity."""
31 config_entry: ScreenLogicConfigEntry,
32 async_add_entities: AddEntitiesCallback,
35 entities: list[ScreenLogicSwitchingEntity] = []
36 coordinator = config_entry.runtime_data
37 gateway = coordinator.gateway
38 for circuit_index, circuit_data
in gateway.get_data(DEVICE.CIRCUIT).items():
41 or ((circuit_function := circuit_data.get(ATTR.FUNCTION))
is None)
42 or circuit_function
in LIGHT_CIRCUIT_FUNCTIONS
45 circuit_name = circuit_data[ATTR.NAME]
46 circuit_interface = INTERFACE(circuit_data[ATTR.INTERFACE])
51 subscription_code=CODE.STATUS_CHANGED,
52 data_root=(DEVICE.CIRCUIT,),
54 entity_registry_enabled_default=(
55 circuit_name
not in GENERIC_CIRCUIT_NAMES
56 and circuit_interface != INTERFACE.DONT_SHOW
66 """Class to represent a ScreenLogic Switch."""
68 entity_description: ScreenLogicCircuitSwitchDescription
None async_setup_entry(HomeAssistant hass, ScreenLogicConfigEntry config_entry, AddEntitiesCallback async_add_entities)