def __init__(self, useEmulator: bool = False):
     self.useEmulator = useEmulator
     self.dataMsgListener = IDataMessageListener()
     if self.useEmulator is True:
         logging.info("Use Emulator")
         # load the Humidifier actuation emulator
         humidifierModule = __import__(
             'programmingtheiot.cda.emulated.HumidifierEmulatorTask',
             fromlist=['HumidifierEmulatorTask'])
         hueClazz = getattr(humidifierModule, 'HumidifierEmulatorTask')
         self.humidifierEmulator = hueClazz()
         # load the Hvac actuation emulator
         hvacModule = __import__(
             'programmingtheiot.cda.emulated.HvacEmulatorTask',
             fromlist=['HvacEmulatorTask'])
         hueClazz = getattr(hvacModule, 'HvacEmulatorTask')
         self.hvacEmulator = hueClazz()
         # load the LED actuation emulator
         ledModule = __import__(
             'programmingtheiot.cda.emulated.LedDisplayEmulatorTask',
             fromlist=['LedDisplayEmulatorTask'])
         hueClazz = getattr(ledModule, 'LedDisplayEmulatorTask')
         self.ledEmulator = hueClazz()
     else:
         logging.info("Use Simulator")
         # create the humidifier actuator
         self.humidifierActuator = HumidifierActuatorSimTask()
         # create the HVAC actuator
         self.hvacActuator = HvacActuatorSimTask()
    def __init__(self, useEmulator: bool = False):
        logging.info("ActuatorAdapterManager is initializing...")
        self.useEmulator = useEmulator
        self.dataMsgListener: IDataMessageListener = None
        if self.useEmulator is True:
            logging.info("ActuatorAdapterManager is using emulator.")
            # create emulated humidifier actuator
            humidifierModule = __import__('programmingtheiot.cda.emulated.HumidifierEmulatorTask',
                                          fromlist=['HumidifierEmulatorTask'])
            humidifierClass = getattr(humidifierModule, 'HumidifierEmulatorTask')
            self.humidifierEmulator = humidifierClass()
            # create emulated HVAC actuator
            hvacModule = __import__('programmingtheiot.cda.emulated.HvacEmulatorTask',
                                          fromlist=['HvacEmulatorTask'])
            hvacClass = getattr(hvacModule, 'HvacEmulatorTask')
            self.hvacEmulator = hvacClass()
            # create emulated LED Display
            ledModule = __import__('programmingtheiot.cda.emulated.LedDisplayEmulatorTask',
                                    fromlist=['LedDisplayEmulatorTask'])
            ledClass = getattr(ledModule, 'LedDisplayEmulatorTask')
            self.ledEmulator = ledClass()
        else:
            logging.info("ActuatorAdapterManager is using simulators.")
            # create simulated humidifier actuator
            self.humidifierActuator = HumidifierActuatorSimTask()
            # create simulated HVAC actuator
            self.hvacActuator = HvacActuatorSimTask()

        pass
