Páginas

ESP8266 e-mail IFTTT monitor and control



ESP8266 envia e-mail leitura de sensores e controla dispositivos ON/OFF Wi-Fi

Google Play: ESP8266 e-mail IFTTT monitor and control
https://play.google.com/store/apps/details?id=appinventor.ai_antoniosergiosouzaalmeida.ESP8266_email_IFTTT_monitor_and_control

Icones:





ESP8266 envia e-mail referente à leitura do sensor DHT22 temperatura e umidade;
 Envia e-mail referente a leitura do sensor HC-SR501-PIR sensor de movimento e detecção de ondas de calor infra vermelho.

O ESP8266 funciona conectado à rede Wi-Fi sem fio, os parâmetros dos sensores podem ser ajustados para enviar e-mail com os valores desejados.

Veja passo a passo utilização do App. e como é fácil enviar novos e-mails com o IFTTT:
Código ESP8266 completo utilizando IDE Arduino.





O APP. possui também :
- 5 Botões tipo chaves ON/OFF para acionamento de dispositivos conectados à rede 110/220V, através de relés;
- 1 Botão de pulso tipo push button para abertura de portão com trava eletromagnética conectado à rede 110/220V, através de relé;
- Todos os botões são editáveis com os nomes dos dispositivos específicos;
- Todos os botões são sinalizados quando acionados:
 O ESP8266 recebe dados do APP. processa a informação e retorna  ao APP. os status sobre a leitura das portas acionadas, o que faz a sinalização correta quando uma chave é acionada.

E-mail:
O ESP8266 faz conexão com com sua rede Wi-Fi, através do nome de usuário e senha;
Estando conectado podemos ver na IDE Arduino todas essas informações inclusive o numero de IP e porta;
Então basta copiar IP e porta para a URL do App. como exemplo:
http://192.168.1.50:8088





IFTTT: IF THIS THEN THAT
Nesta página faremos  as referências sobre as atuações dos  sensores, a lista de E-mails  e o corpo do E-mail com a descrição ou tipo de atuação, como exemplo:

E-mail:  Alerta temperatura acima de 30C, Umidade acima do valor permitido(95%) ou ainda Alerta: Movimentação nesta área, favor verificar imediatamente.






Para editar a URL ou nome dos botões, basta pressionar o botão cadeado para destravar, entrar em modo de edição, terminado pressione cadeado novamente para sair do modo de edição e em seguida pressione o botão salvar;
Todos os dados serão salvos no banco de dados do App.


Todos os dados de leitura dos sensores serão monitorados a cada 5 segundos;
O App. possui um botão atualizar que atualiza os dados sobre sensores ou botões instantaneamente.

Modo de atualização: Recupera a ultima atuação de botões ou sensores;
Quando sair do App. e entrar novamente pressione o botão atualizar e verá que o App. recupera todos os status de botões e sensores enviados pelo ESP8266.



Resumo:

- Enviar e-mail sobre a atuação de sensores com valores ajustados no App.;
- Enviar outros e-mails, basta criar novo e-mail e inserir no código do ESP8266;
- Editar código exemplo ESP8266 IDE Arduino e enviar e-mail em condições diversas;
- Temperatura e Umidade com o sensor DHT22;
- Movimento e detecção de ondas de calor infra vermelho com o sensor HC-SR501-PIR;
- Leitura dos sensores com ajustes(máximo e mínimo) e sinalização;
- Monitorar sensores;
- 5 Botões tipo chaves ON/OFF para acionamento de dispositivos conectados à rede    110/220V, através de relés;
- 1 Botão de pulso tipo push button para abertura de portão com trava eletromagnética conectado à rede 110/220V, através de relé;
- Editável: Campos editáveis;
- Salvar dados no banco de dados do App.;
- Botão atualizar: retorna o status dado do ultimo acionamento ou leitura de sensor.

Veja passo a passo utilização do App. e como é fácil enviar novos e-mails com o IFTTT:
Código ESP8266 completo utilizando IDE Arduino.

Google Play: ESP8266 e-mail IFTTT monitor and control
https://play.google.com/store/apps/details?id=appinventor.ai_antoniosergiosouzaalmeida.ESP8266_email_IFTTT_monitor_and_control

Instalações:


