- added stirrer and hendi
- refactored
This commit is contained in:
@@ -2,13 +2,13 @@ import asyncio
|
|||||||
from time import sleep
|
from time import sleep
|
||||||
import abc
|
import abc
|
||||||
from ws.server.ws_server_multi_user import WsServerMultiUser
|
from ws.server.ws_server_multi_user import WsServerMultiUser
|
||||||
from components import ATemperatureSensor
|
from components import ATemperatureSensor, AHeater, AStirrer
|
||||||
from components.sensor import TempSensorFactory
|
from components.sensor import TempSensorFactory
|
||||||
from components.pid import TempController
|
from components.pid import TempController
|
||||||
from components.plant import Pot, APlant
|
from components.plant import Pot, APlant
|
||||||
from components.actor.heater import Heater, AHeater
|
from components.actor import HeaterFactory
|
||||||
from ws.message import MsgIo, MessageDispatcher
|
from ws.message import MsgIo, MessageDispatcher
|
||||||
from utils.value import Value, ChangedFloat, ChangedInteger
|
from utils.value import ChangedFloat, ChangedInteger
|
||||||
|
|
||||||
DT_CTRL = 0.1
|
DT_CTRL = 0.1
|
||||||
DT_PARAMS = 1.0
|
DT_PARAMS = 1.0
|
||||||
@@ -261,7 +261,7 @@ if __name__ == '__main__':
|
|||||||
taskmgr.add(PotTask(pot, DT_CTRL, dispatcher.msgio_get("Pot")))
|
taskmgr.add(PotTask(pot, DT_CTRL, dispatcher.msgio_get("Pot")))
|
||||||
|
|
||||||
# Heater
|
# Heater
|
||||||
heater = Heater()
|
heater = HeaterFactory.create("sim")
|
||||||
heater.set_on_changed("power_eff", ChangedFloat(pot.setPower, prec=0).set)
|
heater.set_on_changed("power_eff", ChangedFloat(pot.setPower, prec=0).set)
|
||||||
heater_task = HeaterTask(heater, DT_CTRL, dispatcher.msgio_get("Heater"))
|
heater_task = HeaterTask(heater, DT_CTRL, dispatcher.msgio_get("Heater"))
|
||||||
taskmgr.add(heater_task)
|
taskmgr.add(heater_task)
|
||||||
|
|||||||
@@ -1 +1,3 @@
|
|||||||
from components.atemperatureSensor import *
|
from components.atemperatureSensor import *
|
||||||
|
from components.astirrer import *
|
||||||
|
from components.aheater import *
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
|
||||||
|
|
||||||
|
class StirrerFactory:
|
||||||
|
@staticmethod
|
||||||
|
def create(name, dt):
|
||||||
|
if "sim" in name:
|
||||||
|
from components.actor.stirrer_sim import Stirrer_sim
|
||||||
|
return Stirrer_sim(dt)
|
||||||
|
elif "1376" in name:
|
||||||
|
from components.actor.stirrer_pololu1376 import Stirrer_pololu1376
|
||||||
|
return Stirrer_pololu1376(dt, '/dev/ttyUSB0', 115200)
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
from components.actor.heaterFactory import HeaterFactory
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
|
||||||
|
|
||||||
|
class HeaterFactory:
|
||||||
|
@staticmethod
|
||||||
|
def create(name):
|
||||||
|
if "sim" in name:
|
||||||
|
from components.actor.heater_sim import HeaterSim
|
||||||
|
return HeaterSim()
|
||||||
|
elif "Hendi" in name:
|
||||||
|
from components.actor.heater_hendi import HeaterHendi
|
||||||
|
return HeaterHendi('/dev/ttyUSB0', 115200)
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
from components.aheater import AHeater
|
||||||
|
from hendiCtrl import HendiCtrl
|
||||||
|
|
||||||
|
|
||||||
|
class HeaterHendi(AHeater):
|
||||||
|
def __init__(self, port, baudrate):
|
||||||
|
AHeater.__init__(self)
|
||||||
|
self.power_set = self.get_power_min()
|
||||||
|
self.is_active = False
|
||||||
|
self.power_eff = 0
|
||||||
|
self.hendi = HendiCtrl(port, baudrate)
|
||||||
|
|
||||||
|
def get_power_min(self):
|
||||||
|
caps = self.hendi.getCapabilties()
|
||||||
|
return caps['pwr_watts_min']
|
||||||
|
|
||||||
|
def get_power_max(self):
|
||||||
|
caps = self.hendi.getCapabilties()
|
||||||
|
return caps['pwr_watts_max']
|
||||||
|
|
||||||
|
def activate(self, enable):
|
||||||
|
self.is_active = enable
|
||||||
|
if enable:
|
||||||
|
self.hendi.setSwitch(1)
|
||||||
|
else:
|
||||||
|
self.hendi.setSwitch(0)
|
||||||
|
|
||||||
|
def is_activated(self):
|
||||||
|
s = self.hendi.getSwitch()
|
||||||
|
return '1' in s
|
||||||
|
|
||||||
|
def process(self):
|
||||||
|
power_eff = self.power_set if self.is_active else 0
|
||||||
|
self.hendi.setPowerWatts(power_eff)
|
||||||
|
|
||||||
|
def setPower(self, power):
|
||||||
|
self.power_set = max(self.get_power_min(), min(self.get_power_max(), power))
|
||||||
|
|
||||||
|
def getPower(self):
|
||||||
|
result = self.hendi.getPowerWatts()
|
||||||
|
return result
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
from components.aheater import AHeater
|
from components.aheater import AHeater
|
||||||
|
|
||||||
|
|
||||||
class Heater(AHeater):
|
class HeaterSim(AHeater):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
AHeater.__init__(self)
|
AHeater.__init__(self)
|
||||||
self.power_set = self.get_power_min()
|
self.power_set = self.get_power_min()
|
||||||
@@ -28,5 +28,3 @@ class Heater(AHeater):
|
|||||||
|
|
||||||
def getPower(self):
|
def getPower(self):
|
||||||
return self.power_eff
|
return self.power_eff
|
||||||
|
|
||||||
|
|
||||||
@@ -1,5 +1,4 @@
|
|||||||
import abc
|
import abc
|
||||||
import logging
|
|
||||||
|
|
||||||
|
|
||||||
class AStirrer:
|
class AStirrer:
|
||||||
@@ -14,10 +13,7 @@ class AStirrer:
|
|||||||
self.dutyCycle = 1
|
self.dutyCycle = 1
|
||||||
self.cycleCounter = 0
|
self.cycleCounter = 0
|
||||||
self.isOn = 1
|
self.isOn = 1
|
||||||
|
self.is_active = False
|
||||||
def log(self, s):
|
|
||||||
d = {'user': "Stirrer" + "::" + self.name()}
|
|
||||||
logging.info ("{}".format(s), extra=d)
|
|
||||||
|
|
||||||
def process(self):
|
def process(self):
|
||||||
isOn = self.isOn
|
isOn = self.isOn
|
||||||
@@ -54,9 +50,13 @@ class AStirrer:
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
@abc.abstractmethod
|
@abc.abstractmethod
|
||||||
def activate(self):
|
def on_activate(self, enable):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@abc.abstractmethod
|
def activate(self, enable):
|
||||||
def deactivate(self):
|
self.is_active = enable
|
||||||
pass
|
self.on_activate(enable)
|
||||||
|
|
||||||
|
def is_activated(self):
|
||||||
|
return self.is_active
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
import abc
|
import abc
|
||||||
import logging
|
|
||||||
from utils.value import AttributeChange
|
from utils.value import AttributeChange
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,2 +1 @@
|
|||||||
from components.sensor import tempSensorSim
|
|
||||||
from components.sensor.tempsensor_factory import *
|
from components.sensor.tempsensor_factory import *
|
||||||
|
|||||||
Reference in New Issue
Block a user