Exemplo n.º 3
0
    def __init__(self, useEmulator: bool = False):
        """
		Initialization of class.
		Create an instance of ActuatorAdapterManager
		"""
        self.useEmulator = useEmulator
        self.dataMsgListener = None

        if self.useEmulator:
            logging.info("---> Emulators will be used ")

            # load the Humidifier actuation emulator
            humidifierModule = __import__(
                'programmingtheiot.cda.emulated.HumidifierEmulatorTask',
                fromlist=['HumidifierEmulatorTask'])
            hueClazz = getattr(humidifierModule, 'HumidifierEmulatorTask')
            self.humidifierEmulator = hueClazz()

            # load the hvac actuation emulator
            hvacModule = __import__(
                'programmingtheiot.cda.emulated.HvacEmulatorTask',
                fromlist=['HvacEmulatorTask'])
            hvacClazz = getattr(hvacModule, 'HvacEmulatorTask')
            self.hvacEmulator = hvacClazz()

            # load the led actuation emulator
            ledModule = __import__(
                'programmingtheiot.cda.emulated.LedDisplayEmulatorTask',
                fromlist=['LedDisplayEmulatorTask'])
            ledClazz = getattr(ledModule, 'LedDisplayEmulatorTask')
            self.ledEmulator = ledClazz()

            sprinklerModule = __import__(
                'programmingtheiot.cda.emulated.SprinklerEmulatorTask',
                fromlist=['SprinklerEmulatorTask'])
            sprClazz = getattr(sprinklerModule, 'SprinklerEmulatorTask')
            self.sprinklerEmulator = sprClazz()

            sprCtrlModule = __import__(
                'programmingtheiot.cda.emulated.SprinklerCtrlEmulatorTask',
                fromlist=['SprinklerCtrlEmulatorTask'])
            sprCtrlClazz = getattr(sprCtrlModule, 'SprinklerCtrlEmulatorTask')
            self.sprCtrlEmulator = sprCtrlClazz()

            sprMasterModule = __import__(
                'programmingtheiot.cda.emulated.SprinklerMasterEmulatorTask',
                fromlist=['SprinklerMasterEmulatorTask'])
            sprMasterClazz = getattr(sprMasterModule,
                                     'SprinklerMasterEmulatorTask')
            self.sprMasterEmulator = sprMasterClazz()

        else:
            logging.info("---> Simulators will be used ")
            # create the humidifier actuator
            self.humidifierActuator = HumidifierActuatorSimTask()
            # create the HVAC actuator
            self.hvacActuator = HvacActuatorSimTask()
class HumidifierActuatorSimTaskTest(unittest.TestCase):
    """
	This test case class contains very basic unit tests for
	HumidifierActuatorSimTask. It should not be considered complete,
	but serve as a starting point for the student implementing
	additional functionality within their Programming the IoT
	environment.
	"""
    DEFAULT_VAL_A = 18.2
    DEFAULT_VAL_B = 21.4

    @classmethod
    def setUpClass(self):
        logging.basicConfig(
            format='%(asctime)s:%(module)s:%(levelname)s:%(message)s',
            level=logging.DEBUG)
        logging.info("Testing HumidifierActuatorSimTask class...")
        self.hSimTask = HumidifierActuatorSimTask()

    def setUp(self):
        pass

    def tearDown(self):
        pass

    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))
Exemplo n.º 5
0
    def __init__(self, useEmulator: bool = False):
        self.useEmulator = useEmulator
        if (self.useEmulator == True):
            logging.info("Emulators will be used")

            humidifierModule = __import__(
                'programmingtheiot.cda.emulated.HumidifierEmulatorTask',
                fromlist=['HumidifierEmulatorTask'])
            hueClazz = getattr(humidifierModule, 'HumidifierEmulatorTask')
            self.humidifierEmulator = hueClazz()

            hvacModule = __import__(
                'programmingtheiot.cda.emulated.HvacEmulatorTask',
                fromlist=['HvacEmulatorTask'])
            hueClazz = getattr(hvacModule, 'HvacEmulatorTask')
            self.hvacEmulator = hueClazz()

            LedDisplayModule = __import__(
                'programmingtheiot.cda.emulated.LedDisplayEmulatorTask',
                fromlist=['LedDisplayEmulatorTask'])
            hueClazz = getattr(LedDisplayModule, 'LedDisplayEmulatorTask')
            self.LedDisplayEmulator = hueClazz()

        else:
            logging.info(
                "Testing ActuatorAdapterManager class [using simulators]...")
            # create the humidifier actuator
            self.humidifierActuator = HumidifierActuatorSimTask()
            # create the HVAC actuator
            self.hvacActuator = HvacActuatorSimTask()
            pass
        """Getting Actuator value from Simulator/Emulator as per self.useEmulator flag"""
 def setUpClass(self):
     logging.basicConfig(
         format='%(asctime)s:%(module)s:%(levelname)s:%(message)s',
         level=logging.DEBUG)
     logging.info("Testing HumidifierActuatorSimTask class...")
     self.hSimTask = HumidifierActuatorSimTask()
