Eclipse Vorto: усиление бесшовной интеграции IoT-устройств
Александр Эдельман
Привет, я Александр Эдельман, софт-инженер в Robert Bosch с 2006 года, базируюсь в Сингапуре. Моя страсть — IoT и открытые стандарты, позволяющие устройствам общаться друг с другом через разнородные платформы. Я активно вкладываюсь в проект Eclipse IoT Vorto, поставляющий облачные инструменты для унифицированного описания IoT-устройств и их интеграции в любую платформу, следующую открытым IoT-стандартам. Когда не кодим, я наслаждаюсь азиатской кухней, теннисом и исследованием новых мест.
Почему интеграция устройств важна
Умные заводы и коннектед дома революционизируют затраты, эффективность, безопасность и удобство. Однако обьем производителей устройств и сенсоров вносит ключевую проблему: обеспечение того, чтобы каждое устройство могло бесшовно коммуницировать с облачными платформами независимо от бренда или технологии. Исторически разработчики строили кастомные решения для ограниченного набора устройств с одинаковым API. Смена типа устройства или вендора требовала болезненного рефакторинга.
Представьте аграрную операцию, отслеживающую тракторы, плуги и другое оборудование. Вам нужно мониторить не только локацию, но и температуру, ускорение и здоровье батареи. Как выбрать устройства, подходящие под ваши нужды, и избежать жесткого связывания, вынуждающего к дорогостоящим редизайнам?
Представляем Eclipse Vorto

Eclipse Vorto предоставляет слой абстракции под названием Vorto Information Model и доменно-специфичный язык (DSL), захватывающий всю мета-информацию — свойства, функции и отношения — коннектед устройства. Определяя устройства платформо-агностичным способом, Vorto создает консистентный интерфейс, объединяющий разрозненное железо с похожей функциональностью.
Проект состоит из четырех ключевых компонентов:
- Vorto DSL — читаемый, разработчик-френдли язык для определения абстрактных моделей устройств, доступный даже не-разработчикам.
- Метамодель — специфицирует отношения между сущностями вроде Information Models, Function Blocks и Datatypes.
- Code Generators — трансформируют DSL и определения метамодели в готовый к использованию исходный код для вашей выбранной IoT-платформы.
- Vorto Repository — облачное хранилище, управляющее, делящееся и распределяющее Information Models и Function Blocks для переиспользования.
Eclipse Vorto полностью open source, поддерживаемый Eclipse IoT Working Group под управлением Bosch.
Eclipse Vorto на практике
Рассмотрим большую ферму, отслеживающую использование комбайнов, тракторов и других активов. Интегрируя локацию, температуру, влажность и данные батареи, операторы могут внедрять предиктивное обслуживание и анти-кражные меры. Bosch Asset Tracing Solution (TRACI) exemplifies эту способность.

