Описание вещи
![]() Логотип последней версии, Описание вещи | |
Расширение имени файла |
.jsontd, .td.json, .td.jsonld |
---|---|
Тип интернет-СМИ |
приложение/td+json |
Разработано | W3C |
Первоначальный выпуск | 9 апреля 2020 г. |
Тип формата | JSON-LD |
Стандартный | W3C Сеть вещей |
Открытый формат ? | Да |
Веб-сайт | https://www.w3.org/TR/wot-thing-description/ |
Описание вещи (TD) (или W3C описание вещи WoT (TD) ) — это бесплатная модель открытой информации с форматом представления на основе JSON для Интернета вещей (IoT). TD обеспечивает унифицированный способ описания возможностей устройства или службы Интернета вещей с помощью предлагаемой модели данных и функций, использования протокола и дополнительных метаданных. Использование описаний вещей помогает упростить интеграцию устройств Интернета вещей и их возможностей в приложения Интернета вещей. [1]
TD возник в результате инициативы Web of Things (WoT) международной организации по стандартизации W3C , целью которой является повышение функциональной совместимости в IoT. [2] С апреля 2020 года Описание вещи [3] — это рекомендация W3C (W3C WoT Thing Description 1.0).
В декабре 2023 года W3C опубликовал версию 1.1 рекомендации по описанию вещи. [4]
Принципы
[ редактировать ]Основным принципом описания вещи является предоставление удобочитаемого и машинно-интерпретируемого описания интерфейса устройства/вещи Интернета вещей. В этом контексте описание вещи WoT для Интернета вещей является тем же, чем index.html для веб-сайта: его можно рассматривать как точку входа в физическую или виртуальную вещь/устройство . [5] Описание вещи не ограничивается конкретным протоколом связи, а скорее предоставляет структуру, называемую шаблоном привязки WoT. [6] Такая привязка протокола определяет отображение возможностей взаимодействия с конкретными сообщениями определенного протокола IoT, такого как MQTT , HTTP , CoAP , Modbus или OPC UA .
Описание вещи WoT определяет 3 вида возможностей взаимодействия: свойство, действие и событие:
Свойство
[ редактировать ]Возможность взаимодействия, которая раскрывает состояние устройства IoT. Это состояние затем можно получить (прочитать) и при необходимости обновить (записать). Устройства также могут сделать свойства видимыми, передав новое состояние после изменения.
Действие
[ редактировать ]Возможность взаимодействия, которая позволяет вызывать функцию устройства IoT, которая управляет состоянием (например, включает или выключает лампу) или запускает процесс на устройстве (например, затемняет лампу с течением времени).
Событие
[ редактировать ]Возможности взаимодействия, описывающие источник событий, который асинхронно передает данные о событиях подписчикам события (например, оповещения о перегреве).
Компоненты и стандартные технологии
[ редактировать ]
В целом, описание вещи предназначено для повторного использования и опирается на установленные стандарты Интернета и Интернета, включая:
- Сериализация. Сериализация JSON информационной модели TD соответствует синтаксису JSON-LD 1.1. [7] JSON-LD открывает возможность расширения контекста и обогащает экземпляры описания вещи дополнительной (например, специфичной для предметной области) семантикой, например, из Schema.org . Это также поддерживает извлечение и понимание соответствующей информации, например, в сценариях обнаружения в приложениях Интернета вещей. [8]
- Безопасность: Описание вещи поставляется с платформой, которая позволяет предоставлять метаданные в соответствии с существующей схемой безопасности, такой как OAuth2 или аутентификация дайджест-доступа. [9] Благодаря концепции расширения контекста описания вещи можно импортировать определенные схемы безопасности.
- Ссылки: Вещи могут иметь ссылки на другие Вещи или содержать ссылки на дополнительную информацию. Для определения такого рода отношений описание вещи опирается на хорошо известные веб-ссылки. [10] концепция.
- Взаимодействия: предлагаемые данные и/или функции вещи назначаются соответствующим свойствам, действиям и событиям возможности взаимодействия.
- Схема данных: для моделирования данных вещи, которыми можно обмениваться, используется концепция схемы JSON. [11] встроен в описание вещи.
- Привязки: шаблоны привязок определяют конкретный протокол и метод сериализации для свойств, действий и событий вещи. В качестве идентификации протокола и метода адресации Идентификатор URI [12] используются. Для объявления кодировки сериализации (например, JSON , CBOR , XML , Efficient XML Interchange ) полезной нагрузки, указанной схемой данных, тип носителя [13] присвоение применяется в описании вещи.
Примеры описания вещей
[ редактировать ]
Ниже приведен пример TD, сериализованный в формате JSON-LD, который имеет одно свойство, одно действие и одно событие. Устройство IoT, представленное этим TD, использует протокол HTTP, но TD может представлять любой протокол со схемой URI , как показано в примере ниже.
{
"@context": "https://www.w3.org/2019/wot/td/v1",
"id": "urn:dev:ops:32473-WoTLamp-1234",
"title": "MyLampThing",
"securityDefinitions": {
"basic_sc": {"scheme": "basic", "in":"header"}
},
"security": ["basic_sc"],
"properties": {
"status" : {
"type": "string",
"forms": [{
"href": "https://mylamp.example.com/status",
"htv:methodName":"GET"
}]
}
},
"actions": {
"toggle" : {
"forms": [{
"href": "https://mylamp.example.com/toggle",
"htv:methodName":"POST"
}]
}
},
"events":{
"overheating":{
"data": {"type": "string"},
"forms": [{
"href": "https://mylamp.example.com/oh",
"htv:methodName":"GET",
"subprotocol": "longpoll"
}]
}
}
}
Этот TD представляет собой лампу, подключенную к Интернету, которую можно рассматривать как простую версию лампы Philips Hue .
Из этого примера TD клиент знает, что существует одна доступность недвижимости со статусом права собственности (строки 10–16). Кроме того, в строках 13–14 представлена информация о том, что это свойство можно прочитать с помощью HTTP-запроса GET к URI. https://mylamp.example.com/status
и вернет строковое значение статуса. Аналогичным образом указывается доступность действия для переключения состояния переключателя с помощью метода POST на https://mylamp.example.com/toggle
ресурс. Доступность событий включает механизм отправки асинхронных сообщений вещью. Здесь подписку на уведомление о возможном перегреве лампы можно получить, используя HTTP с его длинным подпротоколом опроса на https://mylamp.example.com/oh
. Использование метода GET или POST указано явно, но его можно опустить, используя допущения по умолчанию, указанные в спецификации TD. Видно, что методы HTTP определяются с использованием "htv:methodName"
словарные термины. Эти словарные термины для HTTP включены в словарь TD, который можно найти в "@context"
ценить.
В этом примере также указывается basic
схема безопасности, требующая имени пользователя и пароля для доступа. Схеме безопасности сначала присваивается имя и соответствующая ей схема в файле. securityDefinitions
а затем активируется путем указания этого имени в security
раздел. В сочетании с использованием HTTP этот пример демонстрирует использование базовой аутентификации доступа .
Ниже представлена та же подключенная лампа, но с использованием протокола MQTT и без защиты.
{
"@context": [
"https://www.w3.org/2019/wot/td/v1",
{"mqv": "http://www.example.org/mqtt-binding#"}
],
"id": "urn:dev:ops:32473-WoTLamp-1234",
"title": "MyLampThing",
"securityDefinitions": {
"nosec_sc": {"scheme": "nosec"}
},
"security": ["nosec_sc"],
"properties": {
"status" : {
"type": "string",
"forms": [{
"href": "mqtt://mylamp.example.com/status",
"mqv:controlPacketValue": "SUBSCRIBE"
}]
}
},
"actions": {
"toggle" : {
"forms": [{
"href": "mqtt://mylamp.example.com/toggle",
"mqv:controlPacketValue": "PUBLISH"
}]
}
},
"events":{
"overheating":{
"data": {"type": "string"},
"forms": [{
"href": "mqtt://mylamp.example.com/oh",
"mqv:controlPacketValue": "SUBSCRIBE"
}]
}
}
}
В отличие от последнего TD, здесь формы включают протокол MQTT, указанный в шаблонах привязки WoT. Более конкретно, строки 17, 25 и 34 описывают, какие типы сообщений следует использовать для использования возможностей. Например, вместо подпротокола HTTP GET и longpoll для наблюдения за событием перегрева клиент может подписаться на это событие с помощью протокола MQTT. Более того, устройство WoT с протоколом MQTT может быть как издателем, так и подписчиком. Для возможностей свойств и событий он будет публиковать значения, тогда как для возможностей действий он будет подписываться на темы действий, которые другие издатели MQTT могут инициировать, публикуя в этих темах.
Реализации
[ редактировать ]Инструменты редактирования и проверки описания вещи
- Eclipse edi{TD}или: [14] Инструмент для простого проектирования описаний вещей и моделей вещей W3C.
- Детская площадка ТД: [15] Площадка для проверки экземпляров описания вещи
Реализации с использованием описания вещи
- Узел Eclipse: [16] Реализация технологий W3C WoT в Node.js
- ВоТифай: [17] Библиотека реализации WoT, поддерживающая описание вещи.
- вот-пы: [18] Реализация технологий W3C WoT на Python
- Node-RED узел-генер: [19] Генерирует узлы на основе описания вещи в Node-RED.
- РАЗУМНЫЙ: [20] Реализация технологий W3C WoT на Java
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ «Сеть вещей через Интернет вещей и ее приложения» . ИнфоQ . Проверено 3 декабря 2020 г.
- ^ «Решение для совместимости Интернета вещей – W3C Web of Things» . DATAVERSITY — Обучение работе с данными для бизнес- и ИТ-специалистов . 13 апреля 2020 г. Проверено 13 апреля 2020 г.
- ^ Кэбиш, Себастьян; Камия, Такуки; МакКул, Майкл; Шарпене, Виктор; Ковач, Матиас (09 апреля 2020 г.). «Описание вещи в Сети вещей (WoT)» . www.w3.org . Архивировано из оригинала 24 октября 2021 г. Проверено 17 апреля 2020 г.
{{cite web}}
: CS1 maint: bot: исходный статус URL неизвестен ( ссылка ) - ^ Кэбиш, Себастьян; МакКул, Майкл; Коркан, Эге (05 декабря 2023 г.). «Описание вещи Web of Things (WoT) 1.1» . www.w3.org . Архивировано из оригинала 07 декабря 2023 г. Проверено 19 января 2023 г.
{{cite web}}
: CS1 maint: bot: исходный статус URL неизвестен ( ссылка ) - ^ «Решение для совместимости Интернета вещей — W3C Web of Things (WoT)» . W3C . W3C Пресс. 9 апреля 2020 г. Проверено 22 декабря 2020 г.
- ^ Костер, Майкл; Коркан, Эге (30 января 2019 г.). «Шаблоны привязки Web of Things (WoT)» . www.w3.org . Архивировано из оригинала 14 апреля 2020 г. Проверено 17 апреля 2020 г.
{{cite web}}
: CS1 maint: bot: исходный статус URL неизвестен ( ссылка ) - ^ Келлог, Грегг; Шампен, Пьер-Антуан; Лонгли, Дэйв (16 июля 2020 г.). «Синтаксис JSON-LD 1.1» .
- ^ Серена, Фернандо; Поведа-Вильялон, Мария; Гарсиа-Кастро, Рауль (22 февраля 2018 г.). Семантическое открытие в сети вещей . Чам, Швейцария: Springer. дои : 10.1007/978-3-319-74433-9_2 . ISBN 978-3-319-74433-9 .
- ^ Ред., Р. Шех-Юсеф; Аренс, Д.; Бремер, С. (2015). Шех-Юсеф Р. (ред.). «Аутентификация дайджест-доступа HTTP» . IETF. дои : 10.17487/RFC7616 . S2CID 11159319 . Проверено 1 сентября 2020 г.
{{cite journal}}
: Для цитирования журнала требуется|journal=
( помощь ) - ^ Ноттингем, М. (сентябрь 2017 г.). «Веб-ссылки» . IETF. дои : 10.17487/RFC8288 .
{{cite journal}}
: Для цитирования журнала требуется|journal=
( помощь ) - ^ Райт, Остин; Эндрюс, Генри; Лафф, Герайнт. «Проверка схемы JSON: словарь структурной проверки JSON» . Ietf Datatracker . IETF.
- ^ Бернерс-Ли, Т.; Филдинг, Р.; Масинтер, Л. (2005). «Единый идентификатор ресурса (URI): общий синтаксис» . IETF. дои : 10.17487/RFC3986 . S2CID 30973664 .
{{cite journal}}
: Для цитирования журнала требуется|journal=
( помощь ) - ^ Фрид, Н.; Боренштейн, Н. (1996). «Многоцелевые расширения почты Интернета (MIME), часть вторая: типы носителей» . IETF. дои : 10.17487/RFC2046 .
{{cite journal}}
: Для цитирования журнала требуется|journal=
( помощь ) - ^ Редакция Eclipse{TD}или проект , Eclipse Foundation, 04 декабря 2020 г.
- ^ Описание вещи Детская площадка , 14.11.2020
- ^ thingweb.node-wot. Реализация W3C Web of Things на NodeJS. , Eclipse Foundation, 14 ноября 2019 г. , получено 17 ноября 2019 г.
- ^ Коркан, Эге; Хассин, Хассиб Белхадж; Шлотт, Верена Эйлин; Кэбиш, Себастьян; Штайнхорст, Себастьян (07.09.2019). «WoTify: платформа для переноса Интернета вещей на ваши устройства». arXiv : 1909.03296 [ cs.DC ].
- ^ Мангас, Андрес Гарсия (08 января 2020 г.), Экспериментальная реализация среды выполнения W3C Web of Things: agmangas/wot-py , получено 15 января 2020 г.
- ^ Тоумура, Кунихико (21 мая 2019 г.), GitHub - k-toumura/node-red-nodegen , получено 1 января 2020 г.
- ^ «Выпущена Java-реализация для Интернета вещей» . вменяемый.город . Проверено 28 января 2020 г.