SensorThings API - SensorThings API

API OGC SensorThings - Часть 1 Обнаружение
Положение делСпецификация стандартной реализации OGC
Год начался2015
Последняя версия1.0
РедакторыСтив Лян (SensorUp ), Чжи-Юань Хуан (Национальный центральный университет ), Таня Халафбейги (SensorUp )
Базовые стандартыJSON, OGC / ISO 19156: 2011 O&M
ДоменОткрытый геопространственный консорциум, Интернет вещей
СокращениеOGC STA
Интернет сайтСтандартная страница API OGC SensorThings на GitHub
OGC SensorThings API - Часть 2 Ядро задач
Положение делСпецификация стандартной реализации OGC
Год начался2018
Последняя версия1.0
РедакторыСтив Лян (SensorUp ), Таня Халафбейги (SensorUp )
Базовые стандартыOGC SPS
ДоменОткрытый геопространственный консорциум, Интернет вещей
СокращениеOGC STA
Интернет сайтСтандартная страница API OGC SensorThings на GitHub
OGC SensorThings API - Часть 2, основной документ для обсуждения
Положение делДокумент для обсуждения OGC
Год начался2018
Последняя версия1.0
РедакторыСтив Лян (SensorUp ), Таня Халафбейги (SensorUp ), Кан Луо (Университет Калгари)
Базовые стандартыOGC SensorThings
ДоменОткрытый геопространственный консорциум, Интернет вещей
СокращениеOGC STA
Интернет сайтСтраница загрузки документа для обсуждения основных задач API OGC SensorThings

SensorThings API[1] является Открытый геопространственный консорциум (OGC) стандарт, обеспечивающий открытую и единую структуру для взаимодействия Интернет вещей считывание устройств, данных и приложений через Интернет. Это открытый стандарт, касающийся синтаксическая совместимость и семантическая совместимость Интернета вещей. Он дополняет существующие сетевые протоколы IoT, такие как CoAP, MQTT, HTTP, 6LowPAN. В то время как вышеупомянутые сетевые протоколы IoT обращаются к способности различных систем IoT обмениваться информацией, OGC SensorThings API обращается к способности различных систем IoT использовать и понимать передаваемую информацию. В качестве стандарта OGC SensorThings API также позволяет легко интегрировать в существующие Инфраструктуры пространственных данных или же Географические информационные системы.

OGC SensorThings API состоит из двух частей: (1) Часть I - Определение и (2) Часть II - Задачи. OGC SensorThings API Part I - Sensing был выпущен для общественного обсуждения 18 июня 2015 г.[2] Технический комитет (TC) OGC одобряет начало электронного голосования 3 декабря 2015 года, а SensorThings API Part I - Sensing прошел голосование TC 1 февраля 2016 года. официальная стандартная спецификация OGC был опубликован в Интернете 26 июля 2016 года. В 2019 году SensorThings API был также опубликован как Техническая спецификация ITU-T Организации Объединенных Наций.[3].

OGC SensorThings API Part II - Tasking Core был выпущен для общественного обсуждения 20 февраля 2018 г.[4], и он прошел голосование TC 1 июня 2018 г. официальная стандартная спецификация OGC для SensorThings API Часть II - Ядро задач было опубликовано в Интернете 8 января 2019 г.

Чтобы предложить разработчикам лучший опыт, API SensorThings, часть II - дискуссионный документ по основным задачам был опубликован в Интернете 18 декабря 2018 года. В документе для обсуждения ядра задач приведены 15 примеров JSON, показывающих, как можно использовать SensorThings API, часть II - ядро ​​задач.

Дизайн

SensorThings API разработан специально для устройств Интернета вещей с ограниченными ресурсами и сообщества веб-разработчиков. Следует ОТДЫХ принципы, JSON кодирование, и OASIS OData протокол и соглашения об URL. Кроме того, он имеет MQTT расширение, позволяющее пользователям / устройствам публиковать обновления с устройств и подписываться на них, а также использовать CoAP в дополнение к HTTP.

Модель данных SensorThings API

В основе API SensorThings лежит его модель данных, основанная на ISO 19156 (ISO / OGC Наблюдения и измерения ), который определяет концептуальную модель для наблюдений, а также для функций, участвующих в выборке при проведении наблюдений. В контексте SensorThings функции моделируются как Вещи, Датчики (т.е., Процедуры в O&M), и Особенность интересов. В результате API SensorThings предоставляет функционально совместимое представление с фокусом наблюдения, которое особенно полезно для согласования различий между разнородными сенсорными системами (например, на месте датчики и удаленные датчики).

