def create_json(root): """ Create the json file containing reading data. Params: root string """ data_dir = defaults.downloads(root) output_dir = defaults.json_dir(root) archive = defaults.data_archive(root) catalog = [] data = [] json_file = {} data_files = utils.get_files_in_dir(data_dir) if not data_files: utils.warn('No csv files to process. Terminating') exit() utils.print_time('PROCESSOR START') print('Begin JSON file generation') for data_file in data_files: with open(data_file, 'rb') as f: reader = csv.reader(f) meterId, meterName = reader.next() print('Processing meterId %s ...' % (meterId)), info = {'meterId': meterId, 'meterName': meterName} catalog.append(info) for row in reader: ts = row[0] val = float(row[1]) reading = {'timestamp': ts, 'value': val, 'meterId': meterId} data.append(reading) print('done') utils.move(data_file, archive) json_file['datasource'] = defaults.URI json_file['meterCatalog'] = catalog json_file['readings'] = data print('End JSON file generation') curr_dt = datetime.now() json_fname = 'dump_%s.json' % (utils.format_dt(curr_dt)) save_path = os.path.join(output_dir, json_fname) print('Writing JSON to file %s ...' % (save_path)), with open(save_path, 'wb') as out: json.dump(json_file, out) print('done') utils.print_time('PROCESSOR END')
def run_update(root, interval): """ Run this script in update mode. Download reading data whose timestamps lie within now - interval and now dates. Interval must be a positive integer between 1 and 12. Params: root string output_dir string interval integer """ if not is_valid_interval(interval): raise ValueError('Invalid interval') curr_dt_utc = datetime.utcnow() curr_dt_utc = utils.round_down(curr_dt_utc) prev_dt_utc = curr_dt_utc - timedelta(hours=interval) run_batch(root, utils.format_dt(prev_dt_utc), utils.format_dt(curr_dt_utc))