Paso 5: Codificación de la Edison
Hemos usado script de Python en lugar de utilizar Arduino, debido a las bibliotecas disponibles. Algunos sensores de ranura así como los de LCD no está disponibles en Arduino a partir de ahora.
Este código simplemente toma la entrada de ambos sensores manipula los datos muestreados y entradas Thingspeak canal ID.
Código de Python:
import pyupm_i2clcd as lcddimport mraa import time import httplib import math import time import socket import sys temppin=0 heartbeatpin=2temp=mraa.Aio(temppin) beat=mraa.Gpio(heartbeatpin)beat.dir(mraa.DIR_IN)lcd= lcdd.Jhd1313m1(0, 0x3E, 0x62) count=0 beatrate=0 currtime=time.time() key="your_key_here"def beatme(args): global count global beatrate global currtime count=count+1 if ((time.time()-currtime)>20): beatrate=60*count/(time.time()-currtime) currtime=time.time() count=0 returnbeat.isr(mraa.EDGE_RISING,beatme,beatme)B=3975 def gettemp(): a=temp.read() resistance=(float)(1023-a)*10000/a temperature=1/(math.log(resistance/10000)/B+1/298.15)-273.15 return temperaturedef updateme(f1,f2): global key conn = httplib.HTTPConnection("api.thingspeak.com") query="/update?api_key="+key+("&field1=%d&field2=%d" %(f1,f2)) conn.request("GET", query) r1 = conn.getresponse() preresult = r1.read() observation("temp",f2) observation("beat",f1) return preresultdef observation(var,val): UDP_PORT = 41234 # UDP port iotkit-agent is listening: defined in /etc/iotkit-agent/config.json sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.sendto('{"n":"' + str(var) + '","v":"' + str(val) + '"}', ('localhost', UDP_PORT)) return while 1: lcd.setCursor(0,0) lcd.write("Temperature:%d" %(gettemp())) lcd.setCursor(1,0) lcd.write("Heartbeat:%d" %(beatrate)) updateme(beatrate,gettemp())