Ir al contenido principal
Todas las coleccionesConecta tus dispositivos
Conectar un NodeMCU ESP8266 a Ubidots a través de HTTP
Conectar un NodeMCU ESP8266 a Ubidots a través de HTTP

Aprende a conectar el NodeMCU ESP8266 a la Plataforma de Desarrollo de Aplicaciones de Ubidots a través de HTTP

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

El Kit de Desarrollo basado en ESP8266, integra GPIO, PWM, IIC, 1-Wire y ADC todo en una placa. ¡Impulsa tu desarrollo de la manera más rápida combinándolo con el Firmware NodeMCU!

Siguiendo esta guía podrás POSTEAR y OBTENER datos hacia/desde Ubidots usando el módulo NodeMCU ESP8266 en solo unos minutos!

Requisitos

1. Configuración de Arduino IDE

Los siguientes pasos asumen que ya has instalado el Arduino IDE, si no has cumplido este requisito aún, dirígete a la fuente correspondiente:

  1. Inicia Arduino

  2. Ve a Archivo > Preferencias y copia la siguiente URL en el campo de URL adicional del administrador de tarjetas, como se muestra en la imagen a continuación:

    http://arduino.esp8266.com/stable/package_esp8266com_index.json 

  3. Haz clic en el ícono del Administrador de tarjetas y busca "esp8266". Asegúrate de instalar la versión esp8266 de ESP8266 Community versión 2.7.4:


  4. Finalmente, deberás seleccionar tu placa desde Herramientas > Placa y seleccionar el puerto COM correcto:

  5. Lanza un navegador web y descarga la biblioteca de Ubidots en formato zip. Guárdalo en una ubicación conocida:

  6. En el IDE de Arduino, ve a Sketch > Incluir Biblioteca > Añadir .ZIP Library... y selecciona el archivo .zip descargado en el paso anterior:


¡Eso es todo para la configuración! ¡Puedes proceder ahora a codificar!

2. Enviar valores a Ubidots (POST)

El código de ejemplo en esta sección enviará a Ubidots 3 valores aleatorios a 3 variables separadas desde el ESP32, a saber:

  • Variable_Name_1

  • Variable_Name_2

  • Variable_Name_3

Copia y pega el siguiente fragmento de código en el editor de código de tu IDE, pero primero asegúrate de cambiar las siguientes variables:

  • UBIDOTS_TOKEN: Establece esta variable con un token válido de Ubidots

  • WIFI_SSID: Establece esto con el SSID de tu WiFi

  • WIFI_PASS: Establece esto con la contraseña de tu WiFi.

  • UBI_HTTP (Opcional): Puedes cambiar este parámetro en el constructor de la clase Ubidots para cambiar el protocolo utilizado. Los valores posibles son:

    • UBI_HTTP

    • UBI_TCP

    • UBI_UDP

// This example sends data to multiple variables to
// Ubidots through HTTP protocol.

/****************************************
* Include Libraries
****************************************/

#include "Ubidots.h"

/****************************************
* Define Instances and Constants
****************************************/

const char* UBIDOTS_TOKEN = "..."; // Put here your Ubidots TOKEN
const char* WIFI_SSID = "..."; // Put here your Wi-Fi SSID
const char* WIFI_PASS = "..."; // Put here your Wi-Fi password

// Create a pointer to a instance of the Ubidots class to use it globally
Ubidots* ubidots{nullptr};

/****************************************
* Auxiliar Functions
****************************************/

// Put here your auxiliar functions

/****************************************
* Main Functions
****************************************/
void setup() {
Serial.begin(115200);
Ubidots::wifiConnect(WIFI_SSID, WIFI_PASS);
ubidots = new Ubidots(UBIDOTS_TOKEN, UBI_HTTP);
//ubidots->setDebug(true); // Uncomment this line for printing debug messages
}


