Index: dialin/common/dg_defs.py =================================================================== diff -u -r00fe4fbb96d3993c4c8a95566e03090e8b30a5e4 -r09ddffcf1fa77d9fd8f24d4332da16321cd21159 --- dialin/common/dg_defs.py (.../dg_defs.py) (revision 00fe4fbb96d3993c4c8a95566e03090e8b30a5e4) +++ dialin/common/dg_defs.py (.../dg_defs.py) (revision 09ddffcf1fa77d9fd8f24d4332da16321cd21159) @@ -99,3 +99,60 @@ DG_HEAT_DISINFECT_STATE_CANCEL_WATER_PATH = 21 # Heat disinfect, cancel mode water path state DG_HEAT_DISINFECT_STATE_COMPLETE = 22 # Heat disinfect, complete state NUM_OF_DG_HEAT_DISINFECT_STATES = 23 # Number of heat disinfect mode states + + +@unique +class HeatDisinfectUIStates(DialinEnum): + + HEAT_DISINFECT_UI_STATE_NOT_RUNNING = 0 + HEAT_DISINFECT_UI_STATE_FLUSH_BEFORE_DISINFECT = 1 + HEAT_DISINFECT_UI_STATE_HEAT_UP_WATER = 2 + HEAT_DISINFECT_UI_STATE_DISINFECT_RESERVOIR_1 = 3 + HEAT_DISINFECT_UI_STATE_TRANSITION_HOT_WATER = 4 + HEAT_DISINFECT_UI_STATE_DISINFECT_RESERVOIR_2 = 5 + HEAT_DISINFECT_UI_STATE_COOL_DOWN_DEVICE = 6 + HEAT_DISINFECT_UI_STATE_FLUSH_AFTER_DISINFECT = 7 + HEAT_DISINFECT_UI_STATE_CANCEL_DISINFECT = 8 + HEAT_DISINFECT_UI_STATE_COMPLETE = 9 + + +@unique +class ChemicalDisinfectStates(DialinEnum): + DG_CHEM_DISINFECT_STATE_START = 0 + DG_CHEM_DISINFECT_STATE_DRAIN_R1 = 1 + DG_CHEM_DISINFECT_STATE_DRAIN_R2 = 2 + DG_CHEM_DISINFECT_STATE_FLUSH_DRAIN = 3 + DG_CHEM_DISINFECT_STATE_FLUSH_CIRCULATION = 4 + DG_CHEM_DISINFECT_STATE_FLUSH_R1_AND_R2 = 5 + DG_CHEM_DISINFECT_STATE_FLUSH_R2_AND_DRAIN_R1 = 6 + DG_CHEM_DISINFECT_STATE_FLUSH_DRAIN_R2 = 7 + DG_CHEM_DISINFECT_STATE_FLUSH_DRAIN_R1 = 8 + DG_CHEM_DISINFECT_STATE_PRIME_ACID_LINE = 9 + DG_CHEM_DISINFECT_STATE_FILL_WITH_WATER_AND_DISINFECTANT = 10 + DG_CHEM_DISINFECT_STATE_REMOVE_ACID_BOTTLE_FROM_UI = 11 + DG_CHEM_DISINFECT_STATE_DISINFECT_R1_TO_R2 = 12 + DG_CHEM_DISINFECT_STATE_FILL_R2_WITH_DISINFECTANT = 13 + DG_CHEM_DISINFECT_STATE_DISINFECT_R2_TO_R1 = 14 + DG_CHEM_DISINFECT_STATE_COOL_DOWN_HEATERS = 15 + DG_CHEM_DISINFECT_STATE_DISINFECTANT_DRAIN_R1 = 16 + DG_CHEM_DISINFECT_STATE_DISINFECTANT_DRAIN_R2 = 17 + DG_CHEM_DISINFECT_STATE_RINSE_R1_TO_R2 = 18 + DG_CHEM_DISINFECT_STATE_RINSE_R2_TO_R1_AND_DRAIN_R1 = 19 + DG_CHEM_DISINFECT_STATE_RINSE_R1_TO_R2_AND_DRAIN_R2 = 20 + DG_CHEM_DISINFECT_STATE_RINSE_CIRCULATION = 21 + DG_CHEM_DISINFECT_STATE_CANCEL_BASIC_PATH = 22 + DG_CHEM_DISINFECT_STATE_CANCEL_WATER_PATH = 23 + DG_CHEM_DISINFECT_STATE_COMPLETE = 24 + + +@unique +class ChemDisinfectUIStates(DialinEnum): + CHEM_DISINFECT_UI_STATE_NOT_RUNNING = 0 + CHEM_DISINFECT_UI_STATE_FLUSH_BEFORE_DISINFECT = 1 + CHEM_DISINFECT_UI_STATE_MIX_WATER_AND_ACID = 2 + CHEM_DISINFECT_UI_STATE_REMOVE_ACID = 3 + CHEM_DISINFECT_UI_STATE_DISINFECT_DEVICE = 4 + CHEM_DISINFECT_UI_STATE_FLUSH_AFTER_DISINFECT = 5 + CHEM_DISINFECT_UI_STATE_CANCEL_DISINFECT = 6 + CHEM_DISINFECT_UI_STATE_COMPLETE = 7 + Index: dialin/common/msg_ids.py =================================================================== diff -u -rd1895f75abcc170ffea2fbb50457e5c315d60995 -r09ddffcf1fa77d9fd8f24d4332da16321cd21159 --- dialin/common/msg_ids.py (.../msg_ids.py) (revision d1895f75abcc170ffea2fbb50457e5c315d60995) +++ dialin/common/msg_ids.py (.../msg_ids.py) (revision 09ddffcf1fa77d9fd8f24d4332da16321cd21159) @@ -176,8 +176,13 @@ MSG_ID_HD_SERIAL_NUMBER = 0X99 MSG_ID_HD_SET_STANDBY_DISINFECT_SUB_MODE_REQUEST = 0X9A MSG_ID_HD_SET_STANDBY_DISINFECT_SUB_MODE_RESPONSE = 0X9B - MSG_ID_HD_DISINFECTS_UI_STATE_READINGS_FROM_DG = 0X9C - MSG_ID_HD_DISINFECTS_UI_STATES_DATA = 0X9D + MSG_ID_HD_DISINFECTS_UI_STATE_READINGS = 0X9C + MSG_ID___AVAILABLE_1 = 0x9D + MSG_ID_HD_UI_VERSION_INFO_REQUEST = 0x9E + MSG_ID_HD_UI_VERSION_INFO_RESPONSE = 0x9F + MSG_ID_REQUEST_HD_USAGE_INFO = 0XA0 + MSG_ID_DG_SWITCHES_DATA = 0xA1 + MSG_ID_HD_SWITCHES_DATA = 0xA2 MSG_ID_CAN_ERROR_COUNT = 0X999 MSG_ID_TESTER_LOGIN_REQUEST = 0X8000 MSG_ID_DIAL_OUT_FLOW_SET_PT_OVERRIDE = 0X8001 @@ -266,6 +271,7 @@ MSG_ID_HD_ALARM_AUDIO_CURRENT_LG_OVERRIDE = 0X8055 MSG_ID_HD_ALARM_BACKUP_AUDIO_CURRENT_OVERRIDE = 0X8056 MSG_ID_HD_VALVES_CURRENT_OVERRIDE = 0X8057 + MSD_ID_HD_VALVES_POSITION_COUNT_OVERRIDE = 0x8058 MSG_ID_HD_SYRINGE_PUMP_STATUS_OVERRIDE = 0X8059 MSG_ID_HD_SYRINGE_PUMP_ENCODER_STATUS_OVERRIDE = 0X805A MSG_ID_HD_SYRINGE_PUMP_ADC_DAC_STATUS_OVERRIDE = 0X805B @@ -275,6 +281,8 @@ MSG_ID_HD_BLOOD_PRIME_VOLUME_OVERRIDE = 0X805F MSG_ID_HD_BUBBLE_SELF_TEST_REQUEST = 0X8060 MSG_ID_HD_BLOOD_PRIME_SAFETY_VOLUME_OVERRIDE = 0X8061 + MSG_ID_HD_SWITCHES_STATUS_OVERRIDE = 0X8062 + MSG_ID_HD_SWITCHES_PUBLISH_INTERVAL_OVERRIDE = 0X8063 MSG_ID_DG_TESTER_LOGIN_REQUEST = 0XA000 MSG_ID_DG_ALARM_STATE_OVERRIDE = 0XA001 MSG_ID_DG_WATCHDOG_TASK_CHECKIN_OVERRIDE = 0XA002 @@ -302,8 +310,8 @@ MSG_ID_DG_MONITORED_VOLTAGES_SEND_INTERVAL_OVERRIDE = 0XA01A MSG_ID_DG_MONITORED_VOLTAGES_OVERRIDE = 0XA01B MSG_ID_DRAIN_PUMP_SET_DELTA_PRESSURE_OVERRIDE = 0XA01C - MSG_ID___AVAILABLE_12 = 0XA01D - MSG_ID___AVAILABLE_13 = 0XA01E + MSG_ID_DG_SWITCHES_STATUS_OVERRIDE = 0XA01D + MSG_ID_DG_SWITCHES_PUBLISH_INTERVAL_OVERRIDE = 0XA01E MSG_ID___AVAILABLE_14 = 0XA01F MSG_ID___AVAILABLE_15 = 0XA020 MSG_ID___AVAILABLE_16 = 0XA021 Index: dialin/dg/hd_proxy.py =================================================================== diff -u -r89f9210ef5bf37a6812c4dc06aaa636dd47b9d72 -r09ddffcf1fa77d9fd8f24d4332da16321cd21159 --- dialin/dg/hd_proxy.py (.../hd_proxy.py) (revision 89f9210ef5bf37a6812c4dc06aaa636dd47b9d72) +++ dialin/dg/hd_proxy.py (.../hd_proxy.py) (revision 09ddffcf1fa77d9fd8f24d4332da16321cd21159) @@ -326,4 +326,4 @@ return received_message['message'][DenaliMessage.PAYLOAD_START_INDEX] else: self.logger.debug("Timeout!!!!") - return False \ No newline at end of file + return False Index: dialin/hd/ui_proxy.py =================================================================== diff -u -rf7927c4086e16a080e6ba1552e10f6d776c84e17 -r09ddffcf1fa77d9fd8f24d4332da16321cd21159 --- dialin/hd/ui_proxy.py (.../ui_proxy.py) (revision f7927c4086e16a080e6ba1552e10f6d776c84e17) +++ dialin/hd/ui_proxy.py (.../ui_proxy.py) (revision 09ddffcf1fa77d9fd8f24d4332da16321cd21159) @@ -105,16 +105,16 @@ class RinsebackUserActions(enum.Enum): - REQUESTED_USER_ACTION_RINSEBACK_CONFIRM_START = 0, - REQUESTED_USER_ACTION_RINSEBACK_INCREASE_RATE = 1, - REQUESTED_USER_ACTION_RINSEBACK_DECREASE_RATE = 2, - REQUESTED_USER_ACTION_RINSEBACK_PAUSE = 3, - REQUESTED_USER_ACTION_RINSEBACK_RESUME = 4, - REQUESTED_USER_ACTION_RINSEBACK_END = 5, - REQUESTED_USER_ACTION_RINSEBACK_ADDITIONAL = 6, - REQUESTED_USER_ACTION_RINSEBACK_CONFIRM_DISCONNECT = 7, - REQUESTED_USER_ACTION_RINSEBACK_END_TREATMENT = 8, - REQUESTED_USER_ACTION_RINSEBACK_BACK_TO_TREATMENT = 9, + REQUESTED_USER_ACTION_RINSEBACK_CONFIRM_START = 0 + REQUESTED_USER_ACTION_RINSEBACK_INCREASE_RATE = 1 + REQUESTED_USER_ACTION_RINSEBACK_DECREASE_RATE = 2 + REQUESTED_USER_ACTION_RINSEBACK_PAUSE = 3 + REQUESTED_USER_ACTION_RINSEBACK_RESUME = 4 + REQUESTED_USER_ACTION_RINSEBACK_END = 5 + REQUESTED_USER_ACTION_RINSEBACK_ADDITIONAL = 6 + REQUESTED_USER_ACTION_RINSEBACK_CONFIRM_DISCONNECT = 7 + REQUESTED_USER_ACTION_RINSEBACK_END_TREATMENT = 8 + REQUESTED_USER_ACTION_RINSEBACK_BACK_TO_TREATMENT = 9 NUM_OF_REQUESTED_RINSEBACK_USER_ACTIONS = 10 @classmethod @@ -123,10 +123,10 @@ class RecircUserActions(enum.Enum): - REQUESTED_USER_ACTION_TX_RECIRC_RECONNECT = 0, - REQUESTED_USER_ACTION_TX_RECIRC_CONFIRM_RECONNECT = 1, - REQUESTED_USER_ACTION_TX_RECIRC_RESUME_RC = 2, - REQUESTED_USER_ACTION_TX_RECIRC_END_TREATMENT = 3, + REQUESTED_USER_ACTION_TX_RECIRC_RECONNECT = 0 + REQUESTED_USER_ACTION_TX_RECIRC_CONFIRM_RECONNECT = 1 + REQUESTED_USER_ACTION_TX_RECIRC_RESUME_RC = 2 + REQUESTED_USER_ACTION_TX_RECIRC_END_TREATMENT = 3 NUM_OF_REQUESTED_TX_RECIRC_USER_ACTIONS = 4 @classmethod @@ -135,7 +135,7 @@ class TreatmentEndUserActions(enum.Enum): - REQUESTED_USER_ACTION_TX_END_RINSEBACK_START = 0, + REQUESTED_USER_ACTION_TX_END_RINSEBACK_START = 0 NUM_OF_REQUESTED_TX_END_USER_ACTIONS = 1 @classmethod @@ -145,7 +145,7 @@ def __init__(self, can_interface, logger: Logger): """ - @param can_interface: the denali can interface object + @param can_interface: the Denali CAN interface object """ super().__init__() @@ -1628,6 +1628,19 @@ self.logger.debug("Sending user start treatment request to HD.") self.can_interface.send(message, 0) + def cmd_ui_patient_disconnection_confirm(self) -> None: + """ + Constructs and sends a ui patient disconnection confirm message + + @return: none + """ + + message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_hd_ch_id, + message_id=MsgIds.MSG_ID_UI_PATIENT_DISCONNECTION_CONFIRM.value) + + self.logger.debug("Sending user patient disconnection confirm msg to HD.") + self.can_interface.send(message, 0) + def cmd_ui_disposable_removal_confirm(self) -> None: """ Constructs and sends a ui disposable removal confirm message Index: tests/dg_heat_and_chemical_disinfect_test.py =================================================================== diff -u -rf0c77deb1d6f38f6bedb5ced326cdc85715fe15f -r09ddffcf1fa77d9fd8f24d4332da16321cd21159 --- 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 09ddffcf1fa77d9fd8f24d4332da16321cd21159) @@ -3,45 +3,52 @@ 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.common.dg_defs import HeatStates, HeatDisinfectUIStates +from dialin.dg.heat_disinfect import HeatCancellationModes +from dialin.common.dg_defs import ChemicalDisinfectStates, ChemDisinfectUIStates +from dialin.dg.chemical_disinfect import ChemCancellationModes 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 +155,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 +245,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 +291,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 +320,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() + +