PyThermostat: Modify PIDAutotune for GUI usage
Co-authored-by: topquark12 <aw@m-labs.hk>
This commit is contained in:
parent
9868ca4447
commit
828648ed76
@ -2,7 +2,7 @@ import math
|
||||
import logging
|
||||
import time
|
||||
from collections import deque, namedtuple
|
||||
from enum import Enum
|
||||
from enum import Enum, auto
|
||||
|
||||
from pythermostat.client import Client
|
||||
|
||||
@ -13,11 +13,12 @@ from pythermostat.client import Client
|
||||
|
||||
|
||||
class PIDAutotuneState(Enum):
|
||||
STATE_OFF = 'off'
|
||||
STATE_RELAY_STEP_UP = 'relay step up'
|
||||
STATE_RELAY_STEP_DOWN = 'relay step down'
|
||||
STATE_SUCCEEDED = 'succeeded'
|
||||
STATE_FAILED = 'failed'
|
||||
STATE_OFF = auto()
|
||||
STATE_RELAY_STEP_UP = auto()
|
||||
STATE_RELAY_STEP_DOWN = auto()
|
||||
STATE_SUCCEEDED = auto()
|
||||
STATE_FAILED = auto()
|
||||
STATE_READY = auto()
|
||||
|
||||
|
||||
class PIDAutotune:
|
||||
@ -57,6 +58,21 @@ class PIDAutotune:
|
||||
self._Ku = 0
|
||||
self._Pu = 0
|
||||
|
||||
def set_param(self, target, step, noiseband, sampletime, lookback):
|
||||
self._setpoint = target
|
||||
self._outputstep = step
|
||||
self._out_max = step
|
||||
self._out_min = -step
|
||||
self._noiseband = noiseband
|
||||
self._inputs = deque(maxlen=round(lookback / sampletime))
|
||||
|
||||
def set_ready(self):
|
||||
self._state = PIDAutotuneState.STATE_READY
|
||||
self._peak_count = 0
|
||||
|
||||
def set_off(self):
|
||||
self._state = PIDAutotuneState.STATE_OFF
|
||||
|
||||
def state(self):
|
||||
"""Get the current state."""
|
||||
return self._state
|
||||
@ -94,9 +110,12 @@ class PIDAutotune:
|
||||
"""
|
||||
now = time_input * 1000
|
||||
|
||||
if (self._state == PIDAutotuneState.STATE_OFF
|
||||
or self._state == PIDAutotuneState.STATE_SUCCEEDED
|
||||
or self._state == PIDAutotuneState.STATE_FAILED):
|
||||
if self._state in (
|
||||
PIDAutotuneState.STATE_OFF,
|
||||
PIDAutotuneState.STATE_SUCCEEDED,
|
||||
PIDAutotuneState.STATE_FAILED,
|
||||
PIDAutotuneState.STATE_READY,
|
||||
):
|
||||
self._state = PIDAutotuneState.STATE_RELAY_STEP_UP
|
||||
|
||||
self._last_run_timestamp = now
|
||||
|
Loading…
Reference in New Issue
Block a user