Home Assistant Unofficial Reference 2024.12.1
models.py
Go to the documentation of this file.
1 """The lutron_caseta integration models."""
2 
3 from __future__ import annotations
4 
5 from dataclasses import dataclass
6 from typing import Any, Final, TypedDict
7 
8 from pylutron_caseta.smartbridge import Smartbridge
9 import voluptuous as vol
10 
11 from homeassistant.config_entries import ConfigEntry
12 from homeassistant.helpers.device_registry import DeviceInfo
13 
14 type LutronCasetaConfigEntry = ConfigEntry[LutronCasetaData]
15 
16 
17 @dataclass
19  """Data for the lutron_caseta integration."""
20 
21  bridge: Smartbridge
22  bridge_device: dict[str, Any]
23  keypad_data: LutronKeypadData
24 
25 
26 @dataclass
28  """Data for the lutron_caseta integration keypads."""
29 
30  dr_device_id_to_keypad: dict[str, LutronKeypad]
31  keypads: dict[int, LutronKeypad]
32  buttons: dict[int, LutronButton]
33  button_names_to_leap: dict[int, dict[str, int]]
34  trigger_schemas: dict[int, vol.Schema]
35 
36 
37 class LutronKeypad(TypedDict):
38  """A lutron_caseta keypad device."""
39 
40  lutron_device_id: int
41  dr_device_id: str
42  area_id: int
43  area_name: str
44  name: str
45  serial: str
46  device_info: DeviceInfo
47  model: str
48  type: str
49  buttons: list[int]
50 
51 
52 LUTRON_KEYPAD_LUTRON_DEVICE_ID: Final = "lutron_device_id"
53 LUTRON_KEYPAD_DEVICE_REGISTRY_DEVICE_ID: Final = "dr_device_id"
54 LUTRON_KEYPAD_AREA_ID: Final = "area_id"
55 LUTRON_KEYPAD_AREA_NAME: Final = "area_name"
56 LUTRON_KEYPAD_NAME: Final = "name"
57 LUTRON_KEYPAD_SERIAL: Final = "serial"
58 LUTRON_KEYPAD_DEVICE_INFO: Final = "device_info"
59 LUTRON_KEYPAD_MODEL: Final = "model"
60 LUTRON_KEYPAD_TYPE: Final = "type"
61 LUTRON_KEYPAD_BUTTONS: Final = "buttons"
62 
63 
64 class LutronButton(TypedDict):
65  """A lutron_caseta button."""
66 
67  lutron_device_id: int
68  leap_button_number: int
69  button_name: str
70  led_device_id: str | None
71  parent_keypad: int
72 
73 
74 LUTRON_BUTTON_LUTRON_DEVICE_ID: Final = "lutron_device_id"
75 LUTRON_BUTTON_LEAP_BUTTON_NUMBER: Final = "leap_button_number"
76 LUTRON_BUTTON_BUTTON_NAME: Final = "button_name"
77 LUTRON_BUTTON_LED_DEVICE_ID: Final = "led_device_id"
78 LUTRON_BUTTON_PARENT_KEYPAD: Final = "parent_keypad"