Index: dialin/common/msg_defs.py =================================================================== diff -u -r8c066d92317217d5ae5e3993609a804930f7531a -ra64d02ab774618e2ae23db6bbb96b068fab59d91 --- dialin/common/msg_defs.py (.../msg_defs.py) (revision 8c066d92317217d5ae5e3993609a804930f7531a) +++ dialin/common/msg_defs.py (.../msg_defs.py) (revision a64d02ab774618e2ae23db6bbb96b068fab59d91) @@ -194,7 +194,7 @@ MSG_ID_HEAT_DISINFECT_NO_OF_CYCLES_TO_RUN = 0xA020 # Heat disinfection number of cycles to run MSG_ID_HEAT_DISINFECT_PUBLISH_INTERVAL_OVERRIDE = 0xA021 # Heat disinfection data publish interval override request MSG_ID_DG_SOFTWARE_RESET_REQUEST = 0xA022 # DG reset request - MSG_ID_DG_OPERATION_MODE_REQUEST = 0xA023 # DG operation mode request + MSG_ID_DG_CONCENTRATE_PUMP_MEASURED_SPEED_OVERRIDE = 0xA023 # DG concentrate pump measured speed override request MSG_ID_CONCENTRATE_PUMP_TARGET_SPEED_OVERRIDE = 0xA024 # Concentrate pumps' target speed override request MSG_ID_UV_REACTORS_DATA_PUBLISH_INTERVAL_OVERRIDE = 0xA025 # UV reactors data publish interval override MSG_ID_CONCENTRATE_PUMP_STATE_CHANGE_REQUEST = 0xA026 # Concentrate pumps' state change request (on / off) Index: dialin/dg/concentrate_pumps.py =================================================================== diff -u -ra57a9b9a8adbca445c9ee7fe3ca6c6c85b645416 -ra64d02ab774618e2ae23db6bbb96b068fab59d91 --- dialin/dg/concentrate_pumps.py (.../concentrate_pumps.py) (revision a57a9b9a8adbca445c9ee7fe3ca6c6c85b645416) +++ dialin/dg/concentrate_pumps.py (.../concentrate_pumps.py) (revision a64d02ab774618e2ae23db6bbb96b068fab59d91) @@ -147,9 +147,9 @@ payload=payload) if reset == RESET: - self.logger.debug("reset back to normal value for ID: " + str(pump_id)) + self.logger.debug("reset back to normal value for pump: " + str(pump_id)) else: - self.logger.debug("override value: " + str(speed) + " - for ID: " + str(pump_id)) + self.logger.debug("override target speed: " + str(speed) + " - for pump: " + str(pump_id)) # Send message received_message = self.can_interface.send(message) @@ -162,3 +162,72 @@ self.logger.error("Timeout!!!!") return False + def cmd_concentrate_pump_measured_speed_override(self, speed, pump_id, reset=NO_RESET): + """ + Constructs and sends the concentrate pump measured speed override command + + @param speed: float - measured speed value to override concentrate pump with + @param pump_id: unsigned int - concentrate pump ID + @param reset: integer - 1 to reset a previous override, 0 to override + @return: 1 if successful, zero otherwise + + Concentrate pump IDs: \n + 0 = CP1 \n + 1 = CP2 \n + """ + + reset_byte_array = integer_to_bytearray(reset) + speed_byte_array = float_to_bytearray(speed) + pump_id_byte_array = integer_to_bytearray(pump_id) + payload = reset_byte_array + speed_byte_array + pump_id_byte_array + + message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_dg_ch_id, + message_id=MsgIds.MSG_ID_DG_CONCENTRATE_PUMP_MEASURED_SPEED_OVERRIDE.value, + payload=payload) + + if reset == RESET: + self.logger.debug("reset back to normal value for pump: " + str(pump_id)) + else: + self.logger.debug("override measured speed: " + str(speed) + " - for pump: " + str(pump_id)) + + # Send message + received_message = self.can_interface.send(message) + + # If there is content... + if received_message is not None: + # response payload is OK or not OK + return received_message['message'][DenaliMessage.PAYLOAD_START_INDEX] + else: + self.logger.error("Timeout!!!!") + return False + + def cmd_concentrate_pump_broadcast_interval_override(self, ms, reset=NO_RESET): + """ + Constructs and sends the concentrate pumpi data broadcast interval override command + + @param ms: integer - interval (in ms) to override with + @param reset: integer - 1 to reset a previous override, 0 to override + @return: 1 if successful, zero otherwise + """ + + reset_byte_array = integer_to_bytearray(reset) + ms_byte_array = integer_to_bytearray(ms) + payload = reset_byte_array + ms_byte_array + + message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_dg_ch_id, + message_id=MsgIds.MSG_ID_CONCENTRATE_PUMP_PUBLISH_INTERVAL_OVERRIDE.value, + payload=payload) + + self.logger.debug("override DG concentrate pump data broadcast interval") + + # Send message + received_message = self.can_interface.send(message) + + # If there is content... + if received_message is not None: + # response payload is OK or not OK + return received_message['message'][DenaliMessage.PAYLOAD_START_INDEX] + else: + self.logger.error("Timeout!!!!") + return False +