Eclipse Vorto:следующий шаг в интеграции устройств Интернета вещей
Александр Эдельманн
你好 (по-китайски «Привет»), я живу в Сингапуре и работаю инженером-программистом в компании Robert Bosch с 2006 года. Я увлечен Интернетом вещей и верю в открытые стандарты, которые определяют успешное взаимодействие между устройствами на различных платформах Интернета вещей. . Вот почему я активно участвую в проекте Eclipse IoT Vorto, целью которого является предоставление облачных инструментов для единообразного описания устройств IoT и их интеграции в различные платформы IoT на основе открытых стандартов IoT. Помимо моей фанатичной стороны IoT, мне нравятся азиатские кухни, которые позволяют мне практиковать свои навыки работы с палочками для еды. Вы также можете найти меня на корте, когда я с друзьями отбиваю несколько теннисных мячей.
Если посмотреть на такие примеры, как умные фабрики и дома, подключенные устройства не только повышают стоимость и эффективность использования ресурсов компаний, но также повышают безопасность и удобство жизни. Из-за огромного количества производителей устройств и датчиков перед производителями, платформами и интеграторами встают новые задачи.
Основная проблема заключается в том, как обеспечить бесперебойную связь подключенных устройств. с облачными платформами, независимо от разных производителей, технологий и систем. В прошлом разработчики создавали решения IoT, специально разработанные для ограниченного набора устройств с одним и тем же API. При смене типа устройства или смене производителя устройства интеграция устройства требовала длительного рефакторинга для работы с новым устройством.
Представьте, что вы планируете интегрировать IoT-решение для отслеживания активов на крупной растениеводческой ферме. Вы хотите отслеживать не только текущее местоположение, но также температуру и ускорение тракторов, плугов и других сельскохозяйственных устройств.
Когда вы думаете о выборе правильных устройств Интернета вещей, возникают два вопроса:
- Как узнать, какие устройства обладают нужными нам функциями?
- Как избежать тесной связи между конкретными устройствами, чтобы было проще переключиться на аналогичное устройство без особого рефакторинга?
Здесь на помощь приходит Eclipse Vorto с открытым исходным кодом.
Представляем Eclipse Vorto
Источник:Eclipse Vorto
Eclipse Vorto предоставляет уровень абстракции, называемый информационной моделью Vorto, и предметно-ориентированный язык (DSL), который описывает всю метаинформацию, такую как свойства и функции, подключенного устройства.
Добавляя уровень абстракции, мы создаем согласованный интерфейс, который позволяет нам использовать разные типы устройств с аналогичной функциональностью.
Проект Eclipse Vorto состоит из четырех основных компонентов:
- Vorto DSL: Vorto DSL - это читаемый и легко понимаемый предметно-ориентированный язык, который был специально разработан для использования даже не разработчиками. Он используется для создания абстрактных моделей различных устройств.
- Метамодель: Метамодель используется для определения отношений между различными объектами, такими как информационные модели, функциональные блоки и типы данных.
- Генераторы кода: Генераторы кода, основанные на DSL и метамоделях, обеспечивают сложный, но простой способ создания исходного кода для удобной интеграции определенных устройств IoT с платформой решения IoT.
- Репозиторий Vorto: Репозиторий используется для хранения, управления и распространения созданных информационных моделей и функциональных блоков для повторного использования.
Eclipse Vorto является полностью открытым исходным кодом и разработан в рамках рабочей группы Eclipse IoT под руководством Bosch.
Тим Гроссманн
Будучи немецким студентом, изучающим информатику, за последние полтора года я работал на трех разных факультетах компании Bosch. Меня особенно интересуют технологии с открытым исходным кодом и EduTech. Я считаю, что Интернет вещей и автоматизация обладают огромным потенциалом как для изменения, так и для улучшения образа жизни, работы и удовольствия людей от жизни. Я увлеченный ученик и разработчик, я всегда стремлюсь осваивать новые навыки и инструменты. В дополнение к моей обычной работе я создал и поддерживаю крупнейшего в мире бесплатного бота для автоматизации с открытым исходным кодом для Instagram. В свободное время я люблю заниматься скалолазанием с друзьями и путешествовать по зарубежным странам.
Eclipse Vorto на практике
Давайте рассмотрим более конкретный пример, чтобы лучше понять эту абстракцию. Представьте себе сельскохозяйственный бизнес, который хочет отслеживать транспортные средства и активы, используемые для сбора урожая пшеницы. На более крупных фермах с несколькими комбайнами, тракторами и другим оборудованием мы хотим знать, сколько времени использовалось каждое транспортное средство и его историю местоположений.
Комбинируя такую информацию со значениями температуры и влажности, мы можем включить интеллектуальный план обслуживания для всех транспортных средств и активов. Местоположение каждого транспортного средства и имущества также дает нам возможность защиты от краж.
Одним из решений, обеспечивающих такую функциональность, является решение для отслеживания активов (TRACI) от Bosch.
Источник:Bosch.IOЧтобы создать цифровую модель этого конкретного устройства, нам нужны некоторые базовые строительные блоки, которые будут использоваться для сборки информационной модели TRACI.
Одним из важнейших компонентов устройства слежения является аккумулятор. Чтобы иметь возможность отслеживать состояние батареи каждого устройства, мы можем описать это состояние в так называемом функциональном блоке.
Функциональный блок - это общая модель, которая может быть повторно использована позже в других информационных моделях устройства.
Мы можем определить его так:
пространство имен org.eclipse.vorto версия 1.0.0 отображаемое имя "Батарея" описание "Функциональный блок для батареи" категория периферийные используя org.eclipse.vorto.Voltage; 1.0.0 functionblock Battery extends org.eclipse.vorto.Voltage { статус { обязательный остаток емкости как floatЗдесь мы описываем функциональный блок который абстрактно описывает некоторый объект, который содержит обязательное числовое значение от 0 до 100.
Поскольку наш статус представляет собой процентное значение, мы можем дополнительно абстрагироваться от него, чтобы снова сделать отдельные компоненты повторно используемыми. Поэтому мы создадим так называемый тип данных . Здесь мы можем определить объект (в данном случае процент), который имеет те же ограничения на то, чтобы быть числовым значением от 0 до 100.
пространство имен org.eclipse.vorto.types версия 1.0.0 displayname "Percentage" description "Тип данных для процента" категория единиц entity Percentage { обязательное значение как floatПосле того, как мы создали этот тип данных, его можно импортировать и использовать внутри нашего функционального блока батареи и заменить конкретную реализацию.
пространство имен org.eclipse.vorto версия 1.0.0 отображаемое имя "Батарея" описание "Функциональный блок для батареи" категория периферийные используя org.eclipse.vorto.types.Percentage; 1.0.0 используя org.eclipse.vorto.Voltage; 1.0.0 functionblock Battery extends org.eclipse.vorto.Voltage { статус { обязательный остаток емкости в процентах } }Мы можем повторить этот процесс для всех датчиков, интегрированных в наше устройство TRACI, таких как датчик температуры . , GPS , ускорение и модули связи . Затем все эти функциональные блоки можно собрать в информационную модель Vorto . который затем можно использовать в качестве отправной точки для генераторов кода для создания для вас заглушек кода интеграции устройств.
пространство имен com.bosch.ps версия 1.0.0 отображаемое имя "Traci" описание "Информационная модель для Трейси" с помощью org.eclipse.vorto.Geolocation; 1.0.0 используя org.eclipse.vorto.Acceleration; 1.0.0 с помощью org.eclipse.vorto.M MagneticStrength; 1.0.0 используя org.eclipse.vorto.Temperature; 1.0.0 с помощью org.eclipse.vorto.Battery; 1.0.0 using org.eclipse.vorto.Connectivity; 1.0.0 infomodel Traci { functionblocks { аккумулятор как аккумулятор местоположение как геолокация ускорение как ускорение температура как температура MagneticStrength как MagneticStrength bluetoothConnectivity as Connectivity lorawanConnectivity as Connectivity } }Хорошо, так для чего мы все это делаем?
Допустим, теперь мы хотим использовать устройства других производителей с функциями, аналогичными устройству TRACI. Мы уже создали IoT-решение, объединяющее устройство TRACI, и было бы очень сложно реорганизовать нашу систему для работы с устройствами от разных производителей.
Поскольку у нас уже определены функциональные блоки и типы данных, мы можем определить новую информационную модель для нашего нового устройства, которая использует те же функциональные блоки, что и модель TRACI.
Давайте сравним модель TRACI с продуктом с аналогичной функциональностью, NL-AT2VS от NimbeLink.
пространство имен com.nimbelink.nl версия 1.0.0 отображаемое имя "NLAT2VS" описание "Информационная модель для NLAT2VS" с помощью org.eclipse.vorto.Geolocation; 1.0.0 с помощью org.eclipse.vorto.Battery; 1.0.0 using org.eclipse.vorto.Connectivity; 1.0.0 используя org.eclipse.vorto.Temperature; 1.0.0 используя org.eclipse.vorto.Humidity; 1.0.0 используя org.eclipse.vorto.Acceleration; 1.0.0 infomodel NLAT2VS { functionblocks { аккумулятор как аккумулятор ускорение как ускорение местоположение как геолокация температура как температура влажность как влажность Wi-Fi подключение как подключение сотовая связь как связь } }Мы можем видеть, что даже модули подключения в этой модели разные, но все еще используют абстрактный функциональный блок подключения. Абстракция позволяет нам заменять или комбинировать разные устройства с аналогичной функциональностью без особых накладных расходов на интеграцию.
Кому следует использовать Eclipse Vorto?
Учитывая разнообразие организаций, участвующих в производстве, интеграции и разработке решений Интернета вещей, Eclipse Vorto принесет наибольшую пользу следующим организациям:
Производители устройств
Eclipse Vorto может помочь производителям устройств обеспечить взаимодействие с другими устройствами в существующих инфраструктурах. Гибкость - огромное преимущество для клиентов при выборе устройств, которые необходимо интегрировать.
Используя технологически независимые информационные модели, производители устройств избегают накладных расходов на создание способов реализации для всех типов целевых платформ. Это экономит деньги и время за счет публикации информационных моделей, которые можно преобразовать в конкретные интеграции с помощью генераторов кода.
Большим преимуществом использования Eclipse Vorto является то, что дальнейшее развитие уровня протокола устройства не связано с логикой контроллера устройства.
Источник:Eclipse VortoПлатформы Интернета вещей
Платформы Интернета вещей должны подключать огромное количество различных устройств Интернета вещей от широкого круга производителей и поддерживать все различные протоколы и форматы. Используя генераторы кода Eclipse Vorto, эти усилия можно значительно сократить за счет частичной или полной генерации исходного кода.
Кроме того, репозиторий Vorto действует как репозиторий времени выполнения, который позволяет платформам извлекать возможности устройства в виде схемы JSON. Эти схемы затем могут быть интерпретированы и проверены в цифровом двойнике или использованы для начальной загрузки соединителей для связи.
Несмотря на то, что это означает увеличение объема работ по первоначальной разработке, со временем это окупится, учитывая огромное количество устройств и рост Интернета вещей.
Разработчики решений
При интеграции подключенных устройств и интеллектуальных датчиков в решения IoT разработчикам необходимо охватить широкий спектр различных API-интерфейсов устройств, что приводит к огромным накладным расходам на кодирование. Eclipse Vorto может сократить объем работ по разработке, предоставляя генераторы кода, которые предоставляют общие заглушки кода, упрощающие интеграцию устройств.
Источник:Eclipse VortoВзгляд в будущее Интернета вещей
Гарантируя совместимость и согласовывая интерфейс для устройств, Eclipse Vorto может изменить способ работы производителей устройств, операторов платформы IoT и разработчиков приложений с устройствами IoT.
Это может сократить объем работ по разработке для производителей и упростить интеграцию устройств для поставщиков платформ и интеграторов, одновременно решая многие из упомянутых проблем разработки Интернета вещей.
Если вы хотите узнать больше о проекте, обязательно загляните в репозиторий GitHub и поставьте ему звезду.
Вы также можете попробовать и используйте сложные руководства по созданию, интеграции и визуализации устройств, представленные в репозитории Vorto.
Интернет вещей
- Аутентификация устройства на основе X.509 в Eclipse Hono
- Интеллектуальные данные:следующий рубеж в Интернете вещей
- Растущая угроза Интернета вещей с поддержкой Wi-Fi
- Не верьте этой шумихе:почему Интернет вещей тормозит
- Подключение к Интернету вещей - узкополосные возможности
- Мы закладываем основу для Интернета вещей на предприятии
- 5 проблем, с которыми все еще сталкивается Интернет вещей
- Роль Интернета вещей в здравоохранении во время Covid-19
- Почему прямое подключение является следующим этапом промышленного Интернета вещей
- Выявление слепой зоны Интернета вещей в постпандемическом мире