- added stirrer and hendi

- refactored
This commit is contained in:
jens
2020-12-16 16:52:32 +01:00
parent b216498c5b
commit 0cb958938f
11 changed files with 80 additions and 18 deletions
+4 -4
View File
@@ -2,13 +2,13 @@ import asyncio
from time import sleep
import abc
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.pid import TempController
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 utils.value import Value, ChangedFloat, ChangedInteger
from utils.value import ChangedFloat, ChangedInteger
DT_CTRL = 0.1
DT_PARAMS = 1.0
@@ -261,7 +261,7 @@ if __name__ == '__main__':
taskmgr.add(PotTask(pot, DT_CTRL, dispatcher.msgio_get("Pot")))
# Heater
heater = Heater()
heater = HeaterFactory.create("sim")
heater.set_on_changed("power_eff", ChangedFloat(pot.setPower, prec=0).set)
heater_task = HeaterTask(heater, DT_CTRL, dispatcher.msgio_get("Heater"))
taskmgr.add(heater_task)
+2
View File
@@ -1 +1,3 @@
from components.atemperatureSensor import *
from components.astirrer import *
from components.aheater import *
+11
View File
@@ -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)
+1
View File
@@ -0,0 +1 @@
from components.actor.heaterFactory import HeaterFactory
+11
View File
@@ -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)
+41
View File
@@ -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
class Heater(AHeater):
class HeaterSim(AHeater):
def __init__(self):
AHeater.__init__(self)
self.power_set = self.get_power_min()
@@ -28,5 +28,3 @@ class Heater(AHeater):
def getPower(self):
return self.power_eff
View File
+9 -9
View File
@@ -1,5 +1,4 @@
import abc
import logging
class AStirrer:
@@ -14,10 +13,7 @@ class AStirrer:
self.dutyCycle = 1
self.cycleCounter = 0
self.isOn = 1
def log(self, s):
d = {'user': "Stirrer" + "::" + self.name()}
logging.info ("{}".format(s), extra=d)
self.is_active = False
def process(self):
isOn = self.isOn
@@ -54,9 +50,13 @@ class AStirrer:
return None
@abc.abstractmethod
def activate(self):
def on_activate(self, enable):
pass
@abc.abstractmethod
def deactivate(self):
pass
def activate(self, enable):
self.is_active = enable
self.on_activate(enable)
def is_activated(self):
return self.is_active
-1
View File
@@ -1,5 +1,4 @@
import abc
import logging
from utils.value import AttributeChange
-1
View File
@@ -1,2 +1 @@
from components.sensor import tempSensorSim
from components.sensor.tempsensor_factory import *