- Roteador Wi-Fi exemplo D-Link DWR116.
- Meu SSID: sergioDWR116
- Meu PASSWORD: sergio1234






Esquema Elétrico:

Ligações dos relés:

Exemplo de ligações utilizando módulo de relés na rede elétrica:
O módulo relé possui uma lógica invertida quando desejamos acionar ou energizar a bobina no relé precisamos colocar nível "0V' na entrada do módulo relé(lógica invertida) com isso um contato normalmente aberto é fechado de forma correta.




Programa ESP8266: ESP8266 e-mail IFTTT monitor and control


#include <ESP8266WiFi.h>
#include <String.h>
//------------------------------
#include <WiFiClientSecure.h>
WiFiClientSecure client;

#define EVENTO "ESP_DHT22"
#define HOSTIFTTT "maker.ifttt.com"


//------------------Inserir sua chave de código do IFTTT-----------------------------------

//---------------ATENÇÃO---------ATENÇÃO---------ATENÇÃO---------ATENÇÃO---------ATENÇÃO---------ATENÇÃO---------
//CHAVES DE CODIGO APENAS PARA TESTES DO CODIGO ESP8266;
//COM ESTAS CHAVES DE EXEMPLO NÃO SERÁ ENVIADO E-MAIL;
//CRIAR SUAS PRÓPRIAS CHAVES NO IFTTT;
//VEJA NESTE BLOG EXPLICAÇÃO PASSO A PASSO DE COMO CRIAR AS CHAVES DE CODIGO NO IFTTT;

#define IFTTTKEY "NuJoiOsa3qAOcFteiLcg01234567895hsNSvXkU25L"
//---------------------------------------------------------------------------------------------------


//--------Inserir aqui o seu SSID e PASSWORD----------------------------------------------------
const char* ssid     = "sergioDWR116";//Inserir aqui o nome da rede Wi-Fi do seu roteador;
const char* password = "sergio1234";//Inserir aqui a senha da rede Wi-Fi do seu roteador;
//------------------------------------------------------------------------------------------------------------


//------Inserir aqui  seus eventos e chaves de código do IFTTT----------------------------------


//---------------ATENÇÃO---------ATENÇÃO---------ATENÇÃO---------ATENÇÃO---------ATENÇÃO---------ATENÇÃO---------
//CHAVES DE CODIGO APENAS PARA TESTES DO CODIGO ESP8266;
//COM ESTAS CHAVES DE EXEMPLO NÃO SERÁ ENVIADO E-MAIL;
//CRIAR SUAS PRÓPRIAS CHAVES NO IFTTT;
//VEJA NESTE BLOG EXPLICAÇÃO PASSO A PASSO DE COMO CRIAR AS CHAVES DE CODIGO NO IFTTT;
                const char* resource = "/trigger/Alert: Temperature/with/key/NuJoiOsa3qAOcFteiLcg01234567895hsNSvXkU25L";
              const char* resource3 = "/trigger/Alert_High_Humidity/with/key/NuJoiOsa3qAOcFteiLcg01234567895hsNSvXkU25L";
    const char* resource2 = "/trigger/Alert: Movement in this area!/with/key/NuJoiOsa3qAOcFteiLcg01234567895hsNSvXkU25L";             
//---------------ATENÇÃO---------ATENÇÃO---------ATENÇÃO---------ATENÇÃO---------ATENÇÃO---------ATENÇÃO---------



const char* server = "maker.ifttt.com";
byte conta1=0;//button_pressed;
byte conta2=0;//Temperatura acima de 30C;
byte conta3=0;//Temp.abaixo de 27C;
int contaLoop=0;//Contagem de loop;
int setTemp=30;
//------------------------------
WiFiServer server2(8088);//80---------------------------------------------------------
//------------------------------
String header;
String request;
String outputD0State = "OFF";
String outputD1State = "OFF";
String outputD2State = "OFF";
String outputD3State = "OFF";
//-------------------------------------
String incSetTemp = "OFF";
String decSetTemp = "OFF";
//--------------------------------------
//Mapeamento de pinos do NodeMCU
#define PinD0    16
#define PinD1    5
#define PinD2    4
#define PinD3    0
#define PinD4    2
#define PinD5    14
#define PinD6    12
#define PinD7    13
#define PinD8    15
//---------------------------------------
  int valueD0 = HIGH;
  int valueD1 = HIGH;
  int valueD2 = HIGH;
  int valueD3 = HIGH;
  int valueD4 = HIGH;
  int valueD5 = HIGH;
  int valueD6 = HIGH;
  int valueD7 = HIGH;
  int valueD8 = HIGH;
