El día de hoy llegamos con un proyecto técnico en el cual conectaremos un Airlock Plaato al sistema ThingSpeak.
Antecedentes y equipo necesario
En este post pretendemos conectador un Airlock Plaato y llevar todos sus datos a la plataforma ThingSpeak. De forma similar como hicimos tiempo atrás con el hidrómetro Tilt, como puedes ver dando clic aquí: De Tilt, Google Sheets a ThingSpeak.
Lo primero que debes tomar en cuenta es que el Plaato sí o sí necesita una conexión USB para alimentación. Es decir, no funciona con baterías. También considera que para conectarse y poder usar sus datos requieres de una conexión wifi que funcione a 2.4 GHz (la mayoría de redes Wifi, aunque hay routers que también trabajan a 5 GHz, como el de mi casa); y que la red NO puede ser de tipo WPA & WPA2 Entreprise, como justamente me pasó y me tardé medio día en encontrar en la información oficial este pequeño gran detalle. Este tipo de seguridad es fácil de identificar, porque es la típica configuración de usuario – contraseña, que se tiene en empresas o en la universidad, como es mi caso. Si es que este es tu problema tendrás que valerte de algún tipo de router o red intermedia, para generar tu propia red y así saltarte esta autenticación; yo lo hice conectando un router a mi raspberry pi. Un lío, pero es lo que hay.
Después de una corta configuración, que te la mostraré luego, el objetivo de este proyecto es enviar los datos a la plataforma ThingSpeak, de la que ya hemos hablado con anticipación en el proyecto anterior.
En resumen, ThingSpeak, es un sistema de análisis de datos online basado en Matlab. ¿Y para qué me puede servir esto? Primero, porque desde ThingSpeak puedes almacenar, enviar y procesar los datos no de 1 ni de 10 sensores, sino de centenares, puedes crear tu propia App, y así integrar sensores Tilt, Plaato, Arduinos, Pt100, y casi cualquier cosa que se pueda conectar a internet. De hecho, esta plataforma es un sistema para IoT. ¿Suena interesante? Lo es.
Este proyecto tiene por objetivo conectar 1 Plaato, y recibir sus datos a un canal de ThingSpeak, aprovechando que la compañía tiene ya por default sus datos en la nube mediante la plataforma Blynk. Por esto, el procedimiento es considerablemente más simple que el proyecto del Tilt. Para esto necesitarías:
- 1 Plaato.
- Cuenta en ThingSpeak (gratuita con limitaciones).
- Un teléfono móvil para la primera configuración.
Configurando el Plaato
Como lo he dicho anteriormente, primero tienes que tener claro que la red wifi a la que te conectes no cuente con las limitaciones mencionadas. Superado esto, tendrás que descargar en tu teléfono la aplicación oficial (iOs y Android) y conectar el Plaato a una fuente USB. Debes crear una nueva sesión y seguir las instrucciones que son francamente sencillas y ya esta.
Solamente considera que si cambias de red, o te llevas en Plaato a otro sitio tendrás que llevarlo a punto de fábrica y repetir el procedimiento.
Las instrucciones completas puedes verlas en el siguiente video:
Con estos pasos, tendrás los datos del sensor en su App. Además deberás realizar unas pequeñas configuraciones referentes al batch, como por ejemplo los litros de mosto que fermentan, la densidad inicial, y pocas cosas más.
En este punto podríamos quedarnos ahí. Pero no. Nosotros queremos los datos en ThingSpeak.
Plaato en la nube a través de Blynk
Un pequeño y enorme detalle que encontré casi por casualidad en una noticia sobre emprendimiento es que Plaato realizó su proyecto utilizando la plataforma Blynk. Detallazo. Esta es una aplicación rusa a la que deberías darle un ojo, ya que nos permite crear nuestras propias apps para iOs y Android de forma gratuita. Aunque, lo que realmente es interesante
Y aunque esta plataforma sea realmente interesante, lo que sirve para nuestro objetivo es recordar que la conexión Plaato – Servidor Blynk – App, hace que tengamos los datos disponibles en la nube. Con esto, Plaato nos da la información de cómo tener los datos mediante una función GET, con el siguiente formato:
GET http://plaato.blynk.cc/auth_token/get/pin
Nos percatamos así que lo primero que necesitaremos es el “auth_token”. Sin embargo, la forma de obtenerlo es tremendamente precaria. Deberás realizar todos los pasos anteriores y luego enviar un correo electrónico a support@plaato.io, con el asunto “Auth token”, y dar tu nombre de usuario. Días después (4 en mi caso), recibirás una respuesta con el código.
Otra cuestión es saber qué valores puede tomar “pin”, ya que Blynk utiliza un sistema de pins viruales, que representan los datos que podemos obtener. Todos los pines disponibles son:
También hay forma de obtener los datos históricos a través de un archivo csv, aunque solamente recibirás los datos V102, V103 y V106, mediante un cambio en la función GET:
GET http://plaato.blynk.cc/auth_token/data/pin
OJO: Un detalle que debes observar, y que es importante, es que el Plaato NO ENTREGA LA TEMPERATURA DEL MOSTO, sino la temperatura ambiente, cuidado con esa confusión.
Con estos datos, si por ejemplo, en la barra de navegación de mi browser escribo la dirección:
http://plaato.blynk.cc/e337c70MI_CODIGO_BORRADO_POR_SEGURIDADda80cef6/get/v106
Recibiré la siguiente información, que corresponde a la densidad específica de mi plaato, que es prácticamente 1.008:
ThingSpeak
Evidentemente lo primero será crearnos una cuenta gratuita, para lo cual conviene utilizar o crear una de MathWorks, ya que ThingSpeak es un servicio de esta empresa y el tener una cuenta de ella nos da acceso a más herramientas.
Luego, lo primero será crear un canal. En este sistema, un canal representa un sensor, que puede tener 8 datos distintos (Fields) y uno extra que representa el Timestamp (Marca de tiempo, es decir fecha y hora a la que se accedió al dato).
Después de crear el canal procedemos a crear los campos. Para nuestro caso dejamos en blanco el primer campo y activamos los demás. Aunque solamente nos interesará conocer los BPM, temperatura ambiente, densidad inicial, densidad específica, ABV y el volumen total de CO2. Guardamos el canal y pasamos al siguiente paso.
Nos vamos a la pestaña APPS, y entramos en Matlab Analysis, dando clic en Custom (no starter code). Así, pasamos a darle un nombre cualquiera al script y pasaremos a copiar el siguiente código en la sección Matlab Code.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Ingreso datos de configuración
token = 'e3_TU CODIGO AUTH TOKEN_cef6'; %Token dado por Plaato
channelID = 1_TU CANAL_5; % Channel ID del canal de ThingSpeak
writeKey = 'GB_TU WRITE KEY_52N'; % Write API Key del canal de ThingSpeak
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Datos que se solicitarán a Plaato. La información de todos los pines
%disponibles está en: https://plaato.zendesk.com/hc/en-us/articles/360003235097-GET-value
pin2 = "v102"; %Burbujas por minuto
pin3 = "v103"; %Temperatura ambiente
pin5 = "v105"; %Densidad inicial (en grados Oechsle g/cm3)
pin6 = "v106"; %Densidad específica (en grados Oechsle g/cm3)
pin7 = "v107"; %ABV
pin19 = "v119"; %Volumen total de CO2 producido durante el batch
pin = [pin2; pin3 ;pin5; pin6 ;pin7 ;pin19];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Captura de datos de Plaato en la plataforma Blynk.
for ii=1:length(pin)
url = ['http://plaato.blynk.cc/' token '/get/' pin{ii}];
temp = webread(url);
data{ii} = temp ;
x = class(temp);
tf = strcmp(x,'double');
if tf == 1
data{ii} = sprintf('%.0f',temp);
end
data{ii} = str2double(data{ii});
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Generación de fecha, día y hora de la toma del último dato.
tStamp = datetime('now','TimeZone','local','Format','dd-MM-yyyy HH:mm ZZZZ');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Envío al canal ThingSpeak
thingSpeakWrite(channelID,{data{1},data{2},data{3},data{4},data{5},data{6}},'Fields',[1,2,3,4,5,6],'WriteKey',writeKey,'TimeStamp',tStamp);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
NOTA 10/07/2020: El código mostrado no se encuentra aún optimizado, por lo cual, posteriormente iré subiendo correcciones. Sin embargo funciona correctamente. Si encuentras alguna falla, o tienes una sugerencia no dudes en contactarnos a través de los comentarios.
De este código es importante que cambiemos 5 datos por cada cerveza que estemos monitoreando:
- token
- channelID
- writeKey
Token
Es el valor ya mencionado, dado por Plaato.
Channel ID y WRITE API KEY
En este caso, la información se la encuentra en un lado del MATLAB ANALYSIS. Ahí se encuentran los datos que requerimos, y que deberemos copiarlos en nuestro código al inicio.
TimeControl
Para terminar, iremos hasta el final del MATLAB ANALYSIS y añadiremos una App llamada TimeControl.
Ahí, seleccionaremos una frecuencia recurrente de 20 minutos, y en acción debe quedar seleccionado en Matlab Analysis, y el Code to Execute el nombre del que creamos, en mi caso PLAATO1. Con esta acción pretendemos que ThingSpeak ejecute el código que anteriormente programamos de forma recurrente.
Guardamos y finalmente damos clic en Save and Run.
De Plaato a ThingSpeak: visualización
Hecho todo esto podemos ir a la pestaña Channels, en el que se visualizarán los datos que el sensor automáticamente envía.
Se puede observar todos los datos que internamente se están guardando en el canal ThingSpeak.
Con todo esto hemos conseguido el objetivo inicial de conectar y visualizar los datos obtenidos por un Plaato en ThingSpeak.
Nuestro siguiente proyecto será conectar el airlock Plaato y el hidrómetro Tilt, que están en ThingSpeak, hacia un Raspberry Pi para poder realizar un control personalizado de temperatura.
¿Te ha gustado este proyecto? ¿Crees que debamos corregir algo? ¿Te parece útil saber cómo usar de forma alternativa los datos de sensores como el Plaato? Cuéntanos más en los comentarios.