Sensor de Porta Arduino: Alertas em Tempo Real no Facebook Messenger via IFTTT
Componentes e Materiais
| Componente | Quantidade |
|---|---|
| Arduino UNO | 1 |
| PHPoC WiFi Shield para Arduino | 1 |
| Chave de Contato Magnético (Reed Switch) | 1 |
Aplicativos e Serviços Online
- IFTTT Maker Service (Webhooks) - Para integração com Facebook Messenger
Sobre o Projeto
Aviso Importante: O IFTTT descontinuou recentemente o serviço do Facebook Messenger devido a novas políticas do Facebook. Portanto, este projeto não é mais viável na forma original.
Se você é iniciante, pode aprender tópicos relacionados:
- Arduino - WiFi
- Arduino - Sensor de Porta
- Arduino - IFTTT
Demonstração
Fiz projeto similar, mas com custo menor e adequado para ambiente industrial aqui: Hackster.io
Arquitetura do Sistema
O Arduino UNO com PHPoC WiFi Shield monitora o sensor magnético na porta. Quando a porta abre, o Arduino envia requisição HTTPS para o Webhook do IFTTT, que dispara ação no Facebook Messenger enviando notificação.
Ligação (Wiring)
- Um pino do sensor magnético ao GND
- Outro pino ao A0
Como Criar Applet no IFTTT
- Criar Applet
- Definir gatilho (trigger)
- Buscar "Webhooks" e clicar
- Escolher "Receive a web request"
- Definir Event Name como "door_open" e clicar "Create trigger"
- Clicar "+that" para criar ação
- Buscar "Facebook Messenger" e clicar
- Escolher Action "Send message" (precisa conectar ao Facebook na primeira vez)
- Criar conteúdo da mensagem e clicar "Add ingredient"
- Escolher "OccurredAt" (hora da abertura da porta)
- Clicar "Create action"
- Clicar "Finish"
Agora o Applet está criado.
Obter Chave Webhooks
Acesse ifttt.com/maker_webhooks, clique "Documentation" para ver a Webhooks Key. Copie e coloque no código Arduino.
Bibliotecas
O código usa duas bibliotecas: PHPoC e Button (ezButton).
Referências de Funções
- Serial.begin()
- Serial.println()
- delay()
- millis()
- for loop, while loop, if else, loop(), setup()
- String.toInt(), String.substring(), String.indexOf(), String.remove(), String.equals()
Código
MonitorDoorMessenger (Arduino)
// Tutorial: https://forum.phpoc.com/articles/tutorials/1241-arduino-ssl-web-client
#include <Phpoc.h>
#include <ezButton.h>
String IFTTT_WEBHOOKS_KEY = "xxxxxxxxxxxxxxxxxxxxxx"; // insira sua chave webhooks aqui
char server_name[] = "maker.ifttt.com";
PhpocClient client;
ezButton button(A0); // objeto Button no pino A0
void sendNotification() {
if (client.connectSSL(server_name, 443)) {
Serial.println("Connected to server");
client.println("GET /trigger/door_open/with/key/" + IFTTT_WEBHOOKS_KEY + " HTTP/1.1");
client.println("Host: maker.ifttt.com");
client.println("Connection: close");
client.println();
}
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
}
}
Serial.println();
Serial.println("disconnecting from server.");
client.stop();
}
void setup() {
Serial.begin(9600);
Phpoc.begin(PF_LOG_SPI | PF_LOG_NET);
button.setDebounceTime(100); // debounce 100ms
}
void loop() {
button.loop(); // DEVE chamar loop() primeiro
if (button.isPressed()) {
Serial.println("door is opened");
sendNotification();
delay(100);
} else if (button.isReleased()) {
Serial.println("door is closed");
}
}
Esquemáticos
Diagrama de conexões: Arduino UNO + PHPoC WiFi Shield + sensor magnético no pino A0.
Processo de manufatura
- Programe Facilmente a Série Atmel AT89 com Arduino Uno – Guia Passo a Passo
- Sensor K30 CO₂: Monitoramento de Qualidade do Ar Interno em Tempo Real
- Portão de Triagem de Temperatura Sem Contato para Monitoramento Rápido e Preciso
- Crie um Medidor IoT Web com Arduino, Yaler e IFTTT
- Sistema de Monitoramento de Incêndio Florestal em Tempo Real com Alertas SMS
- Arduino UNO com Shield WiFi: Exibição de Temperatura em Tempo Real na Web via Serial
- Sistema Inteligente de Monitoramento de Temperatura para Escolas: Preciso, Tempo Real e Seguro
- Sistema de Iluminação Ativado por Movimento com Intel Curie (Arduino 101)
- Porta Automática com Arduino e Sensor Ultrassônico HC-SR04
- Fechadura Inteligente Wi-Fi com Arduino e ESP8266 - Desbloqueio via Celular