def setAxisTitles(self, yAxis, xAxis):

        # Create text for graph and axis titles
        xTitle = QwtText()
        xTitle.setText(xAxis)
        xTitle.setFont(self.axisFont)
        yTitle = QwtText()
        yTitle.setText(yAxis)
        yTitle.setFont(self.axisFont)

        self.plot.setAxisTitle(self.plot.yLeft, yTitle)
        self.plot.setAxisTitle(self.plot.xBottom, xTitle)
예제 #2
0
    def __init__(self, database, parent=None):
        super().__init__(parent)
        self.db = database
        self.updateTimer = QTimer(self)
        self.updateTimer.start(5000)

        self.plot = QwtPlot()
        self.curve = QwtPlotCurve()
        self.curve.attach(self.plot)
        self.plot.resize(1000, 1000)
        self.plot.show()
        self.plot.setAxisScaleDraw(QwtPlot.xBottom, DateTimeTimeScaleDraw())

        axisFont = QFont("Helvetica", 11, QFont.Bold)
        titleFont = QFont("Helvetica", 12, QFont.Bold)

        xTitle = QwtText()
        xTitle.setText("Time")
        xTitle.setFont(axisFont)
        self.plot.setAxisTitle(self.plot.xBottom, xTitle)

        self.yTitle = QwtText()
        self.yTitle.setFont(axisFont)
        self.plot.setAxisTitle(self.plot.yLeft, self.yTitle)

        self.titleText = QwtText()
        self.titleText.setFont(titleFont)
        self.plot.setTitle(self.titleText)

        mainLayout = QHBoxLayout()
        mainLayout.addWidget(self.plot)
        self.setLayout(mainLayout)

        self.plot.show()
        self.results = []
        self.batchID = None
    def setTitle(self, title):

        titleText = QwtText()
        titleText.setText(title)
        titleText.setFont(self.titleFont)
        self.plot.setTitle(titleText)