Устройство или система Интернета вещей моделируется как Вещь. А Вещь имеет произвольное количество Место расположенияs (включая 0 Место расположенияs) и произвольное количество Потоки данных (в том числе 0 Поток данныхс). Каждый Поток данных замечает один Наблюдаемое свойство с одним Датчик и имеет много Наблюдения собраны Датчик. Каждый Наблюдение отмечает один конкретный FeatureOfInterest. Модель на основе O&M позволяет SensorThings работать с разнородными устройствами IoT и данными, собранными этими устройствами.[5]

SensorThings API предоставляет две основные функции, каждая из которых обрабатывается отдельной частью. Эти два профиля - это сенсорная часть и часть задач. Часть Sensing предоставляет стандартный способ управления и извлечения наблюдений и метаданных из гетерогенных сенсорных систем IoT, а функции части Sensing аналогичны функциям OGC. Служба наблюдения за датчиками. Часть «Задачи» предоставляет стандартный способ параметризации - также называемой постановкой задач - устройств IoT с возможностью выполнения задач, таких как датчики или исполнительные механизмы. Функции части задач аналогичны функциям OGC. Служба планирования датчиков. Чувствительная часть разработана на основе ISO / OGC Наблюдения и измерения (O&M) и позволяет устройствам и приложениям IoT СОЗДАТЬ, ЧИТАТЬ, ОБНОВЛЯТЬ и УДАЛИТЬ (т.е., HTTP POST, GET, PATCH и DELETE) данные и метаданные Интернета вещей в службе SensorThings.

Сущности (ресурсы)

SensorThings API Part I - Sensing определяет следующие ресурсы. Поскольку SensorThings является веб-службой RESTful, каждый объект может быть СОЗДАН, ЧИТАТЬ, ОБНОВЛЕН и УДАЛЕН с помощью стандартных HTTP-глаголы (ПОЧТОВЫЙ, ПОЛУЧАТЬ, PATCH и DELETE):[6][7]

  • Вещь: Объект физического мира (физические вещи) или информационного мира (виртуальные вещи), который можно идентифицировать и интегрировать в сети связи.[8]
  • Локации: Находит Вещь или Вещи это связано с.
  • Исторические места: Set предоставляет текущее (т.е. последнее известное) и предыдущее расположение Вещь со своим временем.
  • Поток данных: Сборник наблюдений и наблюдений в Поток данных измерить то же самое Наблюдаемое свойство и производятся тем же Датчик.
  • Наблюдаемое свойство : Определяет явление Наблюдение.
  • Датчик : Инструмент, который наблюдает за свойством или явлением с целью произвести оценку стоимости собственности.
  • Наблюдение: Акт измерения или иного определения стоимости имущества.[9]
  • FeatureOfInterest: An Наблюдение приводит к тому, что феномену присваивается значение. Явление является свойством признака, последний является FeatureOfInterest из Наблюдение.[9]

В дополнение к указанным выше ресурсам датчиков SensorThings API Part II - Tasking Core определяет следующие ресурсы:[10]

  • Возможности задач: Задает параметры актуатора, доступные для выполнения.
  • Задачи: Созданная коллекция задач.
  • Привод : Тип преобразователя, который преобразует сигнал в реальное действие или явление.[11].

Пример полезной нагрузки

http://example.org/v1.0/Datastream(id)/Observations

 1 { 2   "@ iot.count": 2, 3   "ценить": [ 4     { 5       "@ iot.id": 1, 6       "@ iot.selfLink": "http://example.org/v1.0/Observations(1)", 7       "ФеноменВремя": "2016-01-01T05: 00: 00.000Z", 8       "результат": "-9", 9       "resultTime": ноль,10       "[email protected]": "http://example.org/v1.0/Observations(1)/Datastream",11       "[email protected]": "http://example.org/v1.0/Observations(1)/FeatureOfInterest"12     },13     {14       "@ iot.id": 2,15       "@ iot.selfLink": "http://example.org/v1.0/Observations(2)",16       "ФеноменВремя": "2016-01-01T04: 00: 00.000Z",17       "результат": "-10",18       "resultTime": ноль,19       "[email protected]": "http://example.org/v1.0/Observations(2)/Datastream",20       "[email protected]": "http://example.org/v1.0/Observations(2)/FeatureOfInterest"21     }22   ]23 }

Расширения массивов данных

