Родионов А. С. Rodionov Л. S.
кандидат физико-математических наук, доцент кафедры «Общенаучные дисциплины», филиал ФГБОУВО «Уфимский государственный нефтяной технический университет» в г. Салавате, г. Салават, Российская Федерация
Мухаметзянов Э. В. Mukhametzyanov Е. V.
кандидат физико-математических наук, старший преподаватель кафедры «Общенаучные дисциплины», филиал ФГБОУ ВО «Уфимский государственный нефтяной технический университет» в г. Салавате, г. Салават, Российская Федерация
Л
J ff'1
Курбангалиев А. М. КигЬащаЕеу Л. М.
студент кафедры «Общенаучные дисциплины», филиал ФГБОУ ВО «Уфимский государственный нефтяной технический университет» в г. Салавате, г. Салават, Российская Федерация
Исламгулов Р. Р. Islamgulov К. К.
студент кафедры «Общенаучные дисциплины», филиал ФГБОУ ВО «Уфимский государственный нефтяной технический университет» в г. Салавате, г. Салават, Российская Федерация
УДК 004.62
ПРОГРАММНО-АППАРАТНЫЙ КОМПЛЕКС ДЛЯ МОНИТОРИНГА ПОКАЗАНИЙ ДАТЧИКОВ
В статье рассматривается разработка программно-аппаратного комплекса для мониторинга показаний с различных видов датчиков. Благодаря повсеместному развитию и распространению беспроводных сетей, появлению облачных вычислений, развитию технологий межмашинного взаимодействия появилась возможность автоматизировать процесс сбора телеметрической информации с различных видов датчиков. В связи с этим в настоящее время широкий спектр задач подразумевает необходимость снятия данных с датчиков различных типов. При этом необходима определенная квалификация сотрудников, настраивающих интерфейсы для взаимодействия с датчиками.
Данное программное обеспечение было разработано для применения в рамках концепции «интернета вещей», и из этого следует, что область применения данного продукта очень широка: от применения в быту до научной деятельности. При разработке представляемого программного обеспечения были поставлены и реализованы следующие задачи: выбор наиболее подходящих средств реализации цели: языка программирования, базы
данных, разработка серверной части программно-аппаратного комплекса по сбору информации с датчиков и обеспечение клиентов верными данными.
В статье рассмотрено использование следующего программного обеспечения для реализации поставленных задач: Docker (программное обеспечение для реализации развертывания и управления приложениями в среде виртуализации на уровне операционной системы), Nginx (HTTP-сервер и обратный прокси-сервер, почтовый прокси-сервер, а также TCP/UDP прокси-сервер общего назначения), InfluxDB (нереляционная база данных, специализирующаяся на хранении временных рядов, метрик; она написана на языке Go и не имеет внешних зависимостей; предназначена для хранения метрик мониторинга серверов, данных от сенсоров и аналитики временных рядов в реальном времени), Flask (микрофреймворк для создания веб-приложений на языке программирования Python, использующий набор инструментов Werkzeug, а также шаблонизатор Jinja2). В результате реализации было разработано программное обеспечение, позволяющее собирать данные с разных видов датчиков и получать к ним доступ через публичный интерфейс.
Ключевые слова: датчик, мониторинг, сбор данных, python, сенсоры, база данных, программное обеспечение, InfluxDB, интернет вещей, контроль.
COMPUTER APPLIANCE FOR MONITORING READINGS
FROM SENSORS
The article deals with the development of a software and hardware complex for monitoring indications from various types of sensors. Thanks to the widespread development and distribution of wireless networks, the emergence of cloud computing, the development of inter-machine interaction technologies, it became possible to automate the process of collecting telemetric information from various types of sensors. In this regard, now a wide range of tasks implies the need to remove data from different types of sensors. At the same time, a certain qualification of employees is required, which set up interfaces for interaction with sensors.
This software was developed for use within the framework of the «Internet of things» concept, and it follows that the scope of this product is very broad: from application in the home to scientific activity. During the development of the presented software, the following tasks were set and implemented: selection of the most suitable means for the realization of the goal: the programming language, database, the development of the server part of the hardware and software complex for collecting information from the sensors and providing customers with correct data.
The article discusses the use of the following software to implement the tasks: Docker (software for implementing deployment and management of applications in an operating system-level virtualization environment), Nginx (HTTP server and reverse proxy, mail proxy, and TCP / UDP proxy server for general purpose), InfluxDB (a nonrelational database specializing in the storage of time series, metrics, it is written in Go and does not have external dependencies; it is intended for storing server monitoring metrics, data from sensors and time analytics Series in real time), Flask (microframe for creating Web applications in the Python programming language, using the Werkzeug toolset, as well as the Jinja2 template engine). As a result of the implementation, software was developed that allows data to be collected from different types of sensors and accessed through a public interface.
Key words: sensor, monitoring, data collection, python, sensors, database, software, InfluxDB, Internet of things, control.
Благодаря повсеместному развитию и распространению беспроводных сетей, появлению облачных вычислений, развитию технологий межмашинного взаимодействия появилась возможность автоматизировать процесс сбора телеметрической информации с различных видов датчиков. В связи с этим возникла необходимость в создании плат-
формы для сбора, обработки и хранения этих данных [1-4]. Важность создания данного программного продукта состоит в том, чтобы предоставить удобный инструмент для быстрой организации систем мониторинга, основанный на снятии показаний с датчиков.
Для удовлетворения поставленных выше требований необходимо, чтобы создаваемая
платформа обеспечивала: удобство разработки, быстрое развёртывание, высокую доступность, производительность, гибкость (возможность изменять конфигурацию оборудования) и простоту расширения.
Для реализации поставленных задач использовано следующее программное обеспечение: Docker (программное обеспечение для реализации развертывания и управления приложениями в среде виртуализации на уровне операционной системы [5]), Nginx (HTTP-сервер и обратный прокси-сервер, почтовый прокси-сервер, а также TCP/UDP прокси-сервер общего назначения [6]), InfluxDB (нереляционная база данных, специализирующаяся на хранении временных рядов, метрик; она написана на языке Go и не имеет внешних зависимостей; предназначена для хранения метрик мониторинга серверов, данных от сенсоров и аналитики временных рядов в реальном времени), Flask (микрофреймворк для создания веб-приложений на языке программирования Python [7, 8],
использующий набор инструментов Werkzeug, а также шаблонизатор Jinja2).
Данные, снятые с датчиков (рисунок 1), поступают на шлюз по протоколу CoAP. Шлюз преобразует данные в формат JSON и отправляет их на сервер. На сервере данные обрабатываются и отправляются в базу данных (БД). Клиент получает эти данные через публичный интерфейс. Данные сохраняются в локальной базе данных и выводятся на экран в виде графиков.
Возможность получения данных со шлюза или напрямую с датчиков, их обработка, сохранение и предоставление публичного интерфейса обеспечиваются серверной частью (рисунок 2) описываемого комплекса.
В качестве входных данных приложение принимает POST запрос по HTTP с данными, снятыми с датчиков, в теле запроса в формате JSON. Запрос инициирует запись принятых данных в БД. Когда клиентское программное обеспечение обращается к веб-приложению с определённым запросом, сервис преобразовывает его в понятный базе данных язык
Датчики Клиенты
Рисунок 1. Общая схема программно-аппаратного комплекса
Рисунок 2. Архитектура серверной части
InfluxQL. После этого полученные данные отправляются клиенту в формате JSON по протоколу HTTP.
Серверная часть программно-аппаратного комплекса отвечает за агрегацию данных с сенсоров, сохранение в специализированной базе данных и предоставление публичного интерфейса доступа для последующего анализа. Данная процедура автоматизирована и не требует вмешательства со стороны человека, исключая нештатные ситуации.
Для обеспечения надёжной работы решения были использованы такие технологии, как Docker, Nginx, InfluxDB и Flask.
Возможность оперативного развёртывания комплекса является его неотъемлемым достоинством. Для реализации данного преимущества был использован Docker. Docker позволяет «упаковать» приложение со всем его окружением и зависимостями в контейнер, который может быть перенесён на любую Linux-систему с поддержкой cgroups в ядре, а также предоставляет среду по управлению контейнерами.
Nginx использован в качестве обратного прокси, ретранслирующего запросы из внешней сети к веб-приложению. Тем самым обеспечиваются высокая производительность и безопасность.
В качестве базы данных используется InfluxDB, так как InfluxDB предназначена для хранения метрик мониторинга серверов, данных от сенсоров и аналитики временных рядов в реальном времени.
Для предоставления сенсорам и клиентам доступа к базе данных написана прослойка, представляющая из себя публичный интерфейс (REST API). Для данной задачи был использован микрофреймворк Flask [9].
В работе программного обеспечения используются следующие алгоритмы: алгоритм принятия данных и сохранения в базе данных, алгоритм фильтрации данных по параметрам из URL, алгоритм вывода возможных вариантов значений по тегу.
Алгоритм принятия данных и сохранения в базе данных работает следующим образом: шлюз или поддерживаемый датчик формируют POST запрос к серверу, сервер получает
Not LmI
Рисунок 3. Алгоритм обработки данных перед сохранением в базе данных
эти данные, обрабатывает их и отправляет базе данных. На рисунке 3 представлена блок-схема данного алгоритма.
Алгоритм выборки данных из БД достаточно гибкий: он умеет принимать любое количество разнотипных условий (тегов) и, одновременно с этим, работать с временными выборками. В результате запроса приложение вернёт массив с объектами в формате JSON. Блок-схема алгоритма выборки данных представлена на рисунке 4.
Алгоритм вывода возможных вариантов значений по тегу работает следующим образом. Для того чтобы получить все серийные номера датчиков, требуется сделать выборку по определённому тегу. В начале инициализируется переменная тега, по которому нужно фильтровать, из параметров GET запроса и проверяется на пустоту. Если параметр оказался пуст, клиенту возвращается ошибка. Далее параметр проверяется на вхождение в список разрешённых тегов, чтобы избежать проблем с безопасностью. В случае успешной проверки генерируется строка InfluxQL и выполняется запрос к базе данных. Ответ отправляется клиенту. На рисунке 5 представлена блок-схема алгоритма.
HTTP POST
I
For item in Dala
Merge item with SCHEMA
r~
Append new Item to DBPayload
r~
Upload DBPayload to DB
Return Exit status
Рисунок 4. Алгоритм выборки данных из базы данных
Рисунок 5. Алгоритм выборки данных по тегу
Вывод
Разработанное программное обеспечение предоставляет простой способ развертывания по сравнению с существующими аналогами, что призвано повысить скорость разработки и исследования в областях, где необходимо использовать данные, получаемые с различного рода датчиков.
Список литературы
1. Айвалиотис Д. Администрирование сервера NGINX: Пер. с англ. М.: ДМК Пресс, 2013. 288 с.
2. Гринберг М. Разработка веб-приложений с использованием Flask на языке Python: Пер. с англ. М.: ДМК Пресс, 2014. 272 с.
3. Лутц М. Программирование на Python: Пер. с англ. 4-е изд. СПб.: Символ-Плюс, 2011.
4. Маккинни У. Python и анализ данных: Пер. с англ. М.: ДМК Пресс, 2015.
5. Левина Т.М., Бажанова Т.В. Удаленное предоставление производственной информации по запросу пользователя // Сб. тез. докл. VI науч.-техн. конф. молодых специалистов ООО «БашНИПИнефть». 2016. С. 115-116.
6. Ураксеев М.А., Левина Т.М., Шама-ев Ф.Ф., Кулябин А.С. Разработка волоконно-оптических систем для учета, мониторинга и прогнозирования работы высоковольтного
оборудования в СУБД с web-интерфейсом // Электротехнические и информационные комплексы и системы. 2015. Т. 11. № 1. С. 97-103.
7. Родионов А.С., Ефимова Д.А. Разработка системы управления промышленными данными // Естественные и математические науки в современном мире. 2015. № 36-37. С. 41-46.
8. Родионов А.С., Юсупова Л.Р. Автоматизация процесса создания и обработки заявок, связанных с отказом оборудования в нефтегазовых предприятиях // Сб. тез. докл. VI науч.-техн. конф. молодых специалистов ООО «БашНИПИнефть». 2016. С. 133-134.
9. Мухаметзянов Э.В., Насырова Р.Т., Курбангалиев А.М., Исламгулов Р.Р. Применение Wi-Fi ESP8266 в ходе проведения лабораторных работ по физике // Информационные технологии. Проблемы и решения. 2016. № 1 (3). С. 95-98.
References
1. Ajvaliotis D. Administrirovanie servera NGINX: Per. s angl. M.: DMK Press, 2013. 288 s.
2. Grinberg M. Razrabotka veb-prilozhenij s ispol'zovaniem Flask na jazyke Python: Per. s angl. M.: DMK Press, 2014. 272 s.
3. Lutc M. Programmirovanie na Python: Per. s angl. 4-e izd. SPb.: Simvol-Pljus, 2011.
4. Makkinni U. Python i analiz dannyh: Per. s angl. M.: DMK Press, 2015.
5. Levina T.M., Bazhanova T.V. Udalennoe predostavlenie proizvodstvennoj informacii po zaprosu pol'zovatelja // Sb. tez. dokl. VI nauch.-tehn. konf. molodyh specialistov OOO «BashNIPIneft». 2016. S. 115-116.
6. Urakseev M.A., Levina T.M., Shama-ev F.F., Kuljabin A.S. Razrabotka volokonno-opticheskih sistem dlja ucheta, monitoringa i prognozirovanija raboty vysokovol'tnogo
oborudovanija v SUBD s web-interfejsom // Jelektrotehnicheskie i informacionnye kompleksy i sistemy. 2015. T. 11. № 1. S. 97-103.
7. Rodionov A.S., Efimova D.A. Razrabotka sistemy upravlenija promyshlennymi dannymi // Estestvennye i matematicheskie nauki v sovremennom mire. 2015. № 36-37. S. 41-46.
8. Rodionov A.S., Jusupova L.R. Avtomatizacija processa sozdanija i obrabotki zajavok, svjazannyh s otkazom oborudovanija v neftegazovyh predprijatijah // Sb. tez. dokl. VI nauch.-tehn. konf. molodyh specialistov OOO «BashNIPIneft». 2016. S. 133-134.
9. Muhametzjanov Je.V., Nasyrova R.T., Kurbangaliev A.M., Islamgulov R.R. Primenenie Wi-Fi ESP8266 v hode provedenija laboratornyh rabot po fizike // Informacionnye tehnologii. Problemy i reshenija. 2016. № 1 (3). S. 95-98.