Разработка подсистемы удаленного управления аэропонными установками
Автор: Кудрявцева Александра Алексеевна, Стучилин Владимир Валерьевич
Журнал: Горные науки и технологии @gornye-nauki-tekhnologii
Статья в выпуске: 11, 2012 года.
Бесплатный доступ
Данная статья рассматривает процессы автоматизации производства с использованием аэропонных установок и описывает создание подсистемы удаленного управления. Предоставляет методику сравнения систем управления базами данных и подсистем хранения информации.
Субд, база данных, типы таблиц, транзакция, система обработки и хранения информации
Короткий адрес: https://sciup.org/140215432
IDR: 140215432
Текст научной статьи Разработка подсистемы удаленного управления аэропонными установками
С появлением компьютеров начался необратимый процесс развития информационных систем и автоматизации производства. Медицина, экономика, география, производство машин и механизмов, горная промышленность – каждая из этих областей содержит в себе АС и без них обойтись уже не может. Автоматизированные системы позволяют в первую очередь повысить производительность и облегчить работу персоналу.
Одним из инновационных и интересных направлений в области автоматизации производства является технология аэропонного выращивания растений . Аэропоника представляет собой способ выращивания растений без использования грунта и его заменителей (субстратов). Все необходимые для роста питательные вещества растения получают за счет опрыскивания корневой системы питательным раствором в определенные промежутки времени. Данный метод выращивания позволяет увеличить скорость роста и плодоносность овощных культур, занимаемого место при этом оказывается значительно меньше.
Современный рынок предоставляет довольно большой выбор аэропонных установок. Однако управлять ими можно исключительно локально. Это неудобно, так как не всегда есть возможность находиться рядом с установкой, кроме того оперативно решать нештатные ситуации становится затруднительно. Именно поэтому возникла идея создания системы для удаленного управления. Разработка этой системы ставит перед собой следующие цели:
-
- повышение оперативности работы с установками;
-
- повышение качества обслуживания пользователей системы;
-
- автоматизация процесса управления установками;
-
- снижение трудовых, материальных и финансовых затрат.
Для реализации этих целей необходимо решить следующие задачи:
-
1. Определить общую структуру системы.
-
2. Разработать общий алгоритм работы системы.
-
3. Выбрать подсистему хранения данных.
-
4. Разработка структуры базы данных.
-
5. Разработать интерфейс пользователя.
-
6. Создать и апробировать программный код.
Общая структура системы.
Для создания глобальной системы удаленного управления удобнее всего использовать сеть Интернет. С использованием этой сети подключиться к данной подсистеме можно будет практически из любой точки земного шара.
Общая структура системы представлена на рис. 1.

Рис. 1.- Структура системы.
Рассмотрим данную структурную схему более подробно.
За каждым пользователем может быть закреплено как одна, так и несколько установок. Все установки пользователя соединяются последовательно и подключаются к основному компьютеру. Данный компьютер хранит программное обеспечение, которое осуществляет прямое взаимодействие с установкой. За счет него осуществляется сбор данных об основных рабочих узлах установок. Дальше информация с основного компьютера через сеть Интернет по защищенным протоколам поступает на выделенный сервер.
Доступ к подсистеме удаленного управления со своего личного компьютера имеют два типа пользователей:
-
1. Владельцы установок (в дальнейшем пользователи);
-
2. Администраторы системы (в дальнейшем администраторы).
Основная идея данной состоит в том, что пользователь в любое удобное для себя время, может через сеть Интернет следить за работой установок, закрепленных за ним, и передавать им команды.
Так же предлагаемая система предусматривает для пользователей возможность наблюдения за процессом работы установок через IP-камеры. Записи с Web – камер поступают сначала на компьютер, закрепленный за установками, а после на файловый сервер.
В системе предусматривается оповещение пользователей при помощи СМС-сообщений. В случае сбоя в работе установки, пользователь немедленно получит уведомление об этом на свой мобильный телефон.
В свою очередь администраторы данной системы имеют доступ ко всей информации, хранимой в базе данных. Основными задачами администратора являются: регистрация пользователей для работы в автоматизированной системе, а так же наблюдение за работоспособностью всех установок, подключенных в системе. При регистрации пользователей в системе необходимым условием является указание действующего адреса электронной почты, так как на него высылаются уникально сгенерированные для каждого пользователя логин и пароль.
Для реализации серверной части предлагаемой системы можно использовать язык программирования PHP. Данный язык специально предназначен для использования в сети Интернете. Он обладает универсальным и ясным синтаксисом. PHP используется более чем на миллионе серверов по всему миру, их количество продолжает увеличиваться.
Общий алгоритм работы системы
Общий алгоритм работы системы удаленного управления аэропонными установками можно представить следующим образом (см. рис. 2):
-
• пользователь открывает браузер и переходит по электронному адресу на сайт автоматизированной системы выращивания растений;
-
• в предоставленной форме для авторизации пользователь вводит логин и пароль;
-
• дальше система сверяет пользовательские данные с данными хранящимися в базе и в зависимости от предоставляемых прав осуществляет отображение либо личного кабинета пользователя, либо кабинета администратора;
-
• в личном кабинете, на протяжении всей работы, происходит обмен информацией с сервером баз данных;
-
• по завершении работы в подсистеме из нее осуществляется выход.