//--------------------------------------- 
  float DHT22T=30;//Set Temperature;
  float DHT22H=95;//Set Humidity;
//---------------------------------------
//---------------------------------------
#include "DHT.h"
#define DHTPIN PinD7 
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
struct package
{
  float temperature ;
  float humidity ;
};
 //float h = dht.readHumidity();
 //float t = dht.readTemperature();
  typedef struct package Package;
  Package data;

//--------------------------------------
void setup() {
  Serial.begin(9600);
  delay(10);
  dht.begin();
 //-------------------------
  pinMode(PinD0, OUTPUT);
  pinMode(PinD1, OUTPUT);
  pinMode(PinD2, OUTPUT);
  pinMode(PinD3, OUTPUT);
  pinMode(PinD4, OUTPUT);
  pinMode(PinD5, OUTPUT);
  pinMode(PinD6, INPUT);//PIR-SR501
  pinMode(PinD7, INPUT);//DHT22
  pinMode(PinD8, OUTPUT);
   
  digitalWrite(PinD0, HIGH);//Btn1;
  digitalWrite(PinD1, HIGH);//Btn2;
  digitalWrite(PinD2, HIGH);//Btn3;
  digitalWrite(PinD3, HIGH);//Btn4;
  digitalWrite(PinD4, HIGH);//Btn5;
  digitalWrite(PinD5, HIGH);//Pulse1;
  digitalWrite(PinD6, LOW);//PIR SR_501;
  digitalWrite(PinD7, HIGH);//DHT22;
  digitalWrite(PinD8, HIGH);//N/C
 //-----------Iniciar Web-----------
  Serial.println("");
  Serial.print("Connecting to "); 
  Serial.print("ssid:");
  Serial.print(ssid);
  Serial.print(", password: ");
  Serial.print(password);
  Serial.println("");

  WiFi.begin(ssid, password);
  
  while (WiFi.status() != WL_CONNECTED) {
  delay(500);
  Serial.print(".");
  }
  // Print local IP address and start web server
  Serial.println("");
  Serial.println("WiFi connected.");
  Serial.print("IP address: ");
  Serial.print(WiFi.localIP());
  Serial.print(", server: 8088"); 
  Serial.println("");
  Serial.println("");
  Serial.print("http://");
  Serial.print(WiFi.localIP());
  Serial.print(":8088"); 
  Serial.println("");
  server2.begin();//Web
}
//-------------------------------------
 void loop(){

//-----Sensor PIR active after 30 seconds-
 contaLoop++;
 if(contaLoop>=10000){
  contaLoop=0;
  conta1=0; 
 }

 float h = dht.readHumidity();
 float t = dht.readTemperature();


WiFiClient client = server2.available();   
  if (client) {                             
    Serial.println("New Client.");         
    String currentLine = "";               
    while (client.connected()) {            
      if (client.available()) {            
        char c = client.read();           
        Serial.write(c);                 
        //header += c;
        request += c;
        if (c == '\n') {                   
        
          if (currentLine.length() == 0) {
            client.println("HTTP/1.1 200 OK");
            client.println("Content-type:text/html");
            client.println("Connection: close");
            client.println("Refresh: 2"); //Recarrega a pagina a cada 30seg---------------------------
            client.println();

 //----------------------------------------------------------
  client.println("<!DOCTYPE HTML>");
  client.println("<html>");
  
  client.println((float)t,1);
  client.println((float)h,1);

  //--------------------------------
  client.println((float)DHT22T,0);
  client.println((float)DHT22H,0);
  //--------------------------------

  
  //--------NodeMCU ESP8266 recebe do Android------
  if (request.indexOf("/PinD0=ON") != -1)  {
    digitalWrite(PinD0, LOW);//Coloca pino digital D0 em nível lógico "0";
    valueD0 = LOW;//Atribui nivel lógico "0" á variável valueD0;  
  }
  if (request.indexOf("/PinD0=OFF") != -1)  {
    digitalWrite(PinD0, HIGH);//Coloca pino digital D0 em nível lógico "1";
    valueD0 = HIGH;//Atribui nivel logico "1" á variável valueD0.
  }
  //--------------------------
  if (request.indexOf("/PinD1=ON") != -1)  {
    digitalWrite(PinD1, LOW);
    valueD1 = LOW;
  }
  if (request.indexOf("/PinD1=OFF") != -1)  {
    digitalWrite(PinD1, HIGH);
    valueD1 = HIGH;
  }
  //--------------------------
  if (request.indexOf("/PinD2=ON") != -1)  {
    digitalWrite(PinD2, LOW);
    valueD2 = LOW;
  }
  if (request.indexOf("/PinD2=OFF") != -1)  {
    digitalWrite(PinD2, HIGH);
    valueD2 = HIGH;
  }
  //--------------------------
  if (request.indexOf("/PinD3=ON") != -1)  {
    digitalWrite(PinD3, LOW);
    valueD3 = LOW;
  }
  if (request.indexOf("/PinD3=OFF") != -1)  {
    digitalWrite(PinD3, HIGH);
    valueD3 = HIGH;
  }
  //--------------------------
  if (request.indexOf("/PinD4=ON") != -1)  {
    digitalWrite(PinD4, LOW);
    valueD4 = LOW;
  }
  if (request.indexOf("/PinD4=OFF") != -1)  {
    digitalWrite(PinD4, HIGH);
    valueD4 = HIGH;
  }
  //--------------------------
  if (request.indexOf("/PinD5=ON") != -1)  {
    digitalWrite(PinD5, LOW);
    valueD5 = LOW;
  }
  if (request.indexOf("/PinD5=OFF") != -1)  {
    digitalWrite(PinD5, HIGH);
    valueD5 = HIGH;
  }

//---------------------------
  Serial.println("");
  if (request.indexOf("/S") != -1)  {//Atualiza dados;
  Serial.println("S: Updated data");
  }
  //--------------------------
  Serial.println("");
  if (request.indexOf("/Z") != -1)  {//Incrementa valor para temperatura;
  Serial.println("Z: Increment value for temperature");
  DHT22T++;
  }
  //--------------------------
  Serial.println("");
  if (request.indexOf("/z") != -1)  {//Decrementa valor para temperatura;
  Serial.println("z: Decrement value for temperature");
  DHT22T--;
  }
  //--------------------------
  Serial.println("");
  if (request.indexOf("/Q") != -1)  {//Incrementa valor para temperatura;
  Serial.println("Q: Increment value for humidity");
  DHT22H++;
  }
  //--------------------------
  Serial.println("");
  if (request.indexOf("/q") != -1)  {//Decrementa valor para temperatura;
  Serial.println("q: Decrement value for humidity");
  DHT22H--;
  }
  //---------NodeMCU ESP8266 envia para o Android-------- 
  client.println("<br><br>");//Close and Open. 
  if(valueD0 == LOW) {//Testa se a variável valueD0 = nível lógico "0";
  client.print("/PinD0=ON");//Modifica o botão Device1 para "ON";
  } else {//Caso contrário;
    client.print("/PinD0=OFF");//Modifica o botão Device1 para "OFF";
  }
  client.println("<br />");
  //------------------------- 
  if(valueD1 == LOW) {
  client.print("/PinD1=ON");
  } else {
  client.print("/PinD1=OFF");
  }   
  client.println("<br />");
  //-------------------------
  if(valueD2 == LOW) {
  client.print("/PinD2=ON");
  } else {
  client.print("/PinD2=OFF");
  }   
  client.println("<br />");
  //------------------------- 
  if(valueD3 == LOW) {
  client.print("/PinD3=ON");
  } else {
  client.print("/PinD3=OFF");
  } 
  client.println("<br />");
  //------------------------- 
  if(valueD4 == LOW) {
  client.print("/PinD4=ON");
  } else {
  client.print("/PinD4=OFF");
  } 
  client.println("<br />");
  //-------------------------
  if(valueD5 == LOW) {
  client.print("/PinD5=ON");
  } else {
  client.print("/PinD5=OFF");
  }   
  client.println("<br />");
  
//---------Send data to Android: Temperature------
if(t>=DHT22T){
 client.print("/LM"); 
}else{
 client.print("/Lm"); 
}
client.println("<br />");
//---------Send data to Android: Humidity---------
if(h>=DHT22H){
 client.print("/LN"); 
}else{
 client.print("/Ln"); 
}
client.println("<br />");
//---------Send data to Android: Movement---------
if(digitalRead(PinD6)==HIGH){
client.print("/LO"); 
}else{
 client.print("/Lo"); 
}

//---------Print---------------------
  Serial.print("Temperature: ");
  Serial.print((float)t,1);
  Serial.println("C");
  Serial.print("Humidity: ");
  Serial.print((float)h,1);
  Serial.println("%");
  Serial.println("");
//-----------------------------------

            break;
          } else { // if you got a newline, then clear currentLine
            currentLine = "";
          }
        } else if (c != '\r') {  // if you got anything else but a carriage return character,
          currentLine += c;      // add it to the end of the currentLine
        }
      }
    }
    //Limpa a variável header
    //header = "";
    request = "";
    //Fecha a conexão
    client.stop();
    Serial.println("Client disconnected.");
    Serial.println("");
  }
  
 //-------------------------------------
 client.println("</html>");
 //-------------------------------------- 
  delay(1);

//---------------------"Movement in this area!" send e-mail---------------------
  if((digitalRead(PinD6)==HIGH)&&(conta1==0)){
  delay(250);
 initWifi();
 makeIFTTTRequest2();
  //ESP.deepSleep(0);
  conta1=1;
  Serial.println("");
  Serial.print("E-mail: ");
  Serial.print("Alert Movement in this area! ");
  Serial.println("");
  Serial.println("");
 } 
//-------------"High Temperatura >= 30ºC" send e-mail---------
  
  if((t>=DHT22T)&&(conta2==0)){//setTemp
  initWifi();
  makeIFTTTRequest();
  //ESP.deepSleep(0);
  conta2=1;
  Serial.println("");
  Serial.print("E-mail: ");
  Serial.print("Alert High Temperatute ");
  Serial.print(t,0);
  Serial.print("C");
  Serial.println("");
  Serial.println("");
  }
  if(t<DHT22T){
  conta2=0;
  }
  
//-------------"High Humidity >= 95%" send e-mail---------
if((h>=DHT22H)&&(conta3==0)){
  initWifi();
  makeIFTTTRequest3();
  //ESP.deepSleep(0);
  conta3=1;
  Serial.println("");
  Serial.print("E-mail: ");
  Serial.print("Alert High Humidity ");
  Serial.print(h,0);
  Serial.print("%");
  Serial.println("");
  Serial.println("");
  } 
  if(h<DHT22H){
  conta3=0;
  }

  delay(1);//2000 
  }//loop----------loop---------loop---------loop------------loop------------

