Index: tests/dg_heat_and_chemical_disinfect_test.py =================================================================== diff -u -rf0c77deb1d6f38f6bedb5ced326cdc85715fe15f -r696821d82f79006d71147ebda2d6fed290b8a500 --- tests/dg_heat_and_chemical_disinfect_test.py (.../dg_heat_and_chemical_disinfect_test.py) (revision f0c77deb1d6f38f6bedb5ced326cdc85715fe15f) +++ tests/dg_heat_and_chemical_disinfect_test.py (.../dg_heat_and_chemical_disinfect_test.py) (revision 696821d82f79006d71147ebda2d6fed290b8a500) @@ -3,45 +3,50 @@ import sys sys.path.append("..") from dialin.dg.dialysate_generator import DG -from dialin.dg.heat_disinfect import HeatDisinfectStates, CancellationModes -from dialin.dg.chemical_disinfect import ChemicalDisinfectStates, CancellationModes +from dialin.dg.heat_disinfect import HeatDisinfectStates, HeatCancellationModes, HeatDisinfectUIStates +from dialin.dg.chemical_disinfect import ChemicalDisinfectStates, ChemCancellationModes, ChemDisinfectUIStates from dialin.dg.drain_pump import DrainPumpStates from dialin.dg.thermistors import ThermistorsNames from dialin.dg.temperature_sensors import TemperatureSensorsNames from dialin.dg.dialysate_generator import DGOperationModes -from dialin.dg.valves import * +from dialin.hd.hemodialysis_device import HD from time import sleep def get_chemical_disinfect_mode_info(): + info = ('State, {}, Overall_elapsed_time, {}, State_elapsed_time, {}, Disinfect_elapsed_time, {}, ' - 'Cancellation_mode, {}, R1_level, {:5.3f}, R1_drift, {:5.3f}, R2_level, {:5.3f}, R2_drift, {:5.3f}, ' - 'Current_rinse_count, {}, Total_rinse_count, {}, ' + 'Cancellation_mode, {}, R1_level, {:5.3f}, R2_level, {:5.3f}, Current_rinse_count, {}, ' + 'Total_rinse_count, {}, UI_state, {}, ' .format(ChemicalDisinfectStates(dg.chemical_disinfect.chemical_disinfect_state).name, dg.chemical_disinfect.overall_elapsed_time, dg.chemical_disinfect.state_elapsed_time, - dg.chemical_disinfect.disinfect_elapsed_time, - CancellationModes(dg.chemical_disinfect.cancellation_mode).name, dg.chemical_disinfect.r1_level, - (dg.chemical_disinfect.r1_level - dg.load_cells.load_cell_A1), dg.chemical_disinfect.r2_level, - (dg.chemical_disinfect.r2_level - dg.load_cells.load_cell_B1), - dg.chemical_disinfect.current_post_rinse_count, dg.chemical_disinfect.target_post_rinse_count)) + dg.chemical_disinfect.chemical_disinfect_elapsed_time, + ChemCancellationModes(dg.chemical_disinfect.cancellation_mode).name, dg.chemical_disinfect.r1_level, + dg.chemical_disinfect.r2_level, dg.chemical_disinfect.current_post_rinse_count, + dg.chemical_disinfect.target_post_rinse_count, + ChemDisinfectUIStates(dg.chemical_disinfect.chemical_disinfect_ui_state).name)) return info def get_concentrate_pumps_info(): - pass - # TODO add concentrate pumps and the conductivity sensors information + info = ('Bicarb_tgt_speed, {:5.3f}, Bicarb_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.conductivity_sensors.conductivity_sensor_cpo, dg.conductivity_sensors.conductivity_sensor_cd1, + dg.conductivity_sensors.conductivity_sensor_cd2)) + return info + def get_heat_disinfect_mode_info(): info = ('State, {}, Overall_elapsed_time, {}, State_elapsed_time, {}, Disinfect_elapsed_time, {}, ' - 'Cancellation_mode, {}, R1_level, {:5.3f}, R1_drift, {:5.3f}, R2_level, {:5.3f}, R2_drift, {:5.3f} ' + 'R1_level, {:5.3f}, R2_level, {:5.3f}, Top_alarm, {}, UI_state, {} ' .format(HeatDisinfectStates(dg.heat_disinfect.heat_disinfect_state).name, dg.heat_disinfect.overall_elapsed_time, dg.heat_disinfect.state_elapsed_time, - dg.heat_disinfect.disinfect_elapsed_time, - CancellationModes(dg.heat_disinfect.cancellation_mode).name, dg.heat_disinfect.r1_level, - (dg.heat_disinfect.r1_level - dg.load_cells.load_cell_A1), dg.heat_disinfect.r2_level, - (dg.heat_disinfect.r2_level - dg.load_cells.load_cell_B1))) + dg.heat_disinfect.heat_disinfect_elapsed_time, dg.heat_disinfect.r1_level, + dg.heat_disinfect.r2_level, hd.alarms.alarm_top, + HeatDisinfectUIStates(dg.chemical_disinfect.chemical_disinfect_ui_state).name)) return info @@ -148,59 +153,82 @@ def run_dg(): counter = 1 + timer = 1 + sleep_time = 1 + run_number = 1 f = open("/home/fw/projects/dialin/tests/run_dg.log", "w") + + """ + Set the broadcast to the fastest for studying a phenomenon + dg.valves.cmd_valve_broadcast_interval_override(50) + sleep(0.25) + dg.pressures.cmd_pressure_broadcast_interval_override(50) + sleep(0.25) + dg.drain_pump.cmd_drain_pump_data_broadcast_interval_override(50) + sleep(0.25) + dg.ro_pump.cmd_ro_pump_data_broadcast_interval_override(50) + sleep(0.25) + """ + dg.hd_proxy.cmd_start_stop_dg() sleep(0.1) - dg.hd_proxy.cmd_switch_reservoirs(reservoirID=0) - sleep(0.1) try: while True: dg_run = get_dg_run_info() + temperature = get_temperature_sensors_info() + heaters = get_heaters_info() load_cell = get_load_cells_info() drain = get_drain_states_info() ro = get_ro_info() valves = get_dg_valves_states() - var = str(counter) + ', ' + dg_run + load_cell + drain + ro + valves + '\r' + var = str(run_number) + ', ' + str(timer) + ', ' + dg_run + temperature + heaters + load_cell + drain + \ + ro + valves + '\r' print(var) f.write(var) - if DGOperationModes(dg.dg_operation_mode).name == DGOperationModes.DG_OP_MODE_RECIRCULATE.name and\ - dg.dg_operation_sub_mode == 2: + tpo = dg.temperature_sensors.temperature_sensors[TemperatureSensorsNames.OUTLET_PRIMARY_HEATER.name] - if counter == 1: - dg.valves.cmd_valve_override(VDrVRcStates.VALVE_STATE_RECIRC_C_TO_NC.value, dg.valves.VALVE_DRAIN) + if run_number > 3 and dg.dg_operation_sub_mode == 2: + dg.hd_proxy.cmd_start_stop_dg(start=False) + f.close() + break - if counter == 5: - dg.valves.cmd_valve_override(VDrVRcStates.VALVE_STATE_DRAIN_C_TO_NO.value, dg.valves.VALVE_DRAIN) - dg.valves.cmd_valve_override(VPiVSPVBfVRD1VRD2States.VALVE_STATE_OPEN.value, - dg.valves.VALVE_RESERVOIR_DRAIN_1) + elif DGOperationModes(dg.dg_operation_mode).name == DGOperationModes.DG_OP_MODE_RECIRCULATE.name and\ + dg.dg_operation_sub_mode == 2 and counter == 1: - if counter == 6: + if timer == 1: + dg.hd_proxy.cmd_switch_reservoirs(reservoirID=1) + timer += 1 - dg.drain_pump.cmd_drain_pump_speed_set_point_override(2100) + if timer > ((1/sleep_time) * 1): + timer = 1 + counter += 1 - counter += 1 - - """" - if DGOperationModes(dg.dg_operation_mode).name == DGOperationModes.DG_OP_MODE_RECIRCULATE.name and\ + elif DGOperationModes(dg.dg_operation_mode).name == DGOperationModes.DG_OP_MODE_RECIRCULATE.name and\ dg.dg_operation_sub_mode == 2 and counter == 2: - dg.hd_proxy.cmd_fill(volume=1700) + dg.hd_proxy.cmd_drain(tare_load_cell=True) counter += 1 - sleep(0.15) + timer = 1 - if DGOperationModes(dg.dg_operation_mode).name == DGOperationModes.DG_OP_MODE_RECIRCULATE.name and\ - dg.dg_operation_sub_mode == 2 and counter == 3: - #dg.hd_proxy.cmd_switch_reservoirs(reservoirID=0) - dg.hd_proxy.cmd_drain(volume=50) - counter += 1 - sleep(0.15) - """ - sleep(1) + elif DGOperationModes(dg.dg_operation_mode).name == DGOperationModes.DG_OP_MODE_RECIRCULATE.name and\ + dg.dg_operation_sub_mode == 2 and counter == 3: #and tpo > 39.0: + timer += 1 + if timer > 4: + dg.hd_proxy.cmd_fill(volume=1700) + counter += 1 + + elif DGOperationModes(dg.dg_operation_mode).name == DGOperationModes.DG_OP_MODE_RECIRCULATE.name and\ + dg.dg_operation_sub_mode == 2 and counter == 4: + counter = 1 + run_number += 1 + + sleep(sleep_time) + except KeyboardInterrupt: dg.hd_proxy.cmd_start_stop_dg(start=False) f.close() @@ -215,7 +243,7 @@ try: while True: - disinfect = get_dg_run_info() + disinfect = get_heat_disinfect_mode_info() drain = get_drain_states_info() load_cell = get_load_cells_info() valves = get_dg_valves_states() @@ -261,25 +289,24 @@ disinfect = get_chemical_disinfect_mode_info() drain = get_drain_states_info() load_cell = get_load_cells_info() + conc = get_concentrate_pumps_info() valves = get_dg_valves_states() ro = get_ro_info() temp = get_temperature_sensors_info() heaters = get_heaters_info() fans = get_fans_info() - var = disinfect + load_cell + drain + ro + temp + heaters + fans + valves + '\r' + var = disinfect + load_cell + conc + drain + ro + temp + heaters + fans + valves + '\r' print(var) f.write(var) sleep(1) # If the mode came back to standby or standby solo if dg.dg_operation_mode == 3 or dg.dg_operation_mode == 4: - # If it is the first call, stop heat disinfect - if complete_counter == 1: - dg.hd_proxy.cmd_start_stop_dg_chemical_disinfect(start=False) + # Write a few more complete states to make sure the complete state items are recorded - elif complete_counter == 3: + if complete_counter == 3: #pass f.close() break @@ -291,16 +318,33 @@ f.close() +def cmd_set_disinfect_ui_screen(): + + hd = HD() + sleep(0.5) + hd.ui.cmd_ui_set_standby_submode_to_disinfect() + + while True: + print(hd.ui.disinfects_hd_submode, hd.ui.disinfects_dg_mode) + sleep(1) + + if __name__ == "__main__": dg = DG(log_level='DEBUG') dg.cmd_log_in_to_dg() sleep(1) + hd = HD(log_level='DEBUG') + hd.cmd_log_in_to_hd() + sleep(1) - #run_heat_disinfect() + run_heat_disinfect() #run_chemical_disinfect() - run_dg() + #run_dg() + #cmd_set_disinfect_ui_screen() + +