Index: dialin/common/msg_ids.py =================================================================== diff -u -r3fe5704990dd6a50e0954126687d70f2a3545e0c -rbaf6c6eb48eeab63238a8b44c188d2c37f63ecc0 --- dialin/common/msg_ids.py (.../msg_ids.py) (revision 3fe5704990dd6a50e0954126687d70f2a3545e0c) +++ dialin/common/msg_ids.py (.../msg_ids.py) (revision baf6c6eb48eeab63238a8b44c188d2c37f63ecc0) @@ -60,7 +60,7 @@ MSG_ID_HD_OP_MODE = 0X25 MSG_ID_STARTING_STOPPING_TREATMENT_CMD = 0X26 MSG_ID_DG_OP_MODE = 0X27 - MSG_ID_DG_RESERVOIR_DATA = 0X28 + MSG_ID_DG_RESERVOIRS_DATA = 0X28 MSG_ID_DG_SAMPLE_WATER_CMD = 0X29 MSG_ID_DG_VALVES_STATES = 0X2A MSG_ID_DG_START_STOP_TRIMMER_HEATER_CMD = 0X2B Index: dialin/dg/heaters.py =================================================================== diff -u -rbe5fbabd50dc31e5e5a5e4b99893fb8b92d016bd -rbaf6c6eb48eeab63238a8b44c188d2c37f63ecc0 --- dialin/dg/heaters.py (.../heaters.py) (revision be5fbabd50dc31e5e5a5e4b99893fb8b92d016bd) +++ dialin/dg/heaters.py (.../heaters.py) (revision baf6c6eb48eeab63238a8b44c188d2c37f63ecc0) @@ -66,6 +66,10 @@ self.trimmer_heater_state = 0 self.primary_efficiency = 0.0 + self.temporary_remove_flow = 0.0 + self.temporary_internal_target = 0.0 + self.temporary_target_ro_flow = 0.0 + if self.can_interface is not None: channel_id = DenaliChannels.dg_sync_broadcast_ch_id msg_id = MsgIds.MSG_ID_DG_HEATERS_DATA.value @@ -138,6 +142,13 @@ self.primary_efficiency = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_8:MsgFieldPositions.END_POS_FIELD_8]))[0] + self.temporary_remove_flow = struct.unpack('f', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_9:MsgFieldPositions.END_POS_FIELD_9]))[0] + self.temporary_internal_target = struct.unpack('f', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_10:MsgFieldPositions.END_POS_FIELD_10]))[0] + self.temporary_target_ro_flow = struct.unpack('f', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_11:MsgFieldPositions.END_POS_FIELD_11]))[0] + def cmd_start_stop_primary_heater(self, state: int = HeatersStartStop.STOP.name) -> None: """ Constructs and sends a start/stop primary heater command Index: dialin/dg/reservoirs.py =================================================================== diff -u -r3fe5704990dd6a50e0954126687d70f2a3545e0c -rbaf6c6eb48eeab63238a8b44c188d2c37f63ecc0 --- dialin/dg/reservoirs.py (.../reservoirs.py) (revision 3fe5704990dd6a50e0954126687d70f2a3545e0c) +++ dialin/dg/reservoirs.py (.../reservoirs.py) (revision baf6c6eb48eeab63238a8b44c188d2c37f63ecc0) @@ -47,14 +47,24 @@ if self.can_interface is not None: channel_id = DenaliChannels.dg_sync_broadcast_ch_id - msg_id = MsgIds.MSG_ID_DG_RESERVOIR_DATA.value + msg_id = MsgIds.MSG_ID_DG_RESERVOIRS_DATA.value self.can_interface.register_receiving_publication_function(channel_id, msg_id, self._handler_reservoirs_sync) self.active_reservoir = 0 self.fill_to_vol_ml = 0 self.drain_to_vol_ml = 0 + self.time_reservoir_cycle = 0 + self.time_reservoir_fill_2_switch = 0 + self.time_uf_decay = 0.0 + self.temp_uf_fill = 0.0 + self.temp_reservoir_use_actual = 0.0 + self.temp_reservoir_end_fill = 0.0 + self.temp_avg_fill = 0.0 + self.temp_last_fill = 0.0 + self.time_rsrvr_fill = 0.0 + def get_active_reservoir(self): """ Gets the active reservoir @@ -118,3 +128,21 @@ message['message'][MsgFieldPositions.START_POS_FIELD_2:MsgFieldPositions.END_POS_FIELD_2]))[0] self.drain_to_vol_ml = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_3:MsgFieldPositions.END_POS_FIELD_3]))[0] + self.time_reservoir_cycle = struct.unpack('i', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_4:MsgFieldPositions.END_POS_FIELD_4]))[0] + self.time_reservoir_fill_2_switch = struct.unpack('i', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_5:MsgFieldPositions.END_POS_FIELD_5]))[0] + self.time_uf_decay = struct.unpack('f', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_6:MsgFieldPositions.END_POS_FIELD_6]))[0] + self.temp_uf_fill = struct.unpack('f', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_7:MsgFieldPositions.END_POS_FIELD_7]))[0] + self.temp_reservoir_use_actual = struct.unpack('f', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_8:MsgFieldPositions.END_POS_FIELD_8]))[0] + self.temp_reservoir_end_fill = struct.unpack('f', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_9:MsgFieldPositions.END_POS_FIELD_9]))[0] + self.temp_avg_fill = struct.unpack('f', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_10:MsgFieldPositions.END_POS_FIELD_10]))[0] + self.temp_last_fill = struct.unpack('f', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_11:MsgFieldPositions.END_POS_FIELD_11]))[0] + self.time_rsrvr_fill= struct.unpack('f', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_12:MsgFieldPositions.END_POS_FIELD_12]))[0] Index: dialin/dg/temperatures.py =================================================================== diff -u -r1076daa37cc911c27a2a4ff789a8b91cb7de08ce -rbaf6c6eb48eeab63238a8b44c188d2c37f63ecc0 --- dialin/dg/temperatures.py (.../temperatures.py) (revision 1076daa37cc911c27a2a4ff789a8b91cb7de08ce) +++ dialin/dg/temperatures.py (.../temperatures.py) (revision baf6c6eb48eeab63238a8b44c188d2c37f63ecc0) @@ -28,23 +28,24 @@ @unique class DGTemperaturesNames(DialinEnum): INLET_PRIMARY_HEATER = 0 - OUTLET_PRIMARY_HEATER = 1 - CONDUCTIVITY_SENSOR_1 = 2 - CONDUCTIVITY_SENSOR_2 = 3 - OUTLET_DIALYSATE_REDUNDANT = 4 - INLET_DIALYSATE = 5 - PRIMARY_HEATER_THERMOCOUPLE = 6 - TRIMMER_HEATER_THERMOCOUPLE = 7 - PRIMARY_HEATER_COLD_JUNCTION = 8 - TRIMMER_HEATER_COLD_JUNCTION = 9 - PRIMARY_HEATER_INTERNAL = 10 - TRIMMER_HEATER_INTERNAL = 11 - FPGA_BOARD_SENSOR = 12 - LOAD_CELL_A1_B1 = 13 - LOAD_CELL_A2_B2 = 14 - INTERNAL_THDO_RTD = 15 - INTERNAL_TDI_RTD = 16 - INTERNAL_COND_TEMP_SENSOR = 17 + HEAT_DISINFECT = 1 + OUTLET_PRIMARY_HEATER = 2 + CONDUCTIVITY_SENSOR_1 = 3 + CONDUCTIVITY_SENSOR_2 = 4 + OUTLET_DIALYSATE_REDUNDANT = 5 + INLET_DIALYSATE = 6 + PRIMARY_HEATER_THERMOCOUPLE = 7 + TRIMMER_HEATER_THERMOCOUPLE = 8 + PRIMARY_HEATER_COLD_JUNCTION = 9 + TRIMMER_HEATER_COLD_JUNCTION = 10 + PRIMARY_HEATER_INTERNAL = 11 + TRIMMER_HEATER_INTERNAL = 12 + FPGA_BOARD_SENSOR = 13 + LOAD_CELL_A1_B1 = 14 + LOAD_CELL_A2_B2 = 15 + INTERNAL_THDO_RTD = 16 + INTERNAL_TDI_RTD = 17 + INTERNAL_COND_TEMP_SENSOR = 18 class TemperatureSensors(AbstractSubSystem): @@ -57,6 +58,7 @@ self.logger = logger # Dictionary of the temperature sensors self.temperatures = {DGTemperaturesNames.INLET_PRIMARY_HEATER.name: {}, + DGTemperaturesNames.HEAT_DISINFECT.name: {}, DGTemperaturesNames.OUTLET_PRIMARY_HEATER.name: {}, DGTemperaturesNames.CONDUCTIVITY_SENSOR_1.name: {}, DGTemperaturesNames.CONDUCTIVITY_SENSOR_2.name: {}, @@ -106,102 +108,81 @@ @param message: published temperature sensors data message @returns none """ - sensors_data = struct.unpack('f', bytearray( + self.temperatures[DGTemperaturesNames.INLET_PRIMARY_HEATER.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_1:MsgFieldPositions.END_POS_FIELD_1]))[0] - self.temperatures[DGTemperaturesNames.INLET_PRIMARY_HEATER.name] = sensors_data - sensors_data = struct.unpack('f', bytearray( + self.temperatures[DGTemperaturesNames.HEAT_DISINFECT.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_2:MsgFieldPositions.END_POS_FIELD_2]))[0] - self.temperatures[DGTemperaturesNames.OUTLET_PRIMARY_HEATER.name] = sensors_data - sensors_data = struct.unpack('f', bytearray( + self.temperatures[DGTemperaturesNames.OUTLET_PRIMARY_HEATER.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_3:MsgFieldPositions.END_POS_FIELD_3]))[0] - self.temperatures[DGTemperaturesNames.CONDUCTIVITY_SENSOR_1.name] = sensors_data - sensors_data = struct.unpack('f', bytearray( + self.temperatures[DGTemperaturesNames.CONDUCTIVITY_SENSOR_1.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_4:MsgFieldPositions.END_POS_FIELD_4]))[0] - self.temperatures[DGTemperaturesNames.CONDUCTIVITY_SENSOR_2.name] = sensors_data - sensors_data = struct.unpack('f', bytearray( + self.temperatures[DGTemperaturesNames.CONDUCTIVITY_SENSOR_2.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_5:MsgFieldPositions.END_POS_FIELD_5]))[0] - self.temperatures[DGTemperaturesNames.OUTLET_DIALYSATE_REDUNDANT.name] = sensors_data - sensors_data = struct.unpack('f', bytearray( + self.temperatures[DGTemperaturesNames.OUTLET_DIALYSATE_REDUNDANT.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_6:MsgFieldPositions.END_POS_FIELD_6]))[0] - self.temperatures[DGTemperaturesNames.INLET_DIALYSATE.name] = sensors_data - sensors_data = struct.unpack('f', bytearray( + self.temperatures[DGTemperaturesNames.INLET_DIALYSATE.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_7:MsgFieldPositions.END_POS_FIELD_7]))[0] - self.temperatures[DGTemperaturesNames.PRIMARY_HEATER_THERMOCOUPLE.name] = sensors_data - sensors_data = struct.unpack('f', bytearray( + self.temperatures[DGTemperaturesNames.PRIMARY_HEATER_THERMOCOUPLE.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_8:MsgFieldPositions.END_POS_FIELD_8]))[0] - self.temperatures[DGTemperaturesNames.TRIMMER_HEATER_THERMOCOUPLE.name] = sensors_data - sensors_data = struct.unpack('f', bytearray( + self.temperatures[DGTemperaturesNames.TRIMMER_HEATER_THERMOCOUPLE.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_9:MsgFieldPositions.END_POS_FIELD_9]))[0] - self.temperatures[DGTemperaturesNames.PRIMARY_HEATER_COLD_JUNCTION.name] = sensors_data - sensors_data = struct.unpack('f', bytearray( + self.temperatures[DGTemperaturesNames.PRIMARY_HEATER_COLD_JUNCTION.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_10:MsgFieldPositions.END_POS_FIELD_10]))[0] - self.temperatures[DGTemperaturesNames.TRIMMER_HEATER_COLD_JUNCTION.name] = sensors_data - sensors_data = struct.unpack('f', bytearray( + self.temperatures[DGTemperaturesNames.TRIMMER_HEATER_COLD_JUNCTION.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_11:MsgFieldPositions.END_POS_FIELD_11]))[0] - self.temperatures[DGTemperaturesNames.PRIMARY_HEATER_INTERNAL.name] = sensors_data - sensors_data = struct.unpack('f', bytearray( + self.temperatures[DGTemperaturesNames.PRIMARY_HEATER_INTERNAL.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_12:MsgFieldPositions.END_POS_FIELD_12]))[0] - self.temperatures[DGTemperaturesNames.TRIMMER_HEATER_INTERNAL.name] = sensors_data - sensors_data = struct.unpack('f', bytearray( + self.temperatures[DGTemperaturesNames.TRIMMER_HEATER_INTERNAL.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_13:MsgFieldPositions.END_POS_FIELD_13]))[0] - self.temperatures[DGTemperaturesNames.FPGA_BOARD_SENSOR.name] = sensors_data - sensors_data = struct.unpack('f', bytearray( + self.temperatures[DGTemperaturesNames.FPGA_BOARD_SENSOR.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_14:MsgFieldPositions.END_POS_FIELD_14]))[0] - self.temperatures[DGTemperaturesNames.LOAD_CELL_A1_B1.name] = sensors_data - sensors_data = struct.unpack('f', bytearray( + self.temperatures[DGTemperaturesNames.LOAD_CELL_A1_B1.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_15:MsgFieldPositions.END_POS_FIELD_15]))[0] - self.temperatures[DGTemperaturesNames.LOAD_CELL_A2_B2.name] = sensors_data - sensors_data = struct.unpack('f', bytearray( + self.temperatures[DGTemperaturesNames.LOAD_CELL_A2_B2.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_16:MsgFieldPositions.END_POS_FIELD_16]))[0] - self.temperatures[DGTemperaturesNames.INTERNAL_THDO_RTD.name] = sensors_data - sensors_data = struct.unpack('f', bytearray( + self.temperatures[DGTemperaturesNames.INTERNAL_THDO_RTD.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_17:MsgFieldPositions.END_POS_FIELD_17]))[0] - self.temperatures[DGTemperaturesNames.INTERNAL_TDI_RTD.name] = sensors_data - sensors_data = struct.unpack('f', bytearray( + self.temperatures[DGTemperaturesNames.INTERNAL_TDI_RTD.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_18:MsgFieldPositions.END_POS_FIELD_18]))[0] - self.temperatures[DGTemperaturesNames.INTERNAL_COND_TEMP_SENSOR.name] = sensors_data - sensors_data = struct.unpack('i', bytearray( + self.temperatures[DGTemperaturesNames.INTERNAL_COND_TEMP_SENSOR.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_19:MsgFieldPositions.END_POS_FIELD_19]))[0] - self.primary_raw_thermo_couple = sensors_data - sensors_data = struct.unpack('i', bytearray( + self.primary_raw_thermo_couple = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_20:MsgFieldPositions.END_POS_FIELD_20]))[0] - self.primary_raw_cold_junc = sensors_data - sensors_data = struct.unpack('i', bytearray( + self.primary_raw_cold_junc = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_21:MsgFieldPositions.END_POS_FIELD_21]))[0] - self.trimmer_raw_thermo_couple = sensors_data - sensors_data = struct.unpack('i', bytearray( + self.trimmer_raw_thermo_couple = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_22:MsgFieldPositions.END_POS_FIELD_22]))[0] - self.trimmer_raw_cold_junc = sensors_data - sensors_data = struct.unpack('i', bytearray( + self.trimmer_raw_cold_junc = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_23:MsgFieldPositions.END_POS_FIELD_23]))[0] - self.conductivity_1_raw = sensors_data - sensors_data = struct.unpack('i', bytearray( + self.conductivity_1_raw = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_24:MsgFieldPositions.END_POS_FIELD_24]))[0] - self.conductivity_2_raw = sensors_data + self.conductivity_2_raw = struct.unpack('i', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_25:MsgFieldPositions.END_POS_FIELD_25]))[0] + def cmd_temperatures_data_broadcast_interval_override(self, ms: int, reset: int = NO_RESET) -> int: """ Constructs and sends broadcast time interval. @@ -251,23 +232,24 @@ @details temperature sensor indexes: \n 0 = Primary Heater Inlet - 1 = Primary Heater Outlet - 2 = Conductivity Sensor 1 - 3 = Conductivity Sensor 2 - 4 = Dialysate (Redundant) - 5 = Dialysate - 6 = Primary Heater Thermocouple - 7 = Trimmer Heater Thermocouple - 8 = Primary Heater Cold Junction - 9 = Trimmer Heater Cold Junction - 10= Primary Heater Internal - 11= Trimmer Heater Internal - 12= FPGA board - 13= Load cell A1/B1 - 14= Load cell A2/B2 - 15= Internal THDO RTD - 16= Internal TDI RTD - 17= Internal conductivity temp sensor + 1 = Heat Disinfect + 2 = Primary Heater Outlet + 3 = Conductivity Sensor 1 + 4 = Conductivity Sensor 2 + 5 = Dialysate (Redundant) + 6 = Dialysate + 7 = Primary Heater Thermocouple + 8 = Trimmer Heater Thermocouple + 9 = Primary Heater Cold Junction + 10 = Trimmer Heater Cold Junction + 11 = Primary Heater Internal + 12 = Trimmer Heater Internal + 13 = FPGA board + 14 = Load cell A1/B1 + 15 = Load cell A2/B2 + 16 = Internal THDO RTD + 17 = Internal TDI RTD + 18 = Internal conductivity temp sensor """ rst = integer_to_bytearray(reset) value = float_to_bytearray(sensor_value) Index: tests/dg_heat_and_chemical_disinfect_test.py =================================================================== diff -u -r1076daa37cc911c27a2a4ff789a8b91cb7de08ce -rbaf6c6eb48eeab63238a8b44c188d2c37f63ecc0 --- tests/dg_heat_and_chemical_disinfect_test.py (.../dg_heat_and_chemical_disinfect_test.py) (revision 1076daa37cc911c27a2a4ff789a8b91cb7de08ce) +++ tests/dg_heat_and_chemical_disinfect_test.py (.../dg_heat_and_chemical_disinfect_test.py) (revision baf6c6eb48eeab63238a8b44c188d2c37f63ecc0) @@ -93,6 +93,18 @@ return info +def get_dg_reservoirs_info(): + info = ('Time_rsrvr_cycle, {}, Time_rsrvr_fill_2_switch, {}, Time_uf_decay, {:5.3f}, Temp_uf_fill, {:5.3f}, ' + 'Temp_rsrvr_use_actual, {:5.3f}, Temp_rsrvr_end_fill, {:5.3}, Temp_avg_fill, {:5.3f}, ' + 'Temp_last_fill, {:5.3f}, Time_rsrvr_fill, {:5.3f}, '.format(dg.reservoirs.time_reservoir_cycle, + dg.reservoirs.time_reservoir_fill_2_switch, + dg.reservoirs.time_uf_decay, dg.reservoirs.temp_uf_fill, + dg.reservoirs.temp_reservoir_use_actual, + dg.reservoirs.temp_reservoir_end_fill, dg.reservoirs.temp_avg_fill, + dg.reservoirs.temp_last_fill, dg.reservoirs.time_rsrvr_fill)) + return info + + def get_dg_run_info(): # info = ('DG_op_mode, {}, DG_sub_mode, {}, Op, {}, Sub, {}, '.format(DGOperationModes(dg.dg_operation_mode).name, # dg.dg_operation_sub_mode, @@ -149,21 +161,23 @@ def get_heaters_with_no_temp_info(): - info = ('Pri_main_DC, {:5.3f}, Pri_small_DC, {:5.3f}, Pri_state, {}, Trimmer_DC, {:5.3f}, ' + info = ('Pri_main_DC, {:5.3f}, Pri_state, {}, Trimmer_DC, {:5.3f}, Trim_state, {}, ' 'Primary_target_temp, {:5.3f}, Trimmer_target_temp, {:5.3f}, '. - format(dg.heaters.main_primary_heater_duty_cycle, dg.heaters.small_primary_heater_duty_cycle, - dg.heaters.primary_heater_state, dg.heaters.trimmer_heater_duty_cycle, + format(dg.heaters.main_primary_heater_duty_cycle, dg.heaters.primary_heater_state, + dg.heaters.trimmer_heater_duty_cycle, dg.heaters.trimmer_heater_state, dg.heaters.primary_heaters_target_temperature, dg.heaters.trimmer_heater_target_temperature)) return info def get_heaters_info(): - info = ('Pri_main_DC, {:5.3f}, Pri_small_DC, {:5.3f}, Pri_state, {}, Trimmer_DC, {:5.3f}, ' - 'Primary_target_temp, {:5.3f}, Trimmer_target_temp, {:5.3f}, Primary_eff, {:5.3f}, '. - format(dg.heaters.main_primary_heater_duty_cycle, dg.heaters.small_primary_heater_duty_cycle, - dg.heaters.primary_heater_state, dg.heaters.trimmer_heater_duty_cycle, + info = ('Pri_main_DC, {:5.3f}, Pri_state, {}, Trimmer_DC, {:5.3f}, Trimmer_state, {}, ' + 'Primary_target_temp, {:5.3f}, Trimmer_target_temp, {:5.3f}, Primary_eff, {:5.3f}, Dia_flow, {:5.3f}, ' + 'Interim_int_temp, {:5.3f}, Heater_RO_flow, {:5.3f}, '. + format(dg.heaters.main_primary_heater_duty_cycle, dg.heaters.primary_heater_state, + dg.heaters.trimmer_heater_duty_cycle, dg.heaters.trimmer_heater_state, dg.heaters.primary_heaters_target_temperature, dg.heaters.trimmer_heater_target_temperature, - dg.heaters.primary_efficiency)) + dg.heaters.primary_efficiency, dg.heaters.temporary_remove_flow, + dg.heaters.temporary_internal_target, dg.heaters.temporary_target_ro_flow)) return info @@ -212,6 +226,19 @@ return info +def get_concentrate_pumps_info(): + + info = ('Bicarb_tgt_speed, {:5.3f}, Bicarb_speed, {:5.3f}, Acid_tgt_speed, {:5.3f}, Acid_speed, {:5.3f}, ' + 'CPo, {:5.3f}, CD1, {:5.3f}, CD2, {:5.3f}, ' + .format(dg.concentrate_pumps.concentrate_pump_cp2_current_set_speed, + dg.concentrate_pumps.concentrate_pump_cp2_measured_speed, + dg.concentrate_pumps.concentrate_pump_cp1_current_set_speed, + dg.concentrate_pumps.concentrate_pump_cp1_measured_speed, + dg.conductivity_sensors.conductivity_sensor_cpo, dg.conductivity_sensors.conductivity_sensor_cd1, + dg.conductivity_sensors.conductivity_sensor_cd2)) + return info + + def cmd_test_heaters(): f = open("/home/fw/projects/dialin/tests/test_heaters.log", "w") @@ -451,6 +478,7 @@ while True: hd_run = get_hd_run_info() hd_rsrvrs = get_hd_reservoirs_info() + dg_rsrvrs = get_dg_reservoirs_info() dg_run = get_dg_run_info() drain = get_drain_states_info() load_cell = get_load_cells_info() @@ -459,9 +487,10 @@ temp = get_temperature_sensors_info() heaters = get_heaters_info() dg_fans = get_dg_fans_info() + conc_pumps = get_concentrate_pumps_info() - var = str(datetime.now()) + ', ' + hd_run + dg_run + hd_rsrvrs + load_cell + drain + ro + temp + heaters + \ - dg_fans + valves + '\r' + var = str(datetime.now()) + ', ' + hd_run + dg_run + hd_rsrvrs + dg_rsrvrs + load_cell + drain + ro + \ + temp + heaters + conc_pumps + dg_fans + valves + '\r' print(var) f.write(var) @@ -588,7 +617,7 @@ hd.cmd_log_in_to_hd() sleep(1) - run_heat_disinfect() + # run_heat_disinfect() # run_chemical_disinfect() @@ -600,9 +629,9 @@ # cmd_test_heaters() - # collect_treatment_data() + collect_treatment_data() - #collect_hd_treatment() + # collect_hd_treatment()