On sen.se make 2 more feeds. Set these up so that they e-mail you whenever data is recieved, this is quite easy on sen.se. Put led's into the gpio's 23, 24 and 25 preferably red, yellow and green (we are making a traffic light system). Then edit your code from the previous step and put in the new feed id's into feed_id 2 and 3.
import httplib
import json as simplejson
from random import randint
import time
import os
import glob
import wiringpi2 as wiringpi
wiringpi.wiringPiSetupGpio()
wiringpi.pinMode(23, 1) #red
wiringpi.pinMode(24, 1) #yellow
wiringpi.pinMode(25, 1) #green
wiringpi.digitalWrite(23, 0)
wiringpi.digitalWrite(24, 0)
wiringpi.digitalWrite(25, 0)
os.system('modprobe w1-gpio')
os.system('modprobe w1-therm')
base_dir = '/sys/bus/w1/devices/'
device_folder = glob.glob(base_dir + '28*')[0]
device_file = device_folder + '/w1_slave'
run_number = 0
SENSE_API_KEY =
FEED_ID1 = #actual graph
FEED_ID2 = #min
FEED_ID3 = #max
def read_temp_raw():
f = open(device_file, 'r')
lines = f.readlines()
f.close()
return lines
def read_temp():
lines = read_temp_raw()
while lines[0].strip()[-3:]!= 'YES':
time.sleep(1)
lines = read_temp_raw()
equals_pos = lines[1].find('t=')
if equals_pos != -1:
temp_string = lines[1][equals_pos+2:]
tempC = float(temp_string)/1000.0
return tempC
def send_to_opensense(data):
try:
datalist = [{"feed_id" :FEED_ID1, "value" :data['C']},]
headers = {"sense_key": SENSE_API_KEY,"content-type":"appliaction/json"}
conn = httplib.HTTPConnection("api.sen.se")
conn.request("POST", "/events/", simplejson.dumps(datalist),headers)
response = conn.getresponse()
conn.close()
except:
pass
ef send_to_opensense2(data): #do not edit please
try:
datalist = [{"feed_id" :FEED_ID2, "value" :data['C']},]
headers = {"sense_key": SENSE_API_KEY,"content-type":"appliaction/json"}
conn = httplib.HTTPConnection("api.sen.se")
conn.request("POST", "/events/", simplejson.dumps(datalist),headers)
response = conn.getresponse()
conn.close()
except:
pass
def send_to_opensense3(data):
try:
datalist = [{"feed_id" :FEED_ID3, "value" :data['C']},]
headers = {"sense_key": SENSE_API_KEY,"content-type":"appliaction/json"}
conn = httplib.HTTPConnection("api.sen.se")
conn.request("POST", "/events/", simplejson.dumps(datalist),headers)
response = conn.getresponse()
conn.close()
except:
pass
while(True):
try:
run_number = run_number + 1
tempC = read_temp()
print "RasPI(2) Ambient Run:",run_number," tempC:",tempC
data = {'C' : tempC}
send_to_opensense(data)
if 26.5 <= tempC and 29.5 >= tempC: # good range of 26.5-29.5 change for if range wants to change
wiringpi.digitalWrite(25, 1)
wiringpi.digitalWrite(24, 0)
wiringpi.digitalWrite(23, 0)
if 26 <= tempC and 26.5 > tempC: # okay range of 26 - 26.5 change if range wants to change
wiringpi.digitalWrite(25, 0)
wiringpi.digitalWrite(24, 1)
wiringpi.digitalWrite(23, 0)
if 26 > tempC: # bad range less than 26 change if range needs to change
wiringpi.digitalWrite(25, 0)
wiringpi.digitalWrite(24, 0)
wiringpi.digitalWrite(23, 1)
send_to_opensense2(data)
if 29.5 < tempC and 30 >= tempC: # okay range of 29.5 - 30 change if range wants to change
wiringpi.digitalWrite(25, 0)
wiringpi.digitalWrite(24, 1)
wiringpi.digitalWrite(23, 0)
if 30 < tempC: # bad range more than 30 change if range needs to change
wiringpi.digitalWrite(25, 0)
wiringpi.digitalWrite(24, 0)
wiringpi.digitalWrite(23, 1)
send_to_opensense3(data) #
time.sleep(10) #frequency of reading in seconds, change if required
# if ranges are changed, please make sure that ranges are continuous and do not edit the inequality signs
except:
pass
No comments:
Post a Comment