Index: leahi_dialin/dd/modules/heaters.py =================================================================== diff -u -rd089b54d2fde7f8c36acce41a47d7acee4ef5da6 -rda47fb6cd59dfe360546408c65e1ce152848d7a0 --- leahi_dialin/dd/modules/heaters.py (.../heaters.py) (revision d089b54d2fde7f8c36acce41a47d7acee4ef5da6) +++ leahi_dialin/dd/modules/heaters.py (.../heaters.py) (revision da47fb6cd59dfe360546408c65e1ce152848d7a0) @@ -53,7 +53,7 @@ dd_enum_repository.DDHeaterAttributes.HEAT_DUTY_CYCLE.name: 0.0, dd_enum_repository.DDHeaterAttributes.HEAT_TARGET_TEMP.name: 0.0, dd_enum_repository.DDHeaterAttributes.HEAT_STATE.name: 0, - dd_enum_repository.DDHeaterAttributes.DUTY_CYCLE_COUNT.name: 0.0, + dd_enum_repository.DDHeaterAttributes.FEED_FORWARD.name: 0.0, dd_enum_repository.DDHeaterAttributes.PWM_PERIOD.name: 0.0, dd_enum_repository.DDHeaterAttributes.ADJUSTED_TARGET_TEMP.name: 0.0, dd_enum_repository.DDHeaterAttributes.TARGET_TEMP_TD.name: 0.0 @@ -62,7 +62,7 @@ dd_enum_repository.DDHeaterAttributes.HEAT_DUTY_CYCLE.name: 0.0, dd_enum_repository.DDHeaterAttributes.HEAT_TARGET_TEMP.name: 0.0, dd_enum_repository.DDHeaterAttributes.HEAT_STATE.name: 0, - dd_enum_repository.DDHeaterAttributes.DUTY_CYCLE_COUNT.name: None, # D45 Heater doesn't use this attribute + dd_enum_repository.DDHeaterAttributes.FEED_FORWARD.name: None, # D45 Heater doesn't use this attribute dd_enum_repository.DDHeaterAttributes.PWM_PERIOD.name: None, # D45 Heater doesn't use this attribute dd_enum_repository.DDHeaterAttributes.ADJUSTED_TARGET_TEMP.name: None, # D45 Heater doesn't use this attribute dd_enum_repository.DDHeaterAttributes.TARGET_TEMP_TD.name: None # D45 Heater doesn't use this attribute @@ -91,45 +91,36 @@ @param message: published DD heaters data message @returns none """ - self.dd_heaters[dd_enum_repository.DDHeaterNames.D5_HEAT.name][dd_enum_repository.DDHeaterAttributes.HEAT_DUTY_CYCLE.name] = ( - struct.unpack('f', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_1:MsgFieldPositions.END_POS_FIELD_1])))[0] - self.dd_heaters[dd_enum_repository.DDHeaterNames.D45_HEAT.name][dd_enum_repository.DDHeaterAttributes.HEAT_DUTY_CYCLE.name] = ( - struct.unpack('f', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_2:MsgFieldPositions.END_POS_FIELD_2])))[0] - self.dd_heaters[dd_enum_repository.DDHeaterNames.D5_HEAT.name][dd_enum_repository.DDHeaterAttributes.HEAT_TARGET_TEMP.name] = ( - struct.unpack('f', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_3:MsgFieldPositions.END_POS_FIELD_3])))[0] - self.dd_heaters[dd_enum_repository.DDHeaterNames.D45_HEAT.name][dd_enum_repository.DDHeaterAttributes.HEAT_TARGET_TEMP.name] = ( - struct.unpack('f', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_4:MsgFieldPositions.END_POS_FIELD_4])))[0] - self.dd_heaters[dd_enum_repository.DDHeaterNames.D5_HEAT.name][dd_enum_repository.DDHeaterAttributes.HEAT_STATE.name] = ( - struct.unpack('i', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_5:MsgFieldPositions.END_POS_FIELD_5])))[0] - self.dd_heaters[dd_enum_repository.DDHeaterNames.D45_HEAT.name][dd_enum_repository.DDHeaterAttributes.HEAT_STATE.name] = ( - struct.unpack('i', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_6:MsgFieldPositions.END_POS_FIELD_6])))[0] - self.dd_heaters[dd_enum_repository.DDHeaterNames.D5_HEAT.name][dd_enum_repository.DDHeaterAttributes.DUTY_CYCLE_COUNT.name] = ( - struct.unpack('f', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_7:MsgFieldPositions.END_POS_FIELD_7])))[0] - self.dd_heaters[dd_enum_repository.DDHeaterNames.D5_HEAT.name][dd_enum_repository.DDHeaterAttributes.PWM_PERIOD.name] = ( - struct.unpack('f', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_8:MsgFieldPositions.END_POS_FIELD_8])))[0] - self.dd_heaters[dd_enum_repository.DDHeaterNames.D5_HEAT.name][dd_enum_repository.DDHeaterAttributes.ADJUSTED_TARGET_TEMP.name] = ( - struct.unpack('f', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_9:MsgFieldPositions.END_POS_FIELD_9])))[0] - self.dd_heaters[dd_enum_repository.DDHeaterNames.D5_HEAT.name][dd_enum_repository.DDHeaterAttributes.TARGET_TEMP_TD.name] = ( - struct.unpack('f', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_10:MsgFieldPositions.END_POS_FIELD_10])))[0] + sensor_list =[] + sensor_list.append(['self.dd_heaters[dd_enum_repository.DDHeaterNames.D5_HEAT.name][dd_enum_repository.DDHeaterAttributes.HEAT_DUTY_CYCLE.name]', 'f']) + sensor_list.append(['self.dd_heaters[dd_enum_repository.DDHeaterNames.D45_HEAT.name][dd_enum_repository.DDHeaterAttributes.HEAT_DUTY_CYCLE.name]', 'f']) + sensor_list.append(['self.dd_heaters[dd_enum_repository.DDHeaterNames.D5_HEAT.name][dd_enum_repository.DDHeaterAttributes.HEAT_TARGET_TEMP.name]', 'f']) + sensor_list.append(['self.dd_heaters[dd_enum_repository.DDHeaterNames.D45_HEAT.name][dd_enum_repository.DDHeaterAttributes.HEAT_TARGET_TEMP.name]', 'f']) + sensor_list.append(['self.dd_heaters[dd_enum_repository.DDHeaterNames.D5_HEAT.name][dd_enum_repository.DDHeaterAttributes.HEAT_STATE.name]', 'i']) + sensor_list.append(['self.dd_heaters[dd_enum_repository.DDHeaterNames.D45_HEAT.name][dd_enum_repository.DDHeaterAttributes.HEAT_STATE.name]', 'i']) + sensor_list.append(['self.dd_heaters[dd_enum_repository.DDHeaterNames.D5_HEAT.name][dd_enum_repository.DDHeaterAttributes.FEED_FORWARD.name]', 'f']) + sensor_list.append(['self.dd_heaters[dd_enum_repository.DDHeaterNames.D5_HEAT.name][dd_enum_repository.DDHeaterAttributes.PWM_PERIOD.name]', 'f']) + sensor_list.append(['self.dd_heaters[dd_enum_repository.DDHeaterNames.D5_HEAT.name][dd_enum_repository.DDHeaterAttributes.ADJUSTED_TARGET_TEMP.name]', 'f']) + sensor_list.append(['self.dd_heaters[dd_enum_repository.DDHeaterNames.D5_HEAT.name][dd_enum_repository.DDHeaterAttributes.TARGET_TEMP_TD.name]', 'f']) + sensor_list.append(['self.dbg1', 'f']) + sensor_list.append(['self.dbg2', 'f']) + sensor_list.append(['self.dbg3', 'f']) + sensor_list.append(['self.dbg4', 'f']) + sensor_list.append(['self.dbg5', 'f']) + sensor_list.append(['self.dbg6', 'f']) + sensor_list.append(['self.dbg7', 'f']) + sensor_list.append(['self.dbg8', 'f']) + sensor_list.append(['self.dbg9', 'f']) - self.dbg1 = struct.unpack('f', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_11:MsgFieldPositions.END_POS_FIELD_11]))[0] - self.dbg2 = struct.unpack('f', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_12:MsgFieldPositions.END_POS_FIELD_12]))[0] - self.dbg3 = struct.unpack('f', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_13:MsgFieldPositions.END_POS_FIELD_13]))[0] - self.dbg4 = struct.unpack('f', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_14:MsgFieldPositions.END_POS_FIELD_14]))[0] - self.dbg5 = struct.unpack('f', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_15:MsgFieldPositions.END_POS_FIELD_15]))[0] - self.dbg6 = struct.unpack('f', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_16:MsgFieldPositions.END_POS_FIELD_16]))[0] - self.dbg7 = struct.unpack('f', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_17:MsgFieldPositions.END_POS_FIELD_17]))[0] - self.dbg8 = struct.unpack('f', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_18:MsgFieldPositions.END_POS_FIELD_18]))[0] - self.dbg9 = struct.unpack('f', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_19:MsgFieldPositions.END_POS_FIELD_19]))[0] + i = 1 + for sensor in sensor_list: + start_pos = eval(f'MsgFieldPositions.START_POS_FIELD_{i}') + end_pos = eval(f'MsgFieldPositions.END_POS_FIELD_{i}') + value = struct.unpack(sensor[1],bytearray(message['message'][start_pos:end_pos]))[0] + if 'nan' in str(value).lower(): + value = 0.0 + exec(f'{sensor[0]} = {value}') + i += 1 self.dd_heaters_timestamp = timestamp