Control de temperatura con Ubidots MQTT y NodeMcu

Esta guía detalla cómo realizar 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.

Usaremos una versión precableada e impermeable del sensor DS18B20 (sensor de temperatura OneWire). Resulta útil para medir algo a distancia o en condiciones de humedad. El sensor de temperatura OneWire tiene diferentes versiones; algunas incorporan una resistencia y otras no, así que asegúrese de que la versión que esté usando sea la correcta antes de comenzar el proyecto. Para el control, usaremos un NodeMcu con un pin digital.

Requisitos

Configuración

  1. Primero, debemos elegir una versión. Si su sensor tiene la resistencia integrada, simplemente conéctelo al NodeMcu de la siguiente manera:
DS18B20 NodoMCU
CABLE NEGRO Tierra
CABLE ROJO Vin
CABLE AMARILLO D3

De lo contrario, debes 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.

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

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

  1. Abra el “Administrador de placas” desde el menú Herramientas -> Placa e instale la plataforma esp8266 (y no olvide seleccionar su placa NodeMCU 1.0 desde 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 Boceto -> Incluir biblioteca -> Agregar biblioteca .ZIP .

  4. Seleccione los archivos .ZIP de Ubidots ESPMQTT, OneWire y DallasTemperature y haga clic en "Aceptar" o "Seleccionar" para todas las bibliotecas. Si no puede agregar las bibliotecas, inténtelo manualmente: descomprima el archivo rar/zip descargado y copie la carpeta de la biblioteca a la ruta C:\Users\ ubidots \Documents\Arduino\libraries \.

  5. Cierre el IDE de Arduino y ábralo nuevamente.

Código

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

/**************************************** * Incluir bibliotecas ****************************************/ #include "UbidotsESPMQTT.h" #include<OneWire.h> #incluir<DallasTemperature.h> /**************************************** * Definir Constantes *******************************************/ #define TOKEN "....." // Tu TOKEN Ubidots #define WIFINAME "....." //Tu SSID #define WIFIPASS "....." // Tu Wifi Pass #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 ourWire(Pin); DallasTemperature sensors(&ourWire); Ubidots client(TOKEN, MQTTCLIENTNAME); /*************************************** * Funciones Auxiliares *******************************************/ void callback(char* topic, byte* payload, unsigned int length) { Serial.print("Mensaje llegado ["); Serial.print(topic); Serial.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 Publish("control"); cliente.loop(); }

Resultados

Ahora, abre tu Ubidots y ve a Fuente . Verás una nueva fuente de datos llamada "control". Haz clic en ella.

Aquí verás el valor de la temperatura:

Creando una alerta

También puedes crear un evento que te notifique cuando la temperatura sea irregular. Ve a Eventos , haz clic en Agregar evento y selecciona tu fuente de datos y una variable .

Los eventos pueden notificarte por correo electrónico, SMS, Telegram o WebHook. También puedes configurar una variable:

Cuando tu evento esté listo deberías ver estas ventanas:

En este ejemplo, si de la temperatura es >= 28 , Ubidots le enviará un correo electrónico según lo configurado previamente, de la siguiente manera:

¡Es muy sencillo! Con solo unos pocos cables, puedes observar la temperatura de tu hogar, tanto dentro como fuera. Incluso puedes enviar alertas por correo electrónico o SMS en caso de incendio.

¡Ahora pruebalo!

¿Aún no te has registrado en Ubidots ? No te preocupes, puedes registrarte aquí en menos de 30 segundos.