Files
2025-12-11 03:30:35 -05:00

49 lines
1.9 KiB
Python
Executable File

#!/usr/bin/python
import sys
import xml.etree.ElementTree as ET
from .resources import *
def parse_feed(filename):
tree = ET.parse(filename)
usagePoints = []
for entry in tree.getroot().findall('atom:entry/atom:content/espi:UsagePoint/../..', ns):
up = UsagePoint(entry)
usagePoints.append(up)
meterReadings = []
for entry in tree.getroot().findall('atom:entry/atom:content/espi:MeterReading/../..', ns):
mr = MeterReading(entry, usagePoints=usagePoints)
meterReadings.append(mr)
for entry in tree.getroot().findall('atom:entry/atom:content/espi:LocalTimeParameters/../..', ns):
ltp = LocalTimeParameters(entry, usagePoints=usagePoints)
readingTypes = []
for entry in tree.getroot().findall('atom:entry/atom:content/espi:ReadingType/../..', ns):
rt = ReadingType(entry, meterReadings=meterReadings)
readingTypes.append(rt)
intervalBlocks = []
for entry in tree.getroot().findall('atom:entry/atom:content/espi:IntervalBlock/../..', ns):
ib = IntervalBlock(entry, meterReadings=meterReadings)
intervalBlocks.append(ib)
return usagePoints
if __name__ == '__main__':
ups = parse_feed(sys.argv[1])
for up in ups:
print('UsagePoint (%s) %s %s:' % (up.title, up.serviceCategory.name, up.status))
for mr in up.meterReadings:
print(' Meter Reading (%s) %s:' % (mr.title, mr.readingType.uom.name))
for ir in mr.intervalReadings:
print(' %s, %s: %s %s' % (ir.timePeriod.start, ir.timePeriod.duration, ir.value, ir.value_symbol), end = '')
if ir.cost is not None:
print(' (%s%s)' % (ir.cost_symbol, ir.cost))
if len(ir.readingQualities) > 0:
print('[%s]' % ', '.join([rq.quality.name for rq in ir.readingQualities]))
print