1 """Support for pico and keypad buttons."""
3 from __future__
import annotations
12 from .device_trigger
import LEAP_TO_DEVICE_TYPE_SUBTYPE_MAP
13 from .entity
import LutronCasetaEntity
14 from .models
import LutronCasetaConfigEntry, LutronCasetaData
19 config_entry: LutronCasetaConfigEntry,
20 async_add_entities: AddEntitiesCallback,
22 """Set up Lutron pico and keypad buttons."""
23 data = config_entry.runtime_data
25 button_devices = bridge.get_buttons()
26 all_devices = data.bridge.get_devices()
27 keypads = data.keypad_data.keypads
28 entities: list[LutronCasetaButton] = []
30 for device
in button_devices.values():
31 parent_keypad = keypads[device[
"parent_device"]]
32 parent_device_info = parent_keypad[
"device_info"]
34 enabled_default =
True
35 if not (device_name := device.get(
"device_name")):
39 enabled_default =
False
40 keypad_device = all_devices[device[
"parent_device"]]
41 button_numbers = LEAP_TO_DEVICE_TYPE_SUBTYPE_MAP.get(
42 keypad_device[
"type"],
47 int(device[
"button_number"]),
48 f
"button {device['button_number']}",
56 full_name = f
'{parent_device_info.get("name")} {device_name}'
61 device, data, full_name, enabled_default, parent_device_info
69 """Representation of a Lutron pico and keypad button."""
73 device: dict[str, Any],
74 data: LutronCasetaData,
76 enabled_default: bool,
77 device_info: DeviceInfo,
79 """Init a button entity."""
86 """Send a button press event."""
91 """Buttons shouldn't have serial numbers, Return None."""