void loop() {
float value1 = random(0, 9) * 10;
float value2 = random(0, 9) * 100;
float value3 = random(0, 9) * 1000;
ubidots->add("Variable_Name_One", value1); // Change for your variable name
ubidots->add("Variable_Name_Two", value2);
ubidots->add("Variable_Name_Three", value3);

bool bufferSent = false;
bufferSent = ubidots->send(); // Will send data to a device label that matches the device Id

if (bufferSent) {
// Do something if values were sent properly
Serial.println("Values sent by the device");
}

delay(5000);
}

Después de esto, todo lo que tienes que hacer es flashear el firmware al ESP32. Siguiendo los pasos anteriores, deberías ver un nuevo dispositivo en tu cuenta de Ubidots nombrado según la dirección MAC de tu ESP32.

3. Obtener valores desde Ubidots (GET)

El siguiente código de ejemplo obtendrá el último valor de una variable del dispositivo seleccionado desde Ubidots. Copia y pega el código en el editor de código de tu IDE, pero primero asegúrate de cambiar las siguientes variables:

  • UBIDOTS_TOKEN: Establece esta variable con un token válido de Ubidots

  • WIFI_SSID: Establece esto con el SSID de tu WiFi

  • WIFI_PASS: Establece esto con la contraseña de tu WiFi.

  • DEVICE_LABEL_TO_RETRIEVE_VALUES_FROM: Esta es la etiqueta del dispositivo que contiene la variable de la cual deseas recuperar su valor.

  • VARIABLE_LABEL_TO_RETRIEVE_VALUES_FROM: Esta es la etiqueta de la variable de la cual deseas recuperar su valor.

  • UBI_HTTP (Opcional): Puedes cambiar este parámetro en el constructor de la clase Ubidots para cambiar el protocolo utilizado. Los valores posibles son:

    • UBI_HTTP

    • UBI_TCP

    • UBI_UDP

// This example retrieves last value of a variable from the Ubidots API
// using HTTP protocol.

/****************************************
* Include Libraries
****************************************/

#include "Ubidots.h"

/****************************************
* Define Constants
****************************************/

const char* UBIDOTS_TOKEN = "..."; // Put here your Ubidots TOKEN
const char* WIFI_SSID = "..."; // Put here your Wi-Fi SSID
const char* WIFI_PASS = "..."; // Put here your Wi-Fi password
const char* DEVICE_LABEL_TO_RETRIEVE_VALUES_FROM = "weather-station"; // Replace with your device label
const char* VARIABLE_LABEL_TO_RETRIEVE_VALUES_FROM = "humidity"; // Replace with your variable label

// Create a pointer to a instance of the Ubidots class to use it globally
Ubidots* ubidots{nullptr};

/****************************************
* Auxiliar Functions
****************************************/

// Put here your auxiliar functions

/****************************************
* Main Functions
****************************************/

void setup() {
Serial.begin(115200);
Ubidots::wifiConnect(WIFI_SSID, WIFI_PASS);
ubidots = new Ubidots(UBIDOTS_TOKEN, UBI_HTTP);
//ubidots->setDebug(true); //Uncomment this line for printing debug messages
}

void loop() {
/* Obtain last value from a variable as float using HTTP */
float value = ubidots->get(DEVICE_LABEL_TO_RETRIEVE_VALUES_FROM, VARIABLE_LABEL_TO_RETRIEVE_VALUES_FROM);

// Evaluates the results obtained
if (value != ERROR_VALUE) {
Serial.print("Value:");
Serial.println(value);
}
delay(5000);
}

Después de esto, todo lo que tienes que hacer es flashear el firmware al ESP32.

Una vez que hayas flasheado el firmware, lanza el Terminal Serial en tu IDE y podrás ver el valor recuperado siendo impreso.

4. Resumen

Para ejemplos adicionales que muestran cómo incluir una marca de tiempo o contexto en tus datos, consulta la carpeta de ejemplos de la biblioteca ESP8266 de Ubidots.

¿Ha quedado contestada tu pregunta?