def sieveOut(inputs: Inputs, stateTime: float) -> Outputs: if not inputs.top: return Outputs(Up, Off), "sieveOut" else: if keepWarm: return Outputs(Halt, Off), "waitForCooldown" else: return Outputs(Halt, Off), "off"
def controlDevices(self, controls: Outputs, force: bool = False) -> None: if force or controls.motor != self.currentState.motor: print(controls.motor) if controls.motor == Motor.Up: self.motorUp() if controls.motor == Motor.Down: self.motorDown() if controls.motor == Motor.Halt: self.motorHalt() if controls.plate != self.currentState.plate: self.switchPlateState() self.currentState = Outputs(controls.motor, controls.plate)
def waitForHeatup(inputs: Inputs, stateTime: float) -> Outputs: assert inputs.top if inputs.temp > maxDrinkTemp: return Outputs(Halt, On), "waitForCooldown" else: return Outputs(Halt, On), "waitForCooldown"
def off(inputs: Inputs, stateTime: float) -> Outputs: return Outputs(Halt, Off), "off"
def steep(inputs: Inputs, stateTime: float) -> Outputs: assert inputs.bottom if stateTime < steepTime: return Outputs(Halt, Off), "steep" else: return Outputs(Halt, Off), "sieveOut"
def sieveIn(inputs: Inputs, stateTime: float) -> Outputs: if not inputs.bottom: return Outputs(Down, Off), "sieveIn" else: return Outputs(Halt, Off), "steep"
def boil(inputs: Inputs, stateTime: float) -> Outputs: assert inputs.top if inputs.temp < steepTemperature: return Outputs(Halt, On), "boil" else: return Outputs(Halt, Off), "sieveIn"
def setup(inputs: Inputs, stateTime: float) -> Outputs: if not inputs.top: return Outputs(Up, Off), "setup" return Outputs(Halt, Off), "boil"
def __init__(self) -> None: self.currentState = Outputs(Motor.Halt, Plate.Off) self.bus = SMBus(1)