Exemplo n.º 7
0
class ActuatorAdapterManager(object):
    """
	Shell representation of class for student implementation.
	
	"""
    def __init__(self, useEmulator: bool = False):
        """
		Initialization of class.
		Create an instance of ActuatorAdapterManager
		"""
        self.useEmulator = useEmulator
        self.dataMsgListener = None

        if self.useEmulator:
            logging.info("---> Emulators will be used ")

            # load the Humidifier actuation emulator
            humidifierModule = __import__(
                'programmingtheiot.cda.emulated.HumidifierEmulatorTask',
                fromlist=['HumidifierEmulatorTask'])
            hueClazz = getattr(humidifierModule, 'HumidifierEmulatorTask')
            self.humidifierEmulator = hueClazz()

            # load the hvac actuation emulator
            hvacModule = __import__(
                'programmingtheiot.cda.emulated.HvacEmulatorTask',
                fromlist=['HvacEmulatorTask'])
            hvacClazz = getattr(hvacModule, 'HvacEmulatorTask')
            self.hvacEmulator = hvacClazz()

            # load the led actuation emulator
            ledModule = __import__(
                'programmingtheiot.cda.emulated.LedDisplayEmulatorTask',
                fromlist=['LedDisplayEmulatorTask'])
            ledClazz = getattr(ledModule, 'LedDisplayEmulatorTask')
            self.ledEmulator = ledClazz()

            sprinklerModule = __import__(
                'programmingtheiot.cda.emulated.SprinklerEmulatorTask',
                fromlist=['SprinklerEmulatorTask'])
            sprClazz = getattr(sprinklerModule, 'SprinklerEmulatorTask')
            self.sprinklerEmulator = sprClazz()

            sprCtrlModule = __import__(
                'programmingtheiot.cda.emulated.SprinklerCtrlEmulatorTask',
                fromlist=['SprinklerCtrlEmulatorTask'])
            sprCtrlClazz = getattr(sprCtrlModule, 'SprinklerCtrlEmulatorTask')
            self.sprCtrlEmulator = sprCtrlClazz()

            sprMasterModule = __import__(
                'programmingtheiot.cda.emulated.SprinklerMasterEmulatorTask',
                fromlist=['SprinklerMasterEmulatorTask'])
            sprMasterClazz = getattr(sprMasterModule,
                                     'SprinklerMasterEmulatorTask')
            self.sprMasterEmulator = sprMasterClazz()

        else:
            logging.info("---> Simulators will be used ")
            # create the humidifier actuator
            self.humidifierActuator = HumidifierActuatorSimTask()
            # create the HVAC actuator
            self.hvacActuator = HvacActuatorSimTask()

    def sendActuatorCommand(self, data: ActuatorData) -> bool:
        """
		Send Actuator Command to Actuator
		
		@return bool
		"""
        if self.dataMsgListener:
            self.dataMsgListener.handleActuatorCommandResponse(data)
            logging.info('Actuator command received. Processing...')
            if self.useEmulator:
                if (data.getActuatorType() ==
                        ActuatorData.HUMIDIFIER_ACTUATOR_TYPE):
                    if ~data.isResponseFlagEnabled():
                        self.humidifierEmulator._handleActuation(
                            data.getCommand(), data.getValue(),
                            data.getStateData())
                if (data.getActuatorType() == ActuatorData.HVAC_ACTUATOR_TYPE):
                    if ~data.isResponseFlagEnabled():
                        self.hvacEmulator._handleActuation(
                            data.getCommand(), data.getValue(),
                            data.getStateData())
                if (data.getActuatorType() ==
                        ActuatorData.LED_DISPLAY_ACTUATOR_TYPE):
                    if ~data.isResponseFlagEnabled():
                        self.ledEmulator._handleActuation(
                            data.getCommand(), data.getValue(),
                            data.getStateData())
                if (data.getActuatorType() ==
                        ActuatorData.SPRINKLER_ACTUATOR_TYPE):
                    if ~data.isResponseFlagEnabled():
                        self.sprinklerEmulator._handleActuation(
                            data.getCommand(), data.getValue(),
                            data.getStateData())
                if (data.getActuatorType() ==
                        ActuatorData.SPRINKLER_CTRL_ACTUATOR_TYPE):
                    if ~data.isResponseFlagEnabled():
                        self.sprCtrlEmulator._handleActuation(
                            data.getCommand(), data.getValue(),
                            data.getStateData())
                if (data.getActuatorType() ==
                        ActuatorData.SPRINKLER_MASTER_ACTUATOR_TYPE):
                    if ~data.isResponseFlagEnabled():
                        self.sprMasterEmulator._handleActuation(
                            data.getCommand(), data.getValue(),
                            data.getStateData())
            else:
                if (data.getActuatorType() ==
                        ActuatorData.HUMIDIFIER_ACTUATOR_TYPE):
                    if ~data.isResponseFlagEnabled():
                        self.humidifierActuator.updateActuator(data)
                if (data.getActuatorType() == ActuatorData.HVAC_ACTUATOR_TYPE):
                    if ~data.isResponseFlagEnabled():
                        self.hvacActuator.updateActuator(data)

    def setDataMessageListener(self, listener: IDataMessageListener) -> bool:
        """
		set Data MessageListener which is used for monitor the Actuator excuate
		
		@return bool
		"""
        if listener:
            self.dataMsgListener = listener
