示例#1
0
def _calc(record):
    properties,record = record
    horizon = None
    insolation = irradiation.irradiation(record, properties['place'], \
            horizon, properties['tilt'], properties['azimuth'], \
            properties['modelName'])
    year = 2000
    timestamp = tmy3.normalizeDate(record['datetime'],year)
    return timestamp, insolation, record
示例#2
0
    def now(self, timestamp = None, weatherData = None, model = 'STC'):
        #Preditive
        if timestamp is None:
            timestamp = datetime.datetime.now() - datetime.timedelta(hours=self.tz)

        if model != 'STC' and  weatherData == None:
                weatherData = forecast.data(self.place)['currently']

        if model == 'CC':
            record = irradiation.blave(timestamp,self.place,self.tilt,
                    self.azimuth, cloudCover=weatherData['cloudCover'])
        else:
            record = irradiation.blave(timestamp,self.place,self.tilt,
                    self.azimuth)

        irradiance = irradiation.irradiation(record, self.place, self.horizon,\
                t = self.tilt, array_azimuth = self.azimuth, model = 'p9')

        if model == 'STC':
            return self.Pac(irradiance)
        else:
            tModule = irradiation.moduleTemp(irradiance, weatherData)
            return self.Pac(irradiance, tModule)
示例#3
0
文件: tmy3.py 项目: todun/solpy
        #print header[1]
        #print self.latitude, self.longitude
    def __iter__(self):
        return self

    def next(self):
        t = self.tmy_data.next()
        sd = t['Date (MM/DD/YYYY)'] +' '+ t['Time (HH:MM)']
        tz = -5
        t['utc_datetime'] = strptime(sd,tz)
        t['datetime'] = strptime(sd)
        return t

    def __del__(self):
        self.csvfile.close()

if __name__ == "__main__":
    import geo
    tilt = 32.0
    #import matplotlib.pyplot as plt
    #place = zipToCoordinates(17601) #Lancaster
    place = geo.zipToCoordinates(19113) #Philadelphia
    name, usaf = geo.closestUSAF(place)
    t = 0
    for r in data(usaf):
        output = irradiation.irradiation(r,place,tilt)
        t += output

    print t/1000
    print t/(1000*365.0)
示例#4
0
    def forecastOutput(self, daylightSavings = False, source = None, hours = 24):
    #def powerToday(self, daylightSavings = False, source = None, hours = 24):
        #default is forecast with solpy.blave 
        #this is ugly code... sorry
        d = datetime.date.today()
        endTimeUTC = datetime.datetime(d.year,d.month,d.day)\
                + datetime.timedelta(hours=hours-self.tz)
        if source == 'noaa':
            wseries = noaa.herpDerpInterp(self.place)
            ts = []
            irr = []
            for i in wseries:
                if i['utc_datetime'] > endTimeUTC:
                    break
                rec = irradiation.blave(i['utc_datetime'],self.place, \
                        self.tilt, self.azimuth, cloudCover = i['cloudCover'])
                irradiance = irradiation.irradiation(rec,self.place,\
                        t=self.tilt, array_azimuth=self.azimuth, model='p90')
                tModule = irradiation.moduleTemp(irradiance, i)
                irr.append(self.Pac(irradiance,tModule))
                ts.append(i['utc_datetime'])

            rs = resultSet()
            rs.values = irr
            rs.timeseries = ts
            return rs

        if source == 'forecast':
            wseries = forecast.hourly(self.place)
            ts = []
            irr = []
            for i in wseries:
                if i['utc_datetime'] > endTimeUTC:
                    break
                irradiance = irradiation.irradiation(i,self.place,\
                        t=self.tilt, array_azimuth=self.azimuth, model='p90')
                tModule = irradiation.moduleTemp(irradiance, i)
                irr.append(self.Pac(irradiance,tModule))
                ts.append(i['utc_datetime'])

            rs = resultSet()
            rs.values = irr
            rs.timeseries = ts
            return rs

        if source =='blave':
            wseries = forecast.hourly(self.place)
            ts = []
            irr = []
            for i in wseries:
                if i['utc_datetime'] > endTimeUTC:
                    break
                rec = irradiation.blave(i['utc_datetime'],self.place, \
                        self.tilt, self.azimuth, cloudCover = i['cloudCover'])
                irradiance = irradiation.irradiation(rec,self.place,\
                        t=self.tilt, array_azimuth=self.azimuth, model='p90')
                tModule = irradiation.moduleTemp(irradiance, i)
                irr.append(self.Pac(irradiance,tModule))
                ts.append(i['utc_datetime'])

            rs = resultSet()
            rs.values = irr
            rs.timeseries = ts
            return rs
        else:
            #blave
            stime = datetime.datetime.today().timetuple()
            tzOff = datetime.timedelta(hours=self.tz)
            if daylightSavings:
                tzOff += datetime.timedelta(hours=1)
            else:
                tzOff += datetime.timedelta(hours=0)
            initTime = datetime.datetime(stime[0],stime[1],stime[2]) - tzOff
            timeseries = []
            values = []
            ts = initTime
            while ts < datetime.datetime.now()-tzOff:
                ts +=  datetime.timedelta(minutes=5)
                currentPower = self.now(ts)
                values.append(currentPower)
                timeseries.append(ts)
            rs = resultSet()
            rs.values = values
            rs.timeseries = timeseries
            return rs