Чтобы уменьшить размер данных, передаваемых по сети, расширение массива данных API SensorThings позволяет пользователям запрашивать несколько объектов наблюдения и форматировать объекты в формате dataArray. Когда сервис SensorThings возвращает ответ dataArray, сервис группирует объекты Observation по Datastream или MultiDatastream, что означает, что объекты Observation, которые ссылаются на один и тот же Datastream или тот же MultiDatastream, объединяются в один dataArray.

Пример запроса массива данных

http://example.org/v1.0/Observations?$resultFormat=dataArray

Пример ответа массива данных

 1 { 2   "ценить": [ 3     { 4       "[email protected]": "http://example.org/v1.0/Datastreams(1)", 5       "составные части": [ 6         "я бы", 7         "ФеноменВремя", 8         "resultTime", 9         "результат"10       ],11       "[email protected]": 3,12       "dataArray": [13         [14           1,15           "2005-08-05T12: 21: 13Z",16           "2005-08-05T12: 21: 13Z",17           2018         ],19         [20           2,21           "2005-08-05T12: 22: 08Z",22           "2005-08-05T12: 21: 13Z",23           3024         ],25         [26           3,27           "2005-08-05T12: 22: 54Z",28           "2005-08-05T12: 21: 13Z",29           030         ]31       ]32     }33   ]34 }

Оценка

Взаимодействие между OpenIoT и SensorThings"Мы считаем, что реализация SensorThing API станет значительным улучшением промежуточного программного обеспечения OpenIoT. Он предоставит OpenIoT стандартизованный и действительно простой в использовании интерфейс для значений датчиков. Это дополнит богатые службы семантического мышления простым интерфейсом на основе ресурсов. И согласованное отображение модели данных дает общий контекст для описания Интернета вещей.".[12]

Эффективность SensorThings APIПодробная оценка API SensorThings опубликована в Джазайери, Мохаммед Али, Стив Х.Л. Лян и Чжи-Юань Хуанг. «Внедрение и оценка четырех совместимых открытых стандартов Интернета вещей». Датчики 15.9 (2015): 24343-24373.

Цитаты

SensorThings API был продемонстрирован в пилотном проекте[13] спонсируется Департамент внутренней безопасности Управление науки и технологий. Доктор Реджинальд Бразерс, заместитель министра по науке и технологиям национальной безопасности, был «впечатлен« практическим состоянием », в котором эти различные промышленные датчики могут быть интегрированы сегодня с использованием открытых стандартов, которые снимают ограничения, накладываемые одноразовыми технологиями.[14] "

Стандартные спецификации API OGC SensorThings

Бесплатные и открытые реализации API SensorThings

Усы

В марте 2016 г. SensorUp лаборатория GeoSensorWeb в Университете Калгари представила Eclipse Foundation предложение по проекту программного обеспечения с открытым исходным кодом и получила одобрение. Проект называется Усы.[15] Whiskers - это платформа OGC SensorThings API. Будет JavaScript клиент и легкий сервер для устройств шлюза Интернета вещей (например, Raspberry Pi или BeagleBone). Whiskers нацелены на создание здоровой и открытой экосистемы IoT, в отличие от экосистемы, в которой доминируют разрозненные хранилища закрытой информации. Whiskers стремится упростить разработку SensorThings для большого и растущего мира разработчиков Интернета вещей.

ГОСТ

ГОСТ[16] - реализация API SensorThings с открытым исходным кодом в Язык программирования Go по инициативе Геодана. Он содержит легко развертываемое серверное программное обеспечение и клиент JavaScript. В настоящее время (июнь 2016 г.) он находится в разработке, но первая версия уже может быть загружена и развернута. Программное обеспечение можно установить на любое устройство, поддерживающее Docker или Go (например, Windows, Linux, Mac OS и Raspberry Pi). По умолчанию данные датчика хранятся в PostgreSQL база данных.

МОРОЗ

FROST-Сервер[17] - это серверная реализация OGC SensorThings API с открытым исходным кодом. FROST-Server реализует всю спецификацию, включая все расширения. Он написан на Java, может работать в Tomcat или Wildfly и доступен в виде образа Docker. Среди его многочисленных функций - возможность использовать идентификаторы объектов на основе String или UUID.

ФРОСТ-Клиент[18] - это клиентская библиотека Java для связи с сервером, совместимым с SensorThings API.

SDK для создания графиков SensorThings HcDT

SensorThings HcDT[19] - это библиотека диаграмм JavaScript для OGC SensorThings API. Он основан на открытом исходном коде[требуется разъяснение ] Highcharts библиотека и Таблицы данных. Это интерфейсная библиотека диаграмм, позволяющая разработчикам подключаться к потокам данных из любой службы OGC SensorThings API и отображать наблюдения датчиков в виде диаграмм, таблиц или виджетов панели мониторинга для веб-приложений.

