def Display(self): fetcher = pymetar.ReportFetcher() report = fetcher.FetchReport(self.icao) parser = pymetar.ReportParser() parser.ParseReport(report) temperature = report.getTemperatureCelsius() # NOTE(damonkohler): There is no 'Weather' heading for clear weather. weather = report.getWeather() or 'Clear' self.pert.Clear() self.pert.WrapMessage('%d\xdfC %s' % (temperature, weather))
def get_metar(station): '''fetch the METAR for a given station and return a pymetar object''' wx_fetcher = pymetar.ReportFetcher() dest = station + '.TXT' if not os.path.exists(dest): # pull from network raw_report = wx_fetcher.FetchReport(station) data = urllib2.urlopen(raw_report.reporturl).read() fd = open(dest, 'a+') fd.write(data) fd.close() else: # use local cache fd = open(dest) report_text = fd.read() fd.close() raw_report = wx_fetcher.MakeReport(station, report_text) wx_parser = pymetar.ReportParser() wx_report = wx_parser.ParseReport(raw_report) return wx_report
def run(self): print("Starting scanner for ", self.station) while self.shouldRun(): try: report = self.io.FetchReport(self.station) pymetar.ReportParser().ParseReport(report) rtime = iso2sec(report.getISOTime()) report._updatetime = rtime #print('update',report.getISOTime(),rtime,self.lastUpdate) if self.lastUpdate is not None: if self.lastUpdate >= rtime: #print('No update, Wait a little longer next time') self.updatePeriod = self.initPeriod else: # self.lastUpdate < rtime #print('Got an update') self.updatePeriod = rtime - self.lastUpdate self.updatePeriod = max( self.minPeriod, min(self.updatePeriod, self.maxPeriod)) self.updatePeriod += 15 * 60.0 self.scan.interrupt(reason=report) else: self.scan.interrupt(reason=report) self.lastUpdate = rtime except Exception as e: print("download error for", self.station, ":", e) self.updatePeriod = self.initPeriod self.intscan.interrupt() #print('Waiting',self.updatePeriod) self.sleep(self.updatePeriod) print('Done')
from gps import * # GPS # ======================== # Switches # ======================== t1 = os.getpid() DEBUG = 1 LOGGER = 0 # ======================== # Metar declare # ======================== station = "KPNE" rf=pymetar.ReportFetcher(station) rep=rf.FetchReport() rp=pymetar.ReportParser() pr=rp.ParseReport(rep) locAS = 1013.25 # ======================== # COSM variables # ======================== #API_KEY = '1nmfR0zAp8X0jB27soRr6qCxk_iSAKx5NUJHNGJYajZobz0g' #FEED = 79880 #API_URL = '/v2/feeds/{feednum}.xml' .format(feednum = FEED) # ======================== # Setup # ======================== class BmpPoller(threading.Thread):
def getWeather(station): rf = pymetar.ReportFetcher(station) rep = rf.FetchReport() rp = pymetar.ReportParser() return rp.ParseReport(rep)
def get_report(self, report_fetcher): # Fetching the report may take a couple of seconds fetched_report = report_fetcher.FetchReport() return metar.ReportParser(fetched_report).ParseReport()
def getWeather(): fetch = pymetar.ReportFetcher(weatherCode) pars = pymetar.ReportParser(fetch.FetchReport()) pars.ParseReport() uinterface.console.AppendText( str(pars.Report.temp) + " C " + str(pars.Report.weather) + "\n")
def retrieve_report(self): rf = pymetar.ReportFetcher(self.station) rep = rf.FetchReport() rp = pymetar.ReportParser() return rp.ParseReport(rep)