Создание цифрового двойника устройства TRACI начинается с переиспользуемых строительных блоков. Например, Battery Function Block описывает состояние батареи как процент между 0 и 100. Этот блок можно переиспользовать по многим устройствам.
namespace org.eclipse.vorto version 1.0.0 displayname "Battery" description "Functionblock for Battery" category peripheral using org.eclipse.vorto.Voltage ; 1.0.0 functionblock Battery extends org.eclipse.vorto.Voltage { status { mandatory remainingCapacity as float } }
Для дальнейшей абстракции числового значения мы создаем Datatype для процентов:
namespace org.eclipse.vorto.types version 1.0.0 displayname "Percentage" description "Datatype for Percentage" category units entity Percentage { mandatory value as float }
Этот Datatype затем включается в Battery блок, устраняя детали конкретной реализации.
namespace org.eclipse.vorto version 1.0.0 displayname "Battery" description "Functionblock for Battery" category peripheral using org.eclipse.vorto.types.Percentage ; 1.0.0 using org.eclipse.vorto.Voltage ; 1.0.0 functionblock Battery extends org.eclipse.vorto.Voltage { status { mandatory remainingCapacity as Percentage } }
Повторяя этот паттерн для температуры, GPS, ускорения и модулей коннективности, получаем комплексную Information Model, которую можно подать в генераторы кода Vorto для производства интеграционных стабов.
namespace com.bosch.ps version 1.0.0 displayname "Traci" description "Information Model for Traci" using org.eclipse.vorto.Geolocation; 1.0.0 using org.eclipse.vorto.Acceleration; 1.0.0 using org.eclipse.vorto.MagneticStrength; 1.0.0 using org.eclipse.vorto.Temperature; 1.0.0 using org.eclipse.vorto.Battery; 1.0.0 using org.eclipse.vorto.Connectivity; 1.0.0 infomodel Traci { functionblocks { battery as Battery location as Geolocation acceleration as Acceleration temperature as Temperature magneticStrength as MagneticStrength bluetoothConnectivity as Connectivity lorawanConnectivity as Connectivity } }
Предположим, другой производитель выпускает устройство с похожими фичами. Переиспользуя те же Function Blocks и Datatypes, можно определить новую Information Model без переписывания интеграционной логики.
namespace com.nimbelink.nl version 1.0.0 displayname "NLAT2VS" description "Information Model for NLAT2VS" using org.eclipse.vorto.Geolocation; 1.0.0 using org.eclipse.vorto.Battery; 1.0.0 using org.eclipse.vorto.Connectivity; 1.0.0 using org.eclipse.vorto.Temperature; 1.0.0 using org.eclipse.vorto.Humidity; 1.0.0 using org.eclipse.vorto.Acceleration; 1.0.0 infomodel NLAT2VS { functionblocks { battery as Battery acceleration as Acceleration location as Geolocation temperature as Temperature humidity as Humidity wifiConnectivity as Connectivity cellularConnectivity as Connectivity } }
Общие Function Blocks означают, что новое устройство может быть интегрировано с минимальными усилиями, демонстрируя силу Vorto в деカップлинге эволюции устройств от прикладной логики.
Кто выигрывает от Eclipse Vorto?
Производители устройств
Vorto позволяет производителям публиковать платформо-независимые Information Models, сокращая потребность в множественных таргет-специфичных реализациях. Эта гибкость экономит время и стоимость, обеспечивая интероперабельность через экосистемы. Деカップлинг протокольных слоев от контроллеров устройств позволяет непрерывной эволюции устройств без ломания существующих интеграций.

IoT-платформы
Платформы могут драматически снизить накладные расходы на интеграцию, используя генераторы кода Vorto для частичного или полного создания исходного кода. Vorto Repository служит runtime-источником возможностей устройств через JSON-схемы, облегчая динамическое открытие, валидацию и бутстраппинг коннекторов.
Разработчики решений
Разработчики, сталкивающиеся с гетерогенными устройственными API, могут полагаться на общие кодовые стабы и переиспользуемые модели Vorto для сокращения циклов разработки и избежания vendor lock-in.

Будущее IoT с Eclipse Vorto
Стандартизируя устройственные интерфейсы и обеспечивая интероперабельность, Eclipse Vorto может перестроить то, как производители, операторы платформ и разработчики коллаборационируют. Это снижает усилие разработки, облегчает интеграцию и адресует вызовы масштабируемости, присущие IoT-экосистемам.
Исследуйте проект на GitHub — поставьте звезду и погрузитесь в туториалы по созданию устройств, интеграции и визуализации.
Интернет вещей
- Безопасная аутентификация устройств с X.509 сертификатами в Eclipse Hono
- Умные данные: навигация по следующей границе IoT и Big Data
- Почему IoT-устройства с Wi‑Fi создают растущую угрозу безопасности
- Застой внедрения IoT: почему ожидания не оправдались
- Как узкополосные технологии питают IoT-революцию
- Заложение фундамента для успеха Enterprise IoT
- 5 ключевых вызовов, стоящих перед Интернетом вещей сегодня
- Как IoT революционизировал здравоохранение во время пандемии Covid-19
- Почему прямое подключение устройств — следующий веха в промышленном Интернете вещей
- Устранение слепой зоны IoT в постпандемийном мире