File: zone_status.py

package info (click to toggle)
python-airtouch5py 0.2.10-1.1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,052 kB
  • sloc: python: 1,748; makefile: 5
file content (60 lines) | stat: -rw-r--r-- 1,694 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
from enum import Enum

from airtouch5py.packets.datapacket import Data


class ZonePowerState(Enum):
    OFF = 0b00
    ON = 0b01
    TURBO = 0b11


class ControlMethod(Enum):
    TEMPERATURE_CONTROL = 1
    PERCENTAGE_CONTROL = 0


class ZoneStatusZone:
    zone_power_state: ZonePowerState
    zone_number: int
    control_method: ControlMethod
    open_percentage: float  # 0.0 - 1.0
    set_point: float | None  # 0xFF invalid (None)
    has_sensor: bool
    temperature: float | None  # Temperature > 150 invalid (None)
    spill_active: bool
    is_low_battery: bool

    def __init__(
        self,
        zone_power_state: ZonePowerState,
        zone_number: int,
        control_method: ControlMethod,
        open_percentage: float,
        set_point: float | None,
        has_sensor: bool,
        temperature: float | None,
        spill_active: bool,
        is_low_battery: bool,
    ):
        self.zone_power_state = zone_power_state
        self.zone_number = zone_number
        self.control_method = control_method
        self.open_percentage = open_percentage
        self.set_point = set_point
        self.has_sensor = has_sensor
        self.temperature = temperature
        self.spill_active = spill_active
        self.is_low_battery = is_low_battery


class ZoneStatusData(Data):
    """
    Send this message to AirTouch without any sub data (data length: 0x00 0x08, repeat count: 0x00, repeat length: 0x00) to request zone status from AirTouch.
    Note: AirTouch will send a zone status message automatically when zone status is changed.
    """

    zones: list[ZoneStatusZone]

    def __init__(self, zones: list[ZoneStatusZone]):
        self.zones = zones