示例#1
0
	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)
示例#2
0
文件: ws23xx.py 项目: zedoude/wfrog
    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)
示例#3
0
文件: ws23xx.py 项目: mrgmarsh/wfrog
    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)