ThingSpeak es una plataforma Open Source para conectar productos y servicios al Internet de las Cosas (IoT). Permite a los desarrolladores interactuar con los dispositivos utilizando tecnologías Web estándar.
Un ejemplo muy sencillo de lo que puede conseguirse con ThingSpeak es el acceso a logs de parámetros como temperatura, humedad, estado de gpios, estado de carga de CPU... Aunque cualquier dato/información es perfectamente factible de ser accedida a través de esta plataforma.
Lo primero es darnos de alta. Entramos en la página y hacemos click en Sing Up:
Introducimos un ID, nuestro email y una clave de acceso. Aceptamos las condiciones del servicio y hacemos click en Create Acount
Una vez creada nuestra cuenta tenemos que crear nuestro primer canal. Para ello, hacemos click en New Channel:
A continuación rellenamos una serie de datos como el nombre del canal, su descripción, los campos que aparecerán en las gráficas etc. Un dato importante es si hacemos público el acceso para que cualquiera pueda acceder a los datos.
Otro dato importante son los campos (Field). Por cada campo que creamos nos aparecerá una gráfica. Yo he creado dos, uno para la temperatura y otro para la humedad.
Hacemos click en Save Channel y ya tenemos creado nuestro primer canal:
Una vez creado nuestro primer canal, nos aparecerá algo así:
Un dato muy importante es la API Keys. Estas son claves que necesitaremos incluir en nuestra programación para enlazar con ThinkSpeak. En nuestro caso, utilizaremos la clave de escritura Write API Key
Empezamos a programar nuestro módulo. El esquema de conexión es el mismo que en el artículo Practicando con el sensor DHT11. El código completo es el siguiente:
--ThingSpeak - IoT
wifi.setmode(wifi.STATION)
wifi.sta.config("SSID","PASSWORD") -- SSID y PASSWORD de vuestra wifi
print(wifi.sta.getip())
tmr.delay(5000)
-- Declaración de variables
pin = 3
humi=0
temp=0
Write_Key = "N04IUK8Z1LUC0BF1" -- API Key del canal en ThinkSpeak
--Función leer sensor DH11
function LeerDHT11()
status,temp,humi = dht.read11(pin)
if( status == dht.OK ) then
print("DHT Temperatura: "..temp.."ºC - Humedad: "..humi.."%")
elseif( status == dht.ERROR_CHECKSUM ) then
print( "DHT Checksum error." );
elseif( status == dht.ERROR_TIMEOUT ) then
print( "DHT Time out." );
end
end
-- Enviamos datos a https://api.thingspeak.com
function sendTS(humi,temp)
conn = nil
conn = net.createConnection(net.TCP, 0)
conn:on("receive",
function(conn, payload)
success = true
print(payload)
end)
conn:on("connection",
function(conn, payload)
print("Connectado")
-- Enviamos la Write_Key
conn:send("GET /update?key="..Write_Key)
-- Enviamos los datos de temperatura y humedad
conn:send("&field1="..temp.."&field2="..humi)
conn:send("HTTP/1.1\r\n\Host: api.thingspeak.com\r\nAccept: */*\r\nUser-Agent: Mozilla/4.0 (compatible; esp8266 Lua; Windows NT 5.1)\r\n\r\n")
end)
conn:on("disconnection",
function(conn, payload)
print("Desconectado")
end)
conn:connect(80,"184.106.153.149") -- IP pública de thingspeak
end
-- Ejecuta la lectura por primera vez y lo envía a thingspeak
LeerDHT11()
sendTS(humi,temp)
-- Timer que realiza la lectura cada 10 segundos
tmr.alarm(1,10000, 1, function() LeerDHT11() sendTS(humi,temp)end)
Toda la primera parte (conexión a la red wifi, lectura de la temperatura y humedad) es igual al artículo Creando un servidor web. La parte que nos interesa es la conexión con thingspeak. Para más información consultar su API.
Fuentes:
No hay comentarios:
Publicar un comentario
Nota: solo los miembros de este blog pueden publicar comentarios.