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
|