mirror of
https://github.com/home-assistant/core.git
synced 2025-08-07 12:38:21 +00:00
Replace RuntimeError with ServiceValidationError in Tuya
This commit is contained in:
parent
d774de79db
commit
82c64febc5
@ -20,11 +20,12 @@ from homeassistant.components.climate import (
|
|||||||
)
|
)
|
||||||
from homeassistant.const import UnitOfTemperature
|
from homeassistant.const import UnitOfTemperature
|
||||||
from homeassistant.core import HomeAssistant, callback
|
from homeassistant.core import HomeAssistant, callback
|
||||||
|
from homeassistant.exceptions import ServiceValidationError
|
||||||
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
||||||
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
|
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
|
||||||
|
|
||||||
from . import TuyaConfigEntry
|
from . import TuyaConfigEntry
|
||||||
from .const import TUYA_DISCOVERY_NEW, DPCode, DPType
|
from .const import DOMAIN, TUYA_DISCOVERY_NEW, DPCode, DPType
|
||||||
from .entity import TuyaEntity
|
from .entity import TuyaEntity
|
||||||
from .models import IntegerTypeData
|
from .models import IntegerTypeData
|
||||||
|
|
||||||
@ -315,8 +316,9 @@ class TuyaClimateEntity(TuyaEntity, ClimateEntity):
|
|||||||
def set_humidity(self, humidity: int) -> None:
|
def set_humidity(self, humidity: int) -> None:
|
||||||
"""Set new target humidity."""
|
"""Set new target humidity."""
|
||||||
if self._set_humidity is None:
|
if self._set_humidity is None:
|
||||||
raise RuntimeError(
|
raise ServiceValidationError(
|
||||||
"Cannot set humidity, device doesn't provide methods to set it"
|
translation_domain=DOMAIN,
|
||||||
|
translation_key="action_dpcode_not_found",
|
||||||
)
|
)
|
||||||
|
|
||||||
self._send_command(
|
self._send_command(
|
||||||
@ -356,9 +358,9 @@ class TuyaClimateEntity(TuyaEntity, ClimateEntity):
|
|||||||
def set_temperature(self, **kwargs: Any) -> None:
|
def set_temperature(self, **kwargs: Any) -> None:
|
||||||
"""Set new target temperature."""
|
"""Set new target temperature."""
|
||||||
if self._set_temperature is None:
|
if self._set_temperature is None:
|
||||||
raise RuntimeError(
|
raise ServiceValidationError(
|
||||||
"Cannot set target temperature, device doesn't provide methods to"
|
translation_domain=DOMAIN,
|
||||||
" set it"
|
translation_key="dpcode_not_found",
|
||||||
)
|
)
|
||||||
|
|
||||||
self._send_command(
|
self._send_command(
|
||||||
|
@ -16,11 +16,12 @@ from homeassistant.components.cover import (
|
|||||||
CoverEntityFeature,
|
CoverEntityFeature,
|
||||||
)
|
)
|
||||||
from homeassistant.core import HomeAssistant, callback
|
from homeassistant.core import HomeAssistant, callback
|
||||||
|
from homeassistant.exceptions import ServiceValidationError
|
||||||
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
||||||
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
|
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
|
||||||
|
|
||||||
from . import TuyaConfigEntry
|
from . import TuyaConfigEntry
|
||||||
from .const import TUYA_DISCOVERY_NEW, DPCode, DPType
|
from .const import DOMAIN, TUYA_DISCOVERY_NEW, DPCode, DPType
|
||||||
from .entity import TuyaEntity
|
from .entity import TuyaEntity
|
||||||
from .models import IntegerTypeData
|
from .models import IntegerTypeData
|
||||||
|
|
||||||
@ -334,8 +335,9 @@ class TuyaCoverEntity(TuyaEntity, CoverEntity):
|
|||||||
def set_cover_position(self, **kwargs: Any) -> None:
|
def set_cover_position(self, **kwargs: Any) -> None:
|
||||||
"""Move the cover to a specific position."""
|
"""Move the cover to a specific position."""
|
||||||
if self._set_position is None:
|
if self._set_position is None:
|
||||||
raise RuntimeError(
|
raise ServiceValidationError(
|
||||||
"Cannot set position, device doesn't provide methods to set it"
|
translation_domain=DOMAIN,
|
||||||
|
translation_key="dpcode_not_found",
|
||||||
)
|
)
|
||||||
|
|
||||||
self._send_command(
|
self._send_command(
|
||||||
@ -365,8 +367,9 @@ class TuyaCoverEntity(TuyaEntity, CoverEntity):
|
|||||||
def set_cover_tilt_position(self, **kwargs: Any) -> None:
|
def set_cover_tilt_position(self, **kwargs: Any) -> None:
|
||||||
"""Move the cover tilt to a specific position."""
|
"""Move the cover tilt to a specific position."""
|
||||||
if self._tilt is None:
|
if self._tilt is None:
|
||||||
raise RuntimeError(
|
raise ServiceValidationError(
|
||||||
"Cannot set tilt, device doesn't provide methods to set it"
|
translation_domain=DOMAIN,
|
||||||
|
translation_key="dpcode_not_found",
|
||||||
)
|
)
|
||||||
|
|
||||||
self._send_command(
|
self._send_command(
|
||||||
|
@ -14,11 +14,12 @@ from homeassistant.components.humidifier import (
|
|||||||
HumidifierEntityFeature,
|
HumidifierEntityFeature,
|
||||||
)
|
)
|
||||||
from homeassistant.core import HomeAssistant, callback
|
from homeassistant.core import HomeAssistant, callback
|
||||||
|
from homeassistant.exceptions import ServiceValidationError
|
||||||
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
||||||
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
|
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
|
||||||
|
|
||||||
from . import TuyaConfigEntry
|
from . import TuyaConfigEntry
|
||||||
from .const import TUYA_DISCOVERY_NEW, DPCode, DPType
|
from .const import DOMAIN, TUYA_DISCOVERY_NEW, DPCode, DPType
|
||||||
from .entity import TuyaEntity
|
from .entity import TuyaEntity
|
||||||
from .models import IntegerTypeData
|
from .models import IntegerTypeData
|
||||||
|
|
||||||
@ -178,8 +179,9 @@ class TuyaHumidifierEntity(TuyaEntity, HumidifierEntity):
|
|||||||
def set_humidity(self, humidity: int) -> None:
|
def set_humidity(self, humidity: int) -> None:
|
||||||
"""Set new target humidity."""
|
"""Set new target humidity."""
|
||||||
if self._set_humidity is None:
|
if self._set_humidity is None:
|
||||||
raise RuntimeError(
|
raise ServiceValidationError(
|
||||||
"Cannot set humidity, device doesn't provide methods to set it"
|
translation_domain=DOMAIN,
|
||||||
|
translation_key="dpcode_not_found",
|
||||||
)
|
)
|
||||||
|
|
||||||
self._send_command(
|
self._send_command(
|
||||||
|
@ -12,6 +12,7 @@ from homeassistant.components.number import (
|
|||||||
)
|
)
|
||||||
from homeassistant.const import PERCENTAGE, EntityCategory, UnitOfTime
|
from homeassistant.const import PERCENTAGE, EntityCategory, UnitOfTime
|
||||||
from homeassistant.core import HomeAssistant, callback
|
from homeassistant.core import HomeAssistant, callback
|
||||||
|
from homeassistant.exceptions import ServiceValidationError
|
||||||
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
||||||
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
|
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
|
||||||
|
|
||||||
@ -463,7 +464,10 @@ class TuyaNumberEntity(TuyaEntity, NumberEntity):
|
|||||||
def set_native_value(self, value: float) -> None:
|
def set_native_value(self, value: float) -> None:
|
||||||
"""Set new value."""
|
"""Set new value."""
|
||||||
if self._number is None:
|
if self._number is None:
|
||||||
raise RuntimeError("Cannot set value, device doesn't provide type data")
|
raise ServiceValidationError(
|
||||||
|
translation_domain=DOMAIN,
|
||||||
|
translation_key="dpcode_not_found",
|
||||||
|
)
|
||||||
|
|
||||||
self._send_command(
|
self._send_command(
|
||||||
[
|
[
|
||||||
|
@ -942,5 +942,10 @@
|
|||||||
"name": "Siren"
|
"name": "Siren"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"exceptions": {
|
||||||
|
"action_dpcode_not_found": {
|
||||||
|
"message": "Unable to process action as the device does not provide corresponding DPCode."
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user