Skip to content

Commit 38cd7f8

Browse files
authored
Merge pull request #94 from erwindouna/dev
Update the AC interface with Tado
2 parents 211b22a + 2095d51 commit 38cd7f8

File tree

6 files changed

+441
-62
lines changed

6 files changed

+441
-62
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "tadoasync"
3-
version = "0.1.19"
3+
version = "0.1.20"
44
authors = ["Erwin Douna <[email protected]>"]
55
classifiers = [
66
"Development Status :: 5 - Production/Stable",

src/tadoasync/models.py

Lines changed: 87 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from __future__ import annotations
44

55
from dataclasses import dataclass, field
6+
from enum import Enum
67
from typing import Any
78

89
from mashumaro import field_options
@@ -301,63 +302,130 @@ class Capabilities(DataClassORJSONMixin):
301302
heat: HeatAC | None = field(metadata=field_options(alias="HEAT"), default=None)
302303

303304

305+
class VerticalSwing(Enum):
306+
"""VerticalSwing model represents the vertical swing modes of a zone."""
307+
308+
OFF = "OFF"
309+
MID_UP = "MID_UP"
310+
MID_DOWN = "MID_DOWN"
311+
ON = "ON"
312+
DOWN = "DOWN"
313+
UP = "UP"
314+
MID = "MID"
315+
316+
317+
class HorizontalSwing(Enum):
318+
"""HorizontalSwing model represents the horizontal swing modes of a zone."""
319+
320+
OFF = "OFF"
321+
ON = "ON"
322+
RIGHT = "RIGHT"
323+
LEFT = "LEFT"
324+
MID_RIGHT = "MID_RIGHT"
325+
MID_LEFT = "MID_LEFT"
326+
327+
328+
class FanLevel(Enum):
329+
"""FanLevel model represents the fan levels of a zone."""
330+
331+
AUTO = "AUTO"
332+
LEVEL1 = "LEVEL1"
333+
LEVEL2 = "LEVEL2"
334+
LEVEL3 = "LEVEL3"
335+
LEVEL4 = "LEVEL4"
336+
LEVEL5 = "LEVEL5"
337+
SILENT = "SILENT"
338+
339+
340+
class Light(Enum):
341+
"""Light model represents the light settings of a zone."""
342+
343+
ON = "ON"
344+
OFF = "OFF"
345+
346+
304347
@dataclass
305348
class AutoAC(DataClassORJSONMixin):
306349
"""AutoAC model represents the auto AC capabilities of a zone."""
307350

308-
fan_speeds: list[str] | None = field(
309-
default=None, metadata=field_options(alias="fanSpeeds")
351+
fan_level: list[FanLevel] | None = field(
352+
default=None, metadata=field_options(alias="fanLevel")
310353
)
311-
swing_modes: list[str] | None = field(
312-
default=None, metadata=field_options(alias="swings")
354+
vertical_swing: list[VerticalSwing] | None = field(
355+
default=None, metadata=field_options(alias="verticalSwing")
313356
)
314-
light: str | None = None
357+
horizontal_swing: list[HorizontalSwing] | None = field(
358+
default=None, metadata=field_options(alias="horizontalSwing")
359+
)
360+
light: list[Light] | None = None
361+
temperatures: Temperatures | None = None
315362

316363

317364
@dataclass
318365
class CoolAC(DataClassORJSONMixin):
319366
"""CoolAC model represents the cool AC capabilities of a zone."""
320367

321-
fan_speeds: list[str] | None = field(
322-
default=None, metadata=field_options(alias="fanSpeeds")
368+
fan_level: list[FanLevel] | None = field(
369+
default=None, metadata=field_options(alias="fanLevel")
323370
)
324-
swing_modes: list[str] | None = field(
325-
default=None, metadata=field_options(alias="swings")
371+
vertical_swing: list[VerticalSwing] | None = field(
372+
default=None, metadata=field_options(alias="verticalSwing")
373+
)
374+
horizontal_swing: list[HorizontalSwing] | None = field(
375+
default=None, metadata=field_options(alias="horizontalSwing")
326376
)
377+
light: list[Light] | None = None
327378
temperatures: Temperatures | None = None
328379

329380

330381
@dataclass
331382
class DryAC(DataClassORJSONMixin):
332383
"""DryAC model represents the dry AC capabilities of a zone."""
333384

334-
swing_modes: list[str] | None = field(
335-
default=None, metadata=field_options(alias="swings")
385+
fan_level: list[FanLevel] | None = field(
386+
default=None, metadata=field_options(alias="fanLevel")
336387
)
388+
vertical_swing: list[VerticalSwing] | None = field(
389+
default=None, metadata=field_options(alias="verticalSwing")
390+
)
391+
horizontal_swing: list[HorizontalSwing] | None = field(
392+
default=None, metadata=field_options(alias="horizontalSwing")
393+
)
394+
light: list[Light] | None = None
395+
temperatures: Temperatures | None = None
337396

338397

339398
@dataclass
340399
class FanAC(DataClassORJSONMixin):
341400
"""FanAC model represents the fan AC capabilities of a zone."""
342401

343-
fan_speeds: list[str] | None = field(
344-
default=None, metadata=field_options(alias="fanSpeeds")
402+
fan_level: list[FanLevel] | None = field(
403+
default=None, metadata=field_options(alias="fanLevel")
345404
)
346-
swing_modes: list[str] | None = field(
347-
default=None, metadata=field_options(alias="swings")
405+
vertical_swing: list[VerticalSwing] | None = field(
406+
default=None, metadata=field_options(alias="verticalSwing")
348407
)
408+
horizontal_swing: list[HorizontalSwing] | None = field(
409+
default=None, metadata=field_options(alias="horizontalSwing")
410+
)
411+
light: list[Light] | None = None
412+
temperatures: Temperatures | None = None
349413

350414

351415
@dataclass
352416
class HeatAC(DataClassORJSONMixin):
353417
"""HeatAC model represents the heat AC capabilities of a zone."""
354418

355-
fan_speeds: list[str] | None = field(
356-
default=None, metadata=field_options(alias="fanSpeeds")
419+
fan_level: list[FanLevel] | None = field(
420+
default=None, metadata=field_options(alias="fanLevel")
421+
)
422+
vertical_swing: list[VerticalSwing] | None = field(
423+
default=None, metadata=field_options(alias="verticalSwing")
357424
)
358-
swing_modes: list[str] | None = field(
359-
default=None, metadata=field_options(alias="swings")
425+
horizontal_swing: list[HorizontalSwing] | None = field(
426+
default=None, metadata=field_options(alias="horizontalSwing")
360427
)
428+
light: list[Light] | None = None
361429
temperatures: Temperatures | None = None
362430

363431

src/tadoasync/tadoasync.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -581,6 +581,7 @@ async def update_zone_data(self, data: ZoneState) -> None: # pylint: disable=to
581581
)
582582
else:
583583
data.current_hvac_mode = CONST_MODE_SMART_SCHEDULE
584+
data.overlay_active = False # Default to false if no overlay
584585

585586
data.connection = (
586587
getattr(data.connection_state, "value", None)

0 commit comments

Comments
 (0)