예제 #4
0
class FermentGraph(QWidget):
    _logname = 'FermentGraphGeneric'
    _log = logging.getLogger(f'{_logname}')

    def __init__(self, database, parent=None):
        super().__init__(parent)
        self.db = database
        self.updateTimer = QTimer(self)
        self.updateTimer.start(5000)

        self.plot = QwtPlot()
        self.curve = QwtPlotCurve()
        self.curve.attach(self.plot)
        self.plot.resize(1000, 1000)
        self.plot.show()
        self.plot.setAxisScaleDraw(QwtPlot.xBottom, DateTimeTimeScaleDraw())

        axisFont = QFont("Helvetica", 11, QFont.Bold)
        titleFont = QFont("Helvetica", 12, QFont.Bold)

        xTitle = QwtText()
        xTitle.setText("Time")
        xTitle.setFont(axisFont)
        self.plot.setAxisTitle(self.plot.xBottom, xTitle)

        self.yTitle = QwtText()
        self.yTitle.setFont(axisFont)
        self.plot.setAxisTitle(self.plot.yLeft, self.yTitle)

        self.titleText = QwtText()
        self.titleText.setFont(titleFont)
        self.plot.setTitle(self.titleText)

        mainLayout = QHBoxLayout()
        mainLayout.addWidget(self.plot)
        self.setLayout(mainLayout)

        self.plot.show()
        self.results = []
        self.batchID = None

    def updatePlot(self, variable):
        if self.batchID is not None:
            self.db.flushTables()
            sql = f"SELECT TimeStamp, {variable} FROM Ferment WHERE BatchID = '{self.batchID}'"

            timestamps = []
            self.results = []
            for data in self.db.custom(sql)[1:]:
                timestamps.append(data[0])
                self.results.append(data[1])

            startTime = timestamps[0]
            for i in range(len(timestamps)):
                timestamps[i] = (timestamps[i] - startTime).seconds

            # self.plot.setAxisScaleDraw(QwtPlot.xBottom, TimeScaleDraw())

            self.curve.setData(timestamps, self.results)
            self.plot.replot()
            self.plot.show()

    def changeTank(self, tankID):
        self.titleText.setText(f"Fermentation Tank: {tankID}")
    def __init__(self, db, parent=None):
        super().__init__(parent)
        # self.LOGIN = LOGIN
        # self.db = dataBase(self.LOGIN, "Brewing")
        self.db = db
        self.dataY = np.zeros(0)
        self.dataX = np.linspace(0, len(self.dataY), len(self.dataY))

        self.count = 0
        self.timeLabel = QLabel("Timer:")
        self.timeLabel.setAlignment(QtCore.Qt.AlignRight)

        self.tempLabel = QLabel("Temp:")
        self.tempLabel.setAlignment(QtCore.Qt.AlignRight)

        self.targetTemp = QLabel("Set Temp:")
        self.targetTime = QLabel("Set Time:")

        self.targetTimeLabel = QLabel("Target: ")
        self.targetTimeLabel.setAlignment(QtCore.Qt.AlignRight)
        self.targetTempLabel = QLabel("Target: ")
        self.targetTempLabel.setAlignment(QtCore.Qt.AlignRight)

        self.startButton = QPushButton()
        self.stopButton = QPushButton()

        self.plot = QwtPlot()
        self.curve = QwtPlotCurve()
        self.curve.attach(self.plot)
        self.plot.resize(1000, 1000)
        self.plot.replot()
        self.plot.show()

        axisFont = QFont("Helvetica", 11, QFont.Bold)
        titleFont = QFont("Helvetica", 12, QFont.Bold)

        xTitle = QwtText()
        xTitle.setText("Time")
        xTitle.setFont(axisFont)
        self.plot.setAxisTitle(self.plot.xBottom, xTitle)
        yTitle = QwtText()
        yTitle.setText(f"Temperature {DEGREESC}")
        yTitle.setFont(axisFont)
        self.plot.setAxisTitle(self.plot.yLeft, yTitle)

        self.tempStatusLED = QLed(self,
                                  onColour=QLed.Green,
                                  offColour=QLed.Red,
                                  shape=QLed.Circle)
        self.tempStatusLED.value = False
        self.tempStatusLED.setMaximumSize(25, 25)

        self.timeStatusLED = QLed(self,
                                  onColour=QLed.Green,
                                  offColour=QLed.Red,
                                  shape=QLed.Circle)
        self.timeStatusLED.value = False
        self.timeStatusLED.setMaximumSize(25, 25)

        self.recipeGrid = QGridLayout()
        self.recipeGrid.addWidget(QLabel(f"Recipe:"), 0, 0)
        self.recipeGrid.addWidget(QLabel(f"{self.recipedata['recipeName']}"),
                                  0, 1)
        self.recipeGrid.addWidget(QHLine(), 1, 0, 1, 2)
        self.recipeGrid.addWidget(self.targetTemp)
        self.recipeGrid.addWidget(self.targetTempLabel)
        self.recipeGrid.addWidget(self.targetTime)
        self.recipeGrid.addWidget(self.targetTimeLabel)
        self.recipeGrid.addWidget(QHLine(), 4, 0, 1, 2)

        self.tempLayout = QHBoxLayout()
        # self.tempLayout.addWidget(self.targetTempLabel)
        # self.tempLayout.addStretch(10)
        self.tempLayout.addWidget(self.tempLabel)
        # self.tempLayout.addStretch(10)
        self.tempLayout.addWidget(self.tempStatusLED)
        self.tempLayout.addStretch(10)

        self.timeLayout = QHBoxLayout()
        # self.timeLayout.addWidget(self.targetTimeLabel)
        # self.timeLayout.addStretch(10)
        self.timeLayout.addWidget(self.timeLabel)
        # self.timeLayout.addStretch(10)
        self.timeLayout.addWidget(self.timeStatusLED)
        self.timeLayout.addStretch(10)

        self.plotLayout = QVBoxLayout()
        self.plotLayout.addLayout(self.timeLayout)
        # self.plotLayout.addStretch(10)
        self.plotLayout.addLayout(self.tempLayout)
        # self.plotLayout.addStretch(10)
        self.plotLayout.addWidget(self.plot)

        self.buttonLayout = QVBoxLayout()
        self.buttonLayout.addWidget(self.startButton)
        self.buttonLayout.addWidget(self.stopButton)
        self.buttonLayout.addLayout(self.recipeGrid)
        self.buttonLayout.addStretch(100)

        mainLayout = QHBoxLayout()
        mainLayout.addLayout(self.buttonLayout)
        mainLayout.addLayout(self.plotLayout)

        vLayout = QVBoxLayout(self)
        vLayout.addLayout(mainLayout)

        self.minuteTimer = QTimer(self)
        self.minuteTimer.timeout.connect(lambda: self.addTimer(60))