SensorThings API [1] — это стандарт Open Geospatial Consortium (OGC), предоставляющий открытую и унифицированную структуру для соединения сенсорных устройств, данных и приложений IoT через Интернет. Это открытый стандарт, решающий вопросы синтаксической и семантической совместимости Интернета вещей. Он дополняет существующие сетевые протоколы IoT, такие как CoAP , MQTT , HTTP , 6LowPAN . В то время как вышеупомянутые сетевые протоколы IoT решают проблему возможности различных систем IoT обмениваться информацией, OGC SensorThings API решает проблему возможности различных систем IoT использовать и понимать обмениваемую информацию. Как стандарт OGC, SensorThings API также обеспечивает простую интеграцию в существующие инфраструктуры пространственных данных или географические информационные системы .
OGC SensorThings API состоит из двух частей: (1) Часть I - Зондирование и (2) Часть II - Задачи. OGC SensorThings API Часть I - Зондирование была выпущена для публичного обсуждения 18 июня 2015 года. [2] Технический комитет OGC (TC) одобряет начало электронного голосования 3 декабря 2015 года, а SensorThings API Часть I - Зондирование прошла голосование TC 1 февраля 2016 года. Официальная спецификация стандарта OGC была опубликована в сети 26 июля 2016 года. В 2019 году SensorThings API также был опубликован в качестве технической спецификации ITU-T Организации Объединенных Наций. [3]
OGC SensorThings API Часть II - Tasking Core был выпущен для публичного обсуждения 20 февраля 2018 г. [4] и прошел голосование технического комитета 1 июня 2018 г. Официальная спецификация стандарта OGC для SensorThings API Часть II - Tasking Core была опубликована в сети 8 января 2019 г.
Чтобы обеспечить разработчикам лучший опыт, 18 декабря 2018 года в сети был опубликован документ SensorThings API Часть II - Tasking Core Discussion Paper. В документе Tasking Core Discussion Paper приведены 15 примеров JSON, демонстрирующих, как можно использовать SensorThings API Часть II - Tasking Core.
API SensorThings разработан специально для устройств IoT с ограниченными ресурсами и сообщества веб-разработчиков. Он следует принципам REST , кодировке JSON , протоколу OASIS OData и соглашениям URL. Кроме того, он имеет расширение MQTT , позволяющее пользователям/устройствам публиковать и подписываться на обновления с устройств, и может использовать CoAP в дополнение к HTTP.
Основой API SensorThings является его модель данных, основанная на ISO 19156 (ISO/OGC Observations and Measurements ), которая определяет концептуальную модель для наблюдений и для функций, участвующих в отборе проб при проведении наблюдений. В контексте SensorThings функции моделируются как Вещи , Датчики ( т. е . Процедуры в O&M) и Функции Интересов . В результате API SensorThings обеспечивает совместимое представление, ориентированное на Наблюдение, что особенно полезно для согласования различий между гетерогенными системами датчиков (например, датчиками на месте и удаленными датчиками).
Устройство или система IoT моделируется как Thing . Thing имеет произвольное количество Location (включая 0 Location ) и произвольное количество Datastream (включая 0 Datastream ). Каждый Datastream наблюдает одно ObservedProperty с одним Sensor и имеет множество Observations, собранных Sensor . Каждое Observation наблюдает один конкретный FeatureOfInterest . Модель на основе O&M позволяет SensorThings размещать гетерогенные устройства IoT и данные, собранные устройствами. [5]
API SensorThings предоставляет две основные функции, каждая из которых обрабатывается частью. Два профиля — это часть Sensing и часть Tasking. Часть Sensing предоставляет стандартный способ управления и извлечения наблюдений и метаданных из гетерогенных систем датчиков IoT, а функции части Sensing аналогичны службе наблюдения датчиков OGC . Часть Tasking предоставляет стандартный способ параметризации — также называемой постановкой задач — устройств IoT, способных выполнять задачи, таких как датчики или исполнительные механизмы. Функции части Tasking аналогичны службе планирования датчиков OGC. Часть Sensing разработана на основе модели наблюдений и измерений ISO/OGC (O&M) и позволяет устройствам и приложениям IoT СОЗДАВАТЬ, ЧИТАТЬ, ОБНОВЛЯТЬ и УДАЛЯТЬ ( т. е . HTTP POST, GET, PATCH и DELETE) данные и метаданные IoT в службе SensorThings.
SensorThings API Часть I - Sensing определяет следующие ресурсы. Поскольку SensorThings является веб-сервисом RESTful, каждый объект может быть СОЗДАН, ЧИТАН, ОБНОВЛЕН и УДАЛЕН с помощью стандартных HTTP-глаголов ( POST , GET , PATCH и DELETE): [6] [7]
Thing
: Объект физического мира (физические вещи) или информационного мира (виртуальные вещи), который можно идентифицировать и интегрировать в коммуникационные сети. [8]Locations
: Находит вещь или вещи, с которыми она связана.HistoricalLocations
: Set предоставляет текущее (т.е. последнее известное) и предыдущее местоположение Вещи с указанием их времени.Datastream
: Набор наблюдений и наблюдений в потоке данных измеряют одно и то же наблюдаемое свойство и производятся одним и тем же датчиком .ObservedProperty
: Определяет явление Наблюдения .Sensor
: Инструмент, который наблюдает за свойством или явлением с целью получения оценки стоимости этого свойства.Observation
: Акт измерения или иного определения стоимости имущества. [9]FeatureOfInterest
: Наблюдение приводит к присвоению значения явлению. Явление является свойством признака, который является Характерной чертой наблюдения . [ 9 ]В дополнение к указанным выше ресурсам датчиков, SensorThings API Часть II - Ядро задач определяет следующие ресурсы: [10]
TaskingCapabilities
: Указывает настраиваемые параметры привода.Tasks
: Коллекция задач, которая была создана.Actuator
: Тип преобразователя, который преобразует сигнал в какое-либо реальное действие или явление. [11]http://example.org/v1.0/Datastream(id)/Observations
{ "@iot.count" : 2 , "ценить" : [ { "@iot.id" : 1 , "@iot.selfLink" : "http://example.org/v1.0/Observations(1)" , "phenomenonTime" : "2016-01-01T05:00:00.000Z" , "результат" : "-9" , "resultTime" : null , "[email protected]" : "http://example.org/v1.0/Observations(1)/Datastream" , «[email protected]» : «http://example.org/v1.0/Observations(1)/FeatureOfInterest» }, { "@iot.id" : 2 , "@iot.selfLink" : "http://example.org/v1.0/Observations(2)" , "phenomenonTime" : "2016-01-01T04:00:00.000Z" , "результат" : "-10" , "resultTime" : null , "[email protected]" : "http://example.org/v1.0/Observations(2)/Datastream" , «[email protected]» : «http://example.org/v1.0/Observations(2)/FeatureOfInterest» } ]}
Чтобы уменьшить объем данных, передаваемых по сети, расширение массива данных API SensorThings позволяет пользователям запрашивать несколько сущностей Observation и форматировать сущности в формате dataArray. Когда служба SensorThings возвращает ответ dataArray, служба группирует сущности Observation по Datastream или MultiDatastream, что означает, что сущности Observation, которые ссылаются на один и тот же Datastream или один и тот же MultiDatastream, агрегируются в один dataArray.
http://example.org/v1.0/Observations?$resultFormat=dataArray
{ "ценить" : [ { "[email protected]" : "http://example.org/v1.0/Datastreams(1)" , "компоненты" : [ "идентификатор" , "феноменВремя" , "resultTime" , "результат" ], "[email protected]" : 3 , "dataArray" : [ [ 1 , "2005-08-05T12:21:13Z" , "2005-08-05T12:21:13Z" , 20 ], [ 2 , "2005-08-05T12:22:08Z" , "2005-08-05T12:21:13Z" , 30 ], [ 3 , "2005-08-05T12:22:54Z" , "2005-08-05T12:21:13Z" , 0 ] ] } ]}
Взаимодействие между OpenIoT и SensorThings « Мы считаем, что реализация API SensorThing станет серьезным улучшением для промежуточного программного обеспечения OpenIoT. Это предоставит OpenIoT стандартизированный и действительно простой в использовании интерфейс для значений датчиков. Это дополнит богатые службы семантического обоснования простым интерфейсом на основе ресурсов. А согласованное отображение модели данных дает общий контекст для описания Интернета вещей ». [12]
Эффективность API SensorThings Комплексная оценка API SensorThings опубликована в работе Джазаери, Мохаммада Али, Стива Х. Л. Ляна и Чи-Юань Хуана. «Внедрение и оценка четырех совместимых открытых стандартов для Интернета вещей». Датчики 15.9 (2015): 24343-24373.
API SensorThings был продемонстрирован в пилотном проекте [13], спонсируемом Управлением науки и технологий Министерства внутренней безопасности . Доктор Реджинальд Бразерс, заместитель министра науки и технологий Министерства внутренней безопасности, был «впечатлен «практическим состоянием», в котором эти различные промышленные датчики могут быть интегрированы сегодня с использованием открытых стандартов, которые устраняют ограничения одноразовых технологий. [14] »
В марте 2016 года SensorUp и лаборатория GeoSensorWeb в Университете Калгари подали предложение о проекте программного обеспечения с открытым исходным кодом в Eclipse Foundation и оно было одобрено. Проект называется Whiskers. [15] Whiskers — это фреймворк OGC SensorThings API. Он будет иметь клиент JavaScript и легкий сервер для шлюзовых устройств IoT (например, Raspberry Pi или BeagleBone). Whiskers нацелен на развитие здоровой и открытой экосистемы IoT, в отличие от той, в которой доминируют закрытые информационные хранилища. Whiskers нацелен на то, чтобы сделать разработку SensorThings легкой для большого и растущего мира разработчиков IoT.
ГОСТ [16] — это реализация API SensorThings с открытым исходным кодом на языке программирования Go , инициированная Geodan. Она содержит легко развертываемое серверное программное обеспечение и клиент JavaScript. В настоящее время (июнь 2016 г.) она находится в разработке, но первую версию уже можно загрузить и развернуть. Программное обеспечение можно установить на любое устройство, поддерживающее Docker или Go (например, Windows, Linux, Mac OS и Raspberry Pi). По умолчанию данные датчиков хранятся в базе данных PostgreSQL .
FROST-Server [17] — это реализация Open Source-сервера OGC SensorThings API. FROST-Server реализует всю спецификацию, включая все расширения. Он написан на Java и может работать в Tomcat или Wildfly, а также доступен в виде образа Docker. Среди его многочисленных функций — возможность использовать идентификаторы сущностей на основе строк или UUID.
FROST-Client [18] — клиентская библиотека Java для взаимодействия с сервером, совместимым с API SensorThings.
SensorThings HcDT [19] — это библиотека JavaScript для построения диаграмм для API OGC SensorThings. Она основана на библиотеке Highcharts с открытым исходным кодом [ требуется пояснение ] и DataTables. Это библиотека фронтенд-диаграмм, позволяющая разработчикам подключаться к потокам данных из любой службы API OGC SensorThings и отображать наблюдения датчиков в виде диаграмм, таблиц или виджетов панели мониторинга для веб-приложений.
Mozilla разработала реализацию узла OGC SensorThings API. [20]
52N SensorThingsAPI [21] — это реализация API OGC SensorThings с открытым исходным кодом. Ее основными функциями являются взаимодействие с 52N SOS, реализующим OGC Sensor Observation Service , настраиваемые сопоставления баз данных и несколько удобных расширений. Ее можно развернуть как контейнер Docker, внутри Apache Tomcat или как отдельное приложение.
В 2019 году операционный эксперимент Shaken Fury [22] для программы DHS Next Generation First Responder описывает сценарий землетрясения, вызывающего частичное обрушение конструкции и утечку HAZMAT на стадионе. API OGC SensorThings используется в качестве стандартного интерфейса [23] , который соединяет несколько датчиков и предлагает ситуационную осведомленность в режиме реального времени с поддержкой IoT.
8 октября 2016 года [24] группа волонтеров (умных граждан) в Калгари собралась вместе, собрала собственные датчики, установила их в своих домах и сформировала краудсорсинговую сеть датчиков качества воздуха. Все данные общедоступны через API OGC SensorThings. [25] Благодаря этим усилиям по зондированию граждан количество датчиков качества воздуха в Калгари увеличилось с 3 до более чем 50.
Smart emission [26] — проект мониторинга качества воздуха в городе Неймеген, Нидерланды. В рамках проекта было развернуто несколько датчиков качества воздуха по всему городу. Данные публикуются с использованием открытых стандартов, включая API OGC SensorThings. Частью проекта является механизм ETL с открытым исходным кодом для загрузки данных датчиков проекта в API OGC SensorThings. [27]
Эта панель управления обеспечивает простую в использовании клиентскую визуализацию данных датчиков Интернета вещей с совместимых с API OGC SensorThings серверов. Различные типы виджетов могут быть размещены и настроены на панели управления. Это веб-приложение, которое может быть встроено в любой веб-сайт. Живая демонстрация доступна на странице проекта. https://github.com/SensorThings-Dashboard/SensorThings-Dashboard
GOST Dashboard v2 — это библиотека с открытым исходным кодом пользовательских HTML-элементов (веб-компонентов), поддерживающих API SensorThings. Эти элементы облегчают разработку HTML-приложений, интегрирующих функциональность и данные из совместимых с API SensorThings сервисов. Компоненты разработаны с помощью Predix-UI и Polymer.
Коннектор обеспечивает взаимодействие между источниками данных, соответствующими OGC, и семантическим промежуточным программным обеспечением [28], разработанным в проекте Horizon 2020 ECSEL AFarCloud. Это модульное приложение Java с развертыванием на основе Docker, реализованное в соответствии со стандартом реализации OGC SensorThings API 1.0 15-078r6.
API SensorThings предоставляет функции, аналогичные OGC Sensor Observation Service , спецификации OGC, одобренной в 2005 году. Обе стандартные спецификации входят в стандартный набор OGC Sensor Web Enablement . В следующей таблице суммированы технические различия между двумя спецификациями. [29]
{{cite web}}
: |last=
имеет общее название ( помощь )CS1 maint: несколько имен: список авторов ( ссылка )