''' Created on 11.06.2015 @author: wn ''' from MeterbusLibExceptions import MediumConversionException def bcd(data): v = "" for c in reversed(data): v += str((c & 0xf0) >> 4) v += str(c & 0x0f) v = int(v) return v def manufCode(data): v = (data[1] << 8) + data[0] l3 = chr((v & 0x1f) + 64) l2 = chr(((v >> 5) & 0x1f) + 64) l1 = chr(((v >> 10) & 0x1f) + 64) return l1 + l2 + l3 def mediumCode(data): try: res = ('Other', 'Oil', 'Electrity', 'Gas', 'Heat (Volume measured at return temperature: outlet', 'Steam', 'Hot Water', 'Water', 'Heat Cost Allocator', 'Compressed Air', 'Cooling Load Meter (Volume measured at return temperature: outlet', 'Cooling Load Meter (Volume measured at flow temperature: inlet', 'Heat (Volume measured at flow temperature: inlet)', 'Heat / Cooling Load Meter', 'Bus / System', 'Unknown Medium', 'Reserved (10)', 'Reserved (11)', 'Reserved (12)', 'Reserved (13)', 'Reserved (14)', 'Reserved (15)', 'Cold Water', 'Dual Water', 'Pressure', 'A/D Converter', )[data] return res except IndexError: raise MediumConversionException