ip = [(s.connect(('8.8.8.8', 80)), s.getsockname()[0], s.close()) for s in [socket.socket(socket.AF_INET, socket.SOCK_DGRAM)]][0][1] print datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), "My private IP is:", ip # init ----------------------------------------------------------------------- httpd = httpservice.Service(2222) led = gpio.GPIOout(26) refreshTime = time.time() + INTERVAL; # loop ------------------------------------------------------------------------ while True: # read temperature, pressure, humidity (degC, hPa, hRel) = bme280.readData() # read brightness data (visible, ir, lux) = tsl2591.readData() # provide data to potential direct connection to port 2222 if httpd.provideData({'temperature':degC,'humidity':hRel, 'pressure':hPa, 'illuminance':lux, 'timestamp':'ALMOST REAL TIME!'}): thread.start_new_thread(led.pulse, (0.1, ) ) print datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), "direct request from", httpd.addr[0] # every 10 seconds, try to send data to servers if time.time() > refreshTime: now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') refreshTime = time.time() + INTERVAL; print now, "T: %.1f degC, P: %.1f hPa, phi: %.1f %%rH, E: %.0f lux" % (degC, hPa, hRel, lux) payload = { 'device': DEVICE_ID, 'password': PASSWORD, 'temperature': degC, 'pressure': hPa, 'humidity': hRel, 'illuminance': lux, 'localaddr': ip } # send data to cloud server if SERVER: try: r=requests.get( "http://"+SERVER+"/store.php", params=payload, timeout=HTTP_TIMEOUT) except: print now, "connection to cloud server failed"
#!/usr/bin/python # -*- coding: latin-1 -*- import time import gpio import bme280 import tsl2591 led = gpio.GPIOout(26) while True: print "Testing LED..." led.pulse(0.5) time.sleep(1) print "Reading Temperature/Pressure/Humidity...", (degC, hPa, hRel) = bme280.readData() # read temperature, pressure, humidity print degC, hPa, hRel if (hPa!=0): led.pulse(0.5) time.sleep(1) print "Reading visible/IR light...", (visible, ir, lux) = tsl2591.readData() # read brightness data print visible, ir if (lux!=0): led.pulse(0.5) time.sleep(5)