Web of Things, Web вещей - сетевая служба IoT


WoT - Web of Things

Web of Things - сетевая служба IoT

Автор: Владимир Ткаченко

Источник: Обучение в интернет

Данная статья посвящена паутине вещей - Web of Things (WoT). Общие концепции WoT описаны в документе Web of Things (WoT) Architecture. Сетевая служба Web of Things основана на Web и его новых технологиях. Следует отметить, что Web используется как интернет-платформа интеграции на прикладном уровне всех видов Smart Devices и приложений (устройств и служб IoT), которые взаимодействуют с ними.

WoT предоставляет механизмы для формального описания интерфейсов IoT, чтобы позволить устройствам и службам IoT взаимодействовать друг с другом, независимо от их базовой реализации, и по нескольким сетевым протоколам. WoT основана на присвоении URL-адресов Web Things и обеспечении возможности доступа к ним из Web.

Things в WoT или Web Things - это виртуальное (цифровое) представления физических или абстрактных сущностей подключенных к World Wide Web и доступных через Web API RESTful. Технологии сетевой службы Web of Things обеспечивают создание прикладного уровня для IoT с использованием стандартных веб-протоколов, а также универсального Web API для организации взаимодействия Things. Things в WoT обеспечивают интерфейс API (интерфейс WoT) для взаимодействия, основанный на формальной модели. Эти интерфейсы WoT являются надмножеством Web API, так как Web Things могут быть также доступны через протоколы, которые не относятся к веб-протоколам.

По аналогии с архитектурой Web, архитектура WoT - это всемирная паутина или распределенная система виртуальных ресурсов Web Things (виртуальных представлений Things), предоставляющая доступ к физическим объектам и приложениям, размещенным на Smart Objects или промежуточных устройствах сети IoT.

Для реализации Web of Things применяются такие прикладные протоколы как HTTP и WebSocket с использованием JSON, так и Web API RESTful (на основе протокола CoAP-to-HTTP Proxy или на основе MQTT). Следует отметить, что MQTT не относится к Web протоколам. Прежде чем исследовать службу Web of Things, обеспечивающую интеграцию Things на прикладном уровне, рассмотрим интеграцию Things в составную сеть Internet на сетевом уровне.

Архитектура IoT состоит из сетей физических объектов, стеки протоколов которых, как правило, несовместимы друг с другом. Множество сетей физических объектов IoT, основанных на гетерогенных аппаратных и программных платформах, с различными транспортными протоколами (проприетарными) вносят масштабные изменения в инфраструктуру составной сети Интернет. Интеграция сетей IoT с составной сетью Internet на сетевом уровне осуществляется шлюзами (Gateway) и граничными маршрутизаторами (Border routers).

Шлюзы используются для интеграции сетей IoT (например, Z-Wave, ZigBee и т.д.), стеки протоколов которых несовместимы со стеком TCP/IP сети Интернет. Граничные маршрутизаторы применяются для интеграции сети Интернет с сетями IoT, основанными на сетевом протоколе 6LoWPAN (IPv6 over Low power Wireless Personal Area Networks), который является версией протокола IPv6 для беспроводных персональных сенсорных сетей с низким энергопотреблением стандарта IEEE 802.15.4.

Маломощные беспроводные персональные сети со стеком протоколов 6LoWPAN являются подсетями IPv6 сетей, т.е. они могут взаимодействовать с другими сетями и узлами IP сети, но не являются транзитными для сетевого трафика IP сетей. Следует отметить, что к IP сетям со стеком протоколов 6LoWPAN относятся сети на основе технологий 6LoWPAN, Thread, ZigBee IP. Cети на основе технологий Thread, ZigBee IP, 6LoWPAN являются самоорганизующимися сетями, и могут не иметь выхода во внешние IP сети, использующими стек протоколов 6loWPAN для организации работы автономной сети и передачи данных между узлами автономной сети.

Итак, в отличие от межсетевых протоколов, которые используются на сетевом уровне для интеграции объектов IoT в сеть Интернет, протоколы прикладного уровня Web of Things предназначены для интеграции на прикладном уровне всех видов Smart Objects и приложений в существующую сеть Web. WoT предоставляет сервисы прикладного уровня, которые обеспечивают создания приложений для Web Things.

Известно, что WoT использует стандарты, применяемые в таких технологиях, как программируемый Web (HTTP, REST, JSON), семантический Web (JSON-LD, Microdata и т.п.), Web реального времени (Websockets) и социальный Web (напр. oauth или API социальных сетей). Для интерграции Smart Objects в Интернет рассмотрены три разных интеграционных шаблона: Direct Connectivity, Gateway Based Connectivity, Cloud Based Connectivity.

Web Things обеспечивают интерфейс API (API Web Thing) на основе веб-сервисов с RESTful для взаимодействия друг с другом с использованием существующих веб-стандартов. На рис 1. представлены API Web Thing, которые могут быть размещены как непосредственно на самих устройствах, так и на промежуточных Web Things сети типа шлюз или облачный сервис (Рис. 1).

Web of Things (WoT)
Рис. 1. Фрагменты архитектуры Web of Things (WoT)

В соответствии с проектом стандарта "Архитектура Web of Things (WoT)" архитектура сервера WoT должна иметь программный стек, в котором реализованы основные блоки WoT: Application, WoT Scripting API, Protocol Bindings. Приложение для Web Things разрабатывается, как правило, на JavaScript. Приложение может быть реализовано с использованием API-интерфейсов Scripting или API-интерфейсов на собственной платформе.

Реализация API Web Thing на собственной платформе может быть осуществлена на основе веб-сервера, размещенного на контроллере встроенного в Things. Веб-приложения для Web Things могут состоять из фронтенд и бэкенд, т.е. могут быть снабжены как пользовательскими интерфейсами для взаимодействия пользователей с Things через веб-браузеры (например, сайт датчиков: http://devices.webofthings.io/pi/) и мобильные приложения, так и интерфейсами прикладных программ (API) с использованием архитектуры RESTful для обмена данными между устройствами.

В качестве контроллера можно применить, например, одноплатный компьютер Raspberry Pi на базе Linux. В последней версии компьютера (Raspberry Pi 3 Model B) встроена поддержка Wi-Fi и Bluetoth 4.1. Кроме того, в Raspberry Pi обеспечен доступ к портам GPIO для прямого подключения к устройствам (например, датчикам температуры, перемещения и т.д.). Для реализации веб-сервера может быть применен Node.js (например, Node v7.0.0).

Для разработки серверной части приложения целесообразно выбрать язык программирования JavaScript в среде Node.js. Программный код клиентской части приложения разработан на HTML, CSS і JavaScript. Для обмена данными между устройствами в приложении реализованы интерфейсы API Client и API Server, построенные с учётом REST.

В случае реализации API Web Thing на промежуточном устройстве типа шлюз, можно использовать прототип шлюза Things Gateway, который написан разработчиками из сообщества Mozilla на JavaScript с использованием серверной платформы Node.js, и который доступен в виде готовых сборок для установки на платы Raspberry Pi.

Web of Things (WoT)
Рис. 2. Things Gateway

В случае реализации API Web Thing на облачном сервере, клиенты Web Thing Clients (веб-устройства или пользователи) обращаются по доменному адресу устройства к облачному серверу (облачный сервер аналогичный Things Gateway), который запускает приложение, размещенное на этом сервере, а приложение обращается к устройству, например, к видеокамере, и управляет им.