class ActuatorAdapterManager(object):
    """
	Shell representation of class for student implementation.
	
	"""
    def __init__(self, useEmulator: bool = False):
        self.useEmulator = useEmulator
        self.dataMsgListener = IDataMessageListener()
        if self.useEmulator is True:
            logging.info("Use Emulator")
            # load the Humidifier actuation emulator
            humidifierModule = __import__(
                'programmingtheiot.cda.emulated.HumidifierEmulatorTask',
                fromlist=['HumidifierEmulatorTask'])
            hueClazz = getattr(humidifierModule, 'HumidifierEmulatorTask')
            self.humidifierEmulator = hueClazz()
            # load the Hvac actuation emulator
            hvacModule = __import__(
                'programmingtheiot.cda.emulated.HvacEmulatorTask',
                fromlist=['HvacEmulatorTask'])
            hueClazz = getattr(hvacModule, 'HvacEmulatorTask')
            self.hvacEmulator = hueClazz()
            # load the LED actuation emulator
            ledModule = __import__(
                'programmingtheiot.cda.emulated.LedDisplayEmulatorTask',
                fromlist=['LedDisplayEmulatorTask'])
            hueClazz = getattr(ledModule, 'LedDisplayEmulatorTask')
            self.ledEmulator = hueClazz()
        else:
            logging.info("Use Simulator")
            # create the humidifier actuator
            self.humidifierActuator = HumidifierActuatorSimTask()
            # create the HVAC actuator
            self.hvacActuator = HvacActuatorSimTask()

    def sendActuatorCommand(self, data: ActuatorData) -> bool:
        logging.info("Actuator command received.Processing...")
        if self.useEmulator is True:
            if data.actuatorType == ActuatorData.HVAC_ACTUATOR_TYPE:
                # set hvac data (command, value ...)
                self.hvacEmulator.handleActuation(data.getCommand(),
                                                  data.getValue(),
                                                  data.getStateData())
            elif data.actuatorType == ActuatorData.HUMIDIFIER_ACTUATOR_TYPE:
                # set humidifier data (command, value ...)
                self.humidifierEmulator.handleActuation(
                    data.getCommand(), data.getValue(), data.getStateData())
            elif data.actuatorType == ActuatorData.LED_DISPLAY_ACTUATOR_TYPE:
                # set led
                self.ledEmulator.handleActuation(data.getCommand(),
                                                 data.getValue(),
                                                 data.getStateData())
            else:
                logging.info("Cant Find Actuator Type")
                pass
            self.humidifierEmulator
            self.hvacEmulator
        else:
            if data.actuatorType == ActuatorData.HVAC_ACTUATOR_TYPE:
                # set hvac data (command, value ...)
                self.hvacActuator.updateActuator(data)
            elif data.actuatorType == ActuatorData.HUMIDIFIER_ACTUATOR_TYPE:
                # set humidifier data (command, value ...)
                self.humidifierActuator.updateActuator(data)
            elif data.actuatorType == ActuatorData.LED_DISPLAY_ACTUATOR_TYPE:
                logging.info("No LED device")
            else:
                logging.info("Cant Find Actuator Type")
                pass
        # pass data to listener
        self.dataMsgListener.handleActuatorCommandResponse(data)

    def setDataMessageListener(self, listener: IDataMessageListener) -> bool:
        if listener is not None:
            self.dataMsgListener = listener
