Arduino представляет собой замечательную платформу для домашней автоматизации. В совокупности со сторонними программными средствами можно сделать на основе Arduino очень полезную и эффективную экосистему мониторинга состояния чего-либо в доме.

В этом проекте мы используем Arduino, мессенджер Facebook и сервис IFTTT, чтобы следить за состоянием двери (открыта или закрыта).
Общий принцип работы такой системы автоматизации можно выразить в виде следующего изображения.

Здесь Arduino с помощью Wi-Fi-шилда PHPoC отправляет в интернет информацию о состоянии датчика двери, подключенного к линии A0 платы Arduino. Посредством сервиса IFTTT информация о состоянии двери в конечном итоге доходит до пользователя в виде сообщения в мессенджере Facebook. Подключение выглядит просто:

Немного сложнее будет разобраться и настроить IFTTT. Сначала нужно создать апплет.

Далее установим триггер:

Найдем "Webhooks" и нажмем на Webhooks:

Выберем «Receive a web request»:

Установим Event Name в «door_open» и нажмем кнопку Create trigger:

Далее нажмем кнопку «+that», чтобы создать действие:

Найдем Facebook Messenger и нажмем на него:

Выберем действие «Send message»:

Создадим содержание сообщения и нажмем кнопку «Add ingredient»:

Выберем «OccurredAt». Это время открытия двери:

Нажмем на кнопку «Create action»:

Нажмем на кнопку «Finish»:

Теперь апплет создан. Время получить ключ Webhooks. Перейдите по этой ссылке https://ifttt.com/maker_webhooks. Нажмите «Documentation», чтобы увидеть ключ Webhooks.

Скопируйте этот ключ и поместите его в код Arduino. Запрограммируйте Arduino следующим кодом, и все будет работать.
#include <Phpoc.h>
String IFTTT_WEBHOOKS_KEY = "xxxxxxxxxxxxxxxxxxxxxx"; // вставьте ваш ключ
char server_name[] = "maker.ifttt.com";
PhpocClient client;
void sendNotification()
{
// подключиться к веб-серверу через порт 443:
if(client.connectSSL(server_name, 443)) {
// если подключен:
Serial.println("Connected to server");
// сделать запрос HTTP:
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 (WiFi) шилд:
Phpoc.begin(PF_LOG_SPI | PF_LOG_NET);
pinMode(A0, INPUT_PULLUP);
}
int previous_status = 1;
void loop() {
int current_status = digitalRead(A0);
if(previous_status == 0 && current_status == 1) { // если дверь открыта...
Serial.println("door is opened");
sendNotification();
delay(100);
} else if(previous_status == 1 && current_status == 0) { // если дверь закрыта...
Serial.println("door is closed");
}
previous_status = current_status;
}
© digitrode.ru