ТЕХНИЧЕСКИЕ НАУКИ
ПРОЕКТИРОВАНИЕ ОСНОВНОГО МОДУЛЯ ПРОГРАММНОГО
ОБЕСПЕЧЕНИЯ ВЕДУЩЕГО УСТРОЙСТВА ДЛЯ СИСТЕМЫ ДОМАШНЕЙ АВТОМАТИЗАЦИИ «УМНЫЙ ЗАГОРОДНЫЙ ДОМ» Крамчанинов С.С.1, Черкесова Л.В.2
'Крамчанинов Сергей Сергеевич — магистрант;
2Черкесова Лариса Владимировна — профессор, кафедра кибербезопасности информационных систем, факультет информатики и вычислительной техники, Донской государственный технический университет, г. Ростов-на-Дону
Аннотация: разрабатываемая авторами система автоматизации «Умный загородный дом» предназначена для облегчения жизни людям, у которых имеется загородный дом и домашнее хозяйство, в условиях небольшого бюджета и относительной удалённости от города. Система разделяется на 2 части: ведущее устройство (компьютер) и ведомое устройство (микроконтроллер). Программное обеспечение ведущего устройства строится по модульному принципу. В статье описывается создание основного модуля (ядра), который запускает все элементы и позволяет остальным модулям безопасно взаимодействовать друг с другом. Ключевые слова: система домашней автоматизации, умный загородный дом.
Система автоматизации загородного дома и ведения домашнего хозяйства «Умный загородный дом», разрабатывается для людей, которые имеют загородный дом и подсобное хозяйство в условиях небольшого бюджета и относительной отдалённости от города. Разработка ведётся с учётом того, что пользоваться системой будут люди плохо знакомые с компьютером, это важно для пожилого населения, а для установки и настройки системы необходимы базовые навыки работы с компьютером и электротехникой [1].
Система разделяется на 2 части: ведущее устройство (компьютер) и ведомое устройство (микроконтроллер).
Для удешевления аппаратной части системы было принято решение в ведущем устройстве использовать программную платформу Node.js, которая может работать на многих операционных системах, тем самым предоставляя большой выбор устройств конечному потребителю.
Node или Node.js — программная платформа, основанная на движке V8 (транслирующем JavaScript в машинный код), превращающая JavaScript из узкоспециализированного языка в язык общего назначения. Node.js добавляет возможность JavaScript взаимодействовать с устройствами ввода-вывода через свой API (написанный на C++), подключать другие внешние библиотеки, написанные на разных языках, обеспечивая вызовы к ним из JavaScript кода [2].
Разработка ведётся модулями для масштабируемости системы. Основой программного обеспечения ведущего устройства является главный модуль системы, который имеет имя mainjs и находится в корневом каталоге системы, файл со свойствами системы имеет имя config.json и находится там же.
В разработке основного модуля системы (ядра программного обеспечения ведущего устройства) используются такие шаблоны проектирования как:
- реактор (Reactor) - шаблон, лежащий в основе асинхронной природы платформы Node.js;
- обратный вызов (Callback) - функции, вызываемые для передачи результата операции. Заменяют использование инструкции return, которая всегда выполняется синхронно;
- открытый модуль (RevealingModule) - шаблон использует возможность автоматического вызова функции для создания ограниченной области видимости и экспортирования только тех элементов, которые должны быть общедоступными;
- наблюдатель (Observer) - определяет объект (называемый субъектом), способный уведомить ряд наблюдателей (или обработчиков) об изменении своего состояния;
- прокси (Proxy) - это объект, управляющий доступом к другому объекту, который называется субъектом. Прокси и субъект имеют идентичные интерфейсы, и это позволяет прозрачно подменять одного другим;
- стратегия (Strategy) - позволяет объекту, который называется Контекстом, поддерживать несколько вариантов логики работы путем выделения переменных частей в отдельные взаимозаменяемые объекты, называемые Стратегиями;
- промежуточное программное обеспечение (Middleware) - любое программное обеспечение, которое находится между кодом приложения и некоторым API низкого уровня;
- и другие [3].
Использование данных шаблонов позволяет более точно и качественно спроектировать приложение для системы «Умный загородный дом», которое будет гармонично использовать большинство возможностей языка программирования JavaScript и платформы Node.js [4].
Одной из важных особенностей платформы является однопоточная асинхронная архитектура, которая имеет очевидные преимущества с точки зрения производительности и масштабируемости [5]. Но в системе, где может быть много ведомых устройств и веб-клиентов, однопоточное приложение становится менее надёжным, поэтому каждый модуль системы запускается в отдельном потоке, что обеспечивает превосходную отзывчивость, высокую производительность и дополнительную безопасность на многопоточных процессорах. В Node.js за создание дочерних процессов отвечает встроенный модуль «child_process» [6].
В процессе проектирования основного модуля были составлены несколько UML диаграмм.
На диаграмме состояний, представленной на рисунке 1, показаны состояния объекта и переходы между ними. Диаграмма последовательностей, изображенная на рисунке 2, отображает взаимодействие объектов в динамике.
Запуск системы «Умный загородный дом» происходит путём загрузки основного модуля (ядра). После старта программы загружаются свойства системы из файла свойств, а если файла нет, то те, которые записаны по умолчанию. Таким образом, пользователь, который имеет навыков работы с компьютером, сможет произвести тонкую настройку работы системы, но для рядового пользователя такие действия не нужны и программа будет работать с использованием стандартных параметров. В список свойств системы входят такие параметры как: каталог модулей, имя файла свойств модуля, режимы запуска модулей, режим работы модулей, параметры запуска базы данных и др.
Подключение к базе данных на диаграмме состояний опущено.
Запуск системы
._^_5_.
Поиск файла свойств системы
Файл найден
-А-,
Установка свойств из файла
Файл не найден
_*_
Установка свойств по умолчанию
Свойства установлены
Поиск каталогов модулей
У
Каталоги не найдены
Сообщить об ошибке
Каталоги найдены
Для каждого каталога
{ л
Поиск файла
свойств модуля
Файл найден
_*_
Проверка свойств
Файл не найден
Данные неверны
Данные верны
^^-
Запуск модуля
*
Ожидание сообщения от модуля
Г -ч
Сообщить об ошибке
_/
Сообщение об ошибке или завершении работы
Сообщить о статусе модуля
Сообщение другому модулю
V' +
Передача сообщения адресату
Рис. 1. Диаграмма состояний основного модуля системы « Умный загородный дом»
й
Командная строка
main.js
Node.js:fs
Node.js: child_process
Запуск системы
"Умный загородный дом"
Сообщение приветствия
Сообщение о статусе свойств системы
Сообщение о списке модулей
БД
Запрос файла св-в ядра сис.
Подключение к БД
Запрос списка имеющихся модулей
Г
Запрос списка установленных модулей
Асинхронно для каждого модуля^}
Запрос файла св-в модуля |
Проверка свойств
Запрос на запуск нового процесса для модуля
<-
Сообщение о запуске модуля
Цикл
Сообщение <— от
модуля
Node.js: stream
Модуль ведущего устройства
Создание нового процесса модуля
<
Запрос на прослушивание процесса созданного модуля
[пока существует процесс модуля]
Сообщение Проверка сообщения
Условие
Сообщение о <-- завершении работы
J
[если сообщение для друго]
Пересылка сообщения адресату
го м1 ►
Сообщение
дуля]
Сообщение
Завершение работы с БД
X
-
х
X X
Рис. 2. Диаграмма последовательностей основного модуля системы «Умный загородный дом»
После загрузки свойств системы и подключения к БД следует загрузка модулей. Она начинается с поиска всех подпапок каталога модулей. Если таковые не найдены, то в консоль выводится сообщение об ошибке и программа завершается. В случае если подпапки найдены идёт проверка каждой на наличие файла свойств системы и их проверка на правильность. Эти файлы определяют параметры запуска и работы отдельного модуля. В список свойств модуля входят такие параметры как: название, версия, краткое описание, утилита командной строки, параметры запуска, режим запуска, режим работы, скрипт анализатора данных и др. Если файл свойств модуля не найден или свойства не прошли проверку, модуль не запускается и в консоль выводится сообщение об ошибке.
Далее производится запуск модуля и при успешном запуске программа готова к получению сообщений от него. Каждое полученное сообщение ретранслируется в консоль и файл истории.
Если программа не смогла подключиться к базе данных, нет модулей, или каталога с ними, не получилось запустить ни один модуль или все запущенные модули завершили работу без возможности её возобновить, то main.js сообщит об ошибке и завершит работу.
Для системы «Умный загородный дом» был спроектирован основной модуль программного обеспечения, который позволит легко масштабироваться системе под нужды пользователя и
17
возможности аппаратного сопровождения путём добавления или удаления модулей, что немаловажно в условиях ограниченного бюджета.
В процессе разработки были рассмотрены основные шаблоны проектирования, составлены UML диаграммы состояний и последовательностей, что, безусловно, облегчит работы по программированию модуля, а также минимизирует ошибки в проектировании.
Список литературы
1. Крамчанинов С.С., Черкесова Л.В. Разработка системы автоматизации загородного дома и ведения домашнего хозяйства (Умный загородный дом). / Молодой исследователь Дона, 2017. № 3 (6). С. 40-44.
2. Node.js / Википедия. [Электронный ресурс]. Режим доступа: https://ru.wikipedia.org/w/ index.php?title=Node.js&oldid=60839653/ (дата обращения: 15.10.17).
3. Каскиаро М. Шаблоны проектирования Node.js / М. Каскиаро, Л. Маммино. М.: ДМК Пресс, 2017.
4. Гамма Э. Приемы объектно-ориентированного проектирования. Паттерны проектирования. / Э. Гамма и др. СПб.: Питер, 2015.
5. Пауэрс Ш. Изучаем Node. Переходим на сторону сервера. 2-е изд. / Ш. Пауэрс. СПб.: Питер, 2017.
6. ChildProcess / Node.js v 9.10.1 Documentation. [Электронный ресурс]. Режим доступа: https://nodejs.org/api/child_process.html/ (дата обращения: 11.01.18).
ОБЩИЕ ВОПРОСЫ ПРОЕКТИРОВАНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ДЛЯ СИСТЕМЫ ДОМАШНЕЙ АВТОМАТИЗАЦИИ «УМНЫЙ ЗАГОРОДНЫЙ ДОМ» Крамчанинов С.С.1, Черкесова Л.В.2
'Крамчанинов Сергей Сергеевич — магистрант;
2Черкесова Лариса Владимировна — профессор, кафедра кибербезопасности информационных систем, факультет информатики и вычислительной техники, Донской государственный технический университет, г. Ростов-на-Дону
Аннотация: разрабатываемая авторами система автоматизации «Умный загородный дом» предназначена для облегчения жизни людям, у которых имеется загородный дом и домашнее хозяйство, в условиях небольшого бюджета и относительной удалённости от города. Чтобы пользоваться системой, достаточно иметь начальные навыки работы с компьютером. Простота в эксплуатации особо важна для людей пожилого возраста, ведущих своё хозяйство, а для установки и настройки системы необходимы только базовые навыки работы с компьютером и электротехникой.
Ключевые слова: система домашней автоматизации, умный загородный дом.
Система автоматизации «Умный загородный дом», разрабатывается для облегчения жизни людям, имеющим загородный дом и домашнее хозяйство в условиях небольшого бюджета и относительной удалённости от города [1].
Чтобы пользоваться разрабатываемой системой, необязательно быть опытным пользователем компьютерных систем, что важно для людей пожилого возраста. Для установки и настройки параметров системы необходимы только базовые навыки работы с компьютером, электроникой и электрикой.
Разработана схема программного обеспечения системы (рисунок 1). Система разделяется на 2 части: ведущее устройство (снизу) и ведомое устройство (сверху). Для масштабируемости системы было принято решение сделать программное обеспечение модульным. В основе каждого устройства имеется ядро системы, которое позволяет модулям безопасно взаимодействовать друг с другом.