NEMFile(file_path, strict=False)
An NEM file object
nmi_channels: dict
property
NMI channels in file
nmis: set
property
NMIs in file
zipped: bool
property
Check whether file is zipped or not
get_data_frame(split_days=False, set_interval=None)
Return NEMData as a DataFrame
get_pivot_data_frame(split_days=False, set_interval=None, include_serno=False)
Return NEMData as a DataFrame with suffix columns
nem_data()
Return data in legacy data format
parse_nem_file(nem_file, file_name='')
Parse NEM file and return meter readings named tuple
calculate_manual_reading(basic_data)
Calculate the interval between two manual readings
flatten_list(l)
takes a list of lists, l and returns a flat list
nth(iterable, n, default=None)
Returns the nth item or a default value
parse_100_row(row, file_name)
Parse header record (100)
RecordIndicator,VersionHeader,DateTime,FromParticipant,ToParticipant Example: 100,NEM12,200301011534,MDP1,Retailer1
parse_200_row(row)
Parse NMI data details record (200)
RecordIndicator,NMI,NMIConfiguration,RegisterID,NMISuffix,MDMDataStreamIdentifier,MeterSerialNumber,UOM,IntervalLength,NextScheduledReadDate Example: 200,VABD000163,E1Q1,1,E1,N1,METSER123,kWh,30,20040120
parse_250_row(row)
Parse basic meter data record (250)
RecordIndicator,NMI,NMIConfiguration,RegisterID,NMISuffix,MDMDataStreamIdentifier,MeterSeri
alNumber,DirectionIndicator,PreviousRegisterRead,PreviousRegisterReadDateTime,PreviousQuali tyMethod,PreviousReasonCode,PreviousReasonDescription,CurrentRegisterRead,CurrentRegister ReadDateTime,CurrentQualityMethod,CurrentReasonCode,CurrentReasonDescription,Quantity,U OM,NextScheduledReadDate,UpdateDateTime,MSATSLoadDateTime Example: 250,1234567890,1141,01,11,11,METSER66,E,000021.2,20031001103230,A,,,000534.5,20040201100030,E64,77,,343.5,kWh,20040509, 20040202125010,20040203000130
parse_300_row(row, interval, uom, meter_serial_number)
Interval data record (300)
RecordIndicator,IntervalDate,IntervalValue1 . . . IntervalValueN, QualityMethod,ReasonCode,ReasonDescription,UpdateDateTime,MSATSLoadDateTime Example: 300,20030501,50.1, . . . ,21.5,V,,,20030101153445,20030102023012
parse_400_row(row, interval_length)
Interval event record (400)
RecordIndicator,StartInterval,EndInterval,QualityMethod,ReasonCode,ReasonDescription Example: 400,1,28,S14,32
Note that intervals are indexed from 1 not 0.
parse_500_row(row)
Parse B2B details record
RecordIndicator,TransCode,RetServiceOrder,ReadDateTime,IndexRead Example: 500,S,RETNSRVCEORD1,20031220154500,001123.5
parse_550_row(row)
Parse B2B details record
RecordIndicator,PreviousTransCode,PreviousRetServiceOrder,CurrentTransCode,CurrentRetServiceOrder Example: 550,N,,A,
parse_datetime(record)
Parse a datetime string into a python datetime object
parse_interval_records(interval_record, interval_date, interval, uom, quality_method, meter_serial_number, event_code='', event_desc='')
Convert interval values into tuples with datetime
parse_nem12_rows(nem_list, file_name=None)
Parse NEM row iterator and return meter readings named tuple
parse_nem13_rows(nem_list)
Parse NEM row iterator and return meter readings named tuple
parse_reading(val)
Convert reading value to float (if possible)
read_nem_file(file_path, ignore_missing_header=False)
Read in NEM file and return meter readings named tuple
:param file_path: The NEM file to process :param ignore_missing_header: Whether to continue parsing if missing header. Will assume NEM12 format. :returns: The file that was created
update_reading_events(readings, event_record)
Updates readings from a 300 row to reflect any events found in a subsequent 400 row