Los dispositivos Particle son kits de desarrollo de hardware compactos y fáciles de programar que proporcionan todo lo que necesitas para construir un proyecto conectado. Combinan un microcontrolador ARM, un chip de comunicación (WiFi, GPRS o 3G) y un IDE web con toneladas de ejemplos y bibliotecas de la comunidad.
Siguiendo esta guía, podrás PUBLICAR y SUBSCRIBIR datos a/desde Ubidots utilizando cualquier módulo de Particle Device en solo un par de minutos!
Requisitos
Cable Micro USB
Tarjeta SIM de Particle con plan de datos (si usas un Particle Electron)
Una cuenta de Ubidots
Paso a Paso
Configuración del Dispositivo
SUBSCRIBIR a una Variable
PUBLICAR Valores a un Dispositivo
1. Configuración del Dispositivo
1.- Configurando tu dispositivo Particle:
Si estás usando un Particle Electron, sigue estos pasos para configurar el plan de datos de Particle. Pasos para Particle Electron.
Si estás usando un Particle Core, tienes dos formas de configurarlo:
Si estás usando un Particle Photon, tienes dos formas de configurarlo:
2.- Después de reclamar tu dispositivo Particle y configurar tu cuenta de Ubidots, vamos a IDE Web de Particle.
En el IDE Web de Particle, crea una Nueva Aplicación y establece el nombre. Para más detalles sobre cómo crear una Nueva Aplicación, dirígete a este artículo y regresa una vez que hayas terminado.
Ve a la pestaña de biblioteca.
En la biblioteca contribuida, escribe Ubidots y selecciona la biblioteca UBIDOTSMQTT. Asegúrate de agregar la última versión de la biblioteca (1.1.3).
Haz clic en INCLUIR EN LA APLICACIÓN. Y regresa a “MYAPP.ino”
Esta biblioteca crea por defecto un nuevo Dispositivo. El nombre de este dispositivo será "Particle" por defecto, y su etiqueta será tu ID de Particle Core.
2. SUSCRIBIR a una Variable
Para suscribirte a una variable, primero, define tu token de cuenta de Ubidots, luego especifica las etiquetas del dispositivo y de la variable como argumentos de entrada para la función ubidotsSubscribe()
. El valor entrante será devuelto por la biblioteca MQTT en la variable de carga útil, por defecto la función suscrita solo obtiene el último valor de la variable suscrita. La función de retención de valor solo está disponible para usuarios de la plataforma core.
/**************************************** * Incluir Bibliotecas ****************************************/#include "UbidotsMQTT.h"/**************************************** * Definir Constantes ****************************************/#ifndef TOKEN#define TOKEN "Your TOKEN" // Agrega aquí tu TOKEN de Ubidots#endif/**************************************** * Funciones Auxiliares ****************************************/void callback(char* topic, byte* payload, unsigned int length) { Serial.print("Mensaje recibido ["); Serial.print(topic); Serial.print("] "); Serial.println("carga útil obtenida del servidor:"); for (int i=0;i<length;i++) { Serial.print((char)payload[i]); // imprime la respuesta del broker para fines de depuración } // Algunas cosas que hacer con la carga útil obtenida // // Serial.println();}/**************************************** * Instancias ****************************************/UbidotsMQTT client(TOKEN, callback);/**************************************** * Funciones Principales ****************************************/void setup() { Serial.begin(115200); // Descomenta esta línea para configurar el Broker de Ubidots //client.ubidotsSetBroker("industrial.api.ubidots.com"); client.connect(); if(client.isConnected()){ // Inserta como primer parámetro la etiqueta del dispositivo a suscribirte y como segundo la etiqueta de la variable client.ubidotsSubscribe("device-label", "variable-label"); }}void loop() { if(!client.isConnected()){ client.connect(); } // Bucle del cliente para publicar y mantener la conexión client.loop(); delay(1000);}
PUBLICAR Valores a un Dispositivo
Para publicar valores en Ubidots, primero debes llamar a la función add()
para almacenar los valores a enviar (máx. 5 valores por solicitud), así que inserta como parámetros para la función add()
la etiqueta de la variable, el contexto y la marca de tiempo (estos dos últimos son opcionales):
/**************************************** * Incluir Bibliotecas ****************************************/#include "UbidotsMQTT.h"/**************************************** * Definir Constantes ****************************************/#ifndef TOKEN#define TOKEN "Your TOKEN" // Agrega aquí tu TOKEN de Ubidots#endif/**************************************** * Funciones Auxiliares ****************************************/void callback(char* topic, byte* payload, unsigned int length) { Serial.print("Mensaje recibido ["); Serial.print(topic); Serial.print("] "); Serial.println("carga útil obtenida del servidor:"); for (int i=0;i<length;i++) { Serial.print((char)payload[i]); // imprime la respuesta del broker para fines de depuración } // Algunas cosas que hacer con la carga útil obtenida // // Serial.println();}/**************************************** * Instancias ****************************************/UbidotsMQTT client(TOKEN, callback);/**************************************** * Funciones Principales ****************************************/void setup() { Serial.begin(115200); // Descomenta esta línea para configurar el Broker de Ubidots //client.ubidotsSetBroker("industrial.api.ubidots.com"); client.connect();}void loop() { if(!client.isConnected()){ client.connect(); } // Rutina de publicación, si el dispositivo y las variables no están creados, se crearán float value = 1; Serial.println("Enviando valor"); client.add("test-var-1", value); // Inserta como primer parámetro tu etiqueta de variable client.add("test-var-2", value, "\"lat\":10.302, \"lng\":2.9384"); // Agrega valor con contexto client.add("test-var-3", value, NULL, 1492445109); // Agrega valor con marca de tiempo personalizada client.ubidotsPublish("device-label"); // Inserta tu etiqueta de dispositivo donde se almacenarán los valores en Ubidots // Bucle del cliente para publicar y mantener la conexión client.loop(); delay(1000);}