1 """Diagnostics support for HomeKit."""
3 from __future__
import annotations
7 from pyhap.accessory_driver
import AccessoryDriver
8 from pyhap.state
import State
13 from .accessories
import HomeAccessory, HomeBridge
14 from .models
import HomeKitConfigEntry
16 TO_REDACT = {
"access_token",
"entity_picture"}
20 hass: HomeAssistant, entry: HomeKitConfigEntry
22 """Return diagnostics for a config entry."""
23 homekit = entry.runtime_data.homekit
24 data: dict[str, Any] = {
25 "status": homekit.status,
28 "version": entry.version,
29 "data":
dict(entry.data),
30 "options":
dict(entry.options),
33 if homekit.iid_storage:
34 data[
"iid_storage"] = homekit.iid_storage.allocations
35 if not homekit.driver:
37 driver: AccessoryDriver = homekit.driver
39 if isinstance(driver.accessory, HomeBridge):
43 data.update(driver.get_accessories())
44 state: State = driver.state
47 "client_properties": {
48 str(client): props
for client, props
in state.client_properties.items()
50 "config_version": state.config_version,
51 "pairing_id": state.mac,
58 """Return diagnostics for a bridge."""
61 for aid, accessory
in bridge.accessories.items()
66 hass: HomeAssistant, accessory: HomeAccessory
68 """Return diagnostics for an accessory."""
70 if accessory.entity_id:
71 entity_state = hass.states.get(accessory.entity_id)
74 "config": accessory.config,
75 "category": accessory.category,
76 "name": accessory.display_name,
77 "entity_id": accessory.entity_id,
dict async_redact_data(Mapping data, Iterable[Any] to_redact)
dict[str, Any] async_get_config_entry_diagnostics(HomeAssistant hass, HomeKitConfigEntry entry)
dict[str, Any] _get_accessory_diagnostics(HomeAssistant hass, HomeAccessory accessory)
dict[int, Any] _get_bridge_diagnostics(HomeAssistant hass, HomeBridge bridge)