- better logging of drivers

git-svn-id: http://moon:8086/svn/projects/HendiControl@363 fda53097-d464-4ada-af97-ba876c37ca34
This commit is contained in:
2020-04-19 16:05:53 +00:00
parent b51e2c222d
commit 95afea668f
6 changed files with 48 additions and 22 deletions
+7 -3
View File
@@ -1,8 +1,12 @@
import time
import abc
import logging
class AStirrer(abc.ABC):
@abc.abstractmethod
def name(self):
return ""
def __init__(self, dt):
self.dt = dt
self.speed = 0
@@ -12,8 +16,8 @@ class AStirrer(abc.ABC):
self.isOn = 1
def log(self, s):
now = time.strftime("%a, %d %b %Y %H:%M:%S", time.localtime())
print("{}: {}".format(now, s))
d = {'user': self.name()}
logging.info ("{}".format(s), extra=d)
def process(self):
isOn = self.isOn
+6 -4
View File
@@ -1,13 +1,15 @@
import time
import abc
import logging
class ATemperatureSensor(abc.ABC):
def __init__(self, name):
self.name
def log(self, s):
d = {'user': self.name()}
logging.info ("{}".format(s), extra=d)
@abc.abstractmethod
def name(self):
return self.name
return ""
@abc.abstractmethod
def temperature(self):
+8 -2
View File
@@ -1,11 +1,13 @@
#!/usr/bin/python3
import logging
import argparse
import signal
import json
from controller import Controller, commands
from mass import Mass
from stirrer import Stirrer
#from pololu1376 import Pololu1376
from pololu1376 import Pololu1376
from plant import Plant
from matplotlib.pyplot import figure, clf, plot, xlabel, ylabel, xlim, ylim, title, grid, axes, show, subplot
@@ -49,6 +51,10 @@ def results_plot(self):
if __name__ == '__main__':
logging.getLogger().setLevel(logging.INFO)
FORMAT = '%(asctime)-15s %(user)-8s %(message)s'
logging.basicConfig(format=FORMAT)
parser = argparse.ArgumentParser(description='Brew some beer.')
parser.add_argument('--receipe', help='the name of the receipe')
parser.add_argument('--config', help='the name of the configuration file')
@@ -93,7 +99,7 @@ if __name__ == '__main__':
configJson = json.load(fp)
plant_class = globals()[configJson["Controller"]['plant_name']]
plant = plant_class(configJson["WaterSim"])
plant = plant_class()
ruehrer_class = globals()[configJson["Controller"]['stirrer_name']]
ruehrer = ruehrer_class(configJson["Stirrer"])
+15 -6
View File
@@ -4,8 +4,18 @@ import time
import serial
import sys
import numpy as np
import logging
class HendiCtrl():
def name(self):
return "HendiCtrl"
def log(self, s):
d = {'user': self.name()}
logging.info ("{}".format(s), extra=d)
def __init__(self, port, baudrate):
self.ser = serial.Serial(port, baudrate)
try:
@@ -17,8 +27,8 @@ class HendiCtrl():
self.ser.timeout = 1.000
self.prompt = b':'
self.caps = {
"name" : self.getSoftwareIdentifier(),
"ver" : self.getSoftwareVersion(),
"sw_id" : self.getSoftwareIdentifier(),
"sw_ver" : self.getSoftwareVersion(),
"pwr_watts_min" : 500,
"pwr_watts_max" : 3500,
"pwr_watts_step" : 100,
@@ -29,7 +39,9 @@ class HendiCtrl():
digits = [4092, 3840, 3700, 3440, 3300, 3060, 3000, 2930, 2860, 2780, 2640, 2510, 2430, 2360, 2190, 2130, 2030, 1980, 1880, 1730, 1630, 1560, 1480, 1400, 1240, 1150, 1150, 1080, 920, 740, 670]
self.poly_w2d = np.polyfit(powers, digits, 5)
self.poly_d2w = np.polyfit(digits, powers, 5)
self.name = self.getSoftwareIdentifier()
self.sw_id = self.getSoftwareIdentifier()
self.sw_ver = self.getSoftwareVersion()
self.log("Create {}, Version {}".format(self.sw_id, self.sw_ver))
def toDigits(self, power_watts):
return np.polyval(self.poly_w2d, float(power_watts))
@@ -103,9 +115,6 @@ class HendiCtrl():
rsp = self.__read()
if "OK" in rsp[0]:
return rsp[1]
# print("{}: Command : {}".format(self.name), req)
# print("{}: Response: {}".format(self.name), rsp)
# print("{}: Received error!".format(self.name))
return None
def getCapabilties(self):
+4 -3
View File
@@ -1,14 +1,14 @@
#!/usr/bin/python3
import time
import spidev
from atemperatureSensor import ATemperatureSensor
class Max31865(ATemperatureSensor):
def __init__(self):
super(Max31865, self).__init__('Max31865')
def name(self):
return "TemperatureSensor"
def __init__(self):
# Open SPI bus
self.spi = spidev.SpiDev()
self.spi.open(0, 0)
@@ -18,6 +18,7 @@ class Max31865(ATemperatureSensor):
self.write_reg(0x00, 0xA3)
time.sleep(0.100)
self.digits = 0
self.log("Create Max31865")
def read_reg(self, addr):
reg = self.spi.xfer([addr, 0xFF])
+8 -4
View File
@@ -5,6 +5,9 @@ import serial
class Pololu1376(AStirrer):
def name(self):
return "Stirrer"
def __init__(self, params):
super(Pololu1376, self).__init__(params["dt"])
self.isMasterOn = 0
@@ -20,7 +23,8 @@ class Pololu1376(AStirrer):
self.ser.open()
self.ser_send('V')
print(self.ser_recv())
self.ser_recv()
self.log("Create Pololu1376")
def ser_send(self, cmd):
self.ser.write((cmd + '\r\n').encode())
@@ -36,19 +40,19 @@ class Pololu1376(AStirrer):
def activate(self):
if self.isMasterOn == 0:
self.log("Stirrer: switched On")
self.log("switched On")
self.isMasterOn = 1
self.ser_send("go")
def deactivate(self):
if self.isMasterOn == 1:
self.log("Stirrer: switched Off")
self.log("switched Off")
self.isMasterOn = 0
self.ser_send("x")
def onSetSpeed(self, speed):
self.ser_send("F" + str(speed) + "%")
self.log("Stirrer: Set speed to {} %".format(speed))
self.log("Set speed to {} %".format(speed))
if __name__ == '__main__':