Онищенко Константин Георгиевич
студент, старший лаборант
Харьковский национальный университет радиоэлектроники
Украина, г. Харьков
Руководитель:
Афанасьева Ирина Витальевна
кандидат технических наук, доцент
Харьковский национальный университет радиоэлектроники
Украина, г. Харьков
Аннотация: Статья посвящена обзору паттерна проектирования Observer и его применению для опроса состояния IoT-устройств. Поэтапно проанализированы и обобщены предпосылки к использованию паттерна в проекте. Отражены основные преимущества выбранного шаблона проектирования.
Ключевые слова: IoT (интернет вещей), умный дом, паттерн проектирования, Observer
Мы живем во времена непрерывного развития и широких возможностей, когда каждый день появляются все новые и новые изобретения. Человек создает и совершенствует их для улучшения условий жизни. Как следствие, большинство сфер жизни вынуждены переходить на новый уровень - уровень информационных технологий, чтобы не исчезнуть как устаревшие. Сейчас почти все можно сделать или узнать с помощью сети Интернет [1].
Паттерн представляет собой определенный способ построения программного кода для решения часто встречающихся проблем проектирования. В данном случае предполагается, что есть некоторый набор общих формализованных проблем, которые довольно часто встречаются, и паттерны предоставляют ряд принципов для решения этих проблем.
При написании программ можно формализовать проблему в виде классов и объектов и связей между ними. И применить один из существующих паттернов для ее решения. В итоге нет необходимости что-либо придумывать. Паттерны, как правило, не зависят от языка программирования. Их принципы применения будут аналогичны и в C#, и в Jave, и в других языках программирования.
IoT-технология способна контролировать состояние приборов и управлять ими с помощью сети интернет [2]. Своевременное сообщение о состоянии приборов не только облегчает условия проживания, но и предотвращает вред имуществу и жителям дома. Все вместе это облегчает жизнь современного человека и делает его более комфортным.
Следует отметить, что умные устройства – это датчики или приводы, снабженные микроконтроллером с ОС реального времени со стеком протоколов, памятью и устройством связи, встроенные в различные объекты, например, в электросчетчики или газовые счетчики, датчики давления, вибрации или температуры, выключатели и другое [2]. Умные объекты могут быть организованны в вычислительную сеть физических объектов, которые могут быть подключены через шлюзы (хабы или специализированные IoT платформы) к традиционной сети Интернет.
Паттерн Observer представляет поведенческий шаблон проектирования, который использует отношение "один ко многим". В этом отношении есть один наблюдаемый объект и множество наблюдателей. При изменении наблюдаемого объекта автоматически происходит оповещение всех наблюдателей.
Предпосылками к использованию паттерна Observer являются:
- многокомпонентная система, состоящая из множества классов, которые должны находиться в согласованных состояниях;
- структура взаимодействия объектов предполагает обмен информацией между двумя сторонами: одна рассылает сообщения, другая получает и реагирует на них;
- существование одного объекта, рассылающего сообщения, и множество «подписчиков», получающих информацию [3].
Данный паттерн, в контексте использования для системы умного дома, может иметь следующую организацию: клиенты «подписываются» на рассылку с IoT-устройств. Датчик фиксирует изменения состояния и отправляет уведомление на сервер. Далее оно обрабатывается и передается непосредственно на устройство пользователя, которому отображается всплывающее уведомление об изменении состояния одного из его IoT-устройств. Конечный пользователь, увидев уведомление, может произвести определенные действия: отреагировать на уведомление (удаленно изменив конфигурацию устройства) либо проигнорировать его.
Формальное описание паттерна Observer можно представить используя как язык программирования C#, так и Java, C++, PHP, Python, Ruby и другие [4].
При реализации данного паттерна обычно используются следующие классы:
- Observable. Интерфейс, определяющий методы для добавления, удаления и оповещения наблюдателей;
- Observer. Интерфейс, с помощью которого наблюдатель получает оповещение;
- ConcreteObservable. Конкретный класс, который реализует интерфейс Observable;
- ConcreteObserver. Конкретный класс, который реализует интерфейс Observer [5].
Таким образом, поведенческий паттерн Observer находит широкое применение в системах пользовательского интерфейса, в которых данные и их представления (виды) отделены друг от друга. Системы умного дома, опрашивающие состояние IoT-устройств, концептуально полностью удовлетворяют предпосылкам к использованию данного паттерна. Его реализация позволит сократить время проектирования и разработки процесса взаимодействия каждого отдельно-взятого умного устройства, сервера и конечных устройств пользователя.
Литература:
1. Онищенко К. Г. Розробка сервісу для забезпечення дистанційного керування приладами та пристроями розумного дому "SmartHouse" із використанням IoT рішень / К. Г. Онищенко,
И. В. Афанасьева, И.И. Арсений // Бионика интеллекта. – г. Харьков: ХНУРЭ, 2017. – 1(88) – С. 112-116.
2. IOT Documentation [Електронний ресурс] / Intel Software Developer Zone. – Режим доступу: https://software.intel.com/en-us/articles/iot-path-to-product-how-to-build-the-smart-home-prototype/ 28.04.2017 р. – Загол. з екрану.
3. Velusami K. Iinternet of Things in Cloud IDG/ К. Velusamy, D. Venkitaramanan, Sh. K. Vasudevan // Journal of Engineering and Applied Sciences.. – 2013. – 8(9-12). – P. 304-313.
4. Онищенко К. Г. Методология разработки систем умного дома с применением IoT решений / К. Г. Онищенко, И. В. Афанасьева // Радиоэлектроника и молодежь в XXI веке: материалы 21-го Междунар. молодежн. форума. – г. Харьков: ХНУРЭ, 2017. – С. 157-158.
5. Онищенко К. Г. Структурированная методология разработки сервиса для обеспечения дистанционного управления приборами и устройствами умного дома с использованием Internet оf Things решений / К. Г. Онищенко, И. В. Афанасьева // ScienceRise. – 2017. – 5(2). – С. 30-33.