Проектирование основного модуля программного обеспечения ведущего устройства для системы домашней автоматизации "Умный загородный дом"

ТЕХНИЧЕСКИЕ НАУКИ

ПРОЕКТИРОВАНИЕ ОСНОВНОГО МОДУЛЯ ПРОГРАММНОГО

ОБЕСПЕЧЕНИЯ ВЕДУЩЕГО УСТРОЙСТВА ДЛЯ СИСТЕМЫ ДОМАШНЕЙ АВТОМАТИЗАЦИИ «УМНЫЙ ЗАГОРОДНЫЙ ДОМ» Крамчанинов С.С.1, Черкесова Л.В.2

'Крамчанинов Сергей Сергеевич — магистрант;

2Черкесова Лариса Владимировна — профессор, кафедра кибербезопасности информационных систем, факультет информатики и вычислительной техники, Донской государственный технический университет, г. Ростов-на-Дону

Аннотация: разрабатываемая авторами система автоматизации «Умный загородный дом» предназначена для облегчения жизни людям, у которых имеется загородный дом и домашнее хозяйство, в условиях небольшого бюджета и относительной удалённости от города. Система разделяется на 2 части: ведущее устройство (компьютер) и ведомое устройство (микроконтроллер). Программное обеспечение ведущего устройства строится по модульному принципу. В статье описывается создание основного модуля (ядра), который запускает все элементы и позволяет остальным модулям безопасно взаимодействовать друг с другом. Ключевые слова: система домашней автоматизации, умный загородный дом.

Система автоматизации загородного дома и ведения домашнего хозяйства «Умный загородный дом», разрабатывается для людей, которые имеют загородный дом и подсобное хозяйство в условиях небольшого бюджета и относительной отдалённости от города. Разработка ведётся с учётом того, что пользоваться системой будут люди плохо знакомые с компьютером, это важно для пожилого населения, а для установки и настройки системы необходимы базовые навыки работы с компьютером и электротехникой [1].

Система разделяется на 2 части: ведущее устройство (компьютер) и ведомое устройство (микроконтроллер).

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

Разработка ведётся модулями для масштабируемости системы. Основой программного обеспечения ведущего устройства является главный модуль системы, который имеет имя mainjs и находится в корневом каталоге системы, файл со свойствами системы имеет имя config.json и находится там же.

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

- реактор (Reactor) - шаблон, лежащий в основе асинхронной природы платформы Node.js;

- обратный вызов (Callback) - функции, вызываемые для передачи результата операции. Заменяют использование инструкции return, которая всегда выполняется синхронно;

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

- наблюдатель (Observer) - определяет объект (называемый субъектом), способный уведомить ряд наблюдателей (или обработчиков) об изменении своего состояния;

- прокси (Proxy) - это объект, управляющий доступом к другому объекту, который называется субъектом. Прокси и субъект имеют идентичные интерфейсы, и это позволяет прозрачно подменять одного другим;

- стратегия (Strategy) - позволяет объекту, который называется Контекстом, поддерживать несколько вариантов логики работы путем выделения переменных частей в отдельные взаимозаменяемые объекты, называемые Стратегиями;

- промежуточное программное обеспечение (Middleware) - любое программное обеспечение, которое находится между кодом приложения и некоторым API низкого уровня;

- и другие [3].

Одной из важных особенностей платформы является однопоточная асинхронная архитектура, которая имеет очевидные преимущества с точки зрения производительности и масштабируемости [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 части: ведущее устройство (снизу) и ведомое устройство (сверху). Для масштабируемости системы было принято решение сделать программное обеспечение модульным. В основе каждого устройства имеется ядро системы, которое позволяет модулям безопасно взаимодействовать друг с другом.