mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 11:17:21 +00:00
Fix Home Connect actions keys (#137027)
* Fix actions * Use coerce Co-authored-by: Martin Hjelmare <marhje52@gmail.com> --------- Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
This commit is contained in:
parent
012f7112d7
commit
285a0a6c81
@ -6,7 +6,7 @@ import logging
|
||||
from typing import Any, cast
|
||||
|
||||
from aiohomeconnect.client import Client as HomeConnectClient
|
||||
from aiohomeconnect.model import CommandKey, Option, OptionKey
|
||||
from aiohomeconnect.model import CommandKey, Option, OptionKey, ProgramKey, SettingKey
|
||||
from aiohomeconnect.model.error import HomeConnectError
|
||||
import voluptuous as vol
|
||||
|
||||
@ -50,7 +50,10 @@ CONFIG_SCHEMA = cv.config_entry_only_config_schema(DOMAIN)
|
||||
SERVICE_SETTING_SCHEMA = vol.Schema(
|
||||
{
|
||||
vol.Required(ATTR_DEVICE_ID): str,
|
||||
vol.Required(ATTR_KEY): str,
|
||||
vol.Required(ATTR_KEY): vol.All(
|
||||
vol.Coerce(SettingKey),
|
||||
vol.NotIn([SettingKey.UNKNOWN]),
|
||||
),
|
||||
vol.Required(ATTR_VALUE): vol.Any(str, int, bool),
|
||||
}
|
||||
)
|
||||
@ -58,7 +61,10 @@ SERVICE_SETTING_SCHEMA = vol.Schema(
|
||||
SERVICE_OPTION_SCHEMA = vol.Schema(
|
||||
{
|
||||
vol.Required(ATTR_DEVICE_ID): str,
|
||||
vol.Required(ATTR_KEY): str,
|
||||
vol.Required(ATTR_KEY): vol.All(
|
||||
vol.Coerce(OptionKey),
|
||||
vol.NotIn([OptionKey.UNKNOWN]),
|
||||
),
|
||||
vol.Required(ATTR_VALUE): vol.Any(str, int, bool),
|
||||
vol.Optional(ATTR_UNIT): str,
|
||||
}
|
||||
@ -67,14 +73,23 @@ SERVICE_OPTION_SCHEMA = vol.Schema(
|
||||
SERVICE_PROGRAM_SCHEMA = vol.Any(
|
||||
{
|
||||
vol.Required(ATTR_DEVICE_ID): str,
|
||||
vol.Required(ATTR_PROGRAM): str,
|
||||
vol.Required(ATTR_KEY): str,
|
||||
vol.Required(ATTR_PROGRAM): vol.All(
|
||||
vol.Coerce(ProgramKey),
|
||||
vol.NotIn([ProgramKey.UNKNOWN]),
|
||||
),
|
||||
vol.Required(ATTR_KEY): vol.All(
|
||||
vol.Coerce(OptionKey),
|
||||
vol.NotIn([OptionKey.UNKNOWN]),
|
||||
),
|
||||
vol.Required(ATTR_VALUE): vol.Any(int, str),
|
||||
vol.Optional(ATTR_UNIT): str,
|
||||
},
|
||||
{
|
||||
vol.Required(ATTR_DEVICE_ID): str,
|
||||
vol.Required(ATTR_PROGRAM): str,
|
||||
vol.Required(ATTR_PROGRAM): vol.All(
|
||||
vol.Coerce(ProgramKey),
|
||||
vol.NotIn([ProgramKey.UNKNOWN]),
|
||||
),
|
||||
},
|
||||
)
|
||||
|
||||
@ -141,7 +156,7 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
|
||||
options = (
|
||||
[
|
||||
Option(
|
||||
OptionKey(option_key),
|
||||
option_key,
|
||||
call.data[ATTR_VALUE],
|
||||
unit=call.data.get(ATTR_UNIT),
|
||||
)
|
||||
@ -178,14 +193,14 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
|
||||
if active:
|
||||
await client.set_active_program_option(
|
||||
ha_id,
|
||||
option_key=OptionKey(option_key),
|
||||
option_key=option_key,
|
||||
value=value,
|
||||
unit=unit,
|
||||
)
|
||||
else:
|
||||
await client.set_selected_program_option(
|
||||
ha_id,
|
||||
option_key=OptionKey(option_key),
|
||||
option_key=option_key,
|
||||
value=value,
|
||||
unit=unit,
|
||||
)
|
||||
|
@ -5,7 +5,7 @@ from typing import Any
|
||||
from unittest.mock import MagicMock, patch
|
||||
|
||||
from aiohomeconnect.const import OAUTH2_TOKEN
|
||||
from aiohomeconnect.model import SettingKey, StatusKey
|
||||
from aiohomeconnect.model import OptionKey, ProgramKey, SettingKey, StatusKey
|
||||
from aiohomeconnect.model.error import HomeConnectError
|
||||
import pytest
|
||||
import requests_mock
|
||||
@ -41,9 +41,9 @@ SERVICE_KV_CALL_PARAMS = [
|
||||
"service": "set_option_active",
|
||||
"service_data": {
|
||||
"device_id": "DEVICE_ID",
|
||||
"key": "",
|
||||
"value": "",
|
||||
"unit": "",
|
||||
"key": OptionKey.BSH_COMMON_FINISH_IN_RELATIVE.value,
|
||||
"value": 43200,
|
||||
"unit": "seconds",
|
||||
},
|
||||
"blocking": True,
|
||||
},
|
||||
@ -52,8 +52,8 @@ SERVICE_KV_CALL_PARAMS = [
|
||||
"service": "set_option_selected",
|
||||
"service_data": {
|
||||
"device_id": "DEVICE_ID",
|
||||
"key": "",
|
||||
"value": "",
|
||||
"key": OptionKey.LAUNDRY_CARE_WASHER_TEMPERATURE.value,
|
||||
"value": "LaundryCare.Washer.EnumType.Temperature.GC40",
|
||||
},
|
||||
"blocking": True,
|
||||
},
|
||||
@ -62,8 +62,8 @@ SERVICE_KV_CALL_PARAMS = [
|
||||
"service": "change_setting",
|
||||
"service_data": {
|
||||
"device_id": "DEVICE_ID",
|
||||
"key": "",
|
||||
"value": "",
|
||||
"key": SettingKey.BSH_COMMON_CHILD_LOCK.value,
|
||||
"value": True,
|
||||
},
|
||||
"blocking": True,
|
||||
},
|
||||
@ -95,9 +95,9 @@ SERVICE_PROGRAM_CALL_PARAMS = [
|
||||
"service": "select_program",
|
||||
"service_data": {
|
||||
"device_id": "DEVICE_ID",
|
||||
"program": "",
|
||||
"key": "",
|
||||
"value": "",
|
||||
"program": ProgramKey.LAUNDRY_CARE_WASHER_COTTON.value,
|
||||
"key": OptionKey.LAUNDRY_CARE_WASHER_TEMPERATURE.value,
|
||||
"value": "LaundryCare.Washer.EnumType.Temperature.GC40",
|
||||
},
|
||||
"blocking": True,
|
||||
},
|
||||
@ -106,10 +106,10 @@ SERVICE_PROGRAM_CALL_PARAMS = [
|
||||
"service": "start_program",
|
||||
"service_data": {
|
||||
"device_id": "DEVICE_ID",
|
||||
"program": "",
|
||||
"key": "",
|
||||
"value": "",
|
||||
"unit": "C",
|
||||
"program": ProgramKey.LAUNDRY_CARE_WASHER_COTTON.value,
|
||||
"key": OptionKey.BSH_COMMON_FINISH_IN_RELATIVE.value,
|
||||
"value": 43200,
|
||||
"unit": "seconds",
|
||||
},
|
||||
"blocking": True,
|
||||
},
|
||||
|
Loading…
x
Reference in New Issue
Block a user