Рис. 2. Общий алгоритм работы подсистемы.
Выбор СУБД
Современный рынок предоставляет широкий выбор систем управления базами данных. Каждая из них обладает рядом своих особенностей и возможностей.
Сравним основные возможности наиболее часто используемых при автоматизации производства СУБД (см. табл. 1):
Таблица 1.
Сравнение СУБД.
Название |
InterBase |
MS SQL |
MySQL |
Oracle |
PostgreSQL |
Распространение |
Платное |
Платное |
Бесплатное |
Платное |
Бесплатное |
Транзакции |
да |
да |
да |
да |
да |
Поддержка юникод |
да |
да |
да |
да |
да |
Временная таблица |
да |
да |
да |
да |
да |
Интеллектуальный ключ |
нет |
нет |
да |
да |
нет |
Пользовательские функции |
да |
да |
да |
да |
да |
Триггеры |
да |
+ |
+ |
+ |
+ |
Хранимая процедура |
да |
да |
да |
да |
да |
Поддержка ОС |
MS Windows, Unix |
MS Windows |
MS Windows, GNU/Linux, Unix |
MS Windows, Unix |
MS Windows, Unix |
Как видно из табл. 1, выбранные системы управления базами данных обладают схожими особенностей, однако наиболее явным отличием является распространение того или иного продукта, а также поддержка операционных систем. С этой точки зрения наиболее приемлемыми является СУБД MySQL и PostgreSQL.
Обе эти СУБД распространяются с открытым кодом и являются бесплатными (за исключением некоторых моментов оговоренных в лицензионных соглашениях).
Однако наиболее распространенной на сегодняшний день является СУБД MySQL. Кроме распространенности эта СУБД довольно большим рядом преимуществ по сравнению с другими, к ним относятся:
-
• Простота использования . СУБД MySQL является
высокопроизводительной и относительно простой в использовании СУБД, которую значительно проще инсталлировать и администрировать, чем большинство других систем.
-
• Цена. СУБД MySQL распространяется бесплатно.
-
• Поддержка языка запросов. MySQL «понимает» команды языка SQL (Structured Query Language – структурированный язык запросов). Этот язык применяется во всех современных СУБД.
-
• Возможности. Сервер позволяет одновременно подключаться неограниченному количеству пользователей. Доступ к серверу СУБД MySQL можно осуществить в интерактивном режиме с помощью различных интерфейсов, позволяющих вводить запросы и просматривать полученные результаты: это программы-клиенты, работающие с командной строкой, Web-браузеры или программы клиенты, работающие в системе Windows.
-
• Взаимодействие и безопасность . MySQL предназначена для работы в сети и может быть доступна через Internet, таким образом, с данными можно работать в любой точке земного шара. Но при этом данная СУБД обладает развитой системой защиты от несанкционированного доступа. [5]
Выбор подсистемы хранения данных
Подсистемы хранения MySQL делятся на два различных типа: транзакционные (InnoDB, BDB) и без поддержки транзакций (MyISAM, MERGE, Memory, Blackhole).
Преимущества транзакционных таблиц (Transaction-safe tables, TST):
-
• Надежность. Даже если произойдет сбой в работе MySQL или возникнут проблемы с оборудованием, свои данные вы сможете восстановить
-
• Есть возможность отменить внесенные изменения (если работа не производится в режиме автоматической фиксации).
-
• Если произойдет сбой во время обновления, все изменения будут восстановлены (в не транзакционных таблицах все внесенные изменения не могут быть отменены).
Преимущества не транзакционных таблиц (non-transaction-safe tables, NTST):
-
• Работать с ними намного быстрее, так как не выполняются дополнительные транзакции.
-
• Для них требуется меньше дискового пространства, так как не применяются дополнительные транзакции.
-
• Для обновлений используется меньше памяти.
Наиболее подходящими для создаваемой подсистемы являются два типа таблиц – MyISAM и InnoDB. Так какую же выбрать? Для того чтобы сделать правильный выбор необходимо оценить два основных критерия необходимых при создании подсистемы удаленного управления: скорость работы с данными и надежность.
Для оценки скорости работы с данными необходимо провести ряд тестовых испытаний по определению скорости выполнения основных типов запросов:
-
• INSERT – вставляет новые строки в существующую таблицу;
-
• SELECT – применяется для извлечения строк, выбранных из одной или нескольких таблиц;
-
• UPDATE – обновляет столбцы в соответствии с их новыми значениями в строках существующей таблицы;
-
• COUNT() – это агрегатная функция, которая возвращает количество строк, которое удовлетворяет условиям поиска запроса. [6]
Создадим две таблицы tab1 и tab2. Первая таблица должна содержать уникальный номер пользователя, его имя и пароль. Вторая таблица для каждого пользователя будет хранить по несколько, созданных пользователем, статусов и время их создания. Структура таблиц приведена ниже (см. табл. 2 и табл. 3):
Таблица 2
Структура tab1
tab1 |
||
Поле |
Тип |
Дополнительно |
id |
int(4) |
AUTO_INCREMENT |
tex |
varchar(100) |
|
ses |
varchar(100) |
Таблица 3
Структура tab2
tab2 |
||
Поле |
Тип |
Дополнительно |
id0 |
int(4) |
AUTO_INCREMENT |
id |
int(4) |
|
status |
varchar(100) |
|
time |
datetime |
Для измерения скорости выполнения запросов напишем конструкцию, которая будет засекать для показателя времени: первый -время прямо перед выполнением запросов, второй – время сразу после выполнения запроса. Разность этих двух показателей и является временем выполнения запроса к базе данных.
//засекаем время начала работы запросов
$mtime = microtime();
$mtime = explode(" ",$mtime);
$mtime = $mtime[1] + $mtime[0];
$tstart = $mtime;
//засекаем время окончания работы запросов $mtime = microtime();
$mtime = explode(" ",$mtime);
$mtime = $mtime[1] + $mtime[0];
$tend = $mtime;
//вычисляем время работы $tpassed = ($tend - $tstart);
Для определения скорости запроса INSERT напишем скрипт, который заполнит обе таблицы (см. рис. 3).
id |
tex |
ses |
idO id status |
time |
1 |
afbeced |
1524616324 |
1 1 fefdccfedfab |
2011-04-12 10:23:11 |
2 |
aebebfe |
6121526341 |
2 1 fiffcafabeec |
2011-04-02 00:22:51 |
3 |
bfdafce |
1131322124 |
3 1 eefafaaaeeee |
2011-04-18 21:38:38 |
4 |
eaceaef |
3316333464 |
4 1 caccfedacfbd |
2011-03-22 04:40:44 |
5 |
cabfbcc |
5466456164 |
5 1 cadcadafdfcf |
2011-04-15 04:24 46 |
6 2 cbbffcbecdbe |
2011-03-24 18:45:17 |
|||
2994 |
feeabce |
4515143662 |
||
2995 |
caddbaf |
2551151443 |
14995 2999 fcdeecbeadec |
2011-04-19 14:43:08 |
2996 |
bdbfcfb |
6434625321 |
14996 3000 bceeaabcbeff |
2011-04-14 12 46:11 |
2997 |
aeaceda |
5543213234 |
14997 3000 cafeacedbcaf |
2011-03-20 02:12:23 |
2998 |
dcccaac |
1661533315 |
14998 3000 adaafbcdacce |
2011-04-14 02:11:21 |
2999 |
edffcbc |
5531663523 |
14999 3000 ebeedabbccdb 2011-04-04 01:10:29 |
|
3000 |
cfddcec |
5664656616 |
15000 3000 cbaeddcaebdd 2011-04-09 10:58:47 |
|
tabi |
tab2 |
Рис. 3. Внешний вид заполненных таблиц.
Для определения скорости запроса SELECT напишем скрипт, который, будет выводить всю информацию из первой таблицы в окно браузера (см. рис. 4).
ID 2609 NAME Ьмйк PASS 1111 <26452 ID 2158 NAME gbfdfe PASS 1112256136
ID 2166NAME deddbaaPASS 1112311423 ID: 173 NAME idink PASS 1113412431 ID 432 NAME adedaea PASS 111 3422565 ID; 9Э4 NAME dac«dc PASS; 1114211325 ID 265 NAME dfcdide PASS-1114222154 ID 1880 NAME Л9Л PASS. 1114251522 ID; 655 NAME: aetadMPASS 111 1514512 ID 127? NAME df«blx PASS 1114666663 ID: 1627 NAME bcebbec PASS 1115213552
ID 88 NAME ASabc PASS 6663656644
ID 2142 NAME dfdbcba PASS 6664535462
ID 356 NAME crccdbf PASS 6664545214 ID 2V2NAME ccMdPASS 6665153132 ID 111* NAME ЬаабсаPASS 6665535151 ID 1154 NAME dahd.bd PASS: 6666156635 ID 2939 NAME ашЯЫ PASS 6666516242
Рис. 4. Результат выполнения запроса SELECT.
Для определения скорости запроса UPDATE напишем скрипт, который, обновит значение времени во второй таблице (см. рис. 5).
idO |
id |
status |
time |
idO |
id |
status |
time |
|
1 |
1 |
fefdccfedfab |
2011-04-12 10:23:11 |
1 |
1 |
fefdccfedfab |
2011-04-12 10:23:11 |
|
2 |
1 |
ffffcafabeec |
2011-04-02 00:22 51 |
2 |
1 |
ffffcafabeec |
2011-04-02 00:22:51 |
|
3 |
1 |
eefafaaaeeee |
2011-04-18 21.38:38 |
3 |
1 |
eefafaaaeeee |
2011-04-18 21:38:38 |
|
4 |
1 |
caccfedacfbd |
2011-03-22 04 40:44 |
4 |
1 |
caccfedacfbd |
2011-03-22 04:40:44 |
|
5 |
1 |
cadcadafdfcf |
2011-04-15 04:24:46 |
5 |
1 |
cadcadafdfcf |
2011-04-15 04:24:46 |
|
6 |
2 |
cbbffcbecdbe |
2011-03-24 18 45 17 |
6 |
2 |
cbbffcbecdbe |
2011-03-24 18:45.27 |
|
7 |
2 |
fbafbaeedebb |
2011-04-19 01:54:44 |
7 |
2 |
fbafbaeedebb |
2011-04-19 01:54 54 |
|
8 |
2 |
bdcfceffaacf |
2011-03-28 01:27:05 |
8 |
2 |
bdcfceffaacf |
2011-03-28 01:27:15 |
|
9 |
2 |
ecaadaedbcdf |
2011-04-08 16:06:40 |
9 |
2 |
ecaadaedbcdf |
2011-04-08 16:06:50 |
|
10 |
2 |
cbdffdfeebfc |
2011-03-29 21:21 47 |
10 |
2 |
cbdffdfeebfc |
2011-03-29 21:21:47 |
|
11 |
3 |
beecdbeadbec |
2011-04-07 13:43:40 |
11 |
3 |
beecdbeadbec |
2011-04-07 13:43:40 |
|
12 |
3 |
cbddefffbefe |
2011-03-31 03:50:00 |
12 |
3 |
cbddefffbefe |
2011-03-31 03:50:00 |
До запуска скрипта После запуска скрипта
Рис. 5. Результат работы запроса UPDATE.
Результат срабатывания агрегатной функции COUNT() представлен на рис. 6.

