|
6 | 6 | from dataclasses import dataclass |
7 | 7 | from typing import TYPE_CHECKING, Any, Self |
8 | 8 |
|
9 | | -from ..helpers.homeassistant import TuyaClimateHVACMode, TuyaClimateSwingMode |
| 9 | +from ..helpers.homeassistant import ( |
| 10 | + TuyaClimateHVACMode, |
| 11 | + TuyaClimateSwingMode, |
| 12 | + TuyaUnitOfTemperature, |
| 13 | +) |
10 | 14 | from ..type_information import EnumTypeInformation |
11 | 15 | from .base import DeviceWrapper |
12 | 16 | from .common import DPCodeBooleanWrapper, DPCodeEnumWrapper |
13 | 17 |
|
14 | 18 | if TYPE_CHECKING: |
15 | 19 | from tuya_sharing import CustomerDevice # type: ignore[import-untyped] |
16 | 20 |
|
| 21 | + |
17 | 22 | _DEFAULT_DEVICE_MODE_TO_HVACMODE = { |
18 | 23 | "auto": TuyaClimateHVACMode.HEAT_COOL, |
19 | 24 | "cold": TuyaClimateHVACMode.COOL, |
|
27 | 32 | } |
28 | 33 |
|
29 | 34 |
|
| 35 | +@dataclass |
| 36 | +class TuyaClimateDefinition: |
| 37 | + current_humidity_wrapper: DeviceWrapper[int] | None |
| 38 | + current_temperature_wrapper: DeviceWrapper[float] | None |
| 39 | + fan_mode_wrapper: DeviceWrapper[str] | None |
| 40 | + hvac_mode_wrapper: DeviceWrapper[TuyaClimateHVACMode] | None |
| 41 | + preset_wrapper: DeviceWrapper[str] | None |
| 42 | + set_temperature_wrapper: DeviceWrapper[float] | None |
| 43 | + swing_wrapper: DeviceWrapper[TuyaClimateSwingMode] | None |
| 44 | + switch_wrapper: DeviceWrapper[bool] | None |
| 45 | + target_humidity_wrapper: DeviceWrapper[int] | None |
| 46 | + temperature_unit: TuyaUnitOfTemperature |
| 47 | + |
| 48 | + |
30 | 49 | @dataclass(kw_only=True) |
31 | 50 | class SwingModeCompositeWrapper(DeviceWrapper[TuyaClimateSwingMode]): |
32 | 51 | """Wrapper for managing swing mode across multiple boolean DPCodes. |
|
0 commit comments