//---E-MAIL GMAIL---E-MAIL GMAIL---E-MAIL GMAIL---E-MAIL GMAIL---
void initWifi() {
  Serial.print("Connecting to: "); 
  Serial.print("ssid: ");
  Serial.print(ssid);
  Serial.print(", password: ");
  Serial.print(password);
//--------------------------------------
  WiFi.begin(ssid, password);     
  int timeout = 10 * 4; // 10 seconds
  while(WiFi.status() != WL_CONNECTED  && (timeout-- > 0)) {
    delay(250);
    Serial.print(".");
  }
  Serial.println("");

  if(WiFi.status() != WL_CONNECTED) {
     Serial.println("Failed to connect, going back to sleep");
  }

  Serial.print("WiFi connected in: "); 
  Serial.print(millis());
  Serial.print(", IP address: "); 
  Serial.println(WiFi.localIP());
}

//------------Make an HTTP request to the IFTTT WEB SEVICE-----------
void makeIFTTTRequest() {
  Serial.print("Connecting to "); 
  Serial.print(server);
  
  WiFiClient client;
  int retries = 5;
  while(!!!client.connect(server, 80) && (retries-- > 0)) {
    Serial.print(".");
  }
  Serial.println();
  if(!!!client.connected()) {
     Serial.println("Failed to connect, going back to sleep");
  }
  
  Serial.print("Request resource: "); 
  Serial.println(resource);
  client.print(String("GET ") + resource + 
                  " HTTP/1.1\r\n" +
                  "Host: " + server + "\r\n" + 
                  "Connection: close\r\n\r\n");
                  
  int timeout = 5 * 10; // 5 seconds             
  while(!!!client.available() && (timeout-- > 0)){
    delay(100);
  }
  if(!!!client.available()) {
     Serial.println("No response, going back to sleep");
  }
  while(client.available()){
    Serial.write(client.read());
  }

  Serial.println("\nclosing connection");
  client.stop();
}

