Умный мониторинг дома с голосовым управлением через Alexa
Компоненты
- Arduino UNO — 1 шт.
- ESP8266 ESP-01 — 1 шт. (WiFi)
- DHT11 (температура/влажность) — 1 шт.
- 4-канальный I2C релейный модуль — 1 шт.
- IR препятствий (движение/взлом) — 1 шт.
- Веб-камера + LinkIt Smart 7688 Duo (для фото) — 1 компл.
- Перемычки
Сервисы
- Arduino IDE
- Amazon Alexa Skills Kit
- ThingSpeak (хранение данных и команд)
- Backendless (codeless-логика навыка Alexa)
- PushingBox (уведомления на Gmail с фото)
Функции
- Голосовое управление светом и вентилятором через Alexa.
- Статус устройств («Алекса, какой статус устройств?»).
- Погода в доме (температура, влажность).
- Снимок интерьера на почту («Алекса, пришли фото гостиной»).
- Уведомления: проникновение (с фото), пожар, гость (с фото).
Архитектура
Arduino UNO — управление реле (получает команды по Serial от ESP8266).
ESP8266 — WiFi, опрос ThingSpeak, отправка телеметрии, срабатывание датчиков (IR, DHT), вызов PushingBox.
ThingSpeak — 8 каналов: управление (0/1/2/3), статус света, статус вентилятора, влажность, температура, алерты (взлом, пожар, гость).
Backendless — визуальная логика навыка Alexa (intents, slots, HTTP-запросы к ThingSpeak/PushingBox).
LinkIt Smart 7688 + веб-камера — MJPG-стрим, снапшоты по HTTP, проброс порта для доступа PushingBox.
Настройка ThingSpeak (8 каналов)
| Канал | Поле | Значения |
|---|---|---|
| Device Control | field1 | 0=lightON, 1=lightOFF, 2=fanON, 3=fanOFF |
| Light Status | field1 | 0=off, 1=on |
| Fan Status | field1 | 0=off, 1=on |
| Humidity | field1 | значение % |
| Temperature | field1 | значение °C |
| Intruder Alert | field1 | 1=alert |
| Fire Alert | field1 | 1=alert |
| Guest Alert | field1 | 1=alert |
API ключи (Write/Read) и Channel ID нужны для скетчей.
Скетчи (основные фрагменты)
ESP8266: опрос ThingSpeak, управление, алерты
// Обновление темп/влажности
client.print("GET /update?key=WRITE_KEY_HUM&field1=" + humidity + " HTTP/1.1\r\nHost: api.thingspeak.com\r\nConnection: close\r\n\r\n");
// Чтение команды управления
client.print("GET /channels/CH_ID_CONTROL/field/field1/last.html HTTP/1.1\r\nHost: api.thingspeak.com\r\nConnection: close\r\n\r\n");
// Парсинг ответа → отправка байта '0'..'3' на Serial в Arduino
// Алерты через PushingBox
client.print("GET /pushingbox?devid=DEVICE_ID_FIRE HTTP/1.1\r\nHost: api.pushingbox.com\r\nConnection: close\r\n\r\n");
Arduino UNO: исполнение команд
if (Serial.available()) {
char cmd = Serial.read();
if (cmd=='0' && lightOff) { digitalWrite(LIGHT, LOW); lightOff=false; }
if (cmd=='1' && !lightOff) { digitalWrite(LIGHT, HIGH); lightOff=true; }
if (cmd=='2' && fanOff) { digitalWrite(FAN, HIGH); fanOff=false; }
if (cmd=='3' && !fanOff) { digitalWrite(FAN, LOW); fanOff=true; }
}
ESP8266 Smart Bell (взлом/гость)
IR-датчик на GPIO0 (взлом) и GPIO2 (звонок). Дебаунс 5 мин для гостя. При срабатывании — ThingSpeak alert + PushingBox (email с фото).
Настройка LinkIt Smart 7688 + веб-камера
- Сброс WiFi (кнопка 20 сек), подключение к AP LinkIt, вход в веб-интерфейс (192.168.100.1).
- Station mode → подключение к вашему WiFi.
- Включение MJPG Streamer (порт 4440).
- Камера в USB OTG. Снапшот:
https://local_ip:4440?action=snapshot. - Проброс порта на роутере → внешний IP:порт. URL снапшота в PushingBox.
Настройка PushingBox
- Сервис: Gmail (введите свой email).
- Сценарии: ALERT_INTRUDER, ALERT_FIRE, ALERT_GUEST — тема/тело письма + URL снапшота для вложения.
- API вызова:
https://api.pushingbox.com/pushingbox?devid=DEVICE_ID.
Навык Alexa через Backendless (codeless)
- Создайте приложение, сервис
AlexaService, методhandleRequest(POST, аргументreq— Any Object). - Функция
sendAlexaResponse(whatToSay, waitForResponse)— формирует JSON-ответ для Alexa. - Функция
getIntentName()— извлекает intent из запроса. - В
handleRequest: switch по intent:- LightsOn/LightsOff/FanOn/FanOff → HTTP GET к ThingSpeak (update канала управления).
- Weather → чтение каналов темп/влажность → формирование фразы.
- Camera → вызов PushingBox (сценарий со снапшотом).
- Status → чтение каналов статусов.
- Notification → чтение алерт-каналов, озвучивание, сброс в 0.
- Deploy Model.
Модель интентов (JSON для Amazon Developer Console)
{
"languageModel": {
"intents": [
{"name":"AMAZON.CancelIntent","samples":[]},
{"name":"AMAZON.HelpIntent","samples":[]},
{"name":"AMAZON.StopIntent","samples":[]},
{"name":"Camera","samples":["please send a snapshot of my living room", "please send a photo of my home"]},
{"name":"FanOff","samples":["turn off Fan", "switch off the Fan"]},
{"name":"FanOn","samples":["turn on Fan", "switch on the Fan"]},
{"name":"Introduction","samples":["what can you do", "what can you do for me"]},
{"name":"LightsOff","samples":["turn off lights", "switch off the lights"]},
{"name":"LightsOn","samples":["turn on lights", "switch on the lights"]},
{"name":"Notification","samples":["what are my notifications", "read out my notifications"]},
{"name":"Status","samples":["what is my device status", "what is the status of my devices"]},
{"name":"Weather","samples":["what is the temperature of my home", "what is the weather"]}
],
"invocationName": "my home"
}
}
В консоли Alexa: HTTPS endpoint → URL API Backendless, SSL — вторая опция. Тестируйте в симуляторе.
Финальная сборка
Схема: ESP8266 питание 3.3В (отдельный стабилизатор от 5В powerbank!). UNO и ESP общий GND, Serial крест-накрест (TX↔RX). Реле на I2C к UNO. DHT11 к ESP. IR-датчики к ESP. LinkIt с камерой в отдельной сети с проброшенным портом.
Активация навыка: «Алекса, открой my home».
Производственный процесс
- Как технологии умного дома трансформируют повседневную жизнь
- RFID-основанная домашняя безопасность: дешёвые беспроводные решения без батарей
- Система мониторинга качества воздуха Smart City на базе LoRa
- Многопозиционная система датчиков температуры для интеграции в умный дом
- Датчик CO2 K30: мониторинг качества воздуха в реальном времени на Arduino
- Умный 3D-сенсор: голосовое управление лампой через Amazon Echo и Walabot
- Умная система автополива растений на Arduino Nano
- Arduino Home Controller с Alexa: умный дом голосовым управлением
- Умная система мониторинга температуры для школ: точно, в реальном времени, безопасно
- Погодная станция на Arduino Nano: BMP280, DHT11, UV, DS3231, OLED 0.96″