Proyectos IoT

Control de temperatura con Ubidots MQTT y NodeMcu

María Hernández
· 4 min de lectura
Enviar por correo electrónico

onewire_nodeMcu.jpg

Esta guía detalla cómo hacer un control de temperatura con Ubidots y un NodeMCU simple para enviar alertas por correo electrónico o SMS cuando su “variable” (en este caso, la temperatura) se calienta demasiado, se enfría demasiado o alcanza una determinada regla de diseño.

Vamos a utilizar una versión precableada y resistente al agua del sensor DS18B20 (sensor de temperatura OneWire). Es útil cuando necesitas medir algo lejos o en condiciones de humedad. El sensor de temperatura OneWire tiene diferentes versiones; uno de ellos tiene una resistencia integrada y otros no, así que asegúrate de que la versión que estás usando es la correcta antes de comenzar con el proyecto. Para el control vamos a utilizar un NodeMcu mediante un pin digital.

Requisitos

Configuración

  1. Primero, debemos elegir una versión. Si tu sensor tiene la resistencia integrada, simplemente conéctalo al NodeMcu así:
DS18B20 NodoMCU
CABLE NEGRO Tierra
CABLE ROJO vino
CABLE AMARILLO D3

De lo contrario, debe alimentar el pin DATA a través de la resistencia de 4,7 kΩ, y los pines Vin y GND deben estar conectados entre sí y a tierra.

IMG_20161214_145917.jpg

  1. Vaya al IDE de Arduino, haga clic en Archivos -> Preferencias e ingrese la siguiente URL en el campo "URL adicionales del Administrador de placa". Puede agregar varias URL, separándolas con comas.

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

  1. Abra "Administrador de placas" desde el menú Herramientas -> Placa e instale la plataforma esp8266 (y no olvide seleccionar su placa NodeMCU 1.0 en el menú Herramientas > Placa después de la instalación).

  2. Descargue la Ubidots ESPMQTT , la biblioteca OneWire y la biblioteca DallasTemperature utilizando estos hipervínculos.

  3. Ahora, haga clic en Sketch -> Incluir biblioteca -> Agregar biblioteca .ZIP .

  4. Seleccione los archivos .ZIP de Ubidots ESPMQTT, OneWire y DallasTemperature y luego "Aceptar" o "Elegir" para todas las bibliotecas. Si no puede agregar las bibliotecas, intente manualmente: descomprima el rar/zip descargado y copie la carpeta de la biblioteca a la ruta C:Users ubidots DocumentsArduinolibraries .

  5. Cierra el IDE de Arduino y ábrelo nuevamente.

Código

Una vez todo conectado correctamente, iremos al IDE y escribiremos el siguiente código:

/**************************************** * Incluir Bibliotecas ****** ********************************/ #include " Ubidots ESPMQTT.h" #include<OneWire.h> #incluir<DallasTemperature.h> /****************************************** * Definir constantes ****** ********************************/ #define TOKEN "....." // Tu TOKEN Ubidots #define WIFINAME "....." //Tu SSID #define WIFIPASS "....." // Tu pase Wifi #define MQTTCLIENTNAME "....." // Tu nombre de cliente MQTT, debe ser único por lo que recomendamos elegir un nombre ASCCI aleatorio #define Pin D3 float temp; OneWire nuestroCable(Pin); Sensores de temperatura de Dallas (&ourWire); Cliente Ubidots (TOKEN, MQTTCLIENTNAME); /**************************************** * Funciones auxiliares ****** ********************************/ devolución de llamada nula (tema char*, carga útil byte*, longitud int sin signo) { Serial.print("El mensaje llegó ["); Serial.print(tema); Serie.print("] "); para (int i=0;i <length;i++) { Serial.print((char)payload[i]); } Serial.println(); } /**************************************** * Main Functions ****************************************/ void setup() { // put your setup code here, to run once: Serial.begin(115200); client.wifiConnection(WIFINAME, WIFIPASS); sensors.begin(); client.begin(callback); } void loop() { // put your main code here, to run repeatedly: if(!client.connected()){ client.reconnect(); } sensors.requestTemperatures(); //Prepare the sensor for reading temp = sensors.getTempCByIndex(0); Serial.print(sensors.getTempCByIndex(0)); //Read and print the temperature in Celsius client.add("temperature", temp); //Insert your variable Labels and the value to be sent delay(1000); Serial.println("Grados Centigrados"); client.<a i=3> ubidots Publicar("controlar"); cliente.loop(); }

Resultados

Ahora, abre tu cuenta Ubidots Fuente . Verá una nueva fuente de datos llamada "control". haga clic en él.

Temp_control_DSNodeMcu.jpg

Aquí verá el valor de la temperatura:

Temp_control_NodeMcu.jpg

Creando una alerta

Además, puedes crear un Evento que te notifique cuando la temperatura sea irregular. Vaya a Eventos , haga clic en Agregar evento y seleccione su fuente de datos y una variable .

Los Eventos pueden notificarle por correo electrónico, sms, Telegram o WebHook. También puedes establecer una variable:

Temp_control_EventNodeMcu.jpg

Cuando su evento esté listo, debería ver estas ventanas:

Temp_control_EventNodeMcu2.jpg

En este ejemplo, si de temperatura es >= 28 , Ubidots le enviará un correo electrónico como se configuró previamente, como tal:

TempControl_Evento.jpg

¡Es muy sencillo! Con unos pocos cables podrás observar el comportamiento de la temperatura de tu hogar, ya sea en el interior o en el exterior. Incluso puede activar alertas por correo electrónico/SMS en caso de incendio.

¡Ahora inténtalo!

¿aún no has firmado con Ubidots No te preocupes, puedes hacerlo aquí en menos de 30 segundos.