- redefine activate method
- for task introduced open() conext method
This commit is contained in:
@@ -7,7 +7,6 @@ class HeaterHendi(AHeater):
|
||||
AHeater.__init__(self)
|
||||
self.hendi = HendiCtrl(params['port'], params['speed'])
|
||||
self.power_set = self.get_power_min()
|
||||
self.is_active = False
|
||||
self.power_eff = 0
|
||||
|
||||
def get_power_min(self):
|
||||
@@ -19,21 +18,21 @@ class HeaterHendi(AHeater):
|
||||
return caps['pwr_watts_max']
|
||||
|
||||
def activate(self, enable):
|
||||
self.is_active = enable
|
||||
if not self.hendi.isRemoteEnable():
|
||||
self.hendi.remoteEnable(1)
|
||||
|
||||
if enable:
|
||||
self.hendi.setSwitch(1)
|
||||
self.hendi.remoteEnable(1)
|
||||
else:
|
||||
self.hendi.setSwitch(0)
|
||||
self.hendi.remoteEnable(0)
|
||||
|
||||
def is_activated(self):
|
||||
s = self.hendi.getSwitch()
|
||||
s = self.hendi.isRemoteEnable()
|
||||
return '1' in s
|
||||
|
||||
def process(self):
|
||||
power = self.power_set if self.is_active else 0
|
||||
power = self.power_set
|
||||
if power == 0:
|
||||
self.hendi.setSwitch(0)
|
||||
else:
|
||||
self.hendi.setSwitch(1)
|
||||
self.hendi.setPowerWatts(power)
|
||||
self.power_eff = self.hendi.getPowerWatts()
|
||||
|
||||
@@ -41,5 +40,4 @@ class HeaterHendi(AHeater):
|
||||
self.power_set = max(self.get_power_min(), min(self.get_power_max(), power))
|
||||
|
||||
def get_power(self):
|
||||
result = self.hendi.getPowerWatts()
|
||||
return result
|
||||
return self.power_eff
|
||||
|
||||
@@ -47,15 +47,13 @@ class StirrerPololu1376(AStirrer):
|
||||
return self.speed
|
||||
return 0
|
||||
|
||||
def on_activate(self, enable):
|
||||
def activate(self, enable):
|
||||
print("activate {}".format(enable))
|
||||
if enable:
|
||||
self.ser_send("go")
|
||||
self.set_speed(self.speed)
|
||||
else:
|
||||
self.ser_send("X")
|
||||
|
||||
print("on_activate {}".format(enable))
|
||||
|
||||
def on_set_speed(self, speed):
|
||||
self.ser_send("F" + str(int(speed)) + "%")
|
||||
print("Set speed to {} %".format(speed))
|
||||
|
||||
@@ -6,11 +6,8 @@ class StirrerSim(AStirrer):
|
||||
def __init__(self, params):
|
||||
AStirrer.__init__(self, params['dt'])
|
||||
|
||||
def __del__(self):
|
||||
self.activate(False)
|
||||
|
||||
def on_activate(self, enable):
|
||||
print("on_activate {}".format(enable))
|
||||
def activate(self, enable):
|
||||
print("activate {}".format(enable))
|
||||
|
||||
def get_speed(self):
|
||||
if self.isOn and self.is_activated():
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import abc
|
||||
from utils.value import AttributeChange
|
||||
from contextlib import contextmanager
|
||||
|
||||
|
||||
class AHeater(AttributeChange):
|
||||
@@ -14,6 +15,16 @@ class AHeater(AttributeChange):
|
||||
def get_power_max(self):
|
||||
pass
|
||||
|
||||
@contextmanager
|
||||
def open(self):
|
||||
try:
|
||||
self.activate(True)
|
||||
yield None
|
||||
finally:
|
||||
self.activate(False)
|
||||
|
||||
return None
|
||||
|
||||
@abc.abstractmethod
|
||||
def activate(self, enable):
|
||||
return None
|
||||
|
||||
@@ -1,15 +1,30 @@
|
||||
import abc
|
||||
from utils.value import AttributeChange
|
||||
from contextlib import contextmanager
|
||||
|
||||
|
||||
class APlant(AttributeChange):
|
||||
def __init__(self):
|
||||
AttributeChange.__init__(self)
|
||||
|
||||
@contextmanager
|
||||
def open(self):
|
||||
try:
|
||||
self.activate(True)
|
||||
yield None
|
||||
finally:
|
||||
self.activate(False)
|
||||
|
||||
return None
|
||||
|
||||
@abc.abstractmethod
|
||||
def activate(self, enable):
|
||||
return None
|
||||
|
||||
@abc.abstractmethod
|
||||
def is_activated(self):
|
||||
return None
|
||||
|
||||
@abc.abstractmethod
|
||||
def process(self):
|
||||
pass
|
||||
|
||||
+14
-7
@@ -1,5 +1,6 @@
|
||||
import abc
|
||||
from utils.value import AttributeChange
|
||||
from contextlib import contextmanager
|
||||
|
||||
|
||||
class AStirrer(AttributeChange):
|
||||
@@ -11,7 +12,6 @@ class AStirrer(AttributeChange):
|
||||
self.dutyCycle = 1
|
||||
self.cycleCounter = 0
|
||||
self.isOn = 1
|
||||
self.is_active = False
|
||||
|
||||
def process(self):
|
||||
isOn = self.isOn
|
||||
@@ -51,14 +51,21 @@ class AStirrer(AttributeChange):
|
||||
def on_set_speed(self, speed):
|
||||
pass
|
||||
|
||||
@contextmanager
|
||||
def open(self):
|
||||
try:
|
||||
self.activate(True)
|
||||
yield None
|
||||
finally:
|
||||
self.activate(False)
|
||||
|
||||
return None
|
||||
|
||||
@abc.abstractmethod
|
||||
def on_activate(self, enable):
|
||||
def activate(self, enable):
|
||||
pass
|
||||
|
||||
def activate(self, enable):
|
||||
self.is_active = enable
|
||||
self.on_activate(enable)
|
||||
|
||||
@abc.abstractmethod
|
||||
def is_activated(self):
|
||||
return self.is_active
|
||||
pass
|
||||
|
||||
|
||||
@@ -35,6 +35,9 @@ class Pot(APlant):
|
||||
leak = 1/self.M * self.L * (self.theta_amb - self.temp)/self.theta_amb
|
||||
self.temp += (self.power_actual / (self.M * self.C) + leak) * self.dt
|
||||
|
||||
def is_activated(self):
|
||||
return True
|
||||
|
||||
def set_power(self, power):
|
||||
self.power_set = power
|
||||
|
||||
|
||||
Reference in New Issue
Block a user