Controle de temperatura com Ubidots MQTT e NodeMcu

Este guia detalha como fazer um controle de temperatura com Ubidots e um NodeMCU simples para enviar alertas por email ou SMS quando sua “variável” (neste caso, a temperatura) fica muito quente, muito fria ou atinge uma determinada regra de design.

Usaremos uma versão pré-cabeada e à prova d’água do sensor DS18B20 (sensor de temperatura OneWire). É útil quando você precisa medir algo distante ou em condições úmidas. O sensor de temperatura OneWire possui diferentes versões; um deles tem resistor integrado e outros não, então certifique-se de que a versão que você está usando está correta antes de iniciar o projeto. Para o controle, usaremos um NodeMcu utilizando um pino digital.

Requisitos

Configurar

  1. Primeiro, devemos escolher uma versão. Se o seu sensor possui o resistor integrado, basta conectá-lo ao NodeMcu assim:
DS18B20 NodeMCU
FIO PRETO GND
FIO VERMELHO Vin
FIO AMARELO D3

Caso contrário, você deve alimentar o pino DATA através da resistência de 4,7kΩ, e os pinos Vin e GND devem ser conectados entre si e ao terra.

  1. Vá para o IDE do Arduino, clique em Arquivos -> Preferências e insira o seguinte URL no campo “URLs adicionais do gerenciador de placa”. Você pode adicionar vários URLs, separando-os por vírgulas.

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

  1. Abra o “Boards Manager” em Ferramentas -> menu Placa e instale a plataforma esp8266 (e não se esqueça de selecionar sua placa NodeMCU 1.0 no menu Ferramentas> Placa após a instalação).

  2. Baixe a biblioteca Ubidots , OneWire Library e DallasTemperature Library usando estes hiperlinks.

  3. Agora clique em Sketch -> Incluir Biblioteca -> Adicionar Biblioteca .ZIP .

  4. Selecione os arquivos .ZIP de Ubidots ESPMQTT, OneWire e DallasTemperature e depois “Aceitar” ou “Escolher” para todas as bibliotecas. Se você não conseguir adicionar as bibliotecas, tente manualmente: descompacte o rar/zip baixado e copie a pasta da biblioteca para o caminho C:Users ubidots DocumentsArduinolibraries .

  5. Feche o IDE do Arduino e abra-o novamente.

Código

Assim que tudo estiver conectado corretamente, iremos ao IDE e escreveremos o seguinte código:

/**************************************** * Incluir bibliotecas ****** **********************************/ #include " Ubidots ESPMQTT.h" #include<OneWire.h> #incluir<DallasTemperature.h> /**************************************** * Definir constantes ****** **********************************/ #define TOKEN "....." // Seu TOKEN Ubidots #define WIFINAME "....." //Seu SSID #define WIFIPASS "....." // Seu passe Wifi #define MQTTCLIENTNAME "..." // Seu nome de cliente MQTT, deve ser exclusivo portanto, recomendamos escolher um nome ASCCI aleatório #define Pin D3 float temp; OneWire nossoWire(Pino); Sensores de temperatura Dallas(&ourWire); Cliente Ubidots (TOKEN, MQTTCLIENTNAME); /************************************** *Funções Auxiliares****** **********************************/ void callback(char* topic, byte* payload, unsigned int length) { Serial.print("A mensagem chegou ["); Serial.print(tópico); 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 Publicar("controle"); cliente.loop(); }

Resultados

Agora, abra sua conta Ubidots Fonte . Você verá um novo DataSource chamado “controle”. clique nele.

Aqui, você verá o valor da temperatura:

Criando um Alerta

Além disso, você pode criar um Evento que avisa quando a temperatura está irregular. Vá para Eventos , clique em Adicionar Evento e selecione sua Fonte de Dados e uma Variável .

Os Eventos podem notificá-lo por e-mail, sms, Telegram ou WebHook. Você também pode definir uma variável:

Quando seu evento estiver pronto, você deverá ver estas janelas:

Neste exemplo, se da temperatura for >= 28 , Ubidots enviará um e-mail conforme configurado anteriormente, como tal:

É muito simples! Com apenas alguns cabos você pode observar o comportamento da temperatura da sua casa, esteja ela dentro ou fora. Você pode até acionar alertas via e-mail/SMS em caso de incêndio.

Agora você tenta!

… ainda Ubidots Não se preocupe, você pode chegar aqui em menos de 30 segundos.