Последняя запись в таблице 1 - номер 3000
Последняя запись в таблице 2 - номер 15000
Рис. 6. Результат работы COUNT().
Временные характеристики полученных в процессе испытаний представлены в табл. 4:
Таблица 4.
Сводная таблица данных, полученных в результате работы.
MyISAM |
InnoDB |
|||
Запрос |
Tab1 |
Tab2 |
Tab1 |
Tab2 |
INSERT |
6,458 |
18,52 |
||
SELECT |
0,044 |
- |
0.056 |
- |
SELECT COUNT(*) |
0,0005 |
0,0002 |
0,0026 |
0,0109 |
UPDATE |
- |
0,0018 |
- |
0,0075 |
Размер |
114,0 кБ |
680,3 кБ |
160 кБ |
1,5 мБ |
Для большей наглядности полученных временных характеристик, приведу гистограмму (см. рис. 7).

Рис. 7. Временные характеристики, полученные во время испытаний.
В процессе испытаний было выявлено, что более быстродействующей является подсистема хранения данных MyISAM.
Подсистема хранения данных InnoDB была разработана для транзакционной обработки, в частности для обработки большого количества краткосрочных транзакций, которые значительно чаще благополучно завершаются, чем откатываются. Она остается наиболее популярной транзакционной подсистемой хранения.
Кроме того если объем данных велик, то нужно серьезно оценить, сколько времени займет восстановление базы после сбоя. Таблицы MyISAM обычно чаще оказываются поврежденными и требуют значительно больше времени для восстановления, чем, например, таблицы InnoDB.
Большая надежность InnoDB достигается за счет транзакционности и блокирование данных на уровне строки. InnoDB обеспечивает также и быстрое самовосстановление после сбоев. [4]
Главным критерием выбора подсистемы хранения данных для разрабатываемой автоматизированной системы является надежность хранимых данных, а так же возможность восстановления информации после сбоев, так как потеря даже части хранимых данных приведет к полной остановке работы системы выращивания растений. Для данных целей подходит исключительно транзакционная подсистема хранение. Таким образом, выбор был остановлен на InnoDB.
Основные функциональные возможности системы
Даная подсистема разрабатывается с целью предоставления пользователю возможности простой и удобной удаленной работы с аэропонными установками. Таким образом, первая, и основная, функциональная часть подсистемы – пользовательская.
Определим теперь, какие возможности должен предоставлять пользователю его личный кабинет. Находясь в непосредственной близости от установки, пользователь может визуально наблюдать за ней, включать/выключать освещение и полив, наблюдать за уровнем жидкости для полива. В случае возникновения поломки может принимать немедленные решения о ее устранении. Почему бы не предоставить пользователю возможность выполнять те же функции только через сеть Интернет?
Таким образом, пользовательская часть подсистемы должна содержать следующие функциональные возможности:
-
• Просматривать состояния установок, закрепленных за ним.
-
• Просматривать историю по каждой установке за выбранный период времени.
-
• Задавать график освещения по часам (от 00:00 до 23:00).
-
• Задавать график полива по часам (от 00:00 до 23:00).
-
• Просматривать текущие графики полива и освещения.
-
• Получать информацию об уровне поливочного раствора и его плотности.
-
• Визуально наблюдать за процессом развития растений.
-
• Получать информацию о неполадках в работе установки.
При регистрации пользователя на данном ресурсе ему необходимо выдать его логин и пароль, закрепить за ним установку и выделить права доступа. Так как все эти данные должны поступать в общую базу, то здесь не обойтись без еще одной функциональной части – администраторской .
Можно выделить следующие возможности для личного кабинета администратора:
-
• Регистрация нового пользователя и присвоение ему установок.
-
• Удаление пользователя из базы (со всеми связанными данными).
-
• Возможность экстренной смены пароля у конкретного пользователя (в случае если пользователь его забыл).
-
• Возможность отправки логина и пароля на электронную почту пользователя.
-
• Просмотр текущих состояний всех активных установок.
-
• Просмотр истории состояний по каждой установке в отдельности за выбранный период времени.
-
• Возможность смены собственного пароля.
Таким образом, были определен основной функционал разрабатываемой системы.
Разработка структуры базы данных
Определим теперь, какая информация должна содержаться в базе данных подсистемы удаленного управления аэропонными установками. Во – первых, база данных должна содержать информацию обо всех пользователях, подключенных к системе. Во – вторых необходим перечень установок, и информация о том за каким пользователем данная закреплена установка. В – третьих в базе должна содержаться актуальная информация о работоспособности основных частей установок, а также дата обращения к ним.
Из выше сказанного следует, что в базе данных можно создать три основные таблицы.
Первая таблица будет называться USERS (см. табл. 5). В ней будет содержаться контактная информация о пользователях системы. К этой информации можно отнести: логин, хеш пароля, ФИО, контактный телефон и адрес электронной почты.
Таблица 5.
Пользователи.
Поля |
Тип |
Комментарий |
user_id |
int(12) |
Уникальный логин пользователя (ключевое поле) |
user_pass |
varchar(150) |
Хеш пароля пользователя |
dost |
int(5) |
Права доступа (1-администратор, 2 - пользователь) |
|
varchar(40) |
Адрес электронной почты |
fio |
varchar(50) |
ФИО |
phohe |
varchar(20) |
Номер телефона |
Вторая таблица будет называться SOOTV (см. табл. 6). В данной таблице содержится информация о закрепленных за конкретным пользователям установках.
Таблица 6.
Соответствие установок пользователям
Поле |
Тип |
Комментарий |
sootv_id |
int(12) |
Уникальный идентификатор(ключевое поле) |
user_id |
int(12) |
Логин пользователя |
ust_id |
int(12) |
Идентификатор установки |
Перед созданием третьей таблицы, следует определиться, какая информация об установках будет в ней содержаться.
Основными частями установок, характеризующими их работоспособность, являются:
-
• насос (рабочее состояние или сломан);
-
• лампы (рабочее состояние или сломаны);
-
• уровень поливочного раствора (максимальное, нормальное, минимальное) и его плотность;
-
• высота лампы (является актуальным, так как в зависимости от высоты растения ее положение регулируется).
Помимо приведенных выше характеристик, в данной таблице необходимее создать два поля, в которых будут храниться графики полива и освещения.
Кроме того, данная таблица должна содержать поле с датой последнего обращения к установке, таким образом, в одной таблице можно будет хранить информацию об изменениях в работе всех установок.
И так структура таблицы STATUS будет иметь следующий вид (см. табл. 7):
Таблица 7.
Таблица статусов.
Поле |
Тип |
По умолчанию |
Комментарий |
status_id |
int(12) |
Уникальный идентификатор записи (ключевое поле) |
|
ust_id |
int(12) |
Идентификационный номер установки |
|
time |
timestamp |
CURRENT_TIM ESTAMP |
Время обращения к установке |
st_lamp |
int(3) |
1 |
Состояние лампы (1-рабочее, 0-не рабочее) |
height_lamp |
int(5) |
Высота расположения лампы |
|
pump |
int(3) |
1 |
Состояние насоса (1-рабочее, 0 – не рабочее) |
urov_rastv |
int(5) |
0 |
Уровень жидкости (0 - min, 1 -normal, 2 - max) |
density |
double |
Плотность поливочного раствора |
|
light |
text |
График освещения |
|
water |
text |
График полива |
Помимо этих трех таблиц удобно создать еще одну таблицу (LOGQUERY), в которой будет отображаться лог запросов INSERT и UPDATE к таблицам базы данных (см. табл. 8). За счет создания этой таблицы можно будет отследить IP пользователей, время обращения к таблице, текст запроса и результат его выполнения (true/false)
Таблица лога запросов.
Таблица 8.
Поле |
Тип |
По умолчанию |
Комментарий |
id _q |
int(5) |
- |
Уникальный идентификатор записи |
text_query |
varchar(200) |
- |
Текст запроса к базе |
time_query |
timestamp |
CURRENT_TIMESTA MP |
Время запроса |
ip_user |
varchar(15) |
- |
IP - пользователя |
pesp |
int(4) |
- |
Результат выполнения |
Таким образом, общая структура базы данных, применяемая в системе, имеет следующий вид (см. рис. 8):
3 sootv
9 sootvJd : int(12) <4 userjd : lnt(12) 4 ust_ld : lnt(12) ^*
-
□ users
-
8 userjd : int(12)
: user_pass : varchar(150)
4 dost: int(5)
J email: varchar(40) fio: varchar(50)
. phone: varchar(20)
4 urov_rastv: lnt(5)
4 density : double
J light: text
.1 water: text
v» logquery
V id_q: int(5)
; texLquery: varchar(200)
3 time_query : timestamp # pesp : int(4) Рис. 8. Структура БД. Разработка пользовательских модулей Авторизация пользователей Одним из важных модулей для работы с пользователями является модуль авторизации. Общий алгоритм авторизации пользователей в подсистеме представлен на рис. 9. Рис. 9. Алгоритм авторизации. Для осуществления безопасности пользовательских данных пароли в базе не хранятся в явном виде. Для их шифрования используется алгоритм md5. В результате мы получаем хеш пароля, который сравнивается с введенными данными пользователей при авторизации. В зависимости от пользовательских прав осуществляется переход либо на пользовательскую страницу, либо на страницу администратора. Модуль истории Для отображения истории по состояниям установок необходимо определять укладывается ли данные из поля time в выбранный период времени. Период определяется по календарю (см. рис. 10). По умолчанию период – это текущая неделя. Рис. 10. Вкладка история. Для получения истории по работе установок был написан следующий запрос: SELECT * FROM `status` WHERE `time` BETWEEN '".$date1."' AND '".$date2."' AND `ust_id` = '".$id_ust."' Общий алгоритм получения истории представлен на рис. 11. Рис. 11. Алгоритм получения истории. Модуль по работе с пользователями В личном кабинете администратора разработаны специальные возможности по работе с пользователями системы (см. рис. 12). Рис. 12. Модуль администрирования. Модуль текущих состояний установок Для получения текущего состояния по каждой установке закрепленной за пользователем был написан запрос: SELECT * FROM sootv, status WHERE sootv.user_id ='".$id."' AND sootv.ust_id = status.ust_id AND status.time IN (SELECT MAX( `time` ) FROM `status` GROUP BY `ust_id`) Этот запрос позволяет отобрать последние записи, относящиеся только к установкам, закрепленным за конечным пользователем (см. рис. 13). Рис. 13. Текущее состояние установок. Модуль управления Управление установками осуществляется из личного кабинета пользователей. Для управления поливом и освещением был разработан удобный интерактивный интерфейс (см. рис. 14) Рис. 14. Управление установкой. Графики сохраняются в базе данных в соответствующем поле таблицы. Выводы. Для реализации поставленных целей в ходе выполнения работы был разработан ряд требований к функциональным возможностям подсистемы. А так же была разработана методика сравнения подсистем хранения данных MySQL. Разработанная подсистема удаленного управления аэропонными установками обладает удобным и понятным для простого пользователя интерфейсом. Кроме того реализованная подсистема предоставляет возможность не только удаленно управлять установками, но и следить за работоспособность основных узлов.
Список литературы Разработка подсистемы удаленного управления аэропонными установками
- Гутманс Э., Баккен С. PHP5. Профессиональное программирование. -Пер.с англ. -СПб: Символ плюс, 2006 -704 с., ил.
- Колисниченко Д.Н. Самоучитель PHP5 -СПб.: Наука и техника, 2004. -560 с.: ил.
- Маклафлин Б. Изучаем Ajax. -СПб.: Питер, 2008. -443с.: ил.
- Шварц Б., Зайцев П., Ткаченко В., Заводны Дж., Ленц А., Бэллинг Д. MySQL. Оптимизация производительности, 2-е издание. -Пер. с англ. -СПб.: Символ-Плюс, 2010. -832 с., ил.
- Paul DuBois. MySQL. -New Riders Published, 2000. -819 p.
- Welling L.,Thomson L. MySQL Tutorial. -Pearson Education, Inc., 2004 -306 p.