def testUpdateActuator(self): ad = ActuatorData(actuatorType=ActuatorData.HVAC_ACTUATOR_TYPE) ad.setCommand(ActuatorData.COMMAND_ON) ad.setValue(self.DEFAULT_VAL_A) self.assertTrue(self.hSimTask.updateActuator(ad)) adr = self.hSimTask.getLatestActuatorResponse() self.assertIsNotNone(adr) self.assertEqual(adr.getValue(), self.DEFAULT_VAL_A) logging.info("ActuatorData: " + str(adr)) ad.setValue(self.DEFAULT_VAL_B) self.assertTrue(self.hSimTask.updateActuator(ad)) adr = self.hSimTask.getLatestActuatorResponse() self.assertIsNotNone(adr) self.assertEqual(adr.getValue(), self.DEFAULT_VAL_B) logging.info("ActuatorData: " + str(adr)) ad.setCommand(ActuatorData.COMMAND_OFF) self.assertTrue(self.hSimTask.updateActuator(ad)) adr = self.hSimTask.getLatestActuatorResponse() self.assertIsNotNone(adr) self.assertEqual(adr.getCommand(), ActuatorData.COMMAND_OFF) logging.info("ActuatorData: " + str(adr))
def testUpdateActuator(self): ad = ActuatorData(typeID=ConfigConst.HUMIDIFIER_ACTUATOR_TYPE) ad.setCommand(ConfigConst.COMMAND_ON) ad.setValue(self.DEFAULT_VAL_A) adr = self.hSimTask.updateActuator(ad) self.assertIsNotNone(adr) self.assertEquals(adr.getValue(), self.DEFAULT_VAL_A) logging.info("ActuatorData: " + str(adr)) ad.setValue(self.DEFAULT_VAL_B) adr = self.hSimTask.updateActuator(ad) self.assertIsNotNone(adr) self.assertEquals(adr.getValue(), self.DEFAULT_VAL_B) logging.info("ActuatorData: " + str(adr)) ad.setCommand(ConfigConst.COMMAND_OFF) adr = self.hSimTask.updateActuator(ad) self.assertIsNotNone(adr) self.assertEquals(adr.getCommand(), ConfigConst.COMMAND_OFF) logging.info("ActuatorData: " + str(adr))
def testHvacEmulation(self): ad = ActuatorData(actuatorType=ConfigConst.HVAC_ACTUATOR_TYPE) ad.setValue(22.5) ad.setCommand(ConfigConst.COMMAND_ON) self.actuatorAdapterMgr.sendActuatorCommand(ad) ad.setCommand(ConfigConst.COMMAND_OFF) self.actuatorAdapterMgr.sendActuatorCommand(ad)
def testHumidifierEmulation(self): ad = ActuatorData(actuatorType=ConfigConst.HUMIDIFIER_ACTUATOR_TYPE) ad.setValue(50.0) ad.setCommand(ConfigConst.COMMAND_ON) self.actuatorAdapterMgr.sendActuatorCommand(ad) ad.setCommand(ConfigConst.COMMAND_OFF) self.actuatorAdapterMgr.sendActuatorCommand(ad)
def _createTestActuatorData(self): ad = ActuatorData() ad.setName(self.DEFAULT_NAME) ad.setCommand(ActuatorData.COMMAND_ON) ad.setStateData(self.DEFAULT_STATE_DATA) ad.setValue(self.DEFAULT_VALUE) return ad
def _createTestActuatorData(self): ad = ActuatorData() ad.setName(self.DEFAULT_NAME) ad.setCommand(ConfigConst.COMMAND_ON) ad.setStateData(self.DEFAULT_STATE_DATA) ad.setValue(self.DEFAULT_VALUE) logging.info("Actuator data as string: " + str(ad)) return ad
def testUpdateEmulator(self): ad = ActuatorData(actuatorType = ActuatorData.HVAC_ACTUATOR_TYPE) ad.setCommand(ActuatorData.COMMAND_ON) ad.setValue(22.0) self.assertTrue(self.hvSimTask.updateActuator(ad)) adr = self.hvSimTask.getLatestActuatorResponse() if adr: self.assertEqual(adr.getCommand(), ActuatorData.COMMAND_ON) self.assertEqual(adr.getStatusCode(), 0) logging.info("ActuatorData: " + str(adr)) # wait 5 seconds sleep(5) else: logging.warning("ActuatorData is None.") ad.setValue(20.0) self.assertTrue(self.hvSimTask.updateActuator(ad)) adr = self.hvSimTask.getLatestActuatorResponse() if adr: self.assertEqual(adr.getCommand(), ActuatorData.COMMAND_ON) self.assertEqual(adr.getStatusCode(), 0) logging.info("ActuatorData: " + str(adr)) # wait 5 seconds else: logging.warning("ActuatorData is None.") ad.setCommand(ActuatorData.COMMAND_OFF) self.assertTrue(self.hvSimTask.updateActuator(ad)) adr = self.hvSimTask.getLatestActuatorResponse() if adr: self.assertEqual(adr.getCommand(), ActuatorData.COMMAND_OFF) self.assertEqual(adr.getStatusCode(), 0) logging.info("ActuatorData: " + str(adr)) else: logging.warning("ActuatorData is None.")
def testUpdateEmulator(self): ad = ActuatorData(typeID=ConfigConst.HUMIDIFIER_ACTUATOR_TYPE) ad.setCommand(ConfigConst.COMMAND_ON) ad.setValue(50.0) adr = self.huSimTask.updateActuator(ad) if adr: self.assertEqual(adr.getCommand(), ConfigConst.COMMAND_ON) self.assertEqual(adr.getStatusCode(), 0) logging.info("ActuatorData: " + str(adr)) # wait 5 seconds sleep(5) else: logging.warning("ActuatorData is None.") ad.setValue(35.0) adr = self.huSimTask.updateActuator(ad) if adr: self.assertEqual(adr.getCommand(), ConfigConst.COMMAND_ON) self.assertEqual(adr.getStatusCode(), 0) logging.info("ActuatorData: " + str(adr)) # wait 5 seconds else: logging.warning("ActuatorData is None.") ad.setCommand(ConfigConst.COMMAND_OFF) adr = self.huSimTask.updateActuator(ad) if adr: self.assertEqual(adr.getCommand(), ConfigConst.COMMAND_OFF) self.assertEqual(adr.getStatusCode(), 0) logging.info("ActuatorData: " + str(adr)) else: logging.warning("ActuatorData is None.")
class BaseActuatorSimTask(): """ Base class for ActuatorSimTask """ def __init__(self, actuatorType: int = ActuatorData.DEFAULT_ACTUATOR_TYPE, simpleName: str = ConfigConst.NOT_SET): """ Init BaseActuatorSimTask with default values :param actuatorType: Type of actuator :param simpleName: Name of actuator """ self.actuatorType = actuatorType self.simpleName = simpleName self.latestActuatorData = ActuatorData(self.actuatorType, self.simpleName) pass def activateActuator(self, val: float) -> bool: """ Turn actuator on with given target value As a sim actuator, there is no real action :param val: Given target actuator value :return: If succeed to activate Actuator, always True as a sim actuator """ logging.info("\n======\nSim %s actuator ON, with value = %d.\n======" % (self.getSimpleName(), val)) self.latestActuatorData.setCommand(ActuatorData.COMMAND_ON) self.latestActuatorData.setValue(val) return True pass def deactivateActuator(self) -> bool: """ Turn actuator off with given target value As a sim actuator, there is no real action :return: If succeed to deactivate Actuator, always True as a sim actuator """ logging.info("\n======\nSim %s actuator OFF.\n======" % self.getSimpleName()) self.latestActuatorData.setCommand(ActuatorData.COMMAND_OFF) return True pass def getLatestActuatorResponse(self) -> ActuatorData: """ Get latest actuator data :return: Latest ActuatorData """ return self.latestActuatorData pass def getSimpleName(self) -> str: """ Get name of the sim actuator :return: Name string """ return self.simpleName pass def updateActuator(self, data: ActuatorData) -> bool: """ Use ActuatorData as command: Update current maintained latest ActuatorData Use given ActuatorData to execute command :param data: Given ActuatorData :return: If succeed to update and execute """ if data is None: logging.error("Got an invalid ActuatorData, which is None!") return False if not isinstance(data, ActuatorData): logging.error( "Got an invalid ActuatorData, which type is not ActuatorData!") return False if data.getCommand( ) is not ActuatorData.COMMAND_ON and data.getCommand( ) is not ActuatorData.COMMAND_OFF: logging.error( "Got an invalid ActuatorData, whose command is invalid!") return False ret = False if data.getCommand() is ActuatorData.COMMAND_ON: ret = self.activateActuator(data.getValue()) else: ret = self.deactivateActuator() self.latestActuatorData.updateData(data) self.latestActuatorData.setName(self.simpleName) self.latestActuatorData.setStatusCode(int(ret)) self.latestActuatorData.setAsResponse() return ret pass