Index: tests/dg_heat_disinfect_test.py =================================================================== diff -u -r8b1cfa3f0a1be1130d7ffd5761df7c0a1c3a5164 -r46d493e1025a7262f51e227319fc2a60b89bbe54 --- tests/dg_heat_disinfect_test.py (.../dg_heat_disinfect_test.py) (revision 8b1cfa3f0a1be1130d7ffd5761df7c0a1c3a5164) +++ tests/dg_heat_disinfect_test.py (.../dg_heat_disinfect_test.py) (revision 46d493e1025a7262f51e227319fc2a60b89bbe54) @@ -5,11 +5,8 @@ from dialin.dg.dialysate_generator import DG from dialin.hd.hemodialysis_device import HD from dialin.dg.hd_proxy import DGHDProxy -from dialin.dg.heat_disinfect import HeatDisinfectStates +from dialin.dg.heat_disinfect import HeatDisinfectStates, CancellationModes from dialin.dg.drain_pump import DrainPumpStates -from dialin.dg.ro_pump import ROPumpStates -from dialin.dg.thermistors import Thermistors -from dialin.dg.uv_reactors import ReactorsStates from dialin.dg.thermistors import ThermistorsNames from dialin.dg.temperature_sensors import TemperatureSensorsNames from time import sleep @@ -41,9 +38,14 @@ def get_heat_disinfect_mode_info(): - info = ('State, {}, Overall_time, {}, State_elapsed_time, {}, ' - .format(HeatDisinfectStates(dg.heat_disinfect.current_state).name, dg.heat_disinfect.overall_elapsed_time, - dg.heat_disinfect.state_elapsed_time)) + 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} ' + .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))) return info @@ -66,49 +68,69 @@ def get_drain_states_info(): - info = ('Drain, {}, DAC, {}, PRd, {:5.3f}, PDr, {:5.3f} '. + info = ('Drain, {}, DAC, {}, RPM, {}, PRd, {:5.3f}, PDr, {:5.3f}, '. format(DrainPumpStates(dg.drain_pump.drain_pump_state).name, - dg.drain_pump.dac_value, dg.pressures.drain_pump_inlet_pressure, dg.pressures.drain_pump_outlet_pressure)) + dg.drain_pump.dac_value, dg.drain_pump.current_drain_pump_rpm, + dg.pressures.drain_pump_inlet_pressure, + dg.pressures.drain_pump_outlet_pressure)) return info def get_load_cells_info(): - info = ('Primary_A1, {:5.3f}, Primary_B1, {:5.3f}, '.format(dg.load_cells.load_cell_A1, dg.load_cells.load_cell_B1)) + info = ('A1, {:5.3f}, A2, {:5.3f}, B1, {:5.3f}, B2, {:5.3f}, '. + format(dg.load_cells.load_cell_A1, dg.load_cells.load_cell_A2, dg.load_cells.load_cell_B1, + dg.load_cells.load_cell_B2)) return info def get_ro_info(): info = ('RO, {}, PPi, {:5.3f}, PPo, {:5.3f}, PWM, {:5.3f}, Flow, {:5.3f}, ' - .format(dg.ro_pump.ro_pump_state, dg.pressures.ro_pump_outlet_pressure, + .format(dg.ro_pump.ro_pump_state, dg.pressures.ro_pump_inlet_pressure, dg.pressures.ro_pump_outlet_pressure, dg.ro_pump.pwm_duty_cycle_pct, dg.ro_pump.measured_flow_rate_lpm)) return info def get_heaters_info(): - info = ('Pri_main_DC, {:5.3f}, Pri_small_DC, {:5.3f}, Trimmer_DC, {:5.3f}, '. + info = ('Pri_main_DC, {:5.3f}, Pri_small_DC, {:5.3f}, Pri_int_temp, {:5.3f}, Trimmer_DC, {:5.3f}, '. format(dg.heaters.main_primary_heater_duty_cycle, dg.heaters.small_primary_heater_duty_cycle, + dg.temperature_sensors.temperature_sensors[TemperatureSensorsNames.PRIMARY_HEATER_INTERNAL.name], dg.heaters.trimmer_heater_duty_cycle)) return info def get_temperature_sensors_info(): info = ('TPi, {:5.3f}, TPo, {:5.3f}, TD1, {:5.3f}, TD2, {:5.3f}, TRo, {:5.3f}, TDi, {:5.3f}, ' - .format(dg.temperature_sensors.temperature_sensors(TemperatureSensorsNames.INLET_PRIMARY_HEATER.name), - dg.temperature_sensors.temperature_sensors(TemperatureSensorsNames.OUTLET_PRIMARY_HEATER.name), - dg.temperature_sensors.temperature_sensors(TemperatureSensorsNames.CONDUCTIVITY_SENSOR_1.name), - dg.temperature_sensors.temperature_sensors(TemperatureSensorsNames.CONDUCTIVITY_SENSOR_2.name), - dg.temperature_sensors.temperature_sensors(TemperatureSensorsNames.OUTLET_DIALYSATE_REDUNDANT.name), - dg.temperature_sensors.temperature_sensors(TemperatureSensorsNames.INLET_DIALYSATE.name))) + .format(dg.temperature_sensors.temperature_sensors[TemperatureSensorsNames.INLET_PRIMARY_HEATER.name], + dg.temperature_sensors.temperature_sensors[TemperatureSensorsNames.OUTLET_PRIMARY_HEATER.name], + dg.temperature_sensors.temperature_sensors[TemperatureSensorsNames.CONDUCTIVITY_SENSOR_1.name], + dg.temperature_sensors.temperature_sensors[TemperatureSensorsNames.CONDUCTIVITY_SENSOR_2.name], + dg.temperature_sensors.temperature_sensors[TemperatureSensorsNames.OUTLET_DIALYSATE_REDUNDANT.name], + dg.temperature_sensors.temperature_sensors[TemperatureSensorsNames.INLET_DIALYSATE.name])) return info +def get_fans_info(): + + info = ('Target_fans_DC, {:5.3f}, Inlet1_RPM, {:5.3f}, Outlet1_RPM, {:5.3f}, ' + 'Inlet2_RPM, {:5.3f}, Outlet2_RPM, {:5.3f}, Inlet3_RPM, {:5.3f}, Outlet3_RPM, {:5.3f}, Board_temp, {:5.3f},' + ' FPGA_temp, {:5.3f}, Load_cell_A1_B1, {:5.3f}, Load_cell_A2_B2, {:5.3f}, ' + .format(dg.fans.target_duty_cycle, dg.fans.inlet_1_rpm, dg.fans.inlet_2_rpm, dg.fans.inlet_2_rpm, + dg.fans.outlet_2_rpm, dg.fans.inlet_3_rpm, dg.fans.outlet_3_rpm, + dg.thermistors.thermistors[ThermistorsNames.THERMISTOR_ONBOARD_NTC.name], + dg.temperature_sensors.temperature_sensors[TemperatureSensorsNames.FPGA_BOARD_SENSOR.name], + dg.temperature_sensors.temperature_sensors[TemperatureSensorsNames.LOAD_CELL_A1_B1.name], + dg.temperature_sensors.temperature_sensors[TemperatureSensorsNames.LOAD_CELL_A2_B2.name])) + return info + + def run_heat_disinfect(): + complete_counter = 1 f = open("Heat_disinfect.log", "w") dg.heat_disinfect.cmd_start_stop_heat_disinfect() try: @@ -121,13 +143,26 @@ 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 + valves + '\r' + var = disinfect + load_cell + drain + ro + temp + heaters + fans + valves + '\r' print(var) f.write(var) sleep(1) + # If the state is complete + if HeatDisinfectStates(dg.heat_disinfect.heat_disinfect_state).name == 'DG_HEAT_DISINFECT_STATE_COMPLETE': + # If it is the first call, stop heat disinfect + if complete_counter == 1: + dg.heat_disinfect.cmd_start_stop_heat_disinfect(start=False) + # Write a few more complete states to make sure the complete state items are recorded + elif complete_counter == 3: + f.close() + break + + complete_counter += 1 + except KeyboardInterrupt: dg.heat_disinfect.cmd_start_stop_heat_disinfect(start=False) f.close()