def save(self, *args, **kwargs):
        if self.id is None:
            super(PackageUnit, self).save(*args, **kwargs)
            tnow = timezone.now()
            m = Message(when = tnow,
                        message_type = 'Model Info',
                        subject = 'Model created.',
                        comment = 'This Package Unit was created on %s.' % tnow)
            m.save()
            self.messages.add(m)
            
            #----------------------------------------------------------------observed
            #states
            s = Reader(name='SADBo',help_text='Package Unit: supply air dry bulb temperature (' + u"\u00b0" + 'F) observed by sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='SARHo',help_text='Package Unit: supply air relative humidity (0-1.0) observed by sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='SAFLo',help_text='Package Unit: supply air flow rate (CFM) observed by sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='SADPo',help_text='Package Unit: supply air pressure (iwg) observed by sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='RADBo',help_text='Package Unit: return air dry bulb temperature (' + u"\u00b0" + 'F) observed by sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='RARHo',help_text='Package Unit: return air relative humidity (0-1.0) observed by sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='RAFLo',help_text='Package Unit: return air flow rate (CFM) observed by sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='RADPo',help_text='Package Unit: return air pressure (iwg) observed by sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='OADBo',help_text='Package Unit: outside air dry bulb temperature (' + u"\u00b0" + 'F) observed by sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='OARHo',help_text='Package Unit: outside air relative humidity (0-1.0) observed by sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='OAFLo',help_text='Package Unit: outside air flow rate (CFM) observed by sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='OADPo',help_text='Package Unit: outside air pressure (iwg) observed by sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='MADBo',help_text='Package Unit: mixed air dry bulb temperature (' + u"\u00b0" + 'F) observed by sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='MARHo',help_text='Package Unit: mixed air relative humidity (0-1.0) observed by sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='MAFLo',help_text='Package Unit: mixed air flow rate (CFM) observed by sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='MADPo',help_text='Package Unit: mixed air pressure (iwg) observed by sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='SPDBo',help_text='Package Unit: space dry bulb temperature (' + u"\u00b0" + 'F) observed by sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='SPRHo',help_text='Package Unit: space relative humidity (0-1.0) observed by sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='SPDPo',help_text='Package Unit: space air pressure (iwg) observed by sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='FIDPo',help_text='Package Unit: filter pressure drop (iwg) observed by sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='CCDPo',help_text='Package Unit: cooling coil pressure drop (iwg) observed by sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='SFDPo',help_text='Package Unit: supply fan pressure gain (iwg) observed by sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='SFEFo',help_text='Package Unit: supply fan efficiency (0-1.0) observed by sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='SMEFo',help_text='Package Unit: supply fan motor efficiency (0-1.0) observed by sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='SVFDo',help_text='Package Unit: supply fan VFD efficiency (0-1.0) observed by sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='RFCHo',help_text='Package Unit: refrigerant charge (lbs) observed by sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='TONSo',help_text='Package Unit: delivered cooling (tons) observed by sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='BTUHo',help_text='Package Unit: delivered heating (btu/h) observed by sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='CEERo',help_text='Package Unit: cooling efficiency (EER) observed by sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='HEFFo',help_text='Package Unit: heating efficiency (0-1.0) observed by sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='VFDNo',help_text='Package Unit: VFD speed ratio {n} (0-1.0) observed by sensors')
            s.save()
            self.readers.add(s)

            #setpoint arrays
            s = Reader(name='SCOCo',help_text='Package Unit: occupied cooling setpoints (' + u"\u00b0" + 'F) observed by sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='SCUNo',help_text='Package Unit: unoccupied cooling setpoints (' + u"\u00b0" + 'F) observed by sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='SHOCo',help_text='Package Unit: occupied heating setpoints (' + u"\u00b0" + 'F) observed by sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='SHUNo',help_text='Package Unit: unoccupied heating setpoints (' + u"\u00b0" + 'F) observed by sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='SRFCo',help_text='Package Unit: fully charged refrigerant pressures (lbs) observed by sensors')
            s.save()
            self.readers.add(s)

            #status
            s = Reader(name='STONo',help_text='Package Unit: unit status (1/0) observed by sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='STC1o',help_text='Package Unit: compressor 1 status (1/0) observed by sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='STC2o',help_text='Package Unit: compressor 2 status (1/0) observed by sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='STC3o',help_text='Package Unit: compressor 3 status (1/0) observed by sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='STH1o',help_text='Package Unit: heating 1 status (1/0) observed by sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='STH2o',help_text='Package Unit: heating 2 status (1/0) observed by sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='STECo',help_text='Package Unit: economizer status (1/0) observed by sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='STODo',help_text='Package Unit: outdoor air damper status (% open) observed by sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='STSFo',help_text='Package Unit: supply fan status (1/0) observed by sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='STRFo',help_text='Package Unit: return fan status (1/0) observed by sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='STF1o',help_text='Package Unit: condenser fan 1 status (1/0) observed by sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='STF2o',help_text='Package Unit: condenser fan 2 status (1/0) observed by sensors')
            s.save()
            self.readers.add(s)
            #----------------------------------------------------------------provided
            #states
            s = Reader(name='SADBp',help_text='Package Unit: supply air dry bulb temperature (' + u"\u00b0" + 'F) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='SARHp',help_text='Package Unit: supply air relative humidity (0-1.0) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='SAFLp',help_text='Package Unit: supply air flow rate (CFM) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='SADPp',help_text='Package Unit: supply air pressure (iwg) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='RADBp',help_text='Package Unit: return air dry bulb temperature (' + u"\u00b0" + 'F) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='RARHp',help_text='Package Unit: return air relative humidity (0-1.0) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='RAFLp',help_text='Package Unit: return air flow rate (CFM) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='RADPp',help_text='Package Unit: return air pressure (iwg) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='OADBp',help_text='Package Unit: outside air dry bulb temperature (' + u"\u00b0" + 'F) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='OARHp',help_text='Package Unit: outside air relative humidity (0-1.0) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='OAFLp',help_text='Package Unit: outside air flow rate (CFM) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='OADPp',help_text='Package Unit: outside air pressure (iwg) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='MADBp',help_text='Package Unit: mixed air dry bulb temperature (' + u"\u00b0" + 'F) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='MARHp',help_text='Package Unit: mixed air relative humidity (0-1.0) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='MAFLp',help_text='Package Unit: mixed air flow rate (CFM) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='MADPp',help_text='Package Unit: mixed air pressure (iwg) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='SPDBp',help_text='Package Unit: space dry bulb temperature (' + u"\u00b0" + 'F) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='SPRHp',help_text='Package Unit: space relative humidity (0-1.0) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='SPDPp',help_text='Package Unit: space air pressure (iwg) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='FIDPp',help_text='Package Unit: filter pressure drop (iwg) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='CCDPp',help_text='Package Unit: cooling coil pressure drop (iwg) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='SFDPp',help_text='Package Unit: supply fan pressure gain (iwg) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='SFEFp',help_text='Package Unit: supply fan efficiency (0-1.0) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='SMEFp',help_text='Package Unit: supply fan motor efficiency (0-1.0) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='SVFDp',help_text='Package Unit: supply fan VFD efficiency (0-1.0) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='RFCHp',help_text='Package Unit: refrigerant charge (lbs) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='TONSp',help_text='Package Unit: delivered cooling (tons) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='BTUHp',help_text='Package Unit: delivered heating (btu/h) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='CEERp',help_text='Package Unit: cooling efficiency (EER) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='HEFFp',help_text='Package Unit: heating efficiency (0-1.0) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='VFDNp',help_text='Package Unit: VFD speed ratio {n} (0-1.0) provided by remote source')
            s.save()
            self.readers.add(s)

            #setpoint arrays
            s = Reader(name='SCOCp',help_text='Package Unit: occupied cooling setpoints (' + u"\u00b0" + 'F) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='SCUNp',help_text='Package Unit: unoccupied cooling setpoints (' + u"\u00b0" + 'F) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='SHOCp',help_text='Package Unit: occupied heating setpoints (' + u"\u00b0" + 'F) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='SHUNp',help_text='Package Unit: unoccupied heating setpoints (' + u"\u00b0" + 'F) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='SRFCp',help_text='Package Unit: fully charged refrigerant pressures (lbs) provided by remote source')
            s.save()
            self.readers.add(s)

            #status
            s = Reader(name='STONp',help_text='Package Unit: unit status (1/0) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='STC1p',help_text='Package Unit: compressor 1 status (1/0) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='STC2p',help_text='Package Unit: compressor 2 status (1/0) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='STC3p',help_text='Package Unit: compressor 3 status (1/0) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='STH1p',help_text='Package Unit: heating 1 status (1/0) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='STH2p',help_text='Package Unit: heating 2 status (1/0) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='STECp',help_text='Package Unit: economizer status (1/0) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='STODp',help_text='Package Unit: outdoor air damper status (% open) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='STSFp',help_text='Package Unit: supply fan status (1/0) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='STRFp',help_text='Package Unit: return fan status (1/0) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='STF1p',help_text='Package Unit: condenser fan 1 status (1/0) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='STF2p',help_text='Package Unit: condenser fan 2 status (1/0) provided by remote source')
            s.save()
            self.readers.add(s)
            #----------------------------------------------------------------calculated
            #states
            s = Reader(name='SADBc',help_text='Package Unit: supply air dry bulb temperature (' + u"\u00b0" + 'F) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='SARHc',help_text='Package Unit: supply air relative humidity (0-1.0) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='SAFLc',help_text='Package Unit: supply air flow rate (CFM) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='SADPc',help_text='Package Unit: supply air pressure (iwg) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='RADBc',help_text='Package Unit: return air dry bulb temperature (' + u"\u00b0" + 'F) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='RARHc',help_text='Package Unit: return air relative humidity (0-1.0) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='RAFLc',help_text='Package Unit: return air flow rate (CFM) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='RADPc',help_text='Package Unit: return air pressure (iwg) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='OADBc',help_text='Package Unit: outside air dry bulb temperature (' + u"\u00b0" + 'F) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='OARHc',help_text='Package Unit: outside air relative humidity (0-1.0) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='OAFLc',help_text='Package Unit: outside air flow rate (CFM) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='OADPc',help_text='Package Unit: outside air pressure (iwg) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='MADBc',help_text='Package Unit: mixed air dry bulb temperature (' + u"\u00b0" + 'F) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='MARHc',help_text='Package Unit: mixed air relative humidity (0-1.0) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='MAFLc',help_text='Package Unit: mixed air flow rate (CFM) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='MADPc',help_text='Package Unit: mixed air pressure (iwg) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='SPDBc',help_text='Package Unit: space dry bulb temperature (' + u"\u00b0" + 'F) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='SPRHc',help_text='Package Unit: space relative humidity (0-1.0) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='SPDPc',help_text='Package Unit: space air pressure (iwg) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='FIDPc',help_text='Package Unit: filter pressure drop (iwg) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='CCDPc',help_text='Package Unit: cooling coil pressure drop (iwg) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='SFDPc',help_text='Package Unit: supply fan pressure gain (iwg) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='SFEFc',help_text='Package Unit: supply fan efficiency (0-1.0) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='SMEFc',help_text='Package Unit: supply fan motor efficiency (0-1.0) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='SVFDc',help_text='Package Unit: supply fan VFD efficiency (0-1.0) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='RFCHc',help_text='Package Unit: refrigerant charge (lbs) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='TONSc',help_text='Package Unit: delivered cooling (tons) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='BTUHc',help_text='Package Unit: delivered heating (btu/h) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='CEERc',help_text='Package Unit: cooling efficiency (EER) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='HEFFc',help_text='Package Unit: heating efficiency (0-1.0) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='VFDNc',help_text='Package Unit: VFD speed ratio {n} (0-1.0) calculated by models')
            s.save()
            self.readers.add(s)

            #setpoint arrays
            s = Reader(name='SCOCc',help_text='Package Unit: occupied cooling setpoints (' + u"\u00b0" + 'F) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='SCUNc',help_text='Package Unit: unoccupied cooling setpoints (' + u"\u00b0" + 'F) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='SHOCc',help_text='Package Unit: occupied heating setpoints (' + u"\u00b0" + 'F) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='SHUNc',help_text='Package Unit: unoccupied heating setpoints (' + u"\u00b0" + 'F) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='SRFCc',help_text='Package Unit: fully charged refrigerant pressures (lbs) calculated by models')
            s.save()
            self.readers.add(s)

            #status
            s = Reader(name='STONc',help_text='Package Unit: unit status (1/0) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='STC1c',help_text='Package Unit: compressor 1 status (1/0) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='STC2c',help_text='Package Unit: compressor 2 status (1/0) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='STC3c',help_text='Package Unit: compressor 3 status (1/0) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='STH1c',help_text='Package Unit: heating 1 status (1/0) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='STH2c',help_text='Package Unit: heating 2 status (1/0) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='STECc',help_text='Package Unit: economizer status (1/0) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='STODc',help_text='Package Unit: outdoor air damper status (% open) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='STSFc',help_text='Package Unit: supply fan status (1/0) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='STRFc',help_text='Package Unit: return fan status (1/0) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='STF1c',help_text='Package Unit: condenser fan 1 status (1/0) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='STF2c',help_text='Package Unit: condenser fan 2 status (1/0) calculated by models')
            s.save()
            self.readers.add(s)
            
        super(PackageUnit, self).save(*args, **kwargs)
    def save(self, *args, **kwargs):
        if self.id is None:
            super(Equipment, self).save(*args, **kwargs)
            tnow = timezone.now()
            m = Message(when = tnow,
                        message_type = 'Model Info',
                        subject = 'Model created.',
                        comment = 'This Equipment was created on %s.' % tnow)
            m.save()
            self.messages.add(m)
            
            #universal energy units kBtu (for comparing multiple fuels on common unit basis)
            s = Reader(name='kBtuo',help_text='total: energy (kBtu) observed by local sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='kBtup',help_text='total: energy (kBtu) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='kBtuc',help_text='total: energy (kBtu) calculated by models')
            s.save()
            self.readers.add(s)
            
            #---------------------------------------------------------------------observed
            #electricity
            s = Reader(name='ELCAo',help_text='electricity: current (A) observed by local sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='ELVVo',help_text='electricity: voltage (V) observed by local sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='ELPHo',help_text='electricity: phase (1,3) observed by local sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='ELPFo',help_text='electricity: power factor (dimensionless) observed by local sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='ELKWo',help_text='electricity: power (kW) observed by local sensors')
            s.save()
            self.readers.add(s)
            
            #natural gas
            s = Reader(name='NGINo',help_text='natural gas: input power (Btu/h) observed by local sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='NGOUo',help_text='natural gas: delivered power (Btu/h) observed by local sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='NGEFo',help_text='natural gas: thermal efficiency (dimensionless) observed by local sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='NGFLo',help_text='natural gas: flow rate (ft^3/min) observed by local sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='NGHVo',help_text='natural gas: heating value (Btu/ft^3) observed by local sensors')
            s.save()
            self.readers.add(s)
            
            #steam
            s = Reader(name='STHIo',help_text='steam: input enthalpy (Btu/lb) observed by local sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='STHOo',help_text='steam: output enthalpy (Btu/lb) observed by local sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='STBHo',help_text='steam: delivered power (Btu/h) observed by local sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='STFLo',help_text='steam: flow rate (lb/hr) observed by local sensors')
            s.save()
            self.readers.add(s)
            
            #chilled water
            s = Reader(name='CWFLo',help_text='chilled water: flow rate (gal/min) observed by local sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='CWTIo',help_text='chilled water: inlet temperature (' + u"\u00b0" + 'F) observed by local sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='CWTOo',help_text='chilled water: outlet temperature (' + u"\u00b0" + 'F) observed by local sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='CWTNo',help_text='chilled water: delivered power (tons) observed by local sensors')
            s.save()
            self.readers.add(s)
            
            #hot water
            s = Reader(name='HWFLo',help_text='hot water: flow rate (gal/min) observed by local sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='HWTIo',help_text='hot water: inlet temperature (' + u"\u00b0" + 'F) observed by local sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='HWTOo',help_text='hot water: outlet temperature (' + u"\u00b0" + 'F) observed by local sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='HWBHo',help_text='hot water: delivered power (Btu/h) observed by local sensors')
            s.save()
            self.readers.add(s)
            
            #fuel oil
            s = Reader(name='FOBIo',help_text='fuel oil: input power (Btu/h) observed by local sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='FOBOo',help_text='fuel oil: delivered power (Btu/h) observed by local sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='FOEFo',help_text='fuel oil: thermal efficiency (dimensionless) observed by local sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='FOFLo',help_text='fuel oil: flow rate (gal/min) observed by local sensors')
            s.save()
            self.readers.add(s)
            s = Reader(name='FOHVo',help_text='fuel oil: heating value (Btu/gal) observed by local sensors')
            s.save()
            self.readers.add(s)

            #---------------------------------------------------------------------provided
            #electricity
            s = Reader(name='ELCAp',help_text='electricity: current (A) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='ELVVp',help_text='electricity: voltage (V) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='ELPHp',help_text='electricity: phase (1,3) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='ELPFp',help_text='electricity: power factor (dimensionless) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='ELKWp',help_text='electricity: power (kW) provided by remote source')
            s.save()
            self.readers.add(s)
            
            #natural gas
            s = Reader(name='NGINp',help_text='natural gas: input power (Btu/h) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='NGOUp',help_text='natural gas: delivered power (Btu/h) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='NGEFp',help_text='natural gas: thermal efficiency (dimensionless) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='NGFLp',help_text='natural gas: flow rate (ft^3/min) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='NGHVp',help_text='natural gas: heating value (Btu/ft^3) provided by remote source')
            s.save()
            self.readers.add(s)
            
            #steam
            s = Reader(name='STHIp',help_text='steam: input enthalpy (Btu/lb) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='STHOp',help_text='steam: output enthalpy (Btu/lb) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='STBHp',help_text='steam: delivered power (Btu/h) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='STFLp',help_text='steam: flow rate (lb/hr) provided by remote source')
            s.save()
            self.readers.add(s)
            
            #chilled water
            s = Reader(name='CWFLp',help_text='chilled water: flow rate (gal/min) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='CWTIp',help_text='chilled water: inlet temperature (' + u"\u00b0" + 'F) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='CWTOp',help_text='chilled water: outlet temperature (' + u"\u00b0" + 'F) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='CWTNp',help_text='chilled water: delivered power (tons) provided by remote source')
            s.save()
            self.readers.add(s)
            
            #hot water
            s = Reader(name='HWFLp',help_text='hot water: flow rate (gal/min) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='HWTIp',help_text='hot water: inlet temperature (' + u"\u00b0" + 'F) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='HWTOp',help_text='hot water: outlet temperature (' + u"\u00b0" + 'F) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='HWBHp',help_text='hot water: delivered power (Btu/h) provided by remote source')
            s.save()
            self.readers.add(s)
            
            #fuel oil
            s = Reader(name='FOBIp',help_text='fuel oil: input power (Btu/h) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='FOBOp',help_text='fuel oil: delivered power (Btu/h) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='FOEFp',help_text='fuel oil: thermal efficiency (dimensionless) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='FOFLp',help_text='fuel oil: flow rate (gal/min) provided by remote source')
            s.save()
            self.readers.add(s)
            s = Reader(name='FOHVp',help_text='fuel oil: heating value (Btu/gal) provided by remote source')
            s.save()
            self.readers.add(s)

            #---------------------------------------------------------------------calculated
            #electricity
            s = Reader(name='ELCAc',help_text='electricity: current (A) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='ELVVc',help_text='electricity: voltage (V) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='ELPHc',help_text='electricity: phase (1,3) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='ELPFc',help_text='electricity: power factor (dimensionless) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='ELKWc',help_text='electricity: power (kW) calculated by models')
            s.save()
            self.readers.add(s)
            
            #natural gas
            s = Reader(name='NGINc',help_text='natural gas: input power (Btu/h) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='NGOUc',help_text='natural gas: delivered power (Btu/h) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='NGEFc',help_text='natural gas: thermal efficiency (dimensionless) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='NGFLc',help_text='natural gas: flow rate (ft^3/min) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='NGHVc',help_text='natural gas: heating value (Btu/ft^3) calculated by models')
            s.save()
            self.readers.add(s)
            
            #steam
            s = Reader(name='STHIc',help_text='steam: input enthalpy (Btu/lb) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='STHOc',help_text='steam: output enthalpy (Btu/lb) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='STBHc',help_text='steam: delivered power (Btu/h) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='STFLc',help_text='steam: flow rate (lb/hr) calculated by models')
            s.save()
            self.readers.add(s)
            
            #chilled water
            s = Reader(name='CWFLc',help_text='chilled water: flow rate (gal/min) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='CWTIc',help_text='chilled water: inlet temperature (' + u"\u00b0" + 'F) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='CWTOc',help_text='chilled water: outlet temperature (' + u"\u00b0" + 'F) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='CWTNc',help_text='chilled water: delivered power (tons) calculated by models')
            s.save()
            self.readers.add(s)
            
            #hot water
            s = Reader(name='HWFLc',help_text='hot water: flow rate (gal/min) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='HWTIc',help_text='hot water: inlet temperature (' + u"\u00b0" + 'F) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='HWTOc',help_text='hot water: outlet temperature (' + u"\u00b0" + 'F) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='HWBHc',help_text='hot water: delivered power (Btu/h) calculated by models')
            s.save()
            self.readers.add(s)
            
            #fuel oil
            s = Reader(name='FOBIc',help_text='fuel oil: input power (Btu/h) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='FOBOc',help_text='fuel oil: delivered power (Btu/h) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='FOEFc',help_text='fuel oil: thermal efficiency (dimensionless) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='FOFLc',help_text='fuel oil: flow rate (gal/min) calculated by models')
            s.save()
            self.readers.add(s)
            s = Reader(name='FOHVc',help_text='fuel oil: heating value (Btu/gal) calculated by models')
            s.save()
            self.readers.add(s)


        super(Equipment, self).save(*args, **kwargs)