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
示例#6
0
    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
示例#7
0
	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.")
示例#8
0
    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