Статья:

НАЧАЛЬНЫЙ ЭТАП ПРОЕКТИРОВАНИЯ ПРИЛОЖЕНИЯ «ИНТЕРНЕТА ВЕЩЕЙ»

Журнал: Научный журнал «Студенческий форум» выпуск №42(221)

Рубрика: Технические науки

Выходные данные
Алхименкова М.С. НАЧАЛЬНЫЙ ЭТАП ПРОЕКТИРОВАНИЯ ПРИЛОЖЕНИЯ «ИНТЕРНЕТА ВЕЩЕЙ» // Студенческий форум: электрон. научн. журн. 2022. № 42(221). URL: https://nauchforum.ru/journal/stud/221/121199 (дата обращения: 27.04.2024).
Журнал опубликован
Мне нравится
на печатьскачать .pdfподелиться

НАЧАЛЬНЫЙ ЭТАП ПРОЕКТИРОВАНИЯ ПРИЛОЖЕНИЯ «ИНТЕРНЕТА ВЕЩЕЙ»

Алхименкова Мария Сергеевна
студент, Поволжский государственный университет телекоммуникаций и технологий- ПГУТИ, РФ, г. Самара

 

THE INITIAL STAGE OF DESIGNING AN IOT APPLICATION

 

Maria Alkhimenkova

Student Volga State University of Telecommunications and Technologies - PSUTI, Russia, Samara

 

Аннотация. В современном мире широко применяется концепция Интернета вещей. В данной статье определены требования для разработки приложения и выбран язык программирования.

Abstract. In the modern world, the concept of the Internet of Things is widely used. This article defines the requirements for developing an application and chooses a programming.

 

Ключевые слова: хост; интерфейс; плагин; библиотека; метод; класс.

Keywords: host; interface; plugin; library; method; class.

 

Ранее были рассмотрены различные языки программирования, а так же выбрана библиотека для сетевого взаимодействия.

В качестве языка программирования ядра программного комплекса и языка написания пользовательских автоматизаций был выбран C#. Данный язык исполняется в среде CLR (Common Language Runtime). CLR— исполняющая среда для байт-кода CIL (MSIL), в которой компилируются программы, написанные на .NET-совместимых языках программирования. Существуют различные реализации CLR, одна из которых – Mono. Mono –представляется собой открытую реализацию системы .NET Framework, способную работать на разнообразных операционных системах. Использование языка C# вместе с Mono позволит запускать разрабатываемый программный комплекс на Windows, Linux, Mac OS. Также появляется возможность использовать комплекс на одноплатных компьютерах, например, на Raspberry Pi, что позволит снизить энергозатраты, так как программный комплекс должен постоянно находится в активном состоянии.

Использование языка C# для написания клиентской автоматизации позволяет использовать обширный набор стандартных классов языка, а также бесчисленное количество библиотек, что позволит писать скрипты любой сложности.

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

Дальше переходим к начальному этапу проектирования приложения.

Проектирование архитектуры приложения.

В Программный продукт состоит из:

1. Хост – программа предоставляющая единый интерфейс к плагинам.

2. Библиотека для взаимодействия хоста и плагина.

3. Клиентская библиотека для взаимодействия с хостом.

4. Генератор интерфейса к IoT-устройствам.

5. Плагины для конкретных IoT-устройств.

Архитектура разрабатываемого комплекса представлена на рисунке 1.

 

Рисунок 1. Архитектура разрабатываемого приложения

 

Проектирование хоста

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

Плагин — независимо компилируемый программный модуль, динамически подключаемый к основной программе и предназначенный для расширения и/или использования её возможностей. Плагины обычно выполняются в виде библиотек общего пользования.

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

Проектирование клиентской библиотеки Для получения возможности взаимодействовать с хостом, необходимо разработать библиотеку-интерфейс пользователя к хосту. После подключения библиотеки, пользователь сможет получать список подключенных  устройств, вызывать методы, просматривать свойства, подписываться на события.

Проектирование генератора интерфейсов к устройствам В связи с отсутствием на стороне клиента классов, описывающих устройства, все вызовы методов устройств происходят динамически, то есть названия методов передаются в виде строки, а аргументы в виде нетипизированного массива. Данные метод написания кода неудобен и приводит к ошибкам. Поэтому для удобства написания пользовательского кода будет разработан генератор интерфейса к устройствам, который позволяет получать помощь от IDE в написании кода и устранять ошибки, связанные, например, с обращением к несуществующим устройствам или методам.

Библиотека написана на языке С#. PlatformInterface выступает связующим звеном между плагинами и хостом, также в ней содержатся классы, которые необходимы всем плагинам. Данная сборка содержит два основных интерфейса:

Интерфейс IPlatformFactory – инициализирует плагины, содержит в себе два метода:

– string GetPlatformName() – возвращает название платформы;

– public IPlatform Create(out string error, Dictionary<string, string> options) – инициализирует платформу с предоставленными параметрами и, в случае невозможности создания платформы, возвращает сообщение об ошибке.

Интерфейс IPlatform – управляет плагином и его устройствами, содержит в себе следующие основные методы:

– "void StartPlatform(IHost host)" – запускает  платформу и передает ссылке на объект хоста;

– "ICollection<DeviceDes cription>  GetDeviceDescriptions()" – возвращает коллекцию с описанием всех поддерживаемых устройств;

–  "ICollection<DeviceData>  GetDevices()"  –  возвращает  коллекцию с информацией о подключенных устройствах;

– "void InvokeDeviceMethod (string deviceID, string method, IReadOnlyCollection<JToken> serializedMethodParams, IMethodInvocationInstance invocationInstance)" – вызов методов устройств.

Абстрактный класс AbstractDevice служит предком для всех классов, описывающих устройства. Данный класс содержит в себе ссылки на объекты классов DeviceDes cription и DeviceData и абстрактный метод void InvokeMethod (s tring method, IReadOnlyCollection<JToken> serializedMethodParams, IMethodInvocationInstance invocationInstance), который вызывает методы у устройств.

Класс BaseDevice является потомком класса AbstractDevice и реализует его метод InvokeMethod. Данная реализация вызывает необходимый метод с помощью интроспекции. При реализации устройств в плагине на C#,необходимо наследоваться именно от этого класса.

 

Список литературы:
1. Скит, Д. C#.  Программирование для профессионалов / Д.  Скит. – М.: Вильямс, 2011. – 544 с.;
2. Обзор среды CLR – https://docs.microsoft.com/ru-ru/dotnet/standard/clr.
3. Mono – https://www.mono-project.com. 
4. Akgul, F. ZeroMQ / F. Akgul. – Бирмингем: Packt Publishing, 2011. – 140 с.
5. Плагины |  MDN  –  https://developer.mozilla.org/ru/docs/Plugins.