class ActuatorAdapterManager(object):
    """
    Shell representation of class for student implementation.

    """

    def __init__(self, useEmulator: bool = False):
        logging.info("ActuatorAdapterManager is initializing...")
        self.useEmulator = useEmulator
        self.dataMsgListener: IDataMessageListener = None
        if self.useEmulator is True:
            logging.info("ActuatorAdapterManager is using emulator.")
            # create emulated humidifier actuator
            humidifierModule = __import__('programmingtheiot.cda.emulated.HumidifierEmulatorTask',
                                          fromlist=['HumidifierEmulatorTask'])
            humidifierClass = getattr(humidifierModule, 'HumidifierEmulatorTask')
            self.humidifierEmulator = humidifierClass()
            # create emulated HVAC actuator
            hvacModule = __import__('programmingtheiot.cda.emulated.HvacEmulatorTask',
                                          fromlist=['HvacEmulatorTask'])
            hvacClass = getattr(hvacModule, 'HvacEmulatorTask')
            self.hvacEmulator = hvacClass()
            # create emulated LED Display
            ledModule = __import__('programmingtheiot.cda.emulated.LedDisplayEmulatorTask',
                                    fromlist=['LedDisplayEmulatorTask'])
            ledClass = getattr(ledModule, 'LedDisplayEmulatorTask')
            self.ledEmulator = ledClass()
        else:
            logging.info("ActuatorAdapterManager is using simulators.")
            # create simulated humidifier actuator
            self.humidifierActuator = HumidifierActuatorSimTask()
            # create simulated HVAC actuator
            self.hvacActuator = HvacActuatorSimTask()

        pass

    def sendActuatorCommand(self, data: ActuatorData) -> bool:
        logging.debug("Got ActuatorData: {}".format(data.__str__()))
        if data.isResponse:
            logging.info("Ignore response ActuatorData.")
            return True
        if self.useEmulator is False:
            logging.info("Sending ActuatorData to simulated Actuators.")
            if data.getActuatorType() is ActuatorData.HUMIDIFIER_ACTUATOR_TYPE:
                self.humidifierActuator.updateActuator(data)
                pass
            elif data.getActuatorType() is ActuatorData.HVAC_ACTUATOR_TYPE:
                self.hvacActuator.updateActuator(data)
                pass
            else:
                logging.warning("Got ActuatorData for Actuator that has not been simulated.")
        else:
            logging.info("Sending ActuatorData to emulated Actuators.")
            if data.getActuatorType() is ActuatorData.HUMIDIFIER_ACTUATOR_TYPE:
                self.humidifierEmulator.updateActuator(data)
                pass
            elif data.getActuatorType() is ActuatorData.HVAC_ACTUATOR_TYPE:
                self.hvacEmulator.updateActuator(data)
                pass
            elif data.getActuatorType() is ActuatorData.LED_DISPLAY_ACTUATOR_TYPE:
                self.ledEmulator.updateActuator(data)
                pass
            else:
                logging.warning("Got ActuatorData for Actuator that has not been simulated.")
        return True
        pass

    def setDataMessageListener(self, listener: IDataMessageListener) -> bool:
        if listener is None:
            logging.info("Given DataMessageListener is invalid!")
            return False
        logging.info("Set %s as DataMessageListener." % listener.__str__())
        self.dataMsgListener = listener
        return True
        pass