//------------Make an HTTP request to the IFTTT WEB SEVICE-----------
void makeIFTTTRequest2() {
  Serial.print("Connecting to "); 
  Serial.print(server);
  
  WiFiClient client;
  int retries = 5;
  while(!!!client.connect(server, 80) && (retries-- > 0)) {
    Serial.print(".");
  }
  Serial.println();
  if(!!!client.connected()) {
     Serial.println("Failed to connect, going back to sleep");
  }
  
  Serial.print("Request resource: "); 
  Serial.println(resource2);
  client.print(String("GET ") + resource2 + 
                  " HTTP/1.1\r\n" +
                  "Host: " + server + "\r\n" + 
                  "Connection: close\r\n\r\n");
                  
  int timeout = 5 * 10; // 5 seconds             
  while(!!!client.available() && (timeout-- > 0)){
    delay(100);
  }
  if(!!!client.available()) {
     Serial.println("No response, going back to sleep");
  }
  while(client.available()){
    Serial.write(client.read());
  }
   
  Serial.println("\nclosing connection");
  client.stop();
}

//------------Make an HTTP request to the IFTTT WEB SEVICE-----------
void makeIFTTTRequest3() {
  Serial.print("Connecting to "); 
  Serial.print(server);
  
  WiFiClient client;
  int retries = 5;
  while(!!!client.connect(server, 80) && (retries-- > 0)) {
    Serial.print(".");
  }
  Serial.println();
  if(!!!client.connected()) {
     Serial.println("Failed to connect, going back to sleep");
  }
  
  Serial.print("Request resource: "); 
  Serial.println(resource3);
  client.print(String("GET ") + resource3 +
                  " HTTP/1.1\r\n" 
                  "Host: " + server + "\r\n" + 
                  "Connection: close\r\n\r\n");
                  
  int timeout = 5 * 10; // 5 seconds             
  while(!!!client.available() && (timeout-- > 0)){
    delay(100);
  }
  if(!!!client.available()) {
     Serial.println("No response, going back to sleep");
  }
  while(client.available()){
    Serial.write(client.read());
  }
   
  Serial.println("\nclosing connection");
  client.stop();
}


