1 """Describe lutron_caseta logbook events."""
3 from __future__
import annotations
5 from collections.abc
import Callable
15 ATTR_LEAP_BUTTON_NUMBER,
18 LUTRON_CASETA_BUTTON_EVENT,
20 from .device_trigger
import (
21 LEAP_TO_DEVICE_TYPE_SUBTYPE_MAP,
23 get_lutron_data_by_dr_id,
30 async_describe_event: Callable[[str, str, Callable[[Event], dict[str, str]]],
None],
32 """Describe logbook events."""
35 def async_describe_button_event(event: Event) -> dict[str, str]:
36 """Describe lutron_caseta_button_event logbook event."""
39 device_type = data[ATTR_TYPE]
40 leap_button_number = data[ATTR_LEAP_BUTTON_NUMBER]
41 dr_device_id = data[ATTR_DEVICE_ID]
42 rev_button_map: dict[int, str] |
None =
None
43 keypad_button_names_to_leap: dict[int, dict[str, int]] = {}
47 keypad_data = lutron_data.keypad_data
48 keypad = keypad_data.dr_device_id_to_keypad.get(dr_device_id)
49 keypad_id = keypad[
"lutron_device_id"]
50 keypad_button_names_to_leap = keypad_data.button_names_to_leap
52 if not (rev_button_map := LEAP_TO_DEVICE_TYPE_SUBTYPE_MAP.get(device_type)):
53 if fwd_button_map := keypad_button_names_to_leap.get(keypad_id):
56 if rev_button_map
is None:
58 LOGBOOK_ENTRY_NAME: f
"{data[ATTR_AREA_NAME]} {data[ATTR_DEVICE_NAME]}",
59 LOGBOOK_ENTRY_MESSAGE: (
60 f
"{data[ATTR_ACTION]} Error retrieving button description"
64 button_description = rev_button_map.get(leap_button_number)
66 LOGBOOK_ENTRY_NAME: f
"{data[ATTR_AREA_NAME]} {data[ATTR_DEVICE_NAME]}",
67 LOGBOOK_ENTRY_MESSAGE: f
"{data[ATTR_ACTION]} {button_description}",
71 DOMAIN, LUTRON_CASETA_BUTTON_EVENT, async_describe_button_event
dict _reverse_dict(dict forward_dict)
def get_lutron_data_by_dr_id(HomeAssistant hass, str device_id)
None async_describe_events(HomeAssistant hass, Callable[[str, str, Callable[[Event], dict[str, str]]], None] async_describe_event)