Home Assistant Unofficial Reference 2024.12.1
logbook.py
Go to the documentation of this file.
1 """Describe logbook events."""
2 
3 from collections.abc import Callable
4 from typing import Any
5 
7  LOGBOOK_ENTRY_ENTITY_ID,
8  LOGBOOK_ENTRY_MESSAGE,
9  LOGBOOK_ENTRY_NAME,
10 )
11 from homeassistant.const import ATTR_ENTITY_ID, ATTR_SERVICE
12 from homeassistant.core import Event, HomeAssistant, callback
13 
14 from .const import ATTR_DISPLAY_NAME, ATTR_VALUE, DOMAIN, EVENT_HOMEKIT_CHANGED
15 
16 
17 @callback
19  hass: HomeAssistant,
20  async_describe_event: Callable[[str, str, Callable[[Event], dict[str, Any]]], None],
21 ) -> None:
22  """Describe logbook events."""
23 
24  @callback
25  def async_describe_logbook_event(event: Event) -> dict[str, Any]:
26  """Describe a logbook event."""
27  data = event.data
28  entity_id = data.get(ATTR_ENTITY_ID)
29  value = data.get(ATTR_VALUE)
30 
31  value_msg = f" to {value}" if value else ""
32  message = (
33  f"send command {data[ATTR_SERVICE]}{value_msg} for"
34  f" {data[ATTR_DISPLAY_NAME]}"
35  )
36 
37  return {
38  LOGBOOK_ENTRY_NAME: "HomeKit",
39  LOGBOOK_ENTRY_MESSAGE: message,
40  LOGBOOK_ENTRY_ENTITY_ID: entity_id,
41  }
42 
43  async_describe_event(DOMAIN, EVENT_HOMEKIT_CHANGED, async_describe_logbook_event)
None async_describe_events(HomeAssistant hass, Callable[[str, str, Callable[[Event], dict[str, Any]]], None] async_describe_event)
Definition: logbook.py:21