1 """Constants for the homekit_controller component."""
3 from aiohomekit.exceptions
import (
4 AccessoryDisconnectedError,
5 AccessoryNotFoundError,
8 from aiohomekit.model.characteristics
import CharacteristicsTypes
9 from aiohomekit.model.services
import ServicesTypes
11 DOMAIN =
"homekit_controller"
13 KNOWN_DEVICES = f
"{DOMAIN}-devices"
14 CONTROLLER = f
"{DOMAIN}-controller"
15 ENTITY_MAP = f
"{DOMAIN}-entity-map"
16 TRIGGERS = f
"{DOMAIN}-triggers"
18 HOMEKIT_DIR =
".homekit"
19 PAIRING_FILE =
"pairing.json"
21 IDENTIFIER_SERIAL_NUMBER =
"homekit_controller:serial-number"
22 IDENTIFIER_ACCESSORY_ID =
"homekit_controller:accessory-id"
23 IDENTIFIER_LEGACY_SERIAL_NUMBER =
"serial-number"
24 IDENTIFIER_LEGACY_ACCESSORY_ID =
"accessory-id"
27 HOMEKIT_ACCESSORY_DISPATCH = {
28 ServicesTypes.LIGHTBULB:
"light",
29 ServicesTypes.OUTLET:
"switch",
30 ServicesTypes.SWITCH:
"switch",
31 ServicesTypes.THERMOSTAT:
"climate",
32 ServicesTypes.HEATER_COOLER:
"climate",
33 ServicesTypes.SECURITY_SYSTEM:
"alarm_control_panel",
34 ServicesTypes.GARAGE_DOOR_OPENER:
"cover",
35 ServicesTypes.WINDOW:
"cover",
36 ServicesTypes.WINDOW_COVERING:
"cover",
37 ServicesTypes.LOCK_MECHANISM:
"lock",
38 ServicesTypes.CONTACT_SENSOR:
"binary_sensor",
39 ServicesTypes.MOTION_SENSOR:
"binary_sensor",
40 ServicesTypes.CARBON_DIOXIDE_SENSOR:
"sensor",
41 ServicesTypes.HUMIDITY_SENSOR:
"sensor",
42 ServicesTypes.HUMIDIFIER_DEHUMIDIFIER:
"humidifier",
43 ServicesTypes.LIGHT_SENSOR:
"sensor",
44 ServicesTypes.TEMPERATURE_SENSOR:
"sensor",
45 ServicesTypes.BATTERY_SERVICE:
"sensor",
46 ServicesTypes.SMOKE_SENSOR:
"binary_sensor",
47 ServicesTypes.CARBON_MONOXIDE_SENSOR:
"binary_sensor",
48 ServicesTypes.LEAK_SENSOR:
"binary_sensor",
49 ServicesTypes.FAN:
"fan",
50 ServicesTypes.FAN_V2:
"fan",
51 ServicesTypes.OCCUPANCY_SENSOR:
"binary_sensor",
52 ServicesTypes.TELEVISION:
"media_player",
53 ServicesTypes.FAUCET:
"switch",
54 ServicesTypes.VALVE:
"switch",
55 ServicesTypes.CAMERA_RTP_STREAM_MANAGEMENT:
"camera",
56 ServicesTypes.DOORBELL:
"event",
57 ServicesTypes.STATELESS_PROGRAMMABLE_SWITCH:
"event",
58 ServicesTypes.SERVICE_LABEL:
"event",
59 ServicesTypes.AIR_PURIFIER:
"fan",
62 CHARACTERISTIC_PLATFORMS = {
63 CharacteristicsTypes.VENDOR_CONNECTSENSE_ENERGY_WATT:
"sensor",
64 CharacteristicsTypes.VENDOR_CONNECTSENSE_ENERGY_AMPS:
"sensor",
65 CharacteristicsTypes.VENDOR_CONNECTSENSE_ENERGY_AMPS_20:
"sensor",
66 CharacteristicsTypes.VENDOR_CONNECTSENSE_ENERGY_KW_HOUR:
"sensor",
67 CharacteristicsTypes.VENDOR_AQARA_GATEWAY_VOLUME:
"number",
68 CharacteristicsTypes.VENDOR_AQARA_E1_GATEWAY_VOLUME:
"number",
69 CharacteristicsTypes.VENDOR_AQARA_PAIRING_MODE:
"switch",
70 CharacteristicsTypes.VENDOR_AQARA_E1_PAIRING_MODE:
"switch",
71 CharacteristicsTypes.VENDOR_ECOBEE_HOME_TARGET_COOL:
"number",
72 CharacteristicsTypes.VENDOR_ECOBEE_HOME_TARGET_HEAT:
"number",
73 CharacteristicsTypes.VENDOR_ECOBEE_SLEEP_TARGET_COOL:
"number",
74 CharacteristicsTypes.VENDOR_ECOBEE_SLEEP_TARGET_HEAT:
"number",
75 CharacteristicsTypes.VENDOR_ECOBEE_AWAY_TARGET_COOL:
"number",
76 CharacteristicsTypes.VENDOR_ECOBEE_AWAY_TARGET_HEAT:
"number",
77 CharacteristicsTypes.VENDOR_ECOBEE_CURRENT_MODE:
"select",
78 CharacteristicsTypes.VENDOR_EVE_ENERGY_WATT:
"sensor",
79 CharacteristicsTypes.VENDOR_EVE_DEGREE_AIR_PRESSURE:
"sensor",
80 CharacteristicsTypes.VENDOR_EVE_DEGREE_ELEVATION:
"number",
81 CharacteristicsTypes.VENDOR_EVE_MOTION_DURATION:
"number",
82 CharacteristicsTypes.VENDOR_EVE_MOTION_SENSITIVITY:
"number",
83 CharacteristicsTypes.VENDOR_EVE_THERMO_VALVE_POSITION:
"sensor",
84 CharacteristicsTypes.VENDOR_HAA_SETUP:
"button",
85 CharacteristicsTypes.VENDOR_HAA_UPDATE:
"button",
86 CharacteristicsTypes.VENDOR_KOOGEEK_REALTIME_ENERGY:
"sensor",
87 CharacteristicsTypes.VENDOR_KOOGEEK_REALTIME_ENERGY_2:
"sensor",
88 CharacteristicsTypes.VENDOR_VOCOLINC_HUMIDIFIER_SPRAY_LEVEL:
"number",
89 CharacteristicsTypes.VENDOR_VOCOLINC_OUTLET_ENERGY:
"sensor",
90 CharacteristicsTypes.VENDOR_ECOBEE_CLEAR_HOLD:
"button",
91 CharacteristicsTypes.VENDOR_ECOBEE_FAN_WRITE_SPEED:
"number",
92 CharacteristicsTypes.VENDOR_ECOBEE_SET_HOLD_SCHEDULE:
"number",
93 CharacteristicsTypes.TEMPERATURE_CURRENT:
"sensor",
94 CharacteristicsTypes.RELATIVE_HUMIDITY_CURRENT:
"sensor",
95 CharacteristicsTypes.AIR_QUALITY:
"sensor",
96 CharacteristicsTypes.DENSITY_PM25:
"sensor",
97 CharacteristicsTypes.DENSITY_PM10:
"sensor",
98 CharacteristicsTypes.DENSITY_OZONE:
"sensor",
99 CharacteristicsTypes.DENSITY_NO2:
"sensor",
100 CharacteristicsTypes.DENSITY_SO2:
"sensor",
101 CharacteristicsTypes.DENSITY_VOC:
"sensor",
102 CharacteristicsTypes.IDENTIFY:
"button",
103 CharacteristicsTypes.THREAD_NODE_CAPABILITIES:
"sensor",
104 CharacteristicsTypes.THREAD_CONTROL_POINT:
"button",
105 CharacteristicsTypes.MUTE:
"switch",
106 CharacteristicsTypes.FILTER_LIFE_LEVEL:
"sensor",
107 CharacteristicsTypes.VENDOR_AIRVERSA_SLEEP_MODE:
"switch",
108 CharacteristicsTypes.TEMPERATURE_UNITS:
"select",
109 CharacteristicsTypes.AIR_PURIFIER_STATE_CURRENT:
"sensor",
110 CharacteristicsTypes.AIR_PURIFIER_STATE_TARGET:
"select",
113 STARTUP_EXCEPTIONS = (
115 AccessoryNotFoundError,
117 AccessoryDisconnectedError,
125 DEBOUNCE_COOLDOWN = 10
127 SUBSCRIBE_COOLDOWN = 0.25