def simpleCtrl(): """ Very simple controller for testingt """ ctrl1 = ctrl.controllerList() ctrl1.addController("genctrl", appliances.genctrl()) return ctrl1
def ctrlBsmxList(): retlst = ctrl.controllerList() retlst.addController('controllerInfo', appliances.controllerinfo()) retlst.addController('wortPump', appliances.wortPump()) retlst.addController('boiler', appliances.boiler()) #retlst = ['wortPump', 'boiler'] return(retlst)
def testSensors(): clist = ctrl.controllerList() clist.load() for key, c1 in clist.items(): print "Checking sensor", key assert isinstance(c1.sensor.getID(), str) assert (isinstance(c1.sensor.getValue(), int) or isinstance(c1.sensor.getValue(), float))
def testloadcontroller(): c = ctrl.controllerList() l = appliances.myloader.myQuickLoader() l.build() for className, instance in l.instances().iteritems(): print className c.addController(className, instance) assert len(c) > 0
def testTarget(): ctrl1 = ctrl.controllerList() ctrl1.load() for key, c in ctrl1.items(): testVal = 3.1415926 c.set(testVal) chkVal = c.getTarget() print testVal, key, chkVal assert testVal == chkVal
def mediumCtrl(): """Instantiate a list of several controllers""" ctrl1 = ctrl.controllerList() ctrl1.addController('genctrl', appliances.genctrl()) ctrl1.addController('timer', appliances.hoptimer()) ctrl1.addController('pump', appliances.hwPump()) ctrl1.addController('circulationPump', appliances.circulationPump()) ctrl1.addController('heater', appliances.hotWaterTun.hwt()) ctrl1.addController('boiler', appliances.boiler()) return(ctrl1)
def testPowerOn(): """ Test that power is off after stop, and it is a boolean """ ctrl1 = ctrl.controllerList() ctrl1.load() for key, c in ctrl1.items(): print key c.stop() assert not c.getPowerOn()
def testVal(): """ Test that current value and target value is a number """ ctrl1 = ctrl.controllerList() ctrl1.load() for key, c in ctrl1.items(): a = c.get() t = c.getTarget() assert isinstance(a, int) or isinstance(a, float) assert isinstance(t, int) or isinstance(t, float)
def testHWOK(): """ Test that HWOK is a boolean More importantly, test that HWOK is implemented and does not crash """ ctrl1 = ctrl.controllerList() ctrl1.load() for key, c in ctrl1.items(): s = c.HWOK() print key, s assert isinstance(s, bool)
def mediumCtrl(): """Instantiate a list of several controllers""" ctrl1 = ctrl.controllerList() ctrl1.addController("genctrl", appliances.genctrl()) ctrl1.addController("timer", appliances.hoptimer()) ctrl1.addController("hotWaterPump", appliances.hwPump()) ctrl1.addController("circulationPump", appliances.circulationPump()) ctrl1.addController("wortPump", appliances.wortPump()) ctrl1.addController("waterHeater", appliances.hotWaterTun.hwt()) ctrl1.addController("boiler", appliances.boiler()) return ctrl1
def testUnit(): """ Test that unit is a string """ ctrl1 = ctrl.controllerList() ctrl1.load() for key, c in ctrl1.items(): s = c.getUnit() assert isinstance(s, str) or (s is None) if s is not None: assert len(s) > 0
def createCtrl(): """Instantiate a list of all controllers""" ctrl1 = ctrl.controllerList() ctrl1.addController("generic", appliances.genctrl()) ctrl1.addController("timer", appliances.hoptimer()) ctrl1.addController("pump", appliances.hwPump()) ctrl1.addController("circulationPump", appliances.circulationPump()) ctrl1.addController("heater", appliances.hotWaterTun.hwt()) ctrl1.addController("boiler", appliances.boiler()) return ctrl1
def testError(): """ Test that power is off after stop, and it is a boolean """ ctrl1 = ctrl.controllerList() ctrl1.load() for key, c in ctrl1.items(): print key assert not c.hasError() c.forceError() assert c.hasError() c.clearError() assert not c.hasError()
def createCtrl(): """Instantiate a list of all controllers""" #cirsw = switches.simSwitch() #pumpsw = switches.simSwitch() ctrl1 = ctrl.controllerList() ctrl1.addController('genctrl', appliances.genctrl()) ctrl1.addController('timer', appliances.hoptimer()) ctrl1.addController('pump', appliances.hwPump()) ctrl1.addController('circulationPump', appliances.circulationPump()) ctrl1.addController('heater', appliances.hwt()) ctrl1.addController('boiler', appliances.boiler()) return(ctrl1)
def testStartStop(): ctrl1 = ctrl.controllerList() ctrl1.load() settings = {} for key, c in ctrl1.items(): assert not c.isActive() s = {} s['targetValue'] = 1 s['active'] = True settings[key] = s print settings ctrl1.run(settings) for key, c in ctrl1.items(): assert c.isActive()
def testTargetMet(): ctrl1 = ctrl.controllerList() ctrl1.load() for key, c in ctrl1.items(): curVal = c.get() curTarget = c.getTarget() if curTarget: if curVal > curTarget: c.set(curVal + 10) else: c.set(curVal - 10) else: if curVal < curTarget: c.set(curVal - 10) else: c.set(curVal + 10) assert curTarget != c.getTarget()
def simpleCtrl(): ctrl1 = ctrl.controllerList() ctrl1.addController('genctrl', appliances.genctrl()) return(ctrl1)
def setupControllers(verbose, simulation, permissive, equipment): controllers = ctrl.controllerList() # The controllerinfo is a special snowflake that stores some extra global controller info # It does not do anything intelligent itherwise and will always meet target controllers.addController('controllerInfo', appliances.controllerinfo()) if equipment is None: logging.error('Equipment is None') return(None) controllers['controllerInfo'].setEquipment(equipment) # Timer is always required in all equipment controllers.addController('delayTimer', appliances.hoptimer()) print "Try to find hw switches" if not simulation: logging.info("Initializing hardware") x10 = None try: usbPumps = switches.pumpUSB() except: if permissive: logging.info("**********USB pumps not found, simulating HW") usbPumps = switches.simSwitchList() else: raise Exception("USB pumps not available") else: x10 = switches.simSwitchList() usbPumps = switches.simSwitchList() print("Setting up appliances") hwTunSwitch = switches.powerSwitch(1) boilerSwitch = switches.powerSwitch(2) print 0 aeratorSwitch = switches.air8800Switch() print 0.2 coolerSwitch = switches.coolerSwitch() mashStirSwitch = switches.mashStirSwitch() #mashStirSwitch = switches.mashStir8800Switch() print 0.5 boilerValveSwitch = switches.boilerValveSwitch() hotWaterPumpSwitch = usbPumps.getSwitch(1) hwCirculationSwitch = usbPumps.getSwitch(0) wortSwitch = usbPumps.getSwitch(2) mashCirculationSwitch = usbPumps.getSwitch(3) print 1 controllers.addController('waterHeater', appliances.hwt()) controllers['waterHeater'].connectSwitch(hwTunSwitch) controllers['waterHeater'].setx(x10) controllers.addController('boiler', appliances.boiler()) controllers['boiler'].connectSwitch(boilerSwitch) controllers['boiler'].setx(x10) controllers.addController('aerator', appliances.aerator()) controllers['aerator'].connectSwitch(aeratorSwitch) print 2 controllers.addController('cooler', appliances.cooler()) controllers['cooler'].connectSwitch(coolerSwitch) boilerSensor = controllers['boiler'].getSensor() controllers['cooler'].connectSensor(boilerSensor) # Reuse of same switch for plate cooler as immersion cooler controllers.addController('plateValve', appliances.plateValve()) controllers['plateValve'].connectSwitch(coolerSwitch) controllers.addController('mashStirrer', appliances.mashStirrer()) controllers['mashStirrer'].connectSwitch(mashStirSwitch) controllers.addController('mashHeater', appliances.mashHeater()) controllers['mashHeater'].connectSwitch(mashCirculationSwitch) print 5 controllers.addController('boilerValve', appliances.boilerValve()) controllers['boilerValve'].connectSwitch(boilerValveSwitch) controllers.addController('hotWaterPump', appliances.hwPump()) controllers['hotWaterPump'].connectSwitch(hotWaterPumpSwitch) controllers.addController('waterCirculationPump', appliances.circulationPump()) controllers['waterCirculationPump'].connectSwitch(hwCirculationSwitch) controllers.addController('wortPump', appliances.wortPump()) controllers['wortPump'].connectSwitch(wortSwitch) controllers.addController('boilerVolume', appliances.boilerVolume()) controllers['boilerVolume'].attachHost(controllers['wortPump']) # controllers.addController('mashCirculationPump', \ # appliances.circulationPump()) # controllers['mashCirculationPump'].connectSwitch(mashCirculationSwitch) controllers.addController('dispenser1', appliances.dispenser(1)) controllers.addController('dispenser2', appliances.dispenser(2)) controllers.addController('dispenser3', appliances.dispenser(3)) controllers.addController('dispenser4', appliances.dispenser(4)) controllers.addController('envTemp', appliances.envTemp()) print("appliance setup done") # Testing of sensor object Remove me later for key, c1 in controllers.items(): c1.findOrAddSensor(controllers) # print key "returning..." return(controllers)
def testcheck2(): c = ctrl.controllerList() c.load() assert len(c) > 0
def testloadlist(): c = ctrl.controllerList() l = appliances.myloader.myQuickLoader() l.build() c.addControllerList(l.instances()) assert len(c) > 0
def testloadself(): c = ctrl.controllerList() c.load() assert len(c) > 0
def testStatus(): ctrl1 = ctrl.controllerList() ctrl1.load() assert len(ctrl1) > 0 status = ctrl1.status() assert len(status) > 0
def timerCtrl(): """Instantiate a list of several controllers""" ctrl1 = ctrl.controllerList() ctrl1.addController('timer', appliances.hoptimer()) return(ctrl1)
def testss2(): ctrl1 = ctrl.controllerList() ctrl1.load() assert len(ctrl1) > 0 ctrl1.shutdown() assert len(ctrl1) == 0