Index: leahi_dialin/dd/modules/temperature_sensors.py =================================================================== diff -u -recd89ae316cd2afa695dd4e93ac18b6004975efb -r71216b08590dd4b556c10b3384dddc26c8d29a99 --- leahi_dialin/dd/modules/temperature_sensors.py (.../temperature_sensors.py) (revision ecd89ae316cd2afa695dd4e93ac18b6004975efb) +++ leahi_dialin/dd/modules/temperature_sensors.py (.../temperature_sensors.py) (revision 71216b08590dd4b556c10b3384dddc26c8d29a99) @@ -5,7 +5,7 @@ # THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN # WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. # -# @file temperatures.py +# @file temperature_sensors.py # # @author (last) Micahel Garthwaite # @date (last) 28-Jul-2023 @@ -27,12 +27,16 @@ @unique class DDTemperaturesNames(DialinEnum): - INLET_HEAT_EXCHANGER = 0 - OUTLET_HEAT_EXCHANGER = 1 - HYDRAULICS_PRIMARY_HEATER = 2 - TRIMMER_HEATER = 3 - BOARD_TEMP = 4 - BARO_TEMP_SENSOR = 5 + D1_TEMP = 0 # Heat exchanger Inlet temperature sensor + X6_TEMP = 1 # Heat exchanger Outlet temperature sensor + D4_TEMP = 2 # Hydraulics primary heater temperature sensor + D50_TEMP = 3 # Trimmer heater temperature sensor + BARO_TEMP = 4 # Barometric temperature sensor + BRD_TEMP = 5 # DD board temperature sensor ( thermistor ) + D16_TEMP = 6 # Bicarb only conductivity sensor temp + D28_TEMP = 7 # Acid and Bicarb mix conductivity sensor - 1 temp + D30_TEMP = 8 # Acid and Bicarb mix conductivity sensor - 2 temp + D44_TEMP = 9 # Spent dialysate conductivity sensor temp class DDTemperatureSensors(AbstractSubSystem): @@ -45,12 +49,16 @@ self.logger = logger # Dictionary of the temperature sensors self.dd_temperatures_timestamp = 0.0 - self.dd_temperatures = {DDTemperaturesNames.INLET_HEAT_EXCHANGER.name: 0.0, - DDTemperaturesNames.OUTLET_HEAT_EXCHANGER.name: 0.0, - DDTemperaturesNames.HYDRAULICS_PRIMARY_HEATER.name: 0.0, - DDTemperaturesNames.TRIMMER_HEATER.name: 0.0, - DDTemperaturesNames.BOARD_TEMP.name: 0.0, - DDTemperaturesNames.BARO_TEMP_SENSOR.name: 0.0,} + self.dd_temperatures = {DDTemperaturesNames.D1_TEMP.name: 0.0, + DDTemperaturesNames.X6_TEMP.name: 0.0, + DDTemperaturesNames.D4_TEMP.name: 0.0, + DDTemperaturesNames.D50_TEMP.name: 0.0, + DDTemperaturesNames.BARO_TEMP.name: 0.0, + DDTemperaturesNames.BRD_TEMP.name: 0.0, + DDTemperaturesNames.D16_TEMP.name: 0.0, + DDTemperaturesNames.D28_TEMP.name: 0.0, + DDTemperaturesNames.D30_TEMP.name: 0.0, + DDTemperaturesNames.D44_TEMP.name: 0.0,} if self.can_interface is not None: channel_id = DenaliChannels.dd_sync_broadcast_ch_id @@ -61,31 +69,43 @@ @publish(["dd_temperatures_timestamp", "dd_temperatures"]) def _handler_temperature_sensors_sync(self, message,timestamp=0.0): """ - Handles published temperature sensors message + Handles published DD temperature sensors message - @param message: published temperature sensors data message + @param message: published DD temperature sensors data message @returns none """ - self.dd_temperatures[DDTemperaturesNames.INLET_HEAT_EXCHANGER.name] = struct.unpack('f', bytearray( + self.dd_temperatures[DDTemperaturesNames.D1_TEMP.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_1:MsgFieldPositions.END_POS_FIELD_1]))[0] - self.dd_temperatures[DDTemperaturesNames.OUTLET_HEAT_EXCHANGER.name] = struct.unpack('f', bytearray( + self.dd_temperatures[DDTemperaturesNames.X6_TEMP.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_2:MsgFieldPositions.END_POS_FIELD_2]))[0] - self.dd_temperatures[DDTemperaturesNames.HYDRAULICS_PRIMARY_HEATER.name] = struct.unpack('f', bytearray( + self.dd_temperatures[DDTemperaturesNames.D4_TEMP.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_3:MsgFieldPositions.END_POS_FIELD_3]))[0] - self.dd_temperatures[DDTemperaturesNames.TRIMMER_HEATER.name] = struct.unpack('f', bytearray( + self.dd_temperatures[DDTemperaturesNames.D50_TEMP.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_4:MsgFieldPositions.END_POS_FIELD_4]))[0] - self.dd_temperatures[DDTemperaturesNames.BOARD_TEMP.name] = struct.unpack('f', bytearray( + self.dd_temperatures[DDTemperaturesNames.BARO_TEMP.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_5:MsgFieldPositions.END_POS_FIELD_5]))[0] - self.dd_temperatures[DDTemperaturesNames.BARO_TEMP_SENSOR.name] = struct.unpack('f', bytearray( + self.dd_temperatures[DDTemperaturesNames.BRD_TEMP.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_6:MsgFieldPositions.END_POS_FIELD_6]))[0] - self.dg_temperatures_timestamp = timestamp + self.dd_temperatures[DDTemperaturesNames.D16_TEMP.name] = struct.unpack('f', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_7:MsgFieldPositions.END_POS_FIELD_7]))[0] + self.dd_temperatures[DDTemperaturesNames.D28_TEMP.name] = struct.unpack('f', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_8:MsgFieldPositions.END_POS_FIELD_8]))[0] + + self.dd_temperatures[DDTemperaturesNames.D30_TEMP.name] = struct.unpack('f', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_9:MsgFieldPositions.END_POS_FIELD_9]))[0] + + self.dd_temperatures[DDTemperaturesNames.D44_TEMP.name] = struct.unpack('f', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_10:MsgFieldPositions.END_POS_FIELD_10]))[0] + + self.dd_temperatures_timestamp = timestamp + def cmd_temperatures_data_broadcast_interval_override(self, ms: int, reset: int = NO_RESET) -> int: """ Constructs and sends broadcast time interval. @@ -159,10 +179,10 @@ def cmd_temperature_sensor_read_counter_override(self, sensor: int, counter: int, reset: int = NO_RESET) -> int: """ - Constructs and sends the temperature value override command + Constructs and sends the temperature read counter override command @param sensor: unsigned int - sensor ID - @param counter: float - temperature value to override sensor with + @param counter: int - read counter to override sensor with @param reset: integer - 1 to reset a previous override, 0 to override @return: 1 if successful, zero otherwise @@ -181,7 +201,7 @@ str_res = "reset back to normal" else: str_res = str(counter) + " celsius" - self.logger.debug("override conductivity sensor value for sensor " + str(sensor) + ": " + str_res) + self.logger.debug("override read counter for temperature sensor " + str(sensor) + ": " + str_res) # Send message received_message = self.can_interface.send(message) @@ -196,10 +216,9 @@ def cmd_baro_sensor_read_counter_override(self, counter: int, reset: int = NO_RESET) -> int: """ - Constructs and sends the temperature value override command + Constructs and sends the barometer sensor read counter override command - @param sensor: unsigned int - sensor ID - @param counter: float - temperature value to override sensor with + @param counter: int - barometer sensor read counter value to override sensor with @param reset: integer - 1 to reset a previous override, 0 to override @return: 1 if successful, zero otherwise @@ -232,10 +251,9 @@ def cmd_baro_sensor_crc_override(self, crc: int, reset: int = NO_RESET) -> int: """ - Constructs and sends the temperature value override command + Constructs and sends the barometer sensor CRC override command - @param sensor: unsigned int - sensor ID - @param counter: float - temperature value to override sensor with + @param crc: int - the crc value to override sensor with @param reset: integer - 1 to reset a previous override, 0 to override @return: 1 if successful, zero otherwise