time.sleep(10) else: break if 'errorCode' in w or ts.measureIface.GetState(): logging.fatal("Instrument wake up failed") sys.exit(-1) # get meteorology data print("Getting met data...") if 'met' in cr.json and cr.json['met'] is not None: atm = ts.GetAtmCorr() # get current settings from ts if cr.json['met'].upper() == 'WEBMET': from webmetmeasureunit import WebMetMeasureUnit from webmet import WebMet from webiface import WebIface wi = WebIface("demo", cr.json['met_addr'], "json") web_mu = WebMetMeasureUnit(msg=cr.json['met_par']) web_met = WebMet('WebMet', web_mu, wi) data = web_met.GetPressure() pres = temp = humi = wet = None if data is not None: if 'pressure' in data: pres = data['pressure'] if 'temp' in data: temp = data['temp'] if 'humidity' in data: humi = data['humidity'] if 'temp' in data and 'humidity' in data: wet = web_met.GetWetTemp(temp, humi) elif cr.json['met'].upper() == 'BMP180': from bmp180measureunit import BMP180MeasureUnit from i2ciface import I2CIface
from filewriter import FileWriter if len(sys.argv) > 1: log = sys.argv[1] # name of log file else: log = 'webmet.log' # default log file if len(sys.argv) > 2: n = int(sys.argv[2]) # number of observations else: n = 10 # default single observation if len(sys.argv) > 3: delay = int(sys.argv[3]) # delay between observations (sec) else: delay = 30 # default delay 30 sec if len(sys.argv) > 4: elevation = float(sys.argv[4]) # elevation of start point else: elevation = 100 # default elevation for start point mu = WebMetMeasureUnit( msg="q=budapest&appid=13152b0308b85a39cc9a161e241ec2cf") wi = WebIface("demo", "http://api.openweathermap.org/data/2.5/weather", "json") fw = FileWriter(fname=log, filt=['pressure', 'temp', 'humidity', 'datetime']) web = WebMet('WebMet', mu, wi) for i in range(n): data = web.GetPressure() data['temp'] = web.GetTemp()['temp'] fw.WriteData(data) print(data) time.sleep(delay)