The Australian Energy Market Operator (AEMO) defines a Meter Data File Format (MDFF) for reading energy billing data. This library sets out to parse these NEM12 (interval metering data) and NEM13 (accumulated metering data) data files into a useful python object, for use in other projects.
First, read in the NEM file:
fromnemreaderimportread_nem_filem=read_nem_file('examples/unzipped/Example_NEM12_actual_interval.csv')You can see what data for the NMI and suffix (channel) is available:
>print(m.header)
HeaderRecord(version_header='NEM12', creation_date=datetime.datetime(2004, 4, 20, 13, 0), from_participant='MDA1', to_participant='Ret1')
>print(m.transactions)
{'VABD000163': {'E1': [], 'Q1': []}}Standard suffix/channels are defined in the National Metering Identifier Procedure.
E1 is the general consumption channel (11 for NEM13).
Most importantly, you will want to get the energy data itself:
>fornmiinm.readings:
>forchannelinm.readings[nmi]:
>forreadinginm.readings[nmi][suffix][-1:]:
>print(reading)
Reading(t_start=datetime.datetime(2004, 4, 17, 23, 30), t_end=datetime.datetime(2004, 4, 18, 0, 0), read_value=14.733, uom='kWh', quality_method='S14', event='', read_start=None, read_end=None)You can also output the NEM file in a more human readable format:
nemreader output example.zipWhich outputs transposed values to a csv file for all channels:
period_start,period_end,E1,Q1,quality_method
2004-02-01 00:00:00,2004-02-01 00:30:00,1.111,2.222,A
2004-02-01 00:30:00,2004-02-01 01:00:00,1.111,2.222,A
...