1 """Provides diagnostics for TotalConnect."""
3 from __future__
import annotations
11 from .const
import DOMAIN
20 "sensor_serial_number",
27 hass: HomeAssistant, config_entry: ConfigEntry
29 """Return diagnostics for a config entry."""
30 client = hass.data[DOMAIN][config_entry.entry_id].client
32 data: dict[str, Any] = {}
34 "auto_bypass_low_battery": client.auto_bypass_low_battery,
35 "module_flags": client._module_flags,
36 "retry_delay": client.retry_delay,
37 "invalid_credentials": client._invalid_credentials,
41 "master": client._user._master_user,
42 "user_admin": client._user._user_admin,
43 "config_admin": client._user._config_admin,
44 "security_problem": client._user.security_problem(),
45 "features": client._user._features,
48 data[
"locations"] = []
49 for location
in client.locations.values():
51 "location_id": location.location_id,
52 "name": location.location_name,
53 "module_flags": location._module_flags,
54 "security_device_id": location.security_device_id,
55 "ac_loss": location.ac_loss,
56 "low_battery": location.low_battery,
57 "auto_bypass_low_battery": location.auto_bypass_low_battery,
58 "cover_tampered": location.cover_tampered,
59 "arming_state": location.arming_state,
62 new_location[
"devices"] = []
63 for device
in location.devices.values():
65 "device_id": device.deviceid,
67 "class_id": device.class_id,
68 "serial_number": device.serial_number,
69 "security_panel_type_id": device.security_panel_type_id,
70 "serial_text": device.serial_text,
71 "flags": device.flags,
73 new_location[
"devices"].append(new_device)
75 new_location[
"partitions"] = []
76 for partition
in location.partitions.values():
78 "partition_id": partition.partitionid,
79 "name": partition.name,
80 "is_stay_armed": partition.is_stay_armed,
81 "is_fire_enabled": partition.is_fire_enabled,
82 "is_common_enabled": partition.is_common_enabled,
83 "is_locked": partition.is_locked,
84 "is_new_partition": partition.is_new_partition,
85 "is_night_stay_enabled": partition.is_night_stay_enabled,
86 "exit_delay_timer": partition.exit_delay_timer,
88 new_location[
"partitions"].append(new_partition)
90 new_location[
"zones"] = []
91 for zone
in location.zones.values():
93 "zone_id": zone.zoneid,
94 "description": zone.description,
95 "partition": zone.partition,
96 "status": zone.status,
97 "zone_type_id": zone.zone_type_id,
98 "can_be_bypassed": zone.can_be_bypassed,
99 "battery_level": zone.battery_level,
100 "signal_strength": zone.signal_strength,
101 "sensor_serial_number": zone.sensor_serial_number,
102 "loop_number": zone.loop_number,
103 "response_type": zone.response_type,
104 "alarm_report_state": zone.alarm_report_state,
105 "supervision_type": zone.supervision_type,
106 "chime_state": zone.chime_state,
107 "device_type": zone.device_type,
109 new_location[
"zones"].append(new_zone)
111 data[
"locations"].append(new_location)
dict async_redact_data(Mapping data, Iterable[Any] to_redact)
dict[str, Any] async_get_config_entry_diagnostics(HomeAssistant hass, ConfigEntry config_entry)