Inserir seus dados no código como segue:

- ssid e password dados copiados do seu roteador Wi-Fi:

Veja como fica no Monitor da IDE Arduino.:

- Copiar também a URL neste exemplo http://192.168.1.51:8088 para o aplicativo Android(http://IP:PORTA).



- Nome do Evento;
- Chave de código do IFTTT;
- ssid e password do seu roteador Wi-Fi;
- Temperatura, Umidade e Movimento: Inserir os 3 eventos com as chaves de código.






Veja que o E-MAIL será enviado todas as vezes que:

1- A temperatura(sensor DHT22) ultrapassar o limite ajustado no aplicativo;


2- A Umidade(sensor DHT22) ultrapassar o limite ajustado no aplicativo;


3- Houver movimentação(sensor PIR) em uma área determinada.






Como criar a chave de código no IFTTT que será utilizada no projeto com ESP8266?



O que é IFTTT e como utilizaremos em nosso projeto com o ESP8266 para enviar E-MAIL?


Acompanhe o passo a passo para essas respostas e veja que em minutos seu código estará pronto e funcionando:






A sigla IFTTT significa “If This, Then That”, algo próximo de “Se for isso, então é aquilo”

A ideia central é fazer o IFTTT automatizar tudo, desde seus aplicativos e sites favoritos até alguns dispositivos domésticos inteligentes, compatíveis com o serviço.



O IFTTT suporta atualmente 520 serviços, chamados de “canais”, compatíveis com dispositivos Android e iOS, além da plataforma para PC.
Entre estes serviços estão, aplicativos e sites como Facebook, Instagram, Flickr, Tumblr, Google Drive, LinkedIn, SoundCloud, WordPress, YouTube e centenas de outros.