Mozilla STA

Mozilla разработал реализацию узла OGC SensorThings API.[20]

52 ° северной широты

52N SensorThingsAPI[21] - это реализация OGC SensorThings API с открытым исходным кодом. Его основные особенности - это совместимость с 52N SOS реализация Служба наблюдения датчиков OGC, настраиваемые сопоставления баз данных и несколько удобных расширений. Его можно развернуть как контейнер Docker внутри Apache Tomcat или как отдельное приложение.

Примеры приложений

Департамент внутренней безопасности S&T Оперативный эксперимент Shaken Fury

В 2019 году оперативный эксперимент Shaken Fury[22] Программа первого реагирования DHS Next Generation First Responder описывает сценарий землетрясения, вызывающего частичное обрушение конструкции и утечку HAZMAT на стадионе. OGC SensorThings API используется как стандартный интерфейс[23] который соединяет несколько датчиков и предлагает ситуационную осведомленность в реальном времени с помощью Интернета вещей.

Умные граждане для умных городов YYC - Крауд-анализ качества воздуха

8 октября 2016 г.[24] группа добровольцев (умных граждан) в Калгари собралась вместе, собрала свои собственные датчики, установила в своих домах и сформировала краудсорсинговую сеть датчиков качества воздуха. Все данные публично доступны через OGC SensorThings API.[25] Благодаря усилиям по распознаванию граждан количество датчиков качества воздуха в Калгари увеличилось с 3 до более чем 50.

Проект Smart Emission в Неймегене, Нидерланды

Умная эмиссия[26] это проект мониторинга качества воздуха в городе Неймеген, Нидерланды. В рамках проекта было развернуто несколько датчиков качества воздуха по всему городу. Данные публикуются с использованием открытых стандартов, включая OGC SensorThings API. Частью проекта является движок ETL с открытым исходным кодом для загрузки данных датчиков проекта в OGC SensorThings API.[27]

Панель управления SensorThings

Этот приборная панель обеспечивает простую в использовании визуализацию на стороне клиента данных датчиков Интернета вещей с серверов, совместимых с OGC SensorThings API. На панели управления можно расположить и настроить различные типы виджетов. Это веб-приложение, которое можно встроить в любой веб-сайт. Живая демонстрация доступна на страница проекта.https://github.com/SensorThings-Dashboard/SensorThings-Dashboard

GOST Dashboard v2

GOST Dashboard v2 - это библиотека пользовательских HTML-элементов (веб-компонентов) с открытым исходным кодом, поддерживающая SensorThings API. Эти элементы облегчают разработку HTML-приложений, интегрирующих функции и данные из сервисов, совместимых с SensorThings API. Компоненты разработаны с Predix-UI и Полимер.


Сравнение OGC SensorThings API и OGC Sensor Observation Services

SensorThings API предоставляет функции, аналогичные OGC. Служба наблюдения за датчиками, спецификация OGC, утвержденная в 2005 году. Обе стандартные спецификации относятся к OGC Включение Sensor Web стандартный люкс. В следующей таблице приведены технические различия между двумя спецификациями.[28]

API OGC SensorThingsOGC Служба наблюдения за датчиками (SOS)
КодированиеJSONXML
Архитектурный стильРесурсо-ориентированная архитектураСервис-Ориентированная Архитектура
ПривязкаОТДЫХМЫЛО
Вставка новых датчиков или наблюденийHTTP POST (например, CRUD )с использованием специальных интерфейсов SOS, например, RegisterSensor (), InsertObservation ()
Удаление существующих датчиковHTTP УДАЛИТЬс использованием специальных интерфейсов SOS, то есть DeleteSensor ()
Пагинация$ top, $ skip, $ nextLinkНе поддерживается
Pub / Sub ПоддерживатьMQTT и расширение SensorThings MQTTНе поддерживается
Обновление свойств существующих датчиков или наблюденийHTTP-ПАТЧ и JSON-ПАТЧНе поддерживается
Удаление наблюденийHTTP УДАЛИТЬНе поддерживается
Связанные данные поддерживатьJSON-LDНе поддерживается
Вернуть только те свойства, которые выбрал клиент$ selectНе поддерживается
Возврат нескольких объектов O&M (например, FeatureOfInterest и Observation) в одном запросе / ответе$ развернутьНе поддерживается

