Index: dialin/dg/hd_proxy.py =================================================================== diff -u -r89f9210ef5bf37a6812c4dc06aaa636dd47b9d72 -r6b5600f056eff25cbb365fa6a5eefc4f5fad9360 --- dialin/dg/hd_proxy.py (.../hd_proxy.py) (revision 89f9210ef5bf37a6812c4dc06aaa636dd47b9d72) +++ dialin/dg/hd_proxy.py (.../hd_proxy.py) (revision 6b5600f056eff25cbb365fa6a5eefc4f5fad9360) @@ -216,9 +216,9 @@ # 0 is to stop payload = integer_to_bytearray(0) message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_dg_ch_id, - message_id=MsgIds.MSG_ID_DG_START_STOP_TRIMMER_HEATER_CMD.value, + message_id=MsgIds.MSG_ID_START_STOP_PRIMARY_HEATER.value, payload=payload) - self.logger.debug("Stopping heat disinfection process") + self.logger.debug("Stopping primary heater") self.can_interface.send(message, 0) def cmd_sample_water(self, cmd: int) -> None: Index: dialin/dg/heaters.py =================================================================== diff -u -r6e20f4690ce887c351d8c65546f93311e5df6ad1 -r6b5600f056eff25cbb365fa6a5eefc4f5fad9360 --- dialin/dg/heaters.py (.../heaters.py) (revision 6e20f4690ce887c351d8c65546f93311e5df6ad1) +++ dialin/dg/heaters.py (.../heaters.py) (revision 6b5600f056eff25cbb365fa6a5eefc4f5fad9360) @@ -33,6 +33,14 @@ START = 1 +@unique +class HeatersState(DialinEnum): + + HEATER_EXEC_STATE_NOT_RUNNING = 0 + HEATER_EXEC_STATE_RAMP_UP_TO_TARGET = 1 + HEATER_EXEC_STATE_CONTROL_TO_TARGET = 2 + + class Heaters(_AbstractSubSystem): """ @@ -55,6 +63,7 @@ self.trimmer_heater_duty_cycle = 0 self.primary_heaters_target_temperature = 0.0 self.trimmer_heater_target_temperature = 0.0 + self.primary_heater_state = 0 if self.can_interface is not None: channel_id = DenaliChannels.dg_sync_broadcast_ch_id @@ -102,7 +111,7 @@ return self.trimmer_heater_target_temperature @_publish(["main_primary_heater_duty_cycle", "small_primary_heater_duty_cycle", "trimmer_heater_duty_cycle", - "primary_heaters_target_temperature", "trimmer_heater_target_temperature"]) + "primary_heaters_target_temperature", "trimmer_heater_target_temperature", "primary_heater_state"]) def _handler_heaters_sync(self, message): """ Handles published heaters message @@ -120,12 +129,15 @@ message['message'][MsgFieldPositions.START_POS_FIELD_4:MsgFieldPositions.END_POS_FIELD_4]))[0] trimmer_heater_temp = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_5:MsgFieldPositions.END_POS_FIELD_5]))[0] + primary_heater_state = struct.unpack('i', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_6:MsgFieldPositions.END_POS_FIELD_6]))[0] self.main_primary_heater_duty_cycle = main_primary_heater_pwm self.small_primary_heater_duty_cycle = small_primary_heater_pwm self.trimmer_heater_duty_cycle = trimmer_heater_pwm self.primary_heaters_target_temperature = primary_heaters_temp self.trimmer_heater_target_temperature = trimmer_heater_temp + self.primary_heater_state = primary_heater_state def cmd_start_stop_primary_heater(self, state: int = HeatersStartStop.STOP.name) -> None: """ Index: dialin/dg/rtc.py =================================================================== diff -u -r179cd697f39a80fa34e7293a5f8a8700898ba4ce -r6b5600f056eff25cbb365fa6a5eefc4f5fad9360 --- dialin/dg/rtc.py (.../rtc.py) (revision 179cd697f39a80fa34e7293a5f8a8700898ba4ce) +++ dialin/dg/rtc.py (.../rtc.py) (revision 6b5600f056eff25cbb365fa6a5eefc4f5fad9360) @@ -13,11 +13,11 @@ # @date (original) 13-May-2021 # ############################################################################ -import ctypes +import struct from ..protocols.CAN import (DenaliMessage, DenaliChannels) from ..utils.conversions import integer_to_bytearray from ..utils.base import _AbstractSubSystem, _publish -from ..common.msg_defs import MsgIds +from ..common.msg_defs import MsgIds, MsgFieldPositions from logging import Logger @@ -38,6 +38,32 @@ self.can_interface = can_interface self.logger = logger + if self.can_interface is not None: + channel_id = DenaliChannels.dg_sync_broadcast_ch_id + msg_id = MsgIds.MSG_ID_RTC_EPOCH.value + self.can_interface.register_receiving_publication_function(channel_id, msg_id, self._handler_rtc_epoch) + self.rtc_epoch = 0 + + def get_rtc_epoch(self): + """ + Gets the rtc epoch + + @return: The rtc epoch + """ + return self.rtc_epoch + + @_publish(["rtc_epoch"]) + def _handler_rtc_epoch(self, message): + """ + Publishes the rtc time in epoch + + @param message: published rtc epoch message + @return: None + """ + epoch = struct.unpack('i', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_1:MsgFieldPositions.END_POS_FIELD_1]))[0] + self.rtc_epoch = epoch + def cmd_set_rtc_time_and_date(self, second: int, minute: int, hour: int, day: int, month: int, year: int) -> int: """ Sets the RTC time and date from the provided @@ -72,9 +98,9 @@ self.logger.debug(received_message) # str_res = str(flow) - self.logger.debug("Time and Date in rtc set to seconds: " + str(sec) + " minutes: " + str(min) + " hours: " + - str(hour) + " days: " + str(day) + " months: " + str(month) + " years: " + str(year) + - str(received_message['message'][DenaliMessage.PAYLOAD_START_INDEX])) + self.logger.debug("Time and Date in rtc set to seconds: " + str(sec) + " minutes: " + str(min) + " hours: " + + str(hour) + " days: " + str(day) + " months: " + str(month) + " years: " + str(year) + + str(received_message['message'][DenaliMessage.PAYLOAD_START_INDEX])) # response payload is OK or not OK return received_message['message'][DenaliMessage.PAYLOAD_START_INDEX] else: Index: dialin/hd/rtc.py =================================================================== diff -u -r2e392c92d55178f457a67423ba8c503a86dcf3c8 -r6b5600f056eff25cbb365fa6a5eefc4f5fad9360 --- dialin/hd/rtc.py (.../rtc.py) (revision 2e392c92d55178f457a67423ba8c503a86dcf3c8) +++ dialin/hd/rtc.py (.../rtc.py) (revision 6b5600f056eff25cbb365fa6a5eefc4f5fad9360) @@ -13,12 +13,12 @@ # @date (original) 02-Apr-2020 # ############################################################################ -import ctypes +import struct from ..protocols.CAN import (DenaliMessage, DenaliChannels) from ..utils.conversions import integer_to_bytearray from ..utils.base import _AbstractSubSystem, _publish -from ..common.msg_defs import MsgIds +from ..common.msg_defs import MsgIds, MsgFieldPositions from logging import Logger @@ -29,9 +29,6 @@ """ - START_POS_SET_PT = DenaliMessage.PAYLOAD_START_INDEX - END_POS_SET_PT = START_POS_SET_PT + 4 - def __init__(self, can_interface, logger: Logger): """ @@ -45,8 +42,7 @@ if self.can_interface is not None: channel_id = DenaliChannels.hd_sync_broadcast_ch_id msg_id = MsgIds.MSG_ID_RTC_EPOCH.value - self.can_interface.register_receiving_publication_function(channel_id, msg_id, - self._handler_rtc_epoch) + self.can_interface.register_receiving_publication_function(channel_id, msg_id, self._handler_rtc_epoch) self.rtc_epoch = 0 def get_rtc_epoch(self): @@ -65,10 +61,9 @@ @param message: published rtc epoch message @return: None """ - epoch = int.from_bytes(bytearray( - message['message'][self.START_POS_SET_PT:self.END_POS_SET_PT]), - byteorder=DenaliMessage.BYTE_ORDER) - self.rtc_epoch = ctypes.c_uint32(epoch) + epoch = struct.unpack('i', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_1:MsgFieldPositions.END_POS_FIELD_1]))[0] + self.rtc_epoch = epoch def cmd_set_rtc_time_and_date(self, second: int, minute: int, hour: int, day: int, month: int, year: int) -> int: """ Index: dialin/hd/valves.py =================================================================== diff -u -ra198f8e6ce34ced17036f7558f5d9819e784dfbd -r6b5600f056eff25cbb365fa6a5eefc4f5fad9360 --- dialin/hd/valves.py (.../valves.py) (revision a198f8e6ce34ced17036f7558f5d9819e784dfbd) +++ dialin/hd/valves.py (.../valves.py) (revision 6b5600f056eff25cbb365fa6a5eefc4f5fad9360) @@ -36,26 +36,26 @@ @unique class ValvesPositions(DialinEnum): - VALVE_POSITION_A_INSERT_EJECT = 1 - VALVE_POSITION_B_OPEN = 2 - VALVE_POSITION_C_CLOSE = 3 + VALVE_POSITION_A_INSERT_EJECT = 1 + VALVE_POSITION_B_OPEN = 2 + VALVE_POSITION_C_CLOSE = 3 @unique class ValvesStates(DialinEnum): - VALVE_STATE_WAIT_FOR_POST = 0 - VALVE_STATE_HOMING_NOT_STARTED = 1 - VALVE_STATE_HOMING_FIND_ENERGIZED_EDGE = 2 + VALVE_STATE_WAIT_FOR_POST = 0 + VALVE_STATE_HOMING_NOT_STARTED = 1 + VALVE_STATE_HOMING_FIND_ENERGIZED_EDGE = 2 VALVE_STATE_HOMING_FIND_DEENERGIZED_EDGE = 3 - VALVE_STATE_IDLE = 4 - VALVE_STATE_IN_TRANSITION = 5 - VALVE_STATE_IN_BYPASS_MODE = 6 + VALVE_STATE_IDLE = 4 + VALVE_STATE_IN_TRANSITION = 5 + VALVE_STATE_IN_BYPASS_MODE = 6 @unique class AirTrapState(DialinEnum): STATE_CLOSED = 0 - STATE_OPEN = 1 + STATE_OPEN = 1 class HDValves(_AbstractSubSystem): Index: tests/dg_heat_and_chemical_disinfect_test.py =================================================================== diff -u -r82f60d6de5414db96b1c44c3d6fdb12a56e39880 -r6b5600f056eff25cbb365fa6a5eefc4f5fad9360 --- tests/dg_heat_and_chemical_disinfect_test.py (.../dg_heat_and_chemical_disinfect_test.py) (revision 82f60d6de5414db96b1c44c3d6fdb12a56e39880) +++ tests/dg_heat_and_chemical_disinfect_test.py (.../dg_heat_and_chemical_disinfect_test.py) (revision 6b5600f056eff25cbb365fa6a5eefc4f5fad9360) @@ -1,8 +1,7 @@ -import sys -sys.path.append("..") from dialin.dg.dialysate_generator import DG +from dialin.hd.hemodialysis_device import HD from dialin.common.dg_defs import HeatDisinfectStates, HeatDisinfectUIStates from dialin.dg.heat_disinfect import HeatCancellationModes from dialin.common.dg_defs import ChemicalDisinfectStates, ChemDisinfectUIStates @@ -11,9 +10,10 @@ from dialin.dg.thermistors import ThermistorsNames from dialin.dg.temperature_sensors import TemperatureSensorsNames from dialin.dg.dialysate_generator import DGOperationModes -from dialin.hd.hemodialysis_device import HD from dialin.hd.temperatures import HDTemperaturesNames from time import sleep +import sys +sys.path.append("..") def get_chemical_disinfect_mode_info(): @@ -47,7 +47,7 @@ '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.heat_disinfect_elapsed_time, dg.heat_disinfect.r1_level, + dg.heat_disinfect.heat_disinfect_count_down_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 @@ -107,22 +107,30 @@ return info +def get_heaters_with_no_temp_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}, '. + 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, + 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_int_temp, {:5.3f}, Prim_CJ_temp, {:5.3f}, ' + info = ('Pri_main_DC, {:5.3f}, Pri_small_DC, {:5.3f}, Pri_state, {}, Pri_int_temp, {:5.3f}, Prim_CJ_temp, {:5.3f}, ' 'Prim_TC_temp, {:5.3f}, Trimmer_DC, {:5.3f}, Trim_int_temp, {:5.3f}, Trim_CJ_temp, {:5.3f}, ' - 'Trim_TC_temp, {:5.3f}, Prim_TC_raw, {:5.3f}, Prim_CJ_raw, {:5.3f}, Trimmer_TC_raw, {:5.3f}, ' - 'Trimmer_CJ_raw, {:5.3f}, Primary_target_temp, {:5.3f}, Trimmer_target_temp, {:5.3f}, '. + 'Trim_TC_temp, {:5.3f}, 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.temperature_sensors.temperature_sensors[TemperatureSensorsNames.PRIMARY_HEATER_INTERNAL.name], dg.temperature_sensors.temperature_sensors[TemperatureSensorsNames.PRIMARY_HEATER_COLD_JUNCTION.name], dg.temperature_sensors.temperature_sensors[TemperatureSensorsNames.PRIMARY_HEATER_THERMOCOUPLE.name], dg.heaters.trimmer_heater_duty_cycle, dg.temperature_sensors.temperature_sensors[TemperatureSensorsNames.TRIMMER_HEATER_INTERNAL.name], dg.temperature_sensors.temperature_sensors[TemperatureSensorsNames.TRIMMER_HEATER_COLD_JUNCTION.name], dg.temperature_sensors.temperature_sensors[TemperatureSensorsNames.TRIMMER_HEATER_THERMOCOUPLE.name], - dg.temperature_sensors.primary_raw_thermo_couple, dg.temperature_sensors.primary_raw_cold_junc, - dg.temperature_sensors.trimmer_raw_thermo_couple, dg.temperature_sensors.trimmer_raw_cold_junc, dg.heaters.primary_heaters_target_temperature, dg.heaters.trimmer_heater_target_temperature)) return info @@ -169,18 +177,93 @@ return info -def run_dg(): +def cmd_test_heaters(): + f = open("/home/fw/projects/dialin/tests/test_heaters.log", "w") + + dg.hd_proxy.cmd_start_stop_dg() + sleep(0.1) + + try: + while True: + + """ + command = input() + + # s for stop the heaters + if command == 's': + dg.hd_proxy.cmd_stop_primary_heater() + # e for exit the run and close everything + elif command == 'e': + dg.hd_proxy.cmd_start_stop_dg(start=False) + f.close() + # c for change the flow rate and keep going + elif command == 'c': + pass + #TODO figure out the right command for this + """ + + dg_run = get_dg_run_info() + temperature = get_temperature_sensors_info() + heaters = get_heaters_info() + ro = get_ro_info() + + var = dg_run + temperature + heaters + ro + '\r' + + print(var) + f.write(var) + sleep(1) + + except KeyboardInterrupt: + dg.hd_proxy.cmd_start_stop_dg(start=False) + f.close() + + +def run_heaters(): counter = 1 timer = 1 sleep_time = 1 run_number = 1 + f = open("/home/fw/projects/dialin/tests/run_heaters.log", "w") + + dg.hd_proxy.cmd_start_stop_dg() + sleep(0.1) + + try: + while True: + try: + dg_run = get_dg_run_info() + temperature = get_temperature_sensors_info() + heaters = get_heaters_info() + ro = get_ro_info() + + var = str(run_number) + ', ' + str(timer) + ', ' + dg_run + temperature + heaters + ro + '\r' + + print(var) + f.write(var) + sleep(sleep_time) + + except KeyboardInterrupt: + dg.hd_proxy.cmd_stop_primary_heater() + + except KeyboardInterrupt: + dg.hd_proxy.cmd_start_stop_dg(start=False) + f.close() + + +def run_dg(): + + counter = 1 + timer = 0.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.heaters.cmd_heaters_broadcast_interval_override(50) + #sleep(0.25) """ - 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) @@ -194,24 +277,23 @@ try: while True: - dg_run = get_dg_run_info() temperature = get_temperature_sensors_info() - heaters = get_heaters_info() + heaters = get_heaters_with_no_temp_info() load_cell = get_load_cells_info() drain = get_drain_states_info() ro = get_ro_info() + fans = get_dg_fans_info() valves = get_dg_valves_states() var = str(run_number) + ', ' + str(timer) + ', ' + dg_run + temperature + heaters + load_cell + drain + \ - ro + valves + '\r' + ro + fans + valves + '\r' print(var) f.write(var) tpo = dg.temperature_sensors.temperature_sensors[TemperatureSensorsNames.OUTLET_PRIMARY_HEATER.name] - - if run_number > 3 and dg.dg_operation_sub_mode == 2: + if run_number > 5 and dg.dg_operation_sub_mode == 2: dg.hd_proxy.cmd_start_stop_dg(start=False) f.close() break @@ -251,6 +333,7 @@ except KeyboardInterrupt: dg.hd_proxy.cmd_start_stop_dg(start=False) f.close() + pass def run_heat_disinfect(): @@ -358,13 +441,20 @@ hd.cmd_log_in_to_hd() sleep(1) - run_heat_disinfect() + #run_heat_disinfect() #run_chemical_disinfect() - #run_dg() + run_dg() + #run_heaters() + #cmd_set_disinfect_ui_screen() + #cmd_test_heaters() + #dg.concentrate_pumps.cmd_concentrate_pump_state_change_request(0, 0) + #sleep(0.1) + #dg.concentrate_pumps.cmd_concentrate_pump_state_change_request(1, 0) + Index: tests/hd_valves_test.py =================================================================== diff -u -rcea384a65cd9f07a347924eb760c012f3520d874 -r6b5600f056eff25cbb365fa6a5eefc4f5fad9360 --- tests/hd_valves_test.py (.../hd_valves_test.py) (revision cea384a65cd9f07a347924eb760c012f3520d874) +++ tests/hd_valves_test.py (.../hd_valves_test.py) (revision 6b5600f056eff25cbb365fa6a5eefc4f5fad9360) @@ -22,18 +22,11 @@ from dialin.hd.valves import ValvesPositions from time import sleep -if __name__ == "__main__": - # Create an instance of the DG Class - hd = HD(log_level='DEBUG') - if hd.cmd_log_in_to_hd() == 0: - exit(1) +def cycle_valves(): + # valves.cmd_open_hd_air_trap_valve(AirTrapState.STATE_OPEN) + # sleep(2) - valves = hd.valves - - #valves.cmd_open_hd_air_trap_valve(AirTrapState.STATE_OPEN) - #sleep(2) - overall_counter = 0 sleep_time = 0.05 overall_time_seconds = 4 @@ -45,17 +38,17 @@ valves.cmd_hd_valves_broadcast_interval_override(100) sleep(3) - #valves.cmd_set_hd_valve_position(0, 2) - #sleep(3) + # valves.cmd_set_hd_valve_position(0, 2) + # sleep(3) valves.cmd_home_hd_valve(valve.value) sleep(3) - #valves.cmd_set_hd_valve_current_override(valve.value, 0.85, reset=1) - #sleep(3) + # valves.cmd_set_hd_valve_current_override(valve.value, 0.85, reset=1) + # sleep(3) - #valves.cmd_set_hd_valve_position_count_override(valve.value, 5000, reset=1) - #sleep(2) + # valves.cmd_set_hd_valve_position_count_override(valve.value, 5000, reset=1) + # sleep(2) f = open("Valves_Test_200.log", "w") @@ -65,7 +58,7 @@ overall_counter = 0 valves.cmd_set_hd_valve_position(valve.value, ValvesPositions.VALVE_POSITION_B_OPEN.value) - while overall_counter < (overall_time_seconds/sleep_time): + while overall_counter < (overall_time_seconds / sleep_time): sleep(sleep_time) status = ('ID, {}, Pos, {}, PosCnt, {}, Cmd, {}, State, {}, Current, {}, PosA, {}, PosB, {}, PosC, {} \r' @@ -90,34 +83,36 @@ sleep(sleep_time) print('done') - """ - print("Reset") - #valves.cmd_set_hd_valve_pwm(2, 50, 0) - sleep(2) - valves.cmd_set_hd_valve_position(2, 3) +def change_valves_position(): - counter = 0 - overall_counter = 0 - overall_time_seconds = 3 - while overall_counter < (overall_time_seconds/sleep_time): + valve = ValvesEnum.VDI.value + valves.cmd_home_hd_valve(valve) + sleep(0.25) - if counter >= 10: - #print("Valve, {}, State, {}, Curr_Pos_ID, {}, Curr_Pos_Cnt, {}, Next_Pos_Cnt, {}, " - # "Current, {}, Pos_C, {}, Pos_A, {}, Pos_B, {}" - # .format(valves.hd_valve_ID, valves.hd_valve_state, valves.hd_valve_curr_pos_ID, - # valves.hd_valve_curr_pos_cnt, valves.hd_valve_next_pos_cnt, valves.hd_valve_current, - # valves.hd_valves_pos_c, valves.hd_valves_pos_a, valves.hd_valves_pos_b)) - counter = 0 + valves.cmd_set_hd_valve_position(valve, ValvesPositions.VALVE_POSITION_B_OPEN.value) + sleep(0.05) + valves.cmd_set_hd_valve_position(valve, ValvesPositions.VALVE_POSITION_A_INSERT_EJECT.value) - print("Pos, {}, Cmd, {}, Curr, {}, PosA, {}, PosB, {}, PosC, {}, State, {}, PWM, {}".format(valves.hd_valve_fast_pos, - valves.hd_valves_fast_cmd, valves.hd_valve_fast_current, - valves.hd_valves_pos_a, valves.hd_valves_pos_b, - valves.hd_valves_pos_c, valves.hd_valve_state, - valves.hd_valves_pwm)) + while True: - counter = counter + 1 - overall_counter = overall_counter + 1 + print("Pos, {}, Cmd, {}, Curr, {}, PosA, {}, PosB, {}, PosC, {}, State, {}, PWM, {}" + .format(valves.hd_valve_fast_pos, valves.hd_valves_fast_cmd, valves.hd_valve_fast_current, + valves.hd_valves_pos_a, valves.hd_valves_pos_b, valves.hd_valves_pos_c, valves.hd_valve_state, + valves.hd_valves_pwm)) - sleep(sleep_time) - """"" \ No newline at end of file + sleep(1) + + +if __name__ == "__main__": + # Create an instance of the DG Class + hd = HD(log_level='DEBUG') + + if hd.cmd_log_in_to_hd() == 0: + exit(1) + + valves = hd.valves + + #cycle_valves() + change_valves_position() + Index: tests/peter/test_dg_records.py =================================================================== diff -u -r058f17a46729106be6475d96ad68b523f8f04ff4 -r6b5600f056eff25cbb365fa6a5eefc4f5fad9360 --- tests/peter/test_dg_records.py (.../test_dg_records.py) (revision 058f17a46729106be6475d96ad68b523f8f04ff4) +++ tests/peter/test_dg_records.py (.../test_dg_records.py) (revision 6b5600f056eff25cbb365fa6a5eefc4f5fad9360) @@ -207,10 +207,13 @@ if dg.cmd_log_in_to_dg(): dg.calibration_record.cmd_reset_dg_calibration_record() + sleep(0.25) print(dg.calibration_record.dg_calibration_record) #dg.scheduled_runs_record.cmd_reset_dg_calibration_record() - #dg.system_record.cmd_reset_dg_system_record() - #dg.service_record.cmd_reset_dg_service_record() + #sleep(0.25) + dg.system_record.cmd_reset_dg_system_record() + sleep(0.25) + dg.service_record.cmd_reset_dg_service_record() def test_dg_service_record(): @@ -265,8 +268,8 @@ if __name__ == "__main__": - #test_dg_reset_record() + test_dg_reset_record() #test_dg_calibration_record() # test_dg_service_record() - test_dg_system_record() + #test_dg_system_record() # test_dg_scheduled_runs_record() Index: tests/peter/test_hd_records.py =================================================================== diff -u -r5b95fe318aeec36597d8fbbdbba1d54b1d48f380 -r6b5600f056eff25cbb365fa6a5eefc4f5fad9360 --- tests/peter/test_hd_records.py (.../test_hd_records.py) (revision 5b95fe318aeec36597d8fbbdbba1d54b1d48f380) +++ tests/peter/test_hd_records.py (.../test_hd_records.py) (revision 6b5600f056eff25cbb365fa6a5eefc4f5fad9360) @@ -114,10 +114,10 @@ if __name__ == "__main__": - #test_hd_reset_record_record() + test_hd_reset_record_record() #test_hd_calibration_record() # test_hd_service_record() #test_hd_reset_system_record() - test_hd_system_record() + #test_hd_system_record() # test_crc() # test_hd_system_record() Index: tests/test_dg_records.py =================================================================== diff -u -r8cc6f4843c77fc7bfe358c9f752740919c25f65f -r6b5600f056eff25cbb365fa6a5eefc4f5fad9360 --- tests/test_dg_records.py (.../test_dg_records.py) (revision 8cc6f4843c77fc7bfe358c9f752740919c25f65f) +++ tests/test_dg_records.py (.../test_dg_records.py) (revision 6b5600f056eff25cbb365fa6a5eefc4f5fad9360) @@ -77,6 +77,7 @@ exit(1) sleep(2) + """ dg.calibration_record.cmd_request_dg_calibration_record() sleep(5) dg.calibration_record.cmd_set_dg_calibration_record(dg.calibration_record.dg_calibration_record) @@ -86,6 +87,8 @@ sleep(5) dg.calibration_record.cmd_set_dg_calibration_record(dg.calibration_record.dg_calibration_record) sleep(5) + """ + proces_ #process_calibration_record(read=True) #process_system_record(read=True) Index: tests/test_flush.py =================================================================== diff -u -r21a53e63bedeb01f5eb2a85130e6b6fc454f2f88 -r6b5600f056eff25cbb365fa6a5eefc4f5fad9360 --- tests/test_flush.py (.../test_flush.py) (revision 21a53e63bedeb01f5eb2a85130e6b6fc454f2f88) +++ tests/test_flush.py (.../test_flush.py) (revision 6b5600f056eff25cbb365fa6a5eefc4f5fad9360) @@ -2,17 +2,19 @@ import sys sys.path.append("..") from dialin.dg.dialysate_generator import DG +from dialin.hd.hemodialysis_device import HD from dialin.dg.drain_pump import DrainPumpStates from time import sleep def get_flush_mode_info(): - info = ('State, {}, Overall_elapsed_time, {}, State_elapsed_time, {}, Drain_vol, {:5.3f}, ' + info = ('State, {}, Overall_elapsed_time, {}, State_elapsed_time, {}, Drain_vol, {:5.3f}, Top_alarm, {}, ' .format(dg.flush.flush_state, dg.flush.overall_elapsed_time, dg.flush.state_elapsed_time, - dg.flush.flush_drain_line_volume_l)) + dg.flush.flush_drain_line_volume_l, hd.alarms.alarm_top)) return info + def get_concentrate_pumps_info(): info = ('Bicarb_tgt_speed, {:5.3f}, Bicarb_speed, {:5.3f}, CPo, {:5.3f}, CD1, {:5.3f}, CD2, {:5.3f}, ' @@ -108,7 +110,10 @@ if __name__ == "__main__": dg = DG(log_level='DEBUG') + hd = HD(log_level='DEBUG') dg.cmd_log_in_to_dg() sleep(1) + hd.cmd_log_in_to_hd() + sleep(1) run_flush_mode() Index: tests/test_hd_dg_fans.py =================================================================== diff -u -r82f60d6de5414db96b1c44c3d6fdb12a56e39880 -r6b5600f056eff25cbb365fa6a5eefc4f5fad9360 --- tests/test_hd_dg_fans.py (.../test_hd_dg_fans.py) (revision 82f60d6de5414db96b1c44c3d6fdb12a56e39880) +++ tests/test_hd_dg_fans.py (.../test_hd_dg_fans.py) (revision 6b5600f056eff25cbb365fa6a5eefc4f5fad9360) @@ -34,16 +34,16 @@ if hd.cmd_log_in_to_hd() == 0 or dg.cmd_log_in_to_dg() == 0: exit(1) - #hd.fans.cmd_dg_fan_rpm_override(FansNames.FAN_INLET_1.value, 4000) + #hd.fans.cmd_dg_fan_rpm_override(FansNames.FAN_INLET_1.value, 4000.0) #sleep(1) - #hd.fans.cmd_dg_fan_rpm_override(FansNames.FAN_INLET_1.value, 4000, reset=1) - hd.temperatures.cmd_hd_temperatures_value_override(HDTemperaturesNames.THERMISTOR_ONBOARD_NTC.value, 122.00) - sleep(1) - hd.temperatures.cmd_hd_temperatures_value_override(HDTemperaturesNames.THERMISTOR_ONBOARD_NTC.value, 90.00, reset=1) + hd.fans.cmd_dg_fan_rpm_override(FansNames.FAN_INLET_1.value, 4000, reset=1) + #hd.temperatures.cmd_hd_temperatures_value_override(HDTemperaturesNames.THERMISTOR_ONBOARD_NTC.value, 60.0) + #sleep(1) + #hd.temperatures.cmd_hd_temperatures_value_override(HDTemperaturesNames.THERMISTOR_ONBOARD_NTC.value, 90.00, reset=1) while True: fans = get_fans_info() switches = get_hd_switches_info() print(fans + switches) - sleep(1) \ No newline at end of file + sleep(1)