Como usar o IFTTT?

Para começar a usar o IFTTT basta se inscrever em uma conta no site do serviço usando apenas um e-mail, um nome de usuário e senha.


Ou, basta apenas entrar com sua conta do Facebook ou do Google, automaticamente. Após a inscrição, o IFTTT cria automaticamente uma receita recomendada para sua caixa de entrada de e-mail.
Iremos criar um aplicativo para enviar e-mail  no IFTTT que nos fornecerá uma chave de código;
Com esta chave de código usaremos em nosso projeto com o ESP8266;

Então se ocorrer um evento faremos uma ação.

Se houver movimentação em uma área: Enviar um e-mail com o nome do evento;

Se a Temperatura ultrapassar o valor máximo setado: Enviar um e-mail com o valor da Temperatura;
Se a Umidade ultrapassar o valor máximo setado: Enviar um e-mail com o valor da Umidade;


Localizar o IFTTT no navegador e logar com seu e-mail do G-MAIL, como segue:

Entrar e logar com seu G-MAIL:



Iniciar o IFTTT " Get started":



Em Webhooks clicar em My Applets e em New Applets:



Em New Applet clicar em THIS:



Em Choose a service digite Web e então clique em Webhooks:



Choose trigger:



Complete trigger fields, digite o event name e clique em Create trigger:


Veja que esse nome de evento é o mesmo que será utilizado daqui para frente, com todos os caracteres e não poderá ser alterado;

Como exemplo "Alert: Movement in this area!" mantenha essa frase até ao final para testarmos o envio do E-MAIL então posteriormente quando tudo estiver funcionando, faça suas alterações a vontade, escolha novos nomes para os eventos.

Agora clique em THAT:



Em Choose action service digite gmail:


Selecione Send an email:


Agora coloque em To address seu e-mail principal e em CC address outro e-mail(opcional):


Termine preenchendo os dados de Subject e clique em Create action:




Veja abaixo como ficou o meu Web já preenchido com os meus dados, em seguida clique em Save:

Confira o nome do evento que deve ser exatamente igual ao criado e clique em Finish:


Selecione Webhooks e clique em Documentation:





Insira o nome do evento: Alert: Movement in this area!
Pronto, agora copie esta chave de código que será usada no código do ESP8266:

Você já pode fazer um teste, clique em Test it e confira no seu e-mail o evento.


Teste seu aplicativo, clique em Test it  e confira no seu e-mail o evento, veja como ficou:



Com isso terminamos de criar o aplicativo do  IFTTT que irá enviar nosso e-mail responsável pelo sensor de movimento;
 Não se esqueça agora você deve repetir esta operação para criar outros dois aplicativos que serão responsáveis pelo sensor DHT22 Temperatura e DHT22 Umidade;
Lembre-se que o nome do evento criado no IFTTT deve ser exatamente igual ao do código no ESP8266;
Então insira todos os dados no código ESP8266 conforme segue abaixo:


Atenção:


Obs1.: - Se você deseja testar apenas com o sensor de movimento então deverá desabilitar ou comentar com "//" toda a parte do código responsável pelo envio de e-mail com o sensor DHT22.

Obs2.: - Prefira por copiar todo o código exemplo do ESP8266 sem alterações  para testar o funcionamento, somente após ter funcionado faça suas  modificações ou personalize seu código.


Veja como ficaram meus aplicativos no Webhooks My Applets:






Precisando de ajuda com a instalação do ESP8266 na IDE Arduino?



Como fazer a programação da NodeMCU ESP8266 usando a IDE Arduino passo a passo:

Entre no site oficial Arduino Home e em seguida selecione Download:
Escolha a versão atual e o sistema operacional, no exemplo Arduino 1.6.12 e sistema Windows:








Insira este link  na URL: http://arduino.esp8266.com/stable/package_esp8266com_index.json




Um comentário:

  1. Olá Sergio tudo bom, gostaria de fazer uma pergunta, no meu caso eu tenho que monitorar quando ocorre a falta energia em uma empresa, como devo configurar o aplicativo para ele me enviar essa informação?, desde já lhe agradeço pela atenção e parabéns pelos seus projetos, vc é o cara!

    ResponderExcluir