def GetData(self): log("Thread started") #print "GetData" serialPort = ws2300.LinuxSerialPort(self.cfg.sensor_serial_port) #print serialPort #print "opened" ws = ws2300.Ws2300(serialPort) measures = [ ws2300.Measure.IDS["pa"], # pressure absolute ws2300.Measure.IDS["it"], # in temp ws2300.Measure.IDS["ih"], # in humidity ws2300.Measure.IDS["ot"], # out temp" ws2300.Measure.IDS["oh"], # out humidity" ws2300.Measure.IDS["rt"], # rain total ws2300.Measure.IDS["ws"], # "wind speed" ws2300.Measure.IDS["w0"], # "wind direction" ws2300.Measure.IDS["ws"], # "wind speed gust ???" ws2300.Measure.IDS["wsu"], # wind speed units #ws2300.Measure.IDS["rh"], # rain 1h #ws2300.Measure.IDS["wsh"], # "wind speed max ??????????????" ] while True: seconds = datetime.datetime.now().second if ( seconds < 30 ): time.sleep(30-seconds) else: time.sleep(90-seconds) try: raw_data = ws2300.read_measurements(ws, measures) data = [ m.conv.binary2value(d) for m, d in zip(measures, raw_data)] print "***************DUBUG********************" print data print "***************DUBUG********************" globalvars.meteo_data.status = 0 globalvars.meteo_data.last_measure_time = datetime.datetime.now() globalvars.meteo_data.idx = globalvars.meteo_data.last_measure_time globalvars.meteo_data.abs_pressure = float(data[0]) globalvars.meteo_data.temp_in = float(data[1]) globalvars.meteo_data.hum_in = float(data[2]) globalvars.meteo_data.temp_out = float(data[3]) globalvars.meteo_data.hum_out = float(data[4]) globalvars.meteo_data.rain = float(data[5]) globalvars.meteo_data.wind_ave = (float(data[6])*1.609344)*self.cfg.windspeed_gain + self.cfg.windspeed_offset globalvars.meteo_data.wind_gust = (float(data[8])*1.609344)*self.cfg.windspeed_gain + self.cfg.windspeed_offset wind_dir = data[7] globalvars.meteo_data.wind_dir = wind_dir val=int((wind_dir/22.5)+.5) globalvars.meteo_data.wind_dir_code = get_wind_dir_text()[val] globalvars.meteo_data.illuminance = None globalvars.meteo_data.uv = None sensor.Sensor.GetData(self) except Exception, err: print sys.exc_info()[0] log("ERROR with WS2300 %s " % err)
def run(self, generate_event, send_event, context={}): import ws2300 print(dir(ws2300)) while True: serialPort = ws2300.LinuxSerialPort(self.port) serialPort.open() try: ws = ws2300.Ws2300(serialPort) measures = [ ws2300.Measure.IDS["pa"], ws2300.Measure.IDS["it"], ws2300.Measure.IDS["ih"], ws2300.Measure.IDS["ot"], ws2300.Measure.IDS["oh"], ws2300.Measure.IDS["rh"], ws2300.Measure.IDS["rt"], ws2300.Measure.IDS["ws"], ws2300.Measure.IDS["wsm"], ws2300.Measure.IDS["w0"], ] raw_data = ws2300.read_measurements(ws, measures) data = [m.conv.binary2value(d) for m, d in zip(measures, data)] finally: serialPort.close() try: e = generate_event('press') e.value = data[0] send_event(e) e = generate_event('temp') e.sensor = 0 e.value = data[1] send_event(e) e = generate_event('hum') e.sensor = 0 e.value = data[2] send_event(e) e = generate_event('temp') e.sensor = 1 e.value = data[3] send_event(e) e = generate_event('hum') e.sensor = 1 e.value = data[4] send_event(e) e = generate_event('rain') e.rate = data[5] e.total = data[6] send_event(e) e = generate_event('wind') e.create_child('mean') e.mean.speed = units.MphToMps(data[7]) e.mean.dir = data[9] e.create_child('gust') e.gust.speed = units.MphToMps(data[8]) e.gust.dir = data[9] send_event(e) except Exception, e: self.logger.error(e) # pause until next update time next_update = self.period - (time.time() % self.period) time.sleep(next_update)
def run(self, generate_event, send_event, context={}): import ws2300 print(dir(ws2300)) while True: serialPort = ws2300.LinuxSerialPort(self.port) serialPort.open() try: ws = ws2300.Ws2300(serialPort) measures = [ ws2300.Measure.IDS["pa"], ws2300.Measure.IDS["it"], ws2300.Measure.IDS["ih"], ws2300.Measure.IDS["ot"], ws2300.Measure.IDS["oh"], ws2300.Measure.IDS["rh"], ws2300.Measure.IDS["rt"], ws2300.Measure.IDS["ws"], ws2300.Measure.IDS["wsm"], ws2300.Measure.IDS["w0"], ] raw_data = ws2300.read_measurements(ws, measures) data = [m.conv.binary2value(d) for m, d in zip(measures, data)] finally: serialPort.close() try: e = generate_event("press") e.value = data[0] send_event(e) e = generate_event("temp") e.sensor = 0 e.value = data[1] send_event(e) e = generate_event("hum") e.sensor = 0 e.value = data[2] send_event(e) e = generate_event("temp") e.sensor = 1 e.value = data[3] send_event(e) e = generate_event("hum") e.sensor = 1 e.value = data[4] send_event(e) e = generate_event("rain") e.rate = data[5] e.total = data[6] send_event(e) e = generate_event("wind") e.create_child("mean") e.mean.speed = units.MphToMps(data[7]) e.mean.dir = data[9] e.create_child("gust") e.gust.speed = units.MphToMps(data[8]) e.gust.dir = data[9] send_event(e) except Exception, e: self.logger.error(e) # pause until next update time next_update = self.period - (time.time() % self.period) time.sleep(next_update)