From a9546bc40cb5da0ba706e9544cbc8f70fca32b56 Mon Sep 17 00:00:00 2001 From: prash3r Date: Mon, 8 Mar 2021 01:34:13 +0100 Subject: [PATCH] BasicController start() and stop() functions manages item.instance.running state Also changes usage of 'while True' inside run() functions to 'while self.running == True' --- cbpi/controller/basic_controller2.py | 5 +++-- cbpi/extension/dummysensor/__init__.py | 2 +- cbpi/extension/gpioactor/__init__.py | 4 ++-- cbpi/extension/hysteresis/__init__.py | 2 +- cbpi/extension/mashstep/__init__.py | 9 ++++----- cbpi/extension/onewire/__init__.py | 2 +- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/cbpi/controller/basic_controller2.py b/cbpi/controller/basic_controller2.py index 5a06a13..4ac86db 100644 --- a/cbpi/controller/basic_controller2.py +++ b/cbpi/controller/basic_controller2.py @@ -76,9 +76,9 @@ class BasicController: async def stop(self, id): logging.info("{} Stop Id {} ".format(self.name, id)) try: - print("STOP NOW") item = self.find_by_id(id) await item.instance.stop() + item.instance.running = False await self.push_udpate() except Exception as e: logging.error("{} Cant stop {} - {}".format(self.name, id, e)) @@ -87,7 +87,7 @@ class BasicController: logging.info("{} Start Id {} ".format(self.name, id)) try: item = self.find_by_id(id) - if item.instance is not None and item.instance.state is True: + if item.instance is not None and item.instance.running is True: logging.warning("{} already running {}".format(self.name, id)) return if item.type is None: @@ -97,6 +97,7 @@ class BasicController: item.instance = clazz(self.cbpi, item.id, item.props) await item.instance.start() + item.instance.running = True item.instance.task = self._loop.create_task(item.instance._run()) logging.info("{} started {}".format(self.name, id)) diff --git a/cbpi/extension/dummysensor/__init__.py b/cbpi/extension/dummysensor/__init__.py index ab2ab08..1aab897 100644 --- a/cbpi/extension/dummysensor/__init__.py +++ b/cbpi/extension/dummysensor/__init__.py @@ -15,7 +15,7 @@ class CustomSensor(CBPiSensor): self.value = 0 async def run(self): - while True: + while self.running == True: self.value = random.randint(10,100) self.log_data(self.value) diff --git a/cbpi/extension/gpioactor/__init__.py b/cbpi/extension/gpioactor/__init__.py index 18fdacc..8be45b9 100644 --- a/cbpi/extension/gpioactor/__init__.py +++ b/cbpi/extension/gpioactor/__init__.py @@ -66,7 +66,7 @@ class GPIOActor(CBPiActor): return self.state async def run(self): - while True: + while self.running == True: await asyncio.sleep(1) @@ -105,7 +105,7 @@ class GPIOPWMActor(CBPiActor): return self.state async def run(self): - while True: + while self.runnin == True: await asyncio.sleep(1) diff --git a/cbpi/extension/hysteresis/__init__.py b/cbpi/extension/hysteresis/__init__.py index 82f580d..6b77f0f 100644 --- a/cbpi/extension/hysteresis/__init__.py +++ b/cbpi/extension/hysteresis/__init__.py @@ -18,7 +18,7 @@ class Hysteresis(CBPiKettleLogic): # self.get_actor_state() - while True: + while self.running == True: sensor_value = self.get_sensor_value(self.kettle.sensor).get("value") target_temp = self.get_kettle_target_temp(self.id) diff --git a/cbpi/extension/mashstep/__init__.py b/cbpi/extension/mashstep/__init__.py index 29e7dd9..ae887e0 100644 --- a/cbpi/extension/mashstep/__init__.py +++ b/cbpi/extension/mashstep/__init__.py @@ -38,7 +38,7 @@ class MashStep(CBPiStep): self.timer = Timer(int(self.props.Timer) *60 ,on_update=self.on_timer_update, on_done=self.on_timer_done) async def run(self): - while True: + while self.running == True: await asyncio.sleep(1) sensor_value = self.get_sensor_value(self.props.Sensor) if sensor_value.get("value") >= int(self.props.Temp) and self.timer == None: @@ -82,7 +82,7 @@ class WaitStep(CBPiStep): self.timer = Timer(int(self.props.Timer) * 60,on_update=self.on_timer_update, on_done=self.on_timer_done) async def run(self): - while True: + while self.running == True: await asyncio.sleep(1) return StepResult.DONE @@ -113,8 +113,7 @@ class ActorStep(CBPiStep): self.timer = Timer(int(self.props.Timer) *60 ,on_update=self.on_timer_update, on_done=self.on_timer_done) async def run(self): - - while True: + while self.running == True: await asyncio.sleep(1) return StepResult.DONE @@ -154,7 +153,7 @@ class BoilStep(CBPiStep): self.timer.start() async def run(self): - while True: + while self.running == True: await asyncio.sleep(1) sensor_value = self.get_sensor_value(self.props.Sensor) if sensor_value is not None and sensor_value.get("value") >= int(self.props.Temp) and self.timer == None: diff --git a/cbpi/extension/onewire/__init__.py b/cbpi/extension/onewire/__init__.py index 49cd610..6851b96 100644 --- a/cbpi/extension/onewire/__init__.py +++ b/cbpi/extension/onewire/__init__.py @@ -77,7 +77,7 @@ class OneWire(CBPiSensor): pass async def run(self): - while True: + while self.running == True: self.value = self.t.value self.log_data(self.value)