This commit is contained in:
atse 2024-09-09 12:58:53 +08:00
parent 84e38a307d
commit feee8ad0ba
1 changed files with 25 additions and 25 deletions

View File

@ -41,6 +41,28 @@ class Thermostat(QObject, metaclass=PropertyMeta):
await self._client.connect(host, port) await self._client.connect(host, port)
self.hw_rev = await self._client.hw_rev() self.hw_rev = await self._client.hw_rev()
@asyncSlot()
async def end_session(self):
self.stop_watching()
if self.disconnect_cb is not None:
if asyncio.iscoroutinefunction(self.disconnect_cb):
await self.disconnect_cb()
else:
self.disconnect_cb()
await self._client.disconnect()
def start_watching(self):
self._watch_task = asyncio.create_task(self.run())
def stop_watching(self):
if self._watch_task is not None:
self._watch_task.cancel()
self._watch_task = None
self._update_params_task.cancel()
self._update_params_task = None
async def run(self): async def run(self):
self._update_params_task = asyncio.create_task(self.update_params()) self._update_params_task = asyncio.create_task(self.update_params())
while True: while True:
@ -74,27 +96,9 @@ class Thermostat(QObject, metaclass=PropertyMeta):
def connected(self): def connected(self):
return self._client.connected() return self._client.connected()
def start_watching(self): @pyqtSlot(float)
self._watch_task = asyncio.create_task(self.run()) def set_update_s(self, update_s):
self._update_s = update_s
def stop_watching(self):
if self._watch_task is not None:
self._watch_task.cancel()
self._watch_task = None
self._update_params_task.cancel()
self._update_params_task = None
@asyncSlot()
async def end_session(self):
self.stop_watching()
if self.disconnect_cb is not None:
if asyncio.iscoroutinefunction(self.disconnect_cb):
await self.disconnect_cb()
else:
self.disconnect_cb()
await self._client.disconnect()
async def set_ipv4(self, ipv4): async def set_ipv4(self, ipv4):
await self._client.set_param("ipv4", ipv4) await self._client.set_param("ipv4", ipv4)
@ -116,10 +120,6 @@ class Thermostat(QObject, metaclass=PropertyMeta):
async def reset(self): async def reset(self):
await self._client.reset() await self._client.reset()
@pyqtSlot(float)
def set_update_s(self, update_s):
self._update_s = update_s
async def set_fan(self, power="auto"): async def set_fan(self, power="auto"):
await self._client.set_fan(power) await self._client.set_fan(power)