Обычное дело: мы используем cookie. Здесь можно узнать зачем
Хорошо

IoT-библиотека обмена сообщениями для экосистемы электроскутеров

Многокомпонентная библиотека для обмена сообщениями в распределенных сетях. Мы создали ее для экосистемы электроскутеров, чтобы она обеспечивала стабильную связь между компонентами сети.
Собственный протокол на базе TCP
Фильтрация спама для защиты от вредоносного ПО
Приложение для зарядной станции работает на Windows и Linux

Введение

В любом большом городе человек сталкивается с множеством трудностей. В их числе перенаселение, длинные пробки и плохая экология.
Наш заказчик из Германии стремится решить эти проблемы, чтобы жизнь в большом городе стала легче и удобнее.
Компания клиента производит электроскутеры – экологичные умные средства передвижения, способные решить транспортные проблемы. Чтобы сделать свою продукцию более функциональной и удобной, заказчик решил интегрировать в него IoT-решение.

Запрос

Сеть электроскутеров включает в себя сами скутеры с аккумуляторами и зарядные стойки. Скутеры не требуют ключа. Получить доступ к ним и зарядным стойкам, а также управлять ими можно через мобильное приложение. Скутеры оснащены GPS-трекерами, позволяющими отслеживать их местоположение. Время начала/окончания зарядки, время запирания/отпирания скутеров, данные с GPS, пройденное расстояние и другая информация хранятся в облачной базе данных.

Главной задачей заказчика было соединить и синхронизировать все устройства этой IoT-экосистемы. Нашу команду наняли для разработки IoT-инфраструктуры. Она включает в себя сервер, клиент, панель индикаторов и Rest API для обеспечения удаленного доступа к системе через мобильное приложение.

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

Решение

Для эффективной коммуникации между клиентом и сервером можно использовать разные протоколы. В этом проекте связь с панелью индикаторов на сервере осуществляется с помощью протокола HTTP.

Однако это решение казалось недостаточно эффективным для коммуникации между сервером и зарядными стойками. Некоторые из них работают через сеть 2G, которая не может обеспечить высокую пропускную способность и стабильное управление стойкой.

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

Библиотека состоит из нескольких компонентов. Ключевой из них – это Сеанс (Session), который позволяет идентифицировать клиент, отправляющий сообщение в системе. Программный модуль сеансов предоставляет высокоуровневый интерфейс для отправки/приема сообщений и сортировки данных, необходимых для управления последней сессией. Пользователи библиотеки могут самостоятельно расширять параметры хранимых данных.

Менеджер сессий (SessionManager), будучи одним из ключевых компонентов библиотеки, управляет сессиями и предоставляет интерфейс для создания сессий. Транспорт (Transport) – еще один компонент библиотеки – обеспечивает механизм передачи сообщений, а также хранит отправленные и принятые сообщения. Таким образом, пользователям не нужно создавать собственный механизм для реализации этих функций.
Компоненты IoT-библиотеки, разработанной инженерами компании КЕДР Solutions
Компоненты библиотеки

Выполненные работы

Команда КЕДР Solutions предложила IoT-решение для проекта, представив ключевые компоненты сети.

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

Команда разработала простой пользовательский интерфейс для управления IoT-устройствами. Он представляет собой панель индикаторов, которая позволяет мониторить и контролировать устройства, а также собирать данные и аналитику. Это поможет производителю оптимизировать продукцию.
Скриншот панели индикаторов - пользовательского интерфейса, разработанного специалистами KEDR Solutions
Скриншот панели индикаторов
Мы разработали Rest API для мобильного приложения. Это дополнительный модуль на стороне сервера, который позволяет электроскутерам обмениваться данными с зарядными стойками и базой данных.

Наконец, мы написали библиотеку с несколькими компонентами для реализации системы обмена сообщениями между устройствами IoT-сети. Библиотека соединяет все части системы в единое целое. Она также управляет сервером и клиентом, обеспечивая их бесперебойную работу.
IoT-экосистема электроскутеров. Специалистами KEDR Solutions было разработано кроссплатформенное приложение и API для сервера
IoT-экосистема электроскутеров. Компоненты, окрашенные зелёным цветом, были разработаны компанией КЕДР Solutions.

Использованные технологии

C/C++
для написания библиотеки.
JavaScript и HTML
для разработки клиентской части.
Windows и Linux
в качестве поддерживаемых приложением для зарядной станции ОС.
ASP.NET
в качестве кроссплатформенного фреймворка на стороне сервера для создания веб-приложения.
Собственные протоколы передачи данных
для интерфейсов CAN и UART.

Итоги

Мы создали многокомпонентную библиотеку, которая обеспечивает работу связующего ПО для обмена сообщениями в распределенных системах. Библиотека служит для разработки клиент-серверных и других приложений, взаимодействующих друг с другом в пиринговых сетях.

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

У созданного нами решения легкая архитектура и, как следствие, очень низкие накладные расходы. Его легко внедрять и развертывать. Библиотека очень гибкая и предоставляет широкие возможности по настройке, поэтому может использоваться в различных приложениях, написанных на C++. Благодаря высокой масштабируемости библиотеки пользователи могут добавлять столько устройств, сколько позволяет сервер.
Связаться с нами
Оставьте контактные данные, и мы свяжемся с вами в ближайшее время