Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Мониторинг умного дома на основе Alexa

Компоненты и расходные материалы

Arduino UNO
× 1
Espressif ESP8266 ESP-01
× 1
Датчик температуры и влажности DHT11 (4 контакта)
× 1
ControlEverything.com 4-КАНАЛЬНЫЙ КОНТРОЛЛЕР РЕЛЕ ДЛЯ I2C
× 1
ИК-датчик препятствий
× 1
камера
× 1
Перемычки (общие)
× 1

Приложения и онлайн-сервисы

IDE Arduino
Amazon Alexa Alexa Skills Kit
Amazon Alexa echosim.io
ThingSpeak API
Backendless
Pushingbox

Об этом проекте

Введение:

В современном мире люди проводят больше времени на работе, а не дома. Следовательно, существует потребность в системе домашнего мониторинга, с помощью которой люди могут узнавать об условиях в доме во время работы. Было бы еще лучше, если бы можно было просто спросить «кого-нибудь» об их доме в рабочее время. Этого можно добиться, используя Amazon Alexa в качестве помощника, который может предоставить пользователю необходимую информацию об их доме.

Not Only Work Place:пользователи могут узнать о состоянии дома в любой точке мира, если у них есть подключение к Интернету и устройство Amazon Alexa.

В этом проекте реализованы следующие функции:

1) Управляйте бытовыми устройствами, такими как вентилятор и свет

2) Сообщает статус устройств

3) Сообщает о погодном состоянии дома (температура и влажность)

4) При необходимости отправляет снимок интерьера дома пользователю через Gmail.

5) Отправляет уведомление в случае -

* Злоумышленник (также отправляет фото)

* Огонь

* Гость (тоже присылает фото)

Этапы реализации проекта:

ШАГ 1. Программирование Arduino и ESP8266

Загрузите IDE Arduino с официального сайта:https://www.arduino.cc/en/Main/Software

Откройте Arduino IDE и перейдите в файл-> настройки-> в дополнительном типе URL-адреса диспетчера досок - http://arduino.esp8266.com/stable/package_esp8266com_index.json

Перейдите в Инструменты -> Доски -> Менеджер доски -> и установите наконец найденный пакет esp8266.

Чтобы запрограммировать Arduino просто подключите USB-кабель от Arduino к компьютеру и выберите Arduino / Genuino UNO в инструментах-> платах. Также убедитесь, что вы выбрали права на COM-порты в Инструменты (номер COM-порта можно найти в Диспетчере устройств). Напишите необходимую программу, скомпилируйте ее и нажмите "Загрузить", если ошибок нет.

Чтобы запрограммировать ESP8266 выполните подключение, как показано на схеме

подключите usb от arduino к компьютеру. В инструментах-> плата-> выберите Generic ESP8266, а также выберите правый COM-порт. Напишите нужную программу, скомпилируйте ее и нажмите кнопку «Загрузить», если ошибок нет. Убедитесь, что вы подключили Arduino RST к GND (arduino действует как программист для ESP8266).

В этом проекте сначала программируется ESP8266, а затем удаляются соединения цепи. Затем цепь повторно подключается, как показано на рисунке под названием «Подключения цепи». А потом arduino запрограммировано

ШАГ 2. Настройка thingspeak.com

Создайте учетную запись на сайте thingspeak.com.

мы используем каналы в thingspeak для хранения управляющей информации устройства и направления ее на arduino / alexa. мы также сохраняем в каналах значения температуры и влажности. Это как место для хранения информации.

перейдите в каналы -> мои каналы и создайте новый канал. Дайте название и описание своим каналам.

в нашем проекте нам нужно 8 каналов (вы можете сделать работу, используя меньше каналов, но это будет немного сложно при программировании). Также у thingspeak есть ограничение по времени при обновлении канала. Между последовательными обновлениями определенного канала должен быть промежуток в 10-15 секунд.

Ниже приведены восемь каналов с их значениями и значением

имя канала (значение 1, значение 2 и т. д.):

1) Управление устройством (0 - свет включен, 1 - свет выключен, 2 - вентилятор включен, 3 - вентилятор выключен)

2) световой статус (0 - свет не горит, 1 - светится)

3) состояние вентилятора (0 - вентилятор выключен, 1 - вентилятор включен)

4) влажность (значение влажности)

5) температура (значение температуры)

