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')
Exemple #2
0
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))
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))