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
def updateActuator(self, data: ActuatorData) -> bool: if data != None: if (data.getCommand() == 0): self.deactivateActuator() else: self.activateActuator(data.getCommand()) self.LatestActuatorData = data self.LatestActuatorData.setAsResponse() return True
def updateActuator(self, data: ActuatorData) -> bool: """ Override super class method. Use _handleActuation to execute actuation :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 cmd = data.getCommand() if cmd != ActuatorData.COMMAND_ON and cmd != ActuatorData.COMMAND_OFF: logging.error( "Got an invalid ActuatorData, whose command is invalid!") return False ret = self._handleActuation(cmd, data.getValue(), data.getStateData()) self.latestActuatorData.updateData(data) self.latestActuatorData.setStatusCode(int(ret)) self.latestActuatorData.setName(self.simpleName) self.latestActuatorData.setAsResponse() return ret >= 0 pass
def testDefaultValues(self): ad = ActuatorData() self.assertEquals(ad.getCommand(), ConfigConst.DEFAULT_COMMAND) self.assertEquals(ad.getStatusCode(), ConfigConst.DEFAULT_STATUS) logging.info("Actuator data as string: " + str(ad))
def testFullUpdate(self): ad = ActuatorData() ad2 = self._createTestActuatorData() ad.updateData(ad2) self.assertEquals(ad.getCommand(), ActuatorData.COMMAND_ON) self.assertEquals(ad.getStateData(), self.DEFAULT_STATE_DATA) self.assertEquals(ad.getValue(), self.DEFAULT_VALUE)
def handleActuatorCommandResponse(self, data: ActuatorData) -> bool: """ Callback function to handle an actuator command response packaged as a ActuatorData object. @param data The ActuatorData message received. @return bool True on success; False otherwise. """ if data: logging.info('Actuator Command: ' + str(data.getCommand())) return True
def updateActuator(self, data: ActuatorData) -> bool: if data is not None: if data.getCommand() == ActuatorData.COMMAND_ON: self.activateActuator(data.value) else: self.deactivateActuator() self.actuatorData._handleUpdateData(data) self.actuatorData.setAsResponse() logging.info( "Emulating %s actuator %s:", self.simpleName, "ON" if self.actuatorData.getCommand() == ActuatorData.COMMAND_ON else "OFF") return True
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 updateActuator(self, data: ActuatorData) -> bool: """ Update the Actuator @return bool """ if data: if data.getCommand() == ActuatorData.COMMAND_ON: self.activateActuator(data.getValue()) else: self.deactivateActuator() self.latestAd._handleUpdateData(data) self.latestAd.setAsResponse() return True
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)
class BaseActuatorSimTask(): """ Shell representation of class for student implementation. """ def __init__(self, actuatorType: int = ActuatorData.DEFAULT_ACTUATOR_TYPE, simpleName: str = "Actuator"): self.actuatorType = actuatorType self.simpleName = simpleName self.actuatorData = ActuatorData(name=simpleName) def activateActuator(self, val: float) -> bool: logging.info("""\n*******\n* ON *\n*******\n%s Value: %f\n""", self.simpleName, val) self.actuatorData.setCommand(ActuatorData.COMMAND_ON) return True def deactivateActuator(self) -> bool: logging.info("""\n*******\n* OFF *\n*******\n""") self.actuatorData.setCommand(ActuatorData.COMMAND_OFF) return True def getLatestActuatorResponse(self) -> ActuatorData: return self.actuatorData def getSimpleName(self) -> str: return self.simpleName def updateActuator(self, data: ActuatorData) -> bool: if data is not None: if data.getCommand() == ActuatorData.COMMAND_ON: self.activateActuator(data.value) else: self.deactivateActuator() self.actuatorData._handleUpdateData(data) self.actuatorData.setAsResponse() logging.info( "Emulating %s actuator %s:", self.simpleName, "ON" if self.actuatorData.getCommand() == ActuatorData.COMMAND_ON else "OFF") return True
def sendActuatorCommand(self, data: ActuatorData) -> bool: logging.info("Actuator command received. Processing...") if (self.useEmulator == False): if (data.type == data.HUMIDIFIER_ACTUATOR_TYPE): if (data.getCommand() == 0): logging.info("Emulating HUMIDIFIER actuator OFF:") logging.info("---------------------------------------") return False else: logging.info("Emulating HUMIDIFIER actuator ON:") logging.info(" Humidifier value : %s", data.getValue()) return True elif (data.type == data.HVAC_ACTUATOR_TYPE): if (data.getCommand() == 0): logging.info("Emulating HVAC actuator OFF:") logging.info("---------------------------------------") return False else: logging.info("Emulating HVAC actuator ON:") logging.info(" HVAC value : %s", data.getValue()) return True elif (self.useEmulator == True): if (data.type == data.HUMIDIFIER_ACTUATOR_TYPE): if (data.getCommand() == 0): logging.info("Emulating HUMIDIFIER actuator OFF:") logging.info("---------------------------------------") return False else: logging.info("Emulating HUMIDIFIER actuator ON:") logging.info(" Humidifier value : %s", data.getValue()) self.humidifierEmulator._handleActuation( data.getCommand(), data.getValue()) return True elif (data.type == data.HVAC_ACTUATOR_TYPE): if (data.getCommand() == 0): logging.info("Emulating HVAC actuator OFF:") logging.info("---------------------------------------") return False else: logging.info("Emulating HVAC actuator ON:") logging.info(" HVAC value : %s", data.getValue()) self.hvacEmulator._handleActuation(data.getCommand(), data.getValue()) return True
def testDefaultValues(self): ad = ActuatorData() self.assertEquals(ad.getCommand(), ActuatorData.DEFAULT_COMMAND) self.assertEquals(ad.getStatusCode(), ActuatorData.DEFAULT_STATUS)