6) уведомление о злоумышленнике (1- тревога злоумышленника)

7) оповещение о пожаре (1- пожарное оповещение)

8) уведомление о гостях (оповещение для 1 гостя)

когда вы нажимаете на любой канал, вы можете увидеть его идентификатор канала и написать ключи API на вкладке ключей API. Идентификатор канала необходим для получения информации / значения в канале. и ключ записи необходим для сохранения значения в канале.

HTTP-запрос на обновление канала:

https://api.thingspeak.com/update?api_key=<записать ключ> &field1 =

<ключ записи> заменяется соответствующими ключами записи канала, и значение может быть (0/1 в случае управления устройством или значений температуры / влажности)

HTTP-запрос на чтение значения из канала:

https://api.thingspeak.com/channels/ /field/field1/last.html

заменяется конкретным идентификатором канала, с которого мы хотим читать.

ШАГ 3. Программа

Программа разделена на 3 части:

А) Программа для Arduino :программа для ардуино очень проста. Он получает данные от ESP8266 поочередно, и на основе полученных данных осуществляется управление устройствами. Более подробную информацию о программе можно найти в комментариях к самой программе.

Б) Программа для ESP8266 : программа для ESP8266 включает в себя 3 вещи

1) обновление температуры и влажности с помощью http-запроса

  client.print (String ("GET") + "/ update? key = &field1 =" + влажность + "HTTP / 1.1 \ r \ n" + "Host:" + host + " \ r \ n "+" Подключение:закрыть \ r \ n \ r \ n "); // обновляем влажность client.print (String ("GET") + "/ update? key = &field1 =" + temperature + "HTTP / 1.1 \ r \ n" + "Host:" + host + "\ r \ n "+" Подключение:закрыть \ r \ n \ r \ n "); // обновляем температуру  

Клавиша <запись> заменяется соответствующей клавишей записи, находящейся в канале thingspeak для влажности и температуры соответственно. а хост - api.thingspeak.com.

загрузите библиотеку dht по адресу:https://github.com/adafruit/DHT-sensor-library

2) чтение из соответствующих каналов thingspeak и управление устройством на основе полученных значений:

  client.print (String ("GET") + "/ channels /  /field/field1/last.html HTTP / 1.1 \ r \ n" + "Host:" + host + " \ r \ n "+" Соединение:закрыть \ r \ n \ r \ n ");  

где заменяется соответствующим идентификатором канала, найденным в thingspeak.

3) Отправка предупреждений в случае высокой температуры с помощью кнопки-переключателя

  String host1 ="api.pushingbox.com"; client.print (String ("GET") + "/ pushingbox? devid = HTTP / 1.1 \ r \ n" + "Host :"+ host1 +" \ r \ n "+" Подключение:закрыть \ r \ n \ r \ n ");  

где заменяется идентификатором вашего устройства в pushingbox.

ШАГ 4. Настройка linkit smart 7688 duo и веб-камеры

Я В этом проекте веб-камера и linkit smart 7688 duo используются для захвата необходимой фотографии и отправки ее пользователю. Вы также можете использовать модуль камеры arduino и связать его с arduino или использовать любую IP-камеру.

нажмите и удерживайте кнопку Wi-Fi на linkit smart 7688 в течение 20 секунд, чтобы перезагрузить плату. Затем после сброса настроек Wi-Fi вы сможете увидеть имя точки доступа в беспроводных сетевых подключениях. Теперь подключите компьютер к этой сети.

после подключения откройте браузер и введите 192.168.100.1 в адресной строке. Вы сможете увидеть его портал.

установить пароль для входа на портал.

После входа в систему перейдите на вкладку сети и выберите режим станции (он нам нужен (linkit smart 7688 duo) для доступа в Интернет), подключите его к своей сети Wi-Fi и нажмите «Настроить» и перезапустить.

После перезапуска платы ей будет назначен локальный IP-адрес. Узнайте адрес с помощью любых IP-инструментов или портала вашего маршрутизатора. В моем случае это было 192.168.1.4.

Теперь введите локальный IP-адрес в адресной строке браузера. убедитесь, что компьютер подключен к той же сети, что и linkit smart. Вам будет предложено снова войти в систему.

Чтобы включить потоковую передачу с веб-камеры, вы должны включить стример MJPG (mjpg-streamer - это приложение командной строки, которое копирует кадры JPEG из одного или нескольких подключаемых модулей ввода в несколько подключаемых модулей вывода). Для этого на портале перейдите в локацию OpenWrt вверху справа. вам нужно снова войти в систему.

После входа в систему перейдите на вкладку службы и установите флажок включить стример MJPG и назначьте номер порта для этой службы. Я назначил 4440. Нажмите "Сохранить и применить".

После настройки можно подключить веб-камеру к USB-хосту linkit smart 7688 duo через кабель OTG.

Теперь, чтобы увидеть поток, откройте браузер и введите <локальный IP-адрес>:<порт> в адресной строке. в моем случае это 192.168.1.4:4400

чтобы сделать снимок, введите команду :? action =snapshot

Теперь это изображение доступно локально, но нам нужно сделать его доступным для службы pushing box. Для этого нам нужно сделать переадресацию портов . Перенаправление портов может быть выполнено на портале маршрутизатора. Идентификатор процесса разный для разных маршрутизаторов. Просто погуглите, чтобы узнать, как перенаправить порт для конкретного маршрутизатора. Обычно он доступен через службу NAT.

После того, как вы переадресовываете порт, пользователи могут получить доступ к этому порту (например, 4440) с вашего внешнего IP-адреса. внешний IP-адрес можно найти, привязав "whats my ip" в google.

Вам необходимо поместить этот адрес, т.е. http:// <внешний IP>:<порт>? Action =snapshot в pushingbox (который объясняется в следующем шаге), чтобы pushingbox мог получить доступ к этому изображению и прикрепить его к почте и отправить его вам, когда потребуется.

Вы также можете сохранить изображение на SD-карте, поскольку Linkit smart 7688 duo также имеет слот для SD-карты для хранения информации.

дополнительную информацию об этом можно найти по адресу:https://docs.labs.mediatek.com/resource/linkit-smart-7688/en/get-started/get-started-with-the-linkit-smart-7688-duo -дизайн-доска /

ШАГ 5. Настройка PushingBox

pushingbox используется для отправки в Gmail уведомлений о различных предупреждениях в проекте.

войдите в pushingbox с помощью учетной записи Google:https://www.pushingbox.com/

зайти в мои услуги -> добавить услугу. есть много сервисов на выбор, таких как Gmail, Twitter, push-уведомления для Android и т. д.

выберите Gmail (так как нам нужно отправить фотографию как вложение) и введите соответствующую конфигурацию имени Gmail и идентификатор Gmail пользователя, которому должно быть отправлено предупреждение.

перейдите к моим сценариям и создайте новый сценарий. дать имя сценарию (например:ALERT) добавить ранее созданный сервис.

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

API для выполнения сценария push-box:http://api.pushingbox.com/pushingbox?devid=

ШАГ 6. Создание навыка Alexa с использованием Backendless

backendless используется для создания навыка alexa. Это простое программирование с помощью перетаскивания используется для создания навыка alexa (или любых программ), к которому можно получить доступ через backendless API.

создать учетную запись в backendless:https://backendless.com/

  • Войдите в свою учетную запись в автономной учетной записи. нажмите "Создать приложение" и дайте название своему приложению /
  • Щелкните значок Business Logic, расположенный на панели значков слева. Вы увидите экран СЛУЖБЫ API.
  • Щелкните значок «+», чтобы создать новую услугу. Обязательно выберите БЕСПЛАТНЫЙ во всплывающем окне «Новая услуга». Введите «AlexaService» в качестве имени службы. Нажмите кнопку СОХРАНИТЬ:
  • Backendless создает службу API и предлагает вам создать метод для службы. Это будет метод, который будет обрабатывать запросы от Alexa. Введите «handleRequest» в качестве имени метода. Обязательно выберите POST для операции REST и объявите аргумент с именем «req» и ​​введите «Any Object», как показано ниже:

Backendless создает заполнитель для бескодовой логики метода. Нажмите кнопку ИЗМЕНИТЬ, чтобы начать переключение в конструктор логики без кода.

В созданном блоке заполнителя функции щелкните область с надписью «doSomething» и измените ее на «sendAlexaResponse». Эта функция используется, чтобы заставить alexa сказать что-то, что можно передать в качестве аргумента. Нажмите кнопку СОХРАНИТЬ, чтобы сохранить функцию:

Щелкните значок шестеренки, расположенный в фиолетовом блоке рядом со словом «Функция». Добавьте два аргумента, перетащив блоки ввода, как показано на изображении ниже. Назначьте имена аргументов как «whatToSay» и «waitForResponse». Обратите внимание, что по мере добавления аргументов область «Блоки контекста» автоматически заполняется блоками, представляющими значения аргументов:

Измените логику функции, чтобы она выглядела как на изображении ниже. Для блоков «Создание объектов» используйте значок шестеренки, чтобы изменить имя свойств объекта. Не забудьте сохранить свою работу, нажав кнопку СОХРАНИТЬ.

Теперь, когда настраиваемая функция создана, вернитесь к методу handleRequest службы AlexaService. Щелкните категорию «Пользовательские функции» на панели инструментов слева и перетащите блок sendAlexaResponse, чтобы подключиться к коннектору возврата вашего метода службы:

вышеуказанные шаги также можно найти на их веб-сайте:https://backendless.com/developing-alexa-skill-without-writing-any-code-part1-codeless-in-backendless-mbaas/

https://backendless.com/developing-an-alexa-skill-without-writing-any-code-part2-slots/

Щелкните узел «Добавить» в разделе «Функции» в разделе БРАУЗЕР. В созданном блоке-заполнителе функции щелкните область с надписью «doSomething» и измените ее на «getIntentName»

измените блоки так, чтобы функция выглядела так:

это получит имя намерения, основанное на образце высказываний. Вернитесь к службам api -> <имя приложения> -> обработайте запрос в разделе браузера. Переменные и логика создаются из системного раздела. Создайте следующие переменные:

Затем мы сохраняем имя намерения для переменной запроса. А потом сравните с намерениями. например, если запрос - «введение», тогда для переменной ответа устанавливается значение «привет! Я могу контролировать .......», и этот ответ наконец зачитывается вслух Алексой.

измените блок, как показано ниже:

если запрос является намерением LightsOn, то мы обновляем канал thingspeak до «0», используя HTTP-запрос на получение, и в то же время обновляем статус устройства (1/0 в зависимости от Вкл. / Выкл.). То же самое повторяется с LightsOff, FanOn и FanOff.

Для погоды мы считываем данные из канала температуры и влажности и сохраняем результат в переменной response. Поскольку канал передает только значения, мы добавляем тексты, чтобы сделать ответ осмысленным:

для снимка гостиной запускаем сценарий pushingbox:

для статуса устройства мы читаем информацию из канала статуса Thingspeak:

для уведомлений и предупреждений мы читаем из каналов предупреждений (огонь, злоумышленник и гость):

на основе значений, которые мы получаем из поля уведомления, соответствующие предупреждающие сообщения сохраняются в переменной response0. если уведомлений нет, то уведомляющие сообщения не сохраняются.

после считывания уведомления в каналах уведомлений обновляется «0», так что Alexa больше не будет читать то же уведомление. Затем, наконец, на основе запроса, переменная response0 / response зачитывается вслух.

PS:После создания требуемой модели в автономном режиме щелкните развернуть модель в правом верхнем углу экрана без кода, чтобы развернуть модель.

ШАГ 7. Настройка навыка Alexa в консоли разработчика Amazon:

перейдите в консоль разработчика Amazon и войдите в систему, используя учетную запись Amazon. https://developer.amazon.com/

зайдите в консоль разработчика и перейдите на вкладку ALEXA. Нажмите на комплект навыков alexa, чтобы начать работу.

создать собственный тип навыка, дать имя и имя вызова навыку.

соответствующие намерения и образцы высказываний приведены в приведенном ниже коде.

  {"languageModel":{"intents":[{"name":"AMAZON.CancelIntent", "samples":[]}, {"name":"AMAZON.HelpIntent", "samples» :[]}, {"name":"AMAZON.StopIntent", "samples":[]}, {"name":"Camera", "samples":["пришлите снимок моей гостиной", " пришлите снимок моего дома "," пришлите фото моей гостиной "," пришлите фото моего дома "]," слоты ":[]}, {" name ":" FanOff "," образцы ":[" выключить вентилятор "," выключить вентилятор "," выключить вентилятор "," выключить вентилятор "]," слоты ":[]}, {" name ":" FanOn "," образцы " :[«включить вентилятор», «включить вентилятор», «включить вентилятор», «включить вентилятор»], «слоты»:[]}, {«имя»:«Введение», «образцы»:["что вы можете сделать", "что вы можете сделать", "что вы можете сделать для меня"], "slots":[]}, {"name":"LightsOff", "samples":["выключить lights "," выключить свет "," выключить свет "," выключить свет "]," slots ":[]}, {" name ":" LightsOn "," samples ":[" включить свет "," включить свет "," включить свет ", «включить свет»], «слоты»:[]}, {«имя»:«Уведомление», «образцы»:[«какие у меня уведомления», «есть ли какие-либо уведомления», «есть ли обновления» , «прочтите мои уведомления»], «слоты»:[]}, {«имя»:«Статус», «образцы»:[«каков статус моего устройства», «каков статус моих устройств»], "slots":[]}, {"name":"Погода", "samples":["какая погода в моем доме", "какая погода у меня дома", "какая погода", «какая температура в моем доме», «какая температура»], «slots»:[]}], «invocationName»:«мой дом»}}  

на вкладке конфигурации выберите HTTPS в качестве типа конечной точки службы, заполните URL-адрес по умолчанию URL-адресом API из backendless.

выберите 2-й вариант в Сертификате для конечной точки по умолчанию в сертификате SSL. Вы также можете проверить свой навык с помощью тестового симулятора.

После завершения теста вы можете опубликовать навык с необходимой информацией для публикации.

ШАГ 8:Окончательная установка и готово!

выполните подключение схемы, как показано ниже

Иногда ESP8266 будет неисправность потому что из недостаточно текущий. Итак, хотя нет упомянуто в the схема, это равно рекомендуется запитать ESP8266 от отдельного источника питания 3,3 В источник . Если вы являются используя а мощность банк убедитесь, что вы уменьшили напряжение с 5 В до 3,3 В с помощью регулятора напряжения 3,3 В.

Загрузите программу в ESP8266 и Arduino. Я показал подключение к лампочке, то же самое можно распространить на вентилятор или любые устройства.

Наконец, используйте amazon echo или echosim.io, чтобы проверить свои навыки.

Вы обязательно активировать the навык используя the вызов имя ( как равно мой чехол - "мой домой "). Иногда это не будет работа если это равно б / у без вызов имя как Я есть показано пара из раз в мой видео .

Надеюсь, вам понравился урок!

Спасибо!

Код

  • Smart_bell_ESP8266.ino
  • Home_monitor_arduino.ino
  • Home_Monitor_ESP8266.ino
Smart_bell_ESP8266.ino Arduino
Код для ESP8266 для получения предупреждений о злоумышленнике и гостях
 / * * Этот скетч представляет собой реализацию умного звонка и домашней безопасности * * / # include  #include  // ----- ------------------------------------- // переменные // -------- ---------------------------------- int intruder =0, guest =2; // вывод 0 в качестве предупреждения о вторжении и контакт 2 в качестве предупреждения для гостяconst char * ssid ="SSID"; // ваш SSID WIFIconst char * password ="пароль"; // пароль Wi-Fi // ------------------------------------------- -const char * host ="api.thingspeak.com"; void setup () {Serial.begin (115200); задержка (10); // Начнем с подключения к сети Wi-Fi Serial.println (); Serial.println (); Serial.print («Подключение к»); Serial.println (ssid); / * Явно установите ESP8266 как WiFi-клиент, иначе он по умолчанию будет пытаться действовать как клиент и как точка доступа и может вызвать сетевые проблемы с другими вашими WiFi-устройствами в вашей WiFi-сети. * / WiFi.mode (WIFI_STA); WiFi.begin (ssid, пароль); в то время как (WiFi.status ()! =WL_CONNECTED) {задержка (500); Serial.print ("."); } Serial.println (""); Serial.println («WiFi подключен»); Serial.println ("IP-адрес:"); Serial.println (WiFi.localIP ());} значение int =0; int x, y =0, z, k =0; void loop () {задержка (1000); ++ значение; Serial.print («подключение к»); Serial.println (хост); // Использование класса WiFiClient для создания TCP-соединений WiFiClient client; const int httpPort =80; if (! client.connect (host, httpPort)) {Serial.println («соединение не удалось»); возвращение; } Serial.print ("URL-адрес запроса:"); // ============================================================================================================// предупреждение о вторжении // ============================================================================================================x =digitalRead (intruder); // Serial.println (x); если (х ==0) {у =0; } if (x ==1 &&y ==0) {Serial.println ("Отправка предупреждения, пожалуйста, подождите ..."); задержка (1000); Строка host1 ="api.pushingbox.com"; client.print (String ("GET") + "/ pushingbox? devid = HTTP / 1.1 \ r \ n" + "Host:" + host1 + "\ r \ n" + "Connection:close \ r \ п \ г \ п "); // запускаем push box api client.print (String ("GET") + "/ update? api_key = &field1 =1 HTTP / 1.1 \ r \ n" + "Host:" + host + "\ r \ n "+" Соединение:закрыть \ r \ n \ r \ n "); // обновляем задержку уведомления злоумышленника (1000); у =1; } // ============================================================================================================// Конец предупреждения о вторжении // ============================================================================================================// ============================================================================================================// предупреждение гостя // ============================================================================================================длинный t1; z =digitalRead (гость); if (z ==0 &&(millis ()> =t1 + 300000)) // ждем 5 минут, чтобы избежать отправки нескольких предупреждений из-за нажатия нескольких дверных звонков {k =0; } если (x ==1 &&k ==0) {t1 =millis (); // сохранение текущей отметки времени в t1 Serial.println ("Sending Alert Pls Wait ....."); задержка (1000); // задержка отправки оповещения и отключения выключения String host1 ="api.pushingbox.com"; client.print (String ("GET") + "/ pushingbox? devid = HTTP / 1.1 \ r \ n" + "Host:" + host1 + "\ r \ n" + "Подключение:закрыть \ r \ п \ г \ п "); // выполнение pushing box api client.print (String ("GET") + "/ update? api_key = &field1 =1 HTTP / 1.1 \ r \ n" + "Host:" + host + "\ r \ n "+" Соединение:закрыть \ r \ n \ r \ n "); // обновляем задержку уведомления гостя (1000); k =1; } // ============================================================================================================// Предупреждение о конце гостя // ============================================================================================================длинный тайм-аут без знака =millis (); while (client.available () ==0) {if (millis () - timeout> 5000) {Serial.println (">>> Тайм-аут клиента!"); client.stop (); возвращение; }} //Serial.println(" закрытие соединения ");} 
Home_monitor_arduino.ino Arduino
Код для Arduino для управления бытовой техникой
 // Этот скетч в реализации домашней автоматизации #include  // импортируем последовательную библиотеку # include  // --------- -------------------------------- // Назначение контактов // ------------ ----------------------------- # определить свет 2 // контакт 2 для управления светом # определить вентилятор 3 // контакт 3 для управления вентилятор // ------------------------------------------ // переменные // ------------------------------------------ char e; int p =0, q =0; // эти переменные предотвращают включение / выключение уже включенных / выключенных устройств SoftwareSerial home_monitor (10, 11); // RX, TXchar control_data; // данные, передаваемые через Bluetoothvoid setup () {// поместите сюда ваш установочный код, чтобы запустить его один раз:home_monitor.begin (115200); Serial.begin (9600); pinMode (13, OUTPUT);} void loop () {// поместите сюда ваш основной код для повторного запуска:if (home_monitor.available ()) {control_data =home_monitor.read (); // последовательное получение управляющей информации от ESP8266 e =control_data; Serial.print (контрольные_данные); // ============================================================================================================// Контроль устройств // ============================================================================================================// Выполнение необходимых операций в зависимости от значения канала // ------------- ------------------------------------------------ // СВЕТЛЫЙ //----------------------------------------------- -------------- if (e =='0' &&p ==0) // Горит {digitalWrite (Light, LOW); р =1; } if (e =='1' &&p ==1) // Выключить свет {digitalWrite (Light, HIGH); р =0; } // ----------------------------------------------- -------------- // Нагреватель // ------------------------------- ------------------------------ if (e =='2' &&q ==0) {digitalWrite (fan, HIGH); q =1; } if(e=='3'&&q==1) { digitalWrite(fan,LOW); q=0; }}} 
Home_Monitor_ESP8266.inoArduino
Code For ESP8266 to update humidity and temperature in thingspeak and also retrieve control information from thingspeak
/* * This sketch updates wheather information in thingspeak.com and also retrieve control information from thingspeak.com * It send the control information to arduino serially */#include #include#include "DHT.h" // including the library of DHT11 temperature and humidity sensor#define DHTTYPE DHT11 // DHT 11#define dht_dpin 2 // define GPIO2 as data input DHT dht(dht_dpin, DHTTYPE); //------------------------------------------// variables//------------------------------------------//dht DHT;char c,e; // stores the bytes coming from the serverfloat temp,h; //stores float value of temp and humididtyString humidity,temperature,line; //stores string value of temp and humididtyint co=0; //control the sending of Alertconst char* ssid ="SSID"; //your SSID of WIFIconst char* password ="password"; // password of Wifi//--------------------------------------------const char* host ="api.thingspeak.com";void setup() { dht.begin(); Serial.begin (115200); задержка (10); // We start by connecting to a WiFi network Serial.println(); Serial.println (); Serial.print("Connecting to "); Serial.println(ssid); /* Explicitly set the ESP8266 to be a WiFi-client, otherwise, it by default, would try to act as both a client and an access-point and could cause network-issues with your other WiFi-devices on your WiFi-network. */ WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); в то время как (WiFi.status ()! =WL_CONNECTED) {задержка (500); Serial.print ("."); } Serial.println (""); Serial.println («WiFi подключен»); Serial.println("IP address:"); Serial.println(WiFi.localIP());}int value =0;void loop() { delay(1000); ++value; Serial.print("connecting to "); Serial.println(host); // Use WiFiClient class to create TCP connections WiFiClient client; const int httpPort =80; if (!client.connect(host, httpPort)) { Serial.println("connection failed"); возвращение; } Serial.print("Requesting URL:"); //============================================================================================================// Mini Weather Station //============================================================================================================h =dht.readHumidity(); //reads humidity and temperature temp =dht.readTemperature(); if(temp<50.0) { co=0; } if(temp>
=50.0&&co==0) // send alert if temperature is above 50 degrees and co is used to avoid multiple alert sending { Serial.println("Sending Alert please wait......."); задержка (1000); String host1="api.pushingbox.com"; client.print(String("GET ") + "/pushingbox?devid= HTTP/1.1\r\n" + "Host:" + host1 + "\r\n" + "Connection:close\r\n\r\n"); //pushingbox api to send alert delay(1000); client.print(String("GET ") + "/update?key=&field1=1 HTTP/1.1\r\n" + "Host:" + host + "\r\n" + "Connection:close\r\n\r\n"); //updating thingspeak fire alert channel co=1; } humidity=String(h); temperature=String(temp); Serial.println(h); Serial.println (темп); client.print(String("GET ") + "/update?key=&field1="+humidity+" HTTP/1.1\r\n" + "Host:" + host + "\r\n" + "Connection:close\r\n\r\n"); //update humidity in thingspeak channel client.print(String("GET ") + "/update?key=&field1="+temperature+" HTTP/1.1\r\n" + "Host:" + host + "\r\n" + "Connection:close\r\n\r\n"); ////update temperature in thingspeak channel //============================================================================================================// End of Weather Station//============================================================================================================//============================================================================================================// Sending Control info to arduino Serially//============================================================================================================// This will send the request to the server client.print(String("GET ") + "/channels//field/field1/last.html HTTP/1.1\r\n" + "Host:" + host + "\r\n" + "Connection:close\r\n\r\n"); // get information about device control unsigned long timeout =millis(); while (client.available() ==0) { if (millis() - timeout> 5000) { Serial.println(">>> Client Timeout !"); client.stop (); возвращение; } } // Read all the lines of the reply from server and print them to Serial while(client.available()){ String line =client.readStringUntil('\r'); } Serial.print(line); // received by arduino serially //Serial.println("closing connection");}

Схема


Производственный процесс

  1. Приложения домашней автоматизации
  2. Использование RFID-тегов для мониторинга домашней безопасности
  3. Мониторинг качества воздуха Smart City на основе LoRa
  4. Многотемпературный датчик
  5. Мониторинг CO2 с помощью датчика K30
  6. Alexa, Включите ЭТУ лампу:интеллектуальный 3D-датчик для Amazon Echo
  7. Система полива домашних растений
  8. Домашний контроллер Arduino, активированный Alexa
  9. Мониторинг температуры SMART для школ
  10. Местная метеостанция