Ir al contenido principal
Todas las coleccionesConecta tus dispositivos
Conectar un dispositivo Particle a Ubidots a través de MQTT
Conectar un dispositivo Particle a Ubidots a través de MQTT

Aprende a configurar un dispositivo Particle para SUSCRIBIR/PUBLICAR utilizando la biblioteca de Ubidots en el IDE de Particle a través de MQTT.

Sergio M avatar
Escrito por Sergio M
Actualizado hace más de 2 meses

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

  1. Configuración del Dispositivo

  2. SUBSCRIBIR a una Variable

  3. 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);}
¿Ha quedado contestada tu pregunta?