Arduino датчик двери: мгновенные уведомления в Facebook Messenger через IFTTT
Компоненты и материалы
- Arduino UNO — 1 шт.
- PHPoC WiFi Shield для Arduino — 1 шт. (обеспечивает WiFi и SSL)
- Магнитный контактный датчик (рекон) — 1 шт.
Приложения и сервисы
- IFTTT Maker Webhooks — для отправки событий
- IFTTT Facebook Messenger — УСТАРЕЛО
Важное замечание
IFTTT прекратил поддержку Facebook Messenger из-за изменения политики Facebook. Этот проект больше не работает в описанном виде.
Альтернатива: автор сделал похожий, но дешевле и для промышленной среды проект на PHPoC без Arduino: PHPoC Monitoring Door Open via Facebook Messenger.
Для начинающих полезно изучить:
- Arduino — WiFi
- Arduino — Door Sensor (магнитный контакт)
- Arduino — IFTTT Webhooks
Архитектура системы (исторически)
Arduino + PHPoC Shield → WiFi → IFTTT Webhooks (событие door_open) → IFTTT Facebook Messenger → сообщение пользователю.
Подключение датчика
- Один контакт → GND
- Второй контакт → Arduino A0 (настроен как вход с подтяжкой)
Создание Applet в IFTTT (12 шагов, для справки)
- Create Applet
- Set trigger: Webhooks → Receive a web request
- Event Name:
door_open - Create trigger
- +that → Action: Facebook Messenger → Send message
- Текст сообщения + Add ingredient →
OccurredAt(время события) - Create action → Finish
Получение Webhooks Key
Перейдите на ifttt.com/maker_webhooks → Documentation → скопируйте Key → вставьте в Arduino-код.
Используемые библиотеки
Phpoc.h— для работы с PHPoC WiFi Shield (SSL, HTTP)ezButton.h— для обработки кнопки/датчика с дебаунсом
Код Arduino (MonotorDoorMessenger)
// Tutorial: https://forum.phpoc.com/articles/tutorials/1241-arduino-ssl-web-client
#include <Phpoc.h>
#include <ezButton.h>
String IFTTT_WEBHOOKS_KEY = "xxxxxxxxxxxxxxxxxxxxxx"; // ВСТАВЬТЕ СВОЙ KEY
char server_name[] = "maker.ifttt.com";
PhpocClient client;
ezButton button(A0); // Датчик на пине 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); // Инициализация PHPoC Shield
button.setDebounceTime(100); // 100 мс дебаунс
}
void loop() {
button.loop(); // ОБЯЗАТЕЛЬНО вызывать в loop()
if (button.isPressed()) {
Serial.println("door is opened");
sendNotification();
delay(100);
} else if (button.isReleased()) {
Serial.println("door is closed");
}
}
Схемы
Схема подключения (изображение в оригинале). PHPoC Shield надевается на Arduino UNO, датчик двери к A0 и GND.
Справочник функций (для обучения)
Serial.begin(),Serial.println()delay(),millis()for,while,if elseloop(),setup()- Методы String:
toInt(),substring(),indexOf(),remove(),equals()
Производственный процесс
- Легкая прошивка микроконтроллеров Atmel AT89 с помощью Arduino Uno — пошаговое руководство
- Датчик CO2 K30: мониторинг качества воздуха в реальном времени на Arduino
- Бесконтактный термометрический шлюз для быстрого и точного скрининга
- Веб-управляемый IoT-индикатор на Arduino, Yaler и IFTTT
- Система мониторинга лесных пожаров в реальном времени с SMS-уведомлениями
- Arduino UNO + WiFi Shield: реальный график температуры в вебе через Serial
- Умная система мониторинга температуры для школ: точно, в реальном времени, безопасно
- Система управления светом на Intel Curie (Arduino 101) с детекцией движений
- Автоматическая дверь на Arduino с ультразвуковым датчиком HC-SR04
- WiFi-умный замок на Arduino и ESP8266 — открывание с телефона