From 393d5105b9b8f33c162fa31f32251f6fcf174181 Mon Sep 17 00:00:00 2001 From: Keilin Date: Mon, 15 Jan 2024 16:32:37 -0500 Subject: [PATCH] Set max foot warming to 600 for climate360 beds --- asyncsleepiq/foot_warmer.py | 28 ++++++++++++++++------------ asyncsleepiq/fuzion/foot_warmer.py | 6 ++++-- 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/asyncsleepiq/foot_warmer.py b/asyncsleepiq/foot_warmer.py index 6e614f1..e2e22c6 100644 --- a/asyncsleepiq/foot_warmer.py +++ b/asyncsleepiq/foot_warmer.py @@ -2,28 +2,32 @@ from __future__ import annotations from .api import SleepIQAPI -from .consts import (Side, FootWarmingTemps, SIDES_FULL) +from .consts import Side, FootWarmingTemps, SIDES_FULL + class SleepIQFootWarmer: """Foot warmer representation for SleepIQ API.""" + max_foot_warming_time = 360 + def __init__(self, api: SleepIQAPI, bed_id: str, side: Side, timer: int, temperature: int) -> None: """Initialize foot warmer object.""" self._api = api self.bed_id = bed_id self.side = side - self.is_on = (temperature > 0) + self.is_on = temperature > 0 self.timer = timer self.temperature = temperature def __str__(self) -> str: """Return string representation.""" return f"SleepIQFootWarmer[{self.side}]: {'On' if self.is_on else 'Off'}, {self.timer}, {FootWarmingTemps(self.temperature).name}" + __repr__ = __str__ - async def turn_on(self, temperature: FootWarmingTemps, time: int) -> None: - """Turn on foot warmer through API.""" - await self.set_foot_warming(temperature, time) + async def turn_on(self, temperature: FootWarmingTemps, time: int) -> None: + """Turn on foot warmer through API.""" + await self.set_foot_warming(temperature, time) async def turn_off(self) -> None: """Turn off foot warmer through API.""" @@ -32,10 +36,10 @@ async def turn_off(self) -> None: async def set_foot_warming(self, temperature: FootWarmingTemps, time: int) -> None: """Set foot warmer state through API.""" - if time <= 0 or time > 360: - raise ValueError("Invalid Time, must be between 0 and 360") + if time <= 0 or time > self.max_foot_warming_time: + raise ValueError(f"Invalid Time, must be between 0 and {self.max_foot_warming_time}") - data = { self.time_key(): time, self.temp_key(): temperature.value} + data = {self.time_key(): time, self.temp_key(): temperature.value} await self._api.put(f"bed/{self.bed_id}/foundation/footwarming", data) await self.update(data) @@ -46,8 +50,8 @@ async def update(self, data) -> None: self.timer = data.get(self.time_key(), self.timer) if self.is_on else 0 def time_key(self): - return 'footWarmingTimer' + SIDES_FULL[self.side] + return "footWarmingTimer" + SIDES_FULL[self.side] - def temp_key(self, read = False): - key = 'Status' if read else 'Temp' - return f'footWarming{key}' + SIDES_FULL[self.side] + def temp_key(self, read=False): + key = "Status" if read else "Temp" + return f"footWarming{key}" + SIDES_FULL[self.side] diff --git a/asyncsleepiq/fuzion/foot_warmer.py b/asyncsleepiq/fuzion/foot_warmer.py index 2e6a461..d82ec7e 100644 --- a/asyncsleepiq/fuzion/foot_warmer.py +++ b/asyncsleepiq/fuzion/foot_warmer.py @@ -10,10 +10,12 @@ class SleepIQFuzionFootWarmer(SleepIQFootWarmer): """Foot warmer representation for SleepIQ API.""" + max_foot_warming_time = 600 + async def set_foot_warming(self, temperature: FootWarmingTemps, time: int) -> None: """Set foot warmer state through API.""" - if time <= 0 or time > 360: - raise ValueError("Invalid Time, must be between 0 and 360") + if time <= 0 or time > self.max_foot_warming_time: + raise ValueError(f"Invalid Time, must be between 0 and {self.max_foot_warming_time}") args = [SIDES_FULL[self.side].lower(), temperature.name.lower(), str(time)] await self._api.bamkey(self.bed_id, "SetFootwarmingSettings", args)