Онищенко Константин Георгиевич

студент, старший лаборант

Харьковский национальный университет радиоэлектроники

Украина, г. Харьков

 

Руководитель:

Афанасьева Ирина Витальевна

кандидат технических наук, доцент

Харьковский национальный университет радиоэлектроники

Украина, г. Харьков

 

 Аннотация: Статья посвящена обзору паттерна проектирования 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.