Add alexa remote support (#120878)
* Updated the AlexaModeController to support the remote domain. Also added an alexa entitiy adapter for the remote domain.
* Fixed copy paste mistake.
* Fixed power state for remove domain.
* Updated the CapabilityResource to support labels with the corresponding locale. This local is read from the users config.
* Add the alexa display category 'REMOTE' and use it for the remote capability.
* Revert "Updated the CapabilityResource to support labels with the corresponding locale. This local is read from the users config."
This reverts commit fbdf37904a
.
* Fix error when the remote does not have an activtiy list.
* Add tests for the state report of a remote entity.
* Add a test for alexas set mode directive for a remote entitiy.
* Add a test for alexas TurnOn and TurnOff directives for a remote entity.
* Apply suggestions from code review
Fix copy paste mistakes.
Co-authored-by: Jan Bouwhuis <jbouwh@users.noreply.github.com>
* Improve attribute name as suggested.
Co-authored-by: Jan Bouwhuis <jbouwh@users.noreply.github.com>
* Add test case with zero and one activity.
* Add a comment why we use the mode controller instead of the input controller.
* Add test to check of the discovery returns all required interfaces for a remote entitiy.
* Tweak comment
* Add line breaks to fix max allowed chars per line.
---------
Co-authored-by: Jan Bouwhuis <jbouwh@users.noreply.github.com>
This commit is contained in:
parent
154da1b18b
commit
e44f00cf7c
5 changed files with 254 additions and 1 deletions
|
@ -21,6 +21,7 @@ from homeassistant.components import (
|
|||
light,
|
||||
media_player,
|
||||
number,
|
||||
remote,
|
||||
timer,
|
||||
vacuum,
|
||||
valve,
|
||||
|
@ -185,6 +186,8 @@ async def async_api_turn_on(
|
|||
service = fan.SERVICE_TURN_ON
|
||||
elif domain == humidifier.DOMAIN:
|
||||
service = humidifier.SERVICE_TURN_ON
|
||||
elif domain == remote.DOMAIN:
|
||||
service = remote.SERVICE_TURN_ON
|
||||
elif domain == vacuum.DOMAIN:
|
||||
supported = entity.attributes.get(ATTR_SUPPORTED_FEATURES, 0)
|
||||
if (
|
||||
|
@ -234,6 +237,8 @@ async def async_api_turn_off(
|
|||
service = climate.SERVICE_TURN_OFF
|
||||
elif domain == fan.DOMAIN:
|
||||
service = fan.SERVICE_TURN_OFF
|
||||
elif domain == remote.DOMAIN:
|
||||
service = remote.SERVICE_TURN_OFF
|
||||
elif domain == humidifier.DOMAIN:
|
||||
service = humidifier.SERVICE_TURN_OFF
|
||||
elif domain == vacuum.DOMAIN:
|
||||
|
@ -1200,6 +1205,17 @@ async def async_api_set_mode(
|
|||
msg = f"Entity '{entity.entity_id}' does not support Mode '{mode}'"
|
||||
raise AlexaInvalidValueError(msg)
|
||||
|
||||
# Remote Activity
|
||||
if instance == f"{remote.DOMAIN}.{remote.ATTR_ACTIVITY}":
|
||||
activity = mode.split(".")[1]
|
||||
activities: list[str] | None = entity.attributes.get(remote.ATTR_ACTIVITY_LIST)
|
||||
if activity != PRESET_MODE_NA and activities and activity in activities:
|
||||
service = remote.SERVICE_TURN_ON
|
||||
data[remote.ATTR_ACTIVITY] = activity
|
||||
else:
|
||||
msg = f"Entity '{entity.entity_id}' does not support Mode '{mode}'"
|
||||
raise AlexaInvalidValueError(msg)
|
||||
|
||||
# Water heater operation mode
|
||||
elif instance == f"{water_heater.DOMAIN}.{water_heater.ATTR_OPERATION_MODE}":
|
||||
operation_mode = mode.split(".")[1]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue