Рис. 1. Концептуальная схема «Умного дома»
Все эти и множество других проблем стали причиной создания так называемого «Умного дома». Под этим термином стоит понимать автоматизированное управление системой, связанной с комфортными условиями проживания, а также безопасностью. Целью моей работы является создание прототипа автоматизированной системы, способной к дистанционному отслеживанию показателей датчиков состояния окружающей среды посредством использования web-страницы, размещенной на web-сервере в Internet. Для создания подобной системы понадобятся плата CraftDuino, плата расширения Ethernet Shield и, конечно же, доступ к Интернету.
Arduino – это платформа для быстрой разработки электронных устройств, подходящих как для начинающих, так и для профессионалов. Процесс непосредственного программирования системы происходит в среде Arduino-0021 на языке C++, адаптированным под управление реальными физическими процессами. Данная аппаратно-вычислительная платформа интегрирует с расширением платы Ethernet Shield, обеспечивающей подключение Arduino к интернету. В работе я задействовала услуги бесплатного хостинга www.hostinger.ru, где и был размещен сайт и произведено подключение к базе данных MySQL средствами phpMyAdmin.
Ниже представлена блок-схема работы системы. Пользователь, заходя на web-страницу, обращается к web-серверу для просмотра показаний датчиков. Web-сервер, связываясь с системой датчиков и микроконтроллеров, отображает их состояния на текущий момент времени. Полученные данные сравниваются с последними зарегистрированными показателями, записанными в базу данных, и в случае их несовпадения текущий результат записывается в базу данных и высылается электронное письмо, содержащее уведомление об изменении состояний датчиков.
Кратко рассмотрим алгоритм работы системы. Web-клиент посредством связи с web-сервером получает информацию о показаниях датчиков с последующей их корректировкой. Это значит, что, при изменении состояния хотя бы одного датчика на сайт (сервер) отсылается GET-запрос, параметрами которого являются состояния всех датчиков. Он имеет следующий вид: ard-proj.hol.es/?in1=0&in2=0&in3=0&in4=0&in5=0&in6=0&in7=0&in8=0
, где in1,…,in8 – параметры, хранящие состояния восьми датчиков. Значения этих параметров средствами функции php извлекаются из строки запроса и присваиваются переменным следующим образом:
$n1=$_GET['in1'];
Функция $_GET['имя'] применяется с целью поиска в полученном URL-адресе переменной с именем, указанном в аргументе функции, и возвращает значение этой переменной.
Сервер, обработав запрос, обращается к базе данных MySQL, состоящей из единственной таблицы, в состав которой входят поля состояния датчиков (in1-in8), дата и время записи (DateTime).
Рис. 2. Структура таблицы Report.
Далее после успешного подключения к БД средствами SQL-запроса сервер извлекает самую позднюю запись из базы данных и производит сравнение показателей датчиков, полученных только что.
$arr=mysql_fetch_array(mysql_query("SELECT in1,in2,in3,in4,in5,in6,in7,in8 FROM `Report` WHERE id = (SELECT MAX( id ) FROM Report )",$dbh));
В массив $arr записываются значения восьми показателей, полученных в предыдущий раз. Работа с массивом в php предельно проста, так что не составляет большого труда извлечь эти значения из него.
При условии, что показания сходятся, поля в БД не обновляются и, соответственно, уведомление не отсылается. Однако, если же хотя бы одно значение отличается от того, что было извлечено из базы данных, то в таблицу вставляется новая строка с уже измененными показаниями и на почту клиенту приходит уведомление о происшедших изменениях. Данное электронное письмо содержит информацию об измененном датчике.
mail($to, $title, $mess);
Вышеописанная функция предназначена для отправки сообщения на электронную почту и содержит три параметра, в нашем случае переменные: $to – адрес получателя, $title – тема отправляемого письма и $mess – строка, содержащая текст сообщения.
В результате проделанной работы на выходе имеется web-страница, отображающая состояния датчиков.
Рис.3. Интерфейс web-страницы
В дополнение ко всему, на почту приходит email-уведомление о происшедших изменениях.
При проектировании «Умного дома» и подборе средств была учтена экономическая целесообразность использования платы Arduino и ее расширений, а именно их общедоступность и дешевизна.
Данная проектная работа является перспективной в плане расширения функционала сайта. На данный момент его назначением является отслеживание информации о состоянии датчиков, но в будущем будет осуществлена возможность управления контроллерами дистанционно.
Литература:
Соммер, Улли. Программирование микроконтроллерных плат Arduino/Freeduino : пер. с нем. / У. Соммер. — СПб.: БХВ-Петербург, 2012. — 244 с.
Мазуркевич, Александр Михайлович. РНР: настольная книга программиста / А. М. Мазуркевич, Д. С. Еловой. — М.: Новое знание, 2004. — 479 с.