# Demo to show a simple MQTT subscriber to BayEOS Gateway bridge # Oliver Archner # 29.07.2015 from bayeosgatewayclient import BayEOSWriter, BayEOSSender import paho.mqtt.client as mqtt # BayEOS sender sender = BayEOSSender( url='http://bayconf.bayceer.uni-bayreuth.de/gateway/frame/saveFlat', user='******', password='******') sender.start() # BayEOS writer writer = BayEOSWriter() # MQTT connect and subscribe def on_connect(client, userdata, rc): print("Connected with result code:{0}".format(rc)) # Subscribe everything client.subscribe("#") # MQTT receive and save message def on_message(client, userdata, msg): # Expects a payload in csv format like '1.0,2.0,3.0,4.0' try: lst = msg.payload.split(',') writer.save(values=[float(i) for i in lst], origin=str(msg.topic))
mean_temp = numpy.mean(temp) var_temp = numpy.var(temp) mean_hum = numpy.mean(hum) var_hum = numpy.var(hum) lin_model = stats.linregress(measured_seconds, co2) slope = lin_model[0] intercept = lin_model[1] r_squared = lin_model[2] * lin_model[2] slope_err = lin_model[4] return [ mean_temp, var_temp, mean_hum, var_hum, slope, intercept, r_squared, slope_err ] sender.start() # starts sender in a concurrent thread try: while True: for addr in range(1, 15): # address 0 is reserved for flushing with air gpio.set_addr(0) # set flushing address sleep(60) # flush for 60 seconds gpio.reset() # stop flushing gpio.set_addr(addr) # start measuring wait 60 seconds, 240 measure writer.save(measure(30), origin="RaspberryPi Kammer Nr. " + str(addr)) writer.flush() # close the file in order to "feed" sender gpio.reset() except KeyboardInterrupt:
"""Creates an example writer and sender using threads.""" from time import sleep from bayeosgatewayclient import BayEOSWriter, BayEOSSender import logging PATH = '/tmp/bayeos-device/' NAME = 'Python-Thread-WithLogging' URL = 'http://bayconf.bayceer.uni-bayreuth.de/gateway/frame/saveFlat' writer = BayEOSWriter(PATH,max_time=10,log_level=logging.DEBUG) writer.save_msg('Writer was started.') sender = BayEOSSender(PATH, NAME, URL,backup_path='/dev/shm/bayeos-device') sender.start() while True: writer.save([2.1, 3, 20.5]) sleep(5)
start_new_thread(hum.append, (sht21.read_humidity(),)) start_new_thread(co2.append, (mcp3424.read_voltage(1),)) measured_seconds.append(time()) sleep(start_time + i - time() + 1) # to keep in time mean_temp = numpy.mean(temp) var_temp = numpy.var(temp) mean_hum = numpy.mean(hum) var_hum = numpy.var(hum) lin_model = stats.linregress(measured_seconds, co2) slope = lin_model[0] intercept = lin_model[1] r_squared = lin_model[2]*lin_model[2] slope_err = lin_model[4] return [mean_temp, var_temp, mean_hum, var_hum, slope, intercept, r_squared, slope_err] sender.start() # starts sender in a concurrent thread try: while True: for addr in range(1, 15): # address 0 is reserved for flushing with air gpio.set_addr(0) # set flushing address sleep(60) # flush for 60 seconds gpio.reset() # stop flushing gpio.set_addr(addr) # start measuring wait 60 seconds, 240 measure writer.save(measure(30), origin="RaspberryPi Kammer Nr. " + str(addr)) writer.flush() # close the file in order to "feed" sender gpio.reset() except KeyboardInterrupt: print 'Stopped measurement loop.' finally: