Index: leahi_dialin/fp/modules/temperatures.py =================================================================== diff -u -rbb3864d4cd7a4e121dd63b0cae2148e66c270b93 -ra0520ee656b58da05b3eafad2eb278308f9f49b0 --- leahi_dialin/fp/modules/temperatures.py (.../temperatures.py) (revision bb3864d4cd7a4e121dd63b0cae2148e66c270b93) +++ leahi_dialin/fp/modules/temperatures.py (.../temperatures.py) (revision a0520ee656b58da05b3eafad2eb278308f9f49b0) @@ -18,28 +18,13 @@ from logging import Logger from .constants import NO_RESET, RESET +from leahi_dialin.common.fp_defs import FPTemperaturesNames from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions from leahi_dialin.protocols.CAN import DenaliMessage, DenaliChannels from leahi_dialin.utils.base import AbstractSubSystem, publish, DialinEnum from leahi_dialin.utils.checks import check_broadcast_interval_override_ms from leahi_dialin.utils.conversions import integer_to_bytearray, float_to_bytearray -@unique -class FPTemperaturesNames(DialinEnum): - P10_TEMP = 0 # P10 temperature from inlet conductivity sensor. - P19_TEMP = 1 # P19 temperature from outlet conductivity sensor. - M1_TEMP = 2 # Temperature before pressure regulator (M1) - M3_TEMP = 3 # Temperature after pressure regulator (M3) - P8_TEMP = 4 # Temperature before inlet conductivity sensor (P8) - P13_TEMP = 5 # Temperature before RO filter (P13) - P17_TEMP = 6 # Temperature after RO filter (P17) - X1_TEMP = 7 # Temperature before RO pump (X1) - X2_TEMP = 8 # Temperature RO Concentrate - X3_TEMP = 9 # Temperature RO Concentrate drop - X4_TEMP = 10 # Temperature drain drop - P7_TEMP = 11 # Temperature at p7 flow meter - P16_TEMP = 12 # Temperature at p16 flow meter - NUM_OF_TEMPERATURE_SENSORS = 13 # Number of Temperature Sensors class FPTemperatureSensors(AbstractSubSystem): @@ -52,73 +37,58 @@ if self.can_interface is not None: channel_id = DenaliChannels.fp_sync_broadcast_ch_id - msg_id = MsgIds.MSG_ID_FP_TEMPERATURE_DATA.value - self.can_interface.register_receiving_publication_function(channel_id, msg_id, + self.msg_id_fp_temperature_data = MsgIds.MSG_ID_FP_TEMPERATURE_DATA.value + self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_fp_temperature_data, self._handler_temperature_sensors_sync) self.fp_temperature_sensors_timestamp = 0 - self.fp_temperatures = {FPTemperaturesNames.P10_TEMP.name: 0.0, - FPTemperaturesNames.P19_TEMP.name: 0.0, - FPTemperaturesNames.M1_TEMP.name: 0.0, - FPTemperaturesNames.M3_TEMP.name: 0.0, - FPTemperaturesNames.P8_TEMP.name: 0.0, - FPTemperaturesNames.P13_TEMP.name: 0.0, - FPTemperaturesNames.P17_TEMP.name: 0.0, - FPTemperaturesNames.X1_TEMP.name: 0.0, - FPTemperaturesNames.X2_TEMP.name: 0.0, - FPTemperaturesNames.X3_TEMP.name: 0.0, - FPTemperaturesNames.X4_TEMP.name: 0.0, - FPTemperaturesNames.P7_TEMP.name: 0.0, - FPTemperaturesNames.P16_TEMP.name: 0.0, - } + self.fp_temperatures = { + FPTemperaturesNames.M3_TEMP.name: 0.0, + FPTemperaturesNames.P10_TEMP.name: 0.0, + FPTemperaturesNames.P19_TEMP.name: 0.0, + FPTemperaturesNames.P8_TEMP.name: 0.0, + FPTemperaturesNames.P13_TEMP.name: 0.0, + FPTemperaturesNames.P17_TEMP.name: 0.0, + FPTemperaturesNames.P7_TEMP.name: 0.0, + FPTemperaturesNames.P16_TEMP.name: 0.0, + FPTemperaturesNames.P46_TEMP.name: 0.0 + } - @publish(["fp_temperatures_timestamp", "fp_temperatures"]) + @publish(["msg_id_fp_temperature_data", "fp_temperatures", "fp_temperatures_timestamp"]) def _handler_temperature_sensors_sync(self, message,timestamp=0.0): """ Handles published FP temperature sensors message @param message: published FP temperature sensors data message @returns none """ - self.fp_temperatures[FPTemperaturesNames.P10_TEMP.name] = struct.unpack('f', bytearray( + self.fp_temperatures[FPTemperaturesNames.M3_TEMP.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_1:MsgFieldPositions.END_POS_FIELD_1]))[0] - self.fp_temperatures[FPTemperaturesNames.P19_TEMP.name] = struct.unpack('f', bytearray( + self.fp_temperatures[FPTemperaturesNames.P10_TEMP.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_2:MsgFieldPositions.END_POS_FIELD_2]))[0] - self.fp_temperatures[FPTemperaturesNames.M1_TEMP.name] = struct.unpack('f', bytearray( + self.fp_temperatures[FPTemperaturesNames.P19_TEMP.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_3:MsgFieldPositions.END_POS_FIELD_3]))[0] - self.fp_temperatures[FPTemperaturesNames.M3_TEMP.name] = struct.unpack('f', bytearray( + self.fp_temperatures[FPTemperaturesNames.P8_TEMP.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_4:MsgFieldPositions.END_POS_FIELD_4]))[0] - self.fp_temperatures[FPTemperaturesNames.P8_TEMP.name] = struct.unpack('f', bytearray( + self.fp_temperatures[FPTemperaturesNames.P13_TEMP.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_5:MsgFieldPositions.END_POS_FIELD_5]))[0] - self.fp_temperatures[FPTemperaturesNames.P13_TEMP.name] = struct.unpack('f', bytearray( + self.fp_temperatures[FPTemperaturesNames.P17_TEMP.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_6:MsgFieldPositions.END_POS_FIELD_6]))[0] - self.fp_temperatures[FPTemperaturesNames.P17_TEMP.name] = struct.unpack('f', bytearray( + self.fp_temperatures[FPTemperaturesNames.P7_TEMP.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_7:MsgFieldPositions.END_POS_FIELD_7]))[0] - self.fp_temperatures[FPTemperaturesNames.X1_TEMP.name] = struct.unpack('f', bytearray( + self.fp_temperatures[FPTemperaturesNames.P16_TEMP.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_8:MsgFieldPositions.END_POS_FIELD_8]))[0] - self.fp_temperatures[FPTemperaturesNames.X2_TEMP.name] = struct.unpack('f', bytearray( + self.fp_temperatures[FPTemperaturesNames.P46_TEMP.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_9:MsgFieldPositions.END_POS_FIELD_9]))[0] - self.fp_temperatures[FPTemperaturesNames.X3_TEMP.name] = struct.unpack('f', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_10:MsgFieldPositions.END_POS_FIELD_10]))[0] - - self.fp_temperatures[FPTemperaturesNames.X4_TEMP.name] = struct.unpack('f', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_11:MsgFieldPositions.END_POS_FIELD_11]))[0] - - self.fp_temperatures[FPTemperaturesNames.X4_TEMP.name] = struct.unpack('f', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_12:MsgFieldPositions.END_POS_FIELD_12]))[0] - - self.fp_temperatures[FPTemperaturesNames.X4_TEMP.name] = struct.unpack('f', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_13:MsgFieldPositions.END_POS_FIELD_13]))[0] - self.fp_temperature_sensors_timestamp = timestamp def cmd_temperatures_data_broadcast_interval_override(self, ms: int, reset: int = NO_RESET) -> int: @@ -174,11 +144,13 @@ index = integer_to_bytearray(sensor_index) payload = rst + value + index - if sensor_index <= FPTemperaturesNames.P19_TEMP.value: + # FP Conductivity Sensor Temperature Override + if FPTemperaturesNames.P10_TEMP.value <= sensor_index <= FPTemperaturesNames.P19_TEMP.value: message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_fp_ch_id, message_id=MsgIds.MSG_ID_FP_CONDUCTIVITY_TEMP_OVERRIDE_REQUEST.value, payload=payload) + # FP Flow Sensor Temperature Override elif FPTemperaturesNames.P7_TEMP.value <= sensor_index < FPTemperaturesNames.NUM_OF_TEMPERATURE_SENSORS.value: message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_fp_ch_id, message_id=MsgIds.MSG_ID_FP_FLOW_TEMP_OVERRIDE_REQUEST.value,