* Refactor capabilityResources object into class. Implement semantics object to support open, close, raise, lower utterences. Replace covers PercentageController with RangeController. Add semantics for covers. Remove PowerController for covers. Add new display categories. Add new items to Alexa Global Catalog. Implement garage door voice PIN code support though Alexa app. Fixed bug with getting property for ModeController. Fixed bug were PercentageController AdjustPercentage would exceed 100. * Comment fixes in Tests. * Reorder imports. * Added additional tests for more code coverage. * Added and additional test for more code coverage. * Explicitly return None for configuration() if not instance of AlexaCapabilityResource.
198 lines
5.7 KiB
Python
198 lines
5.7 KiB
Python
"""Constants for the Alexa integration."""
|
|
from collections import OrderedDict
|
|
|
|
from homeassistant.components import fan
|
|
from homeassistant.components.climate import const as climate
|
|
from homeassistant.const import TEMP_CELSIUS, TEMP_FAHRENHEIT
|
|
|
|
DOMAIN = "alexa"
|
|
|
|
# Flash briefing constants
|
|
CONF_UID = "uid"
|
|
CONF_TITLE = "title"
|
|
CONF_AUDIO = "audio"
|
|
CONF_TEXT = "text"
|
|
CONF_DISPLAY_URL = "display_url"
|
|
|
|
CONF_FILTER = "filter"
|
|
CONF_ENTITY_CONFIG = "entity_config"
|
|
CONF_ENDPOINT = "endpoint"
|
|
CONF_CLIENT_ID = "client_id"
|
|
CONF_CLIENT_SECRET = "client_secret"
|
|
|
|
ATTR_UID = "uid"
|
|
ATTR_UPDATE_DATE = "updateDate"
|
|
ATTR_TITLE_TEXT = "titleText"
|
|
ATTR_STREAM_URL = "streamUrl"
|
|
ATTR_MAIN_TEXT = "mainText"
|
|
ATTR_REDIRECTION_URL = "redirectionURL"
|
|
|
|
SYN_RESOLUTION_MATCH = "ER_SUCCESS_MATCH"
|
|
|
|
DATE_FORMAT = "%Y-%m-%dT%H:%M:%S.0Z"
|
|
|
|
API_DIRECTIVE = "directive"
|
|
API_ENDPOINT = "endpoint"
|
|
API_EVENT = "event"
|
|
API_CONTEXT = "context"
|
|
API_HEADER = "header"
|
|
API_PAYLOAD = "payload"
|
|
API_SCOPE = "scope"
|
|
API_CHANGE = "change"
|
|
|
|
CONF_DESCRIPTION = "description"
|
|
CONF_DISPLAY_CATEGORIES = "display_categories"
|
|
|
|
API_TEMP_UNITS = {TEMP_FAHRENHEIT: "FAHRENHEIT", TEMP_CELSIUS: "CELSIUS"}
|
|
|
|
# Needs to be ordered dict for `async_api_set_thermostat_mode` which does a
|
|
# reverse mapping of this dict and we want to map the first occurrence of OFF
|
|
# back to HA state.
|
|
API_THERMOSTAT_MODES = OrderedDict(
|
|
[
|
|
(climate.HVAC_MODE_HEAT, "HEAT"),
|
|
(climate.HVAC_MODE_COOL, "COOL"),
|
|
(climate.HVAC_MODE_HEAT_COOL, "AUTO"),
|
|
(climate.HVAC_MODE_AUTO, "AUTO"),
|
|
(climate.HVAC_MODE_OFF, "OFF"),
|
|
(climate.HVAC_MODE_FAN_ONLY, "OFF"),
|
|
(climate.HVAC_MODE_DRY, "CUSTOM"),
|
|
]
|
|
)
|
|
API_THERMOSTAT_MODES_CUSTOM = {climate.HVAC_MODE_DRY: "DEHUMIDIFY"}
|
|
API_THERMOSTAT_PRESETS = {climate.PRESET_ECO: "ECO"}
|
|
|
|
PERCENTAGE_FAN_MAP = {
|
|
fan.SPEED_OFF: 0,
|
|
fan.SPEED_LOW: 33,
|
|
fan.SPEED_MEDIUM: 66,
|
|
fan.SPEED_HIGH: 100,
|
|
}
|
|
|
|
RANGE_FAN_MAP = {
|
|
fan.SPEED_OFF: 0,
|
|
fan.SPEED_LOW: 1,
|
|
fan.SPEED_MEDIUM: 2,
|
|
fan.SPEED_HIGH: 3,
|
|
}
|
|
|
|
SPEED_FAN_MAP = {
|
|
0: fan.SPEED_OFF,
|
|
1: fan.SPEED_LOW,
|
|
2: fan.SPEED_MEDIUM,
|
|
3: fan.SPEED_HIGH,
|
|
}
|
|
|
|
|
|
class Cause:
|
|
"""Possible causes for property changes.
|
|
|
|
https://developer.amazon.com/docs/smarthome/state-reporting-for-a-smart-home-skill.html#cause-object
|
|
"""
|
|
|
|
# Indicates that the event was caused by a customer interaction with an
|
|
# application. For example, a customer switches on a light, or locks a door
|
|
# using the Alexa app or an app provided by a device vendor.
|
|
APP_INTERACTION = "APP_INTERACTION"
|
|
|
|
# Indicates that the event was caused by a physical interaction with an
|
|
# endpoint. For example manually switching on a light or manually locking a
|
|
# door lock
|
|
PHYSICAL_INTERACTION = "PHYSICAL_INTERACTION"
|
|
|
|
# Indicates that the event was caused by the periodic poll of an appliance,
|
|
# which found a change in value. For example, you might poll a temperature
|
|
# sensor every hour, and send the updated temperature to Alexa.
|
|
PERIODIC_POLL = "PERIODIC_POLL"
|
|
|
|
# Indicates that the event was caused by the application of a device rule.
|
|
# For example, a customer configures a rule to switch on a light if a
|
|
# motion sensor detects motion. In this case, Alexa receives an event from
|
|
# the motion sensor, and another event from the light to indicate that its
|
|
# state change was caused by the rule.
|
|
RULE_TRIGGER = "RULE_TRIGGER"
|
|
|
|
# Indicates that the event was caused by a voice interaction with Alexa.
|
|
# For example a user speaking to their Echo device.
|
|
VOICE_INTERACTION = "VOICE_INTERACTION"
|
|
|
|
|
|
class Inputs:
|
|
"""Valid names for the InputController.
|
|
|
|
https://developer.amazon.com/docs/device-apis/alexa-property-schemas.html#input
|
|
"""
|
|
|
|
VALID_SOURCE_NAME_MAP = {
|
|
"aux": "AUX 1",
|
|
"aux1": "AUX 1",
|
|
"aux2": "AUX 2",
|
|
"aux3": "AUX 3",
|
|
"aux4": "AUX 4",
|
|
"aux5": "AUX 5",
|
|
"aux6": "AUX 6",
|
|
"aux7": "AUX 7",
|
|
"bluray": "BLURAY",
|
|
"cable": "CABLE",
|
|
"cd": "CD",
|
|
"coax": "COAX 1",
|
|
"coax1": "COAX 1",
|
|
"coax2": "COAX 2",
|
|
"composite": "COMPOSITE 1",
|
|
"composite1": "COMPOSITE 1",
|
|
"dvd": "DVD",
|
|
"game": "GAME",
|
|
"gameconsole": "GAME",
|
|
"hdradio": "HD RADIO",
|
|
"hdmi": "HDMI 1",
|
|
"hdmi1": "HDMI 1",
|
|
"hdmi2": "HDMI 2",
|
|
"hdmi3": "HDMI 3",
|
|
"hdmi4": "HDMI 4",
|
|
"hdmi5": "HDMI 5",
|
|
"hdmi6": "HDMI 6",
|
|
"hdmi7": "HDMI 7",
|
|
"hdmi8": "HDMI 8",
|
|
"hdmi9": "HDMI 9",
|
|
"hdmi10": "HDMI 10",
|
|
"hdmiarc": "HDMI ARC",
|
|
"input": "INPUT 1",
|
|
"input1": "INPUT 1",
|
|
"input2": "INPUT 2",
|
|
"input3": "INPUT 3",
|
|
"input4": "INPUT 4",
|
|
"input5": "INPUT 5",
|
|
"input6": "INPUT 6",
|
|
"input7": "INPUT 7",
|
|
"input8": "INPUT 8",
|
|
"input9": "INPUT 9",
|
|
"input10": "INPUT 10",
|
|
"ipod": "IPOD",
|
|
"line": "LINE 1",
|
|
"line1": "LINE 1",
|
|
"line2": "LINE 2",
|
|
"line3": "LINE 3",
|
|
"line4": "LINE 4",
|
|
"line5": "LINE 5",
|
|
"line6": "LINE 6",
|
|
"line7": "LINE 7",
|
|
"mediaplayer": "MEDIA PLAYER",
|
|
"optical": "OPTICAL 1",
|
|
"optical1": "OPTICAL 1",
|
|
"optical2": "OPTICAL 2",
|
|
"phono": "PHONO",
|
|
"playstation": "PLAYSTATION",
|
|
"playstation3": "PLAYSTATION 3",
|
|
"playstation4": "PLAYSTATION 4",
|
|
"satellite": "SATELLITE",
|
|
"satellitetv": "SATELLITE",
|
|
"smartcast": "SMARTCAST",
|
|
"tuner": "TUNER",
|
|
"tv": "TV",
|
|
"usbdac": "USB DAC",
|
|
"video": "VIDEO 1",
|
|
"video1": "VIDEO 1",
|
|
"video2": "VIDEO 2",
|
|
"video3": "VIDEO 3",
|
|
"xbox": "XBOX",
|
|
}
|