1 """Constants for Google Assistant."""
30 DOMAIN =
"google_assistant"
32 GOOGLE_ASSISTANT_API_ENDPOINT =
"/api/google_assistant"
34 CONF_ALIASES =
"aliases"
35 CONF_CLIENT_EMAIL =
"client_email"
36 CONF_ENTITY_CONFIG =
"entity_config"
37 CONF_EXPOSE =
"expose"
38 CONF_EXPOSE_BY_DEFAULT =
"expose_by_default"
39 CONF_EXPOSED_DOMAINS =
"exposed_domains"
40 CONF_PRIVATE_KEY =
"private_key"
41 CONF_PROJECT_ID =
"project_id"
42 CONF_REPORT_STATE =
"report_state"
43 CONF_ROOM_HINT =
"room"
44 CONF_SECURE_DEVICES_PIN =
"secure_devices_pin"
45 CONF_SERVICE_ACCOUNT =
"service_account"
47 DATA_CONFIG =
"config"
49 DEFAULT_EXPOSE_BY_DEFAULT =
True
50 DEFAULT_EXPOSED_DOMAINS = [
51 "alarm_control_panel",
75 PREFIX_TYPES =
"action.devices.types."
76 TYPE_ALARM = f
"{PREFIX_TYPES}SECURITYSYSTEM"
77 TYPE_AWNING = f
"{PREFIX_TYPES}AWNING"
78 TYPE_BLINDS = f
"{PREFIX_TYPES}BLINDS"
79 TYPE_CAMERA = f
"{PREFIX_TYPES}CAMERA"
80 TYPE_CURTAIN = f
"{PREFIX_TYPES}CURTAIN"
81 TYPE_CARBON_MONOXIDE_DETECTOR = f
"{PREFIX_TYPES}CARBON_MONOXIDE_DETECTOR"
82 TYPE_DEHUMIDIFIER = f
"{PREFIX_TYPES}DEHUMIDIFIER"
83 TYPE_DOOR = f
"{PREFIX_TYPES}DOOR"
84 TYPE_DOORBELL = f
"{PREFIX_TYPES}DOORBELL"
85 TYPE_FAN = f
"{PREFIX_TYPES}FAN"
86 TYPE_GARAGE = f
"{PREFIX_TYPES}GARAGE"
87 TYPE_GATE = f
"{PREFIX_TYPES}GATE"
88 TYPE_HUMIDIFIER = f
"{PREFIX_TYPES}HUMIDIFIER"
89 TYPE_LIGHT = f
"{PREFIX_TYPES}LIGHT"
90 TYPE_LOCK = f
"{PREFIX_TYPES}LOCK"
91 TYPE_OUTLET = f
"{PREFIX_TYPES}OUTLET"
92 TYPE_RECEIVER = f
"{PREFIX_TYPES}AUDIO_VIDEO_RECEIVER"
93 TYPE_SCENE = f
"{PREFIX_TYPES}SCENE"
94 TYPE_SENSOR = f
"{PREFIX_TYPES}SENSOR"
95 TYPE_SETTOP = f
"{PREFIX_TYPES}SETTOP"
96 TYPE_SHUTTER = f
"{PREFIX_TYPES}SHUTTER"
97 TYPE_SMOKE_DETECTOR = f
"{PREFIX_TYPES}SMOKE_DETECTOR"
98 TYPE_SPEAKER = f
"{PREFIX_TYPES}SPEAKER"
99 TYPE_SWITCH = f
"{PREFIX_TYPES}SWITCH"
100 TYPE_THERMOSTAT = f
"{PREFIX_TYPES}THERMOSTAT"
101 TYPE_TV = f
"{PREFIX_TYPES}TV"
102 TYPE_WINDOW = f
"{PREFIX_TYPES}WINDOW"
103 TYPE_VACUUM = f
"{PREFIX_TYPES}VACUUM"
104 TYPE_VALVE = f
"{PREFIX_TYPES}VALVE"
105 TYPE_WATERHEATER = f
"{PREFIX_TYPES}WATERHEATER"
107 SERVICE_REQUEST_SYNC =
"request_sync"
108 HOMEGRAPH_URL =
"https://homegraph.googleapis.com/"
109 HOMEGRAPH_SCOPE =
"https://www.googleapis.com/auth/homegraph"
110 HOMEGRAPH_TOKEN_URL =
"https://accounts.google.com/o/oauth2/token"
111 REQUEST_SYNC_BASE_URL = f
"{HOMEGRAPH_URL}v1/devices:requestSync"
112 REPORT_STATE_BASE_URL = f
"{HOMEGRAPH_URL}v1/devices:reportStateAndNotification"
116 ERR_ALREADY_ARMED =
"alreadyArmed"
117 ERR_ALREADY_DISARMED =
"alreadyDisarmed"
118 ERR_ALREADY_STOPPED =
"alreadyStopped"
119 ERR_CHALLENGE_NEEDED =
"challengeNeeded"
120 ERR_CHALLENGE_NOT_SETUP =
"challengeFailedNotSetup"
121 ERR_DEVICE_NOT_FOUND =
"deviceNotFound"
122 ERR_DEVICE_OFFLINE =
"deviceOffline"
123 ERR_FUNCTION_NOT_SUPPORTED =
"functionNotSupported"
124 ERR_NO_AVAILABLE_CHANNEL =
"noAvailableChannel"
125 ERR_NOT_SUPPORTED =
"notSupported"
126 ERR_PIN_INCORRECT =
"pinIncorrect"
127 ERR_PROTOCOL_ERROR =
"protocolError"
128 ERR_TOO_MANY_FAILED_ATTEMPTS =
"tooManyFailedAttempts"
129 ERR_UNKNOWN_ERROR =
"unknownError"
130 ERR_UNSUPPORTED_INPUT =
"unsupportedInput"
131 ERR_USER_CANCELLED =
"userCancelled"
132 ERR_VALUE_OUT_OF_RANGE =
"valueOutOfRange"
135 EVENT_COMMAND_RECEIVED =
"google_assistant_command"
136 EVENT_QUERY_RECEIVED =
"google_assistant_query"
137 EVENT_SYNC_RECEIVED =
"google_assistant_sync"
139 DOMAIN_TO_GOOGLE_TYPES = {
140 alarm_control_panel.DOMAIN: TYPE_ALARM,
141 binary_sensor.DOMAIN: TYPE_SENSOR,
142 button.DOMAIN: TYPE_SCENE,
143 camera.DOMAIN: TYPE_CAMERA,
144 climate.DOMAIN: TYPE_THERMOSTAT,
145 cover.DOMAIN: TYPE_BLINDS,
146 fan.DOMAIN: TYPE_FAN,
147 group.DOMAIN: TYPE_SWITCH,
148 humidifier.DOMAIN: TYPE_HUMIDIFIER,
149 input_boolean.DOMAIN: TYPE_SWITCH,
150 input_button.DOMAIN: TYPE_SCENE,
151 input_select.DOMAIN: TYPE_SENSOR,
152 light.DOMAIN: TYPE_LIGHT,
153 lock.DOMAIN: TYPE_LOCK,
154 media_player.DOMAIN: TYPE_SETTOP,
155 scene.DOMAIN: TYPE_SCENE,
156 script.DOMAIN: TYPE_SCENE,
157 select.DOMAIN: TYPE_SENSOR,
158 sensor.DOMAIN: TYPE_SENSOR,
159 switch.DOMAIN: TYPE_SWITCH,
160 vacuum.DOMAIN: TYPE_VACUUM,
161 valve.DOMAIN: TYPE_VALVE,
162 water_heater.DOMAIN: TYPE_WATERHEATER,
165 DEVICE_CLASS_TO_GOOGLE_TYPES = {
166 (binary_sensor.DOMAIN, binary_sensor.BinarySensorDeviceClass.DOOR): TYPE_DOOR,
167 (binary_sensor.DOMAIN, binary_sensor.BinarySensorDeviceClass.LOCK): TYPE_SENSOR,
168 (binary_sensor.DOMAIN, binary_sensor.BinarySensorDeviceClass.OPENING): TYPE_SENSOR,
169 (binary_sensor.DOMAIN, binary_sensor.BinarySensorDeviceClass.WINDOW): TYPE_WINDOW,
171 binary_sensor.DOMAIN,
172 binary_sensor.BinarySensorDeviceClass.GARAGE_DOOR,
175 binary_sensor.DOMAIN,
176 binary_sensor.BinarySensorDeviceClass.SMOKE,
177 ): TYPE_SMOKE_DETECTOR,
179 binary_sensor.DOMAIN,
180 binary_sensor.BinarySensorDeviceClass.CO,
181 ): TYPE_CARBON_MONOXIDE_DETECTOR,
182 (cover.DOMAIN, cover.CoverDeviceClass.AWNING): TYPE_AWNING,
183 (cover.DOMAIN, cover.CoverDeviceClass.CURTAIN): TYPE_CURTAIN,
184 (cover.DOMAIN, cover.CoverDeviceClass.DOOR): TYPE_DOOR,
185 (cover.DOMAIN, cover.CoverDeviceClass.GARAGE): TYPE_GARAGE,
186 (cover.DOMAIN, cover.CoverDeviceClass.GATE): TYPE_GATE,
187 (cover.DOMAIN, cover.CoverDeviceClass.SHUTTER): TYPE_SHUTTER,
188 (cover.DOMAIN, cover.CoverDeviceClass.WINDOW): TYPE_WINDOW,
189 (event.DOMAIN, event.EventDeviceClass.DOORBELL): TYPE_DOORBELL,
192 humidifier.HumidifierDeviceClass.DEHUMIDIFIER,
193 ): TYPE_DEHUMIDIFIER,
194 (humidifier.DOMAIN, humidifier.HumidifierDeviceClass.HUMIDIFIER): TYPE_HUMIDIFIER,
195 (media_player.DOMAIN, media_player.MediaPlayerDeviceClass.RECEIVER): TYPE_RECEIVER,
196 (media_player.DOMAIN, media_player.MediaPlayerDeviceClass.SPEAKER): TYPE_SPEAKER,
197 (media_player.DOMAIN, media_player.MediaPlayerDeviceClass.TV): TYPE_TV,
198 (sensor.DOMAIN, sensor.SensorDeviceClass.AQI): TYPE_SENSOR,
199 (sensor.DOMAIN, sensor.SensorDeviceClass.HUMIDITY): TYPE_SENSOR,
200 (sensor.DOMAIN, sensor.SensorDeviceClass.TEMPERATURE): TYPE_SENSOR,
201 (switch.DOMAIN, switch.SwitchDeviceClass.OUTLET): TYPE_OUTLET,
202 (switch.DOMAIN, switch.SwitchDeviceClass.SWITCH): TYPE_SWITCH,
205 CHALLENGE_ACK_NEEDED =
"ackNeeded"
206 CHALLENGE_FAILED_PIN_NEEDED =
"challengeFailedPinNeeded"
207 CHALLENGE_PIN_NEEDED =
"pinNeeded"
209 STORE_AGENT_USER_IDS =
"agent_user_ids"
210 STORE_GOOGLE_LOCAL_WEBHOOK_ID =
"local_webhook_id"
212 SOURCE_CLOUD =
"cloud"
213 SOURCE_LOCAL =
"local"
215 NOT_EXPOSE_LOCAL = {TYPE_ALARM, TYPE_LOCK, TYPE_THERMOSTAT}
218 "5/5": [
"High",
"Max",
"Fast",
"5"],
219 "4/5": [
"Medium High",
"4"],
220 "3/5": [
"Medium",
"3"],
221 "2/5": [
"Medium Low",
"2"],
222 "1/5": [
"Low",
"Min",
"Slow",
"1"],
223 "4/4": [
"High",
"Max",
"Fast",
"4"],
224 "3/4": [
"Medium High",
"3"],
225 "2/4": [
"Medium Low",
"2"],
226 "1/4": [
"Low",
"Min",
"Slow",
"1"],
227 "3/3": [
"High",
"Max",
"Fast",
"3"],
228 "2/3": [
"Medium",
"2"],
229 "1/3": [
"Low",
"Min",
"Slow",
"1"],
230 "2/2": [
"High",
"Max",
"Fast",
"2"],
231 "1/2": [
"Low",
"Min",
"Slow",
"1"],
232 "1/1": [
"Normal",
"1"],