Ссылки

  1. SensorThings API - GitHub
  2. Презентация: Управляйте подключенными приложениями с помощью OGC SensorThings API (FOSS4G)
  3. Глава: Сопоставление API OGC SensorThings с промежуточным программным обеспечением OpenIoT
  4. Руководство в YouTube: Начало работы, серия # 1, Учебное пособие по SensorThings, серия # 2 и Учебное пособие по SensorThings, серия № 3
  5. Заявление: SensorThings Детская площадка позволяет заинтересованным людям и организациям экспериментировать с системой SensorThings с помощью удобного пошагового процесса.

Рекомендации

  1. ^ "OGC SensorThings API". Открытый геопространственный консорциум. Получено 2018-02-20.
  2. ^ «OGC требует общественного обсуждения стандарта SensorThings API для Интернета вещей | OGC». www.opengeospatial.org. Получено 2016-01-26.
  3. ^ «Техническая спецификация D3.2 - SensorThings API - зондирование». www.itu.int. Получено 2019-07-17.
  4. ^ «OGC ищет общественный комментарий к кандидатскому стандарту SensorThings API Part 2 - Tasking Core для использования в Интернете вещей | OGC». www.opengeospatial.org. Получено 2018-02-21.
  5. ^ «Справочник по API». www.sensorup.com. Получено 2016-01-26.
  6. ^ а б Лян, Стив; Хуанг, Чжи-Юань; Халафбейги, Таня, ред. (2016-07-26). API OGC® SensorThings, часть 1: зондирование.
  7. ^ "Модель данных SensorThings". ogc-iot.github.io. Получено 2016-01-26.
  8. ^ tsbmail. «Y.2060: Обзор Интернета вещей». www.itu.int. Получено 2016-01-26.
  9. ^ а б «ISO 19156: 2011 - Географическая информация - Наблюдения и измерения». www.iso.org. Получено 2016-01-26.
  10. ^ а б Лян, Стив; Халафбейги, Таня, ред. (2019-01-08). API OGC® SensorThings, часть 2: Ядро задач.
  11. ^ "Язык модели датчика (SensorML) | OGC". www.opengeospatial.org. Получено 2018-02-21.
  12. ^ Шааф, Хильке ван дер; Херцог, Рейнхард (01.01.2015). Жарко, Ивана Поднар; Припужич, Крешимир; Серрано, Мартин (ред.). Сопоставление API OGC SensorThings с промежуточным программным обеспечением OpenIoT. Конспект лекций по информатике. Издательство Springer International. С. 62–70. Дои:10.1007/978-3-319-16546-2_6. ISBN  9783319165455.
  13. ^ «OGC объявляет об успешном завершении пилотного проекта по обмену информацией об управлении инцидентами в Интернете».
  14. ^ "Пилотный проект S&T по Интернету вещей демонстрирует практическое'". 2016-01-25. Получено 2016-02-14.
  15. ^ "Whisker, проектное предложение Eclipse". 2016-03-11. Получено 2016-03-24.
  16. ^ "Геодан / гост". GitHub. Получено 2016-06-30.
  17. ^ «ФраунгоферIOSB / FROST-Сервер». GitHub. Получено 2018-07-04.
  18. ^ «ФраунгоферIOSB / FROST-Клиент». GitHub. Получено 2018-07-04.
  19. ^ "SensorThings Highchart и DataTable (HcDT) | SensorUp". www.sensorup.com. Получено 2016-08-31.
  20. ^ "mozilla-sensorweb / sensorthings". GitHub. Получено 2017-03-05.
  21. ^ 52Север / sensorweb-server-sta, Инициатива 52 ° North для Geospatial Open Source Software GmbH, 2020-11-17, получено 2020-11-24
  22. ^ "Пресс-релиз: S&T, промышленность, партнеры респондентов по оценке технологий". Департамент внутренней безопасности. 2019-06-10. Получено 2019-07-17.
  23. ^ «Справочник по интеграции NGFR». Департамент внутренней безопасности. 2018-02-06. Получено 2019-07-17.
  24. ^ «Пилот датчика Калгари поможет вам спланировать пробежку с наилучшим качеством воздуха | Новости метро». metronews.ca. Получено 2016-11-04.
  25. ^ «Качество воздуха в Калгари». calgary-air.sensorup.com. Получено 2016-11-04.
  26. ^ авторы, Just van den Broecke - оригинал Geonovum: Марк Отто, Джейкоб Торнтон и Bootstrap. «Умная эмиссия». data.smartemission.nl. Получено 2016-11-04.
  27. ^ "Геоновум / умная миссия". GitHub. Получено 2016-11-04.
  28. ^ «Сравнение SensorThings API и Sensor Observation Service». Получено 2016-02-29.