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 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 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 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)