Index: dialin/hd/reservoirs.py =================================================================== diff -u -r3fe5704990dd6a50e0954126687d70f2a3545e0c -r279cdc88191518755a25d970a55175c5cb03dda8 --- dialin/hd/reservoirs.py (.../reservoirs.py) (revision 3fe5704990dd6a50e0954126687d70f2a3545e0c) +++ dialin/hd/reservoirs.py (.../reservoirs.py) (revision 279cdc88191518755a25d970a55175c5cb03dda8) @@ -40,8 +40,17 @@ self._handler_reservoirs_sync) self.reservoir_state = 0 + self.active_reservoir_uf_ml = 0.0 + self.active_reservoir_spent_vol_ml = 0.0 + self.dilution_level_pct = 0.0 + self.recirculation_level_pct = 0.0 + self.time_depletion = 0 + self.time_wait_to_fill = 0 - @publish(["reservoir_state"]) + self.temp_remove_fill_flow = 0.0 + + @publish(['reservoir_state', 'active_reservoir_uf_ml', 'active_reservoir_spent_vol_ml', 'dilution_level_pct', + 'recirculation_level_pct', 'time_depletion', 'time_wait_to_fill', 'temp_remove_fill_flow']) def _handler_reservoirs_sync(self, message): """ Handles published reservoir data messages. Reservoir data are captured @@ -51,6 +60,22 @@ @return: none """ - self._reservoir_state = struct.unpack('i', bytearray( + self.reservoir_state = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_1:MsgFieldPositions.END_POS_FIELD_1]))[0] + self.active_reservoir_uf_ml = struct.unpack('f', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_2:MsgFieldPositions.END_POS_FIELD_2]))[0] + self.active_reservoir_spent_vol_ml = struct.unpack('f', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_3:MsgFieldPositions.END_POS_FIELD_3]))[0] + self.dilution_level_pct = struct.unpack('f', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_4:MsgFieldPositions.END_POS_FIELD_4]))[0] + self.recirculation_level_pct = struct.unpack('f', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_5:MsgFieldPositions.END_POS_FIELD_5]))[0] + self.time_depletion = struct.unpack('i', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_6:MsgFieldPositions.END_POS_FIELD_6]))[0] + self.time_wait_to_fill = struct.unpack('i', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_7:MsgFieldPositions.END_POS_FIELD_7]))[0] + + self.temp_remove_fill_flow = struct.unpack('f', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_8:MsgFieldPositions.END_POS_FIELD_8]))[0] + Index: tests/dg_heat_and_chemical_disinfect_test.py =================================================================== diff -u -r3fe5704990dd6a50e0954126687d70f2a3545e0c -r279cdc88191518755a25d970a55175c5cb03dda8 --- tests/dg_heat_and_chemical_disinfect_test.py (.../dg_heat_and_chemical_disinfect_test.py) (revision 3fe5704990dd6a50e0954126687d70f2a3545e0c) +++ tests/dg_heat_and_chemical_disinfect_test.py (.../dg_heat_and_chemical_disinfect_test.py) (revision 279cdc88191518755a25d970a55175c5cb03dda8) @@ -73,13 +73,23 @@ def get_hd_run_info(): - info = ('HD_op_mode, {}, HD_sub_mode, {}, HD_rsrvr_state, {}, Active_rsrvr, {}, ' - .format(HDOpModes(hd.hd_operation_mode).name, hd.hd_operation_sub_mode, - HDReservoirStates(hd.hd_reservoirs.reservoir_state).name, - DGReservoirsNames(dg.reservoirs.active_reservoir).name)) + info = ('HD_op_mode, {}, HD_sub_mode, {}, Top_alarm, {}, ' + .format(HDOpModes(hd.hd_operation_mode).name, hd.hd_operation_sub_mode, hd.alarms.alarm_top)) return info +def get_hd_reservoirs_info(): + info = ('HD_rsrvr_state, {}, Active_rsrvr, {}, Active_rsrvr_uf, {:5.3f}, Active_rsrvr_vol_spent, {:5.3f}, ' + 'Dilution_level_pct, {:5.3f}, Recirc_level_pct, {:5.3f}, Time_depletion, {}, Time_wait_to_fill, {}, ' + 'Target_fill_flow, {:5.3f}, ' + .format(HDReservoirStates(hd.hd_reservoirs.reservoir_state).name, + DGReservoirsNames(dg.reservoirs.active_reservoir).name, hd.hd_reservoirs.active_reservoir_uf_ml, + hd.hd_reservoirs.active_reservoir_spent_vol_ml, hd.hd_reservoirs.dilution_level_pct, + hd.hd_reservoirs.recirculation_level_pct, hd.hd_reservoirs.time_depletion, + hd.hd_reservoirs.time_wait_to_fill, hd.hd_reservoirs.temp_remove_fill_flow)) + 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, @@ -127,10 +137,10 @@ def get_ro_info(): - info = ('RO, {}, PPi, {:5.3f}, PPo, {:5.3f}, PWM, {:5.3f}, Flow, {:5.3f}, Tgt_flow, {:5.3f}, ' + info = ('RO, {}, PPi, {:5.3f}, PPo, {:5.3f}, PWM, {:5.3f}, Flow, {:5.3f}, Tgt_flow, {:5.3f}, Dia_flow, {:5.3f}, ' .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, dg.ro_pump.target_flow_lpm)) + dg.ro_pump.measured_flow_rate_lpm, dg.ro_pump.target_flow_lpm, dg.dialysate_flow_sensor.flow_rate)) return info @@ -436,6 +446,7 @@ try: while True: hd_run = get_hd_run_info() + hd_rsrvrs = get_hd_reservoirs_info() dg_run = get_dg_run_info() drain = get_drain_states_info() load_cell = get_load_cells_info() @@ -445,8 +456,8 @@ heaters = get_heaters_info() dg_fans = get_dg_fans_info() - var = str(datetime.now()) + ', ' + hd_run + dg_run + load_cell + drain + ro + temp + heaters + dg_fans + \ - valves + '\r' + var = str(datetime.now()) + ', ' + hd_run + dg_run + hd_rsrvrs + load_cell + drain + ro + temp + heaters + \ + dg_fans + valves + '\r' print(var) f.write(var)