Files
brewpi/tasks/stirrer.py
T
2020-12-17 16:35:30 +01:00

44 lines
1.4 KiB
Python

import asyncio
from tasks import ATask
from ws.message import MsgIo
from components import AStirrer
from utils.value import ChangedInteger
class StirrerTask(ATask):
def __init__(self, stirrer_device: AStirrer, interval, msg_handler: MsgIo):
ATask.__init__(self, interval)
self.msg_handler = msg_handler
msg_handler.set_recv_handler(self.recv)
self.device = stirrer_device
def on_speed_changed(self, value):
asyncio.create_task(self.send({'Speed': value}))
def on_dutycycle_changed(self, value):
asyncio.create_task(self.send({'DutyCycle': value}))
def on_cycletime_changed(self, value):
asyncio.create_task(self.send({'CycleTime': value}))
def on_changed_active(self, is_activated):
asyncio.create_task(self.send({'Activate': int(is_activated)}))
async def recv(self, data):
print(data)
async def send(self, data):
await self.msg_handler.send(data)
async def on_process(self):
print("{}: Started with interval {} s".format(self.msg_handler.get_key(), self.interval))
self.device.set_on_changed("speed", self.on_speed_changed)
self.device.set_on_changed("dutyCycle", self.on_dutycycle_changed)
self.device.set_on_changed("cycleTime", self.on_cycletime_changed)
self.device.set_on_changed("cycleTime", self.on_cycletime_changed)
self.device.set_on_changed('is_active', ChangedInteger(self.on_changed_active).set)
while True:
self.device.process()
await asyncio.sleep(self.interval)