def make_meters_hist(cls, readings_hist_lst, equip_dtime, equip_dtime_sec, atmo_temp): # group by equips and create list of records for meter_hist readings_hist_lst = sorted(readings_hist_lst, key=lambda r: r.meter_id) meters_recs_dict = { meter_id: list(recs) for meter_id, recs in itertools.groupby(readings_hist_lst, key=lambda r: r.meter_id) } meters_hist_lst = [] for m_id, recs in meters_recs_dict.items(): if not len(recs): logger.error( f'recs len =0 for m_id={m_id}, len(readings_hist_lst)={len(readings_hist_lst)}' ) temperature = mean([r.temperature for r in recs]) group_temp = None status_temp, status_atmo, status_group = cls.get_reading_statuses( m_id, temperature, atmo_temp) meters_hist_lst.append( Db.HistMetersRecord(m_id, equip_dtime, equip_dtime_sec, temperature, atmo_temp, group_temp, status_temp, status_atmo, status_group)) logger.debug(f'len(meter_hist_lst)={len(meters_hist_lst)}') return meters_hist_lst