SensorThings API

SensorThings API
OGC SensorThings API - Part 1 감지
약어OGC STA
상태OGC 표준 구현 규격
년도시작2015
최신 버전1.0
편집자스티브 량(센서업), 치위안황(국립중앙대), 타니아 칼라프베이기(센서업)
기준 표준JSON, OGC/ISO 19156:2011 O&M
도메인오픈 지리공간 컨소시엄, 사물인터넷
웹사이트OGC SensorThings API Standard GitHub 페이지
OGC SensorThings API - Part 2 Tasking Core
약어OGC STA
상태OGC 표준 구현 규격
년도시작2018
최신 버전1.0
편집자스티브 량(센서업), 타니아 칼라프베이기(센서업)
기준 표준OGC SPS
도메인오픈 지리공간 컨소시엄, 사물인터넷
웹사이트OGC SensorThings API Standard GitHub 페이지
OGC SensorThings API - Part 2 Tasking 핵심 토론서
약어OGC STA
상태OGC 토론서
년도시작2018
최신 버전1.0
편집자스티브 량(센서업), 타니아 칼라프베이기(센서업), 칸 루오(칼가리 대학)
기준 표준OGC 센서Things
도메인오픈 지리공간 컨소시엄, 사물인터넷
웹사이트OGC SensorThings API Tasking Core 토론서 다운로드 페이지

SensorThings API[1] 웹을 통해 IoT 센싱 장치, 데이터 및 애플리케이션을 상호 연결하기 위한 개방형 통합 프레임워크를 제공하는 OGC(Open Geospatial Consortium) 표준이다.사물인터넷의 통사적 상호운용성의미적 상호운용성을 다루는 개방형 표준이다.기존 IoT 네트워킹 프로토콜CoAP, MQTT, HTTP, 6LowPAN을 보완한다.위에서 언급한 IoT 네트워킹 프로토콜은 서로 다른 IoT 시스템이 정보를 교환할 수 있는 기능을 다루는 반면, OGC SensorThings API는 서로 다른 IoT 시스템이 교환된 정보를 사용하고 이해할 수 있는 기능을 다루고 있다.OGC 표준으로서 센서Things API는 또한 기존의 공간 데이터 인프라 또는 지리 정보 시스템에 쉽게 통합할 수 있도록 한다.

OGC SensorThings API에는 (1) Part I - Sensing과 (2) Part II - Tasking의 두 부분이 있다.OGC SensorThings API Part I - Sensing은 2015년 6월 18일에 공개되었다.[2]OGC 기술위원회(TC)가 2015년 12월 3일 전자투표 시작을 승인하고, 2016년 2월 1일 센서Things API Part I - Sensing이 TC 투표를 통과한다.공식 OGC 표준 사양은 2016년 7월 26일 온라인에 게재되었다.2019년에는 센서Things API가 United Nation의 ITU-T 기술 사양으로도 발행되었다.[3]

OGC SensorThings API Part II - Tasking Core는 2018년 2월 20일에 공개되었고,[4] 2018년 6월 1일에 TC 투표를 통과하였다.SensorThings API Part II - Tasking Core의 공식 OGC 표준 사양은 2019년 1월 8일 온라인으로 발표되었다.

더 나은 개발자 경험을 제공하기 위해 2018년 12월 18일 SensorThings API Part II - Tasking Core Document Paper가 온라인에 게재되었다.Tasking Core 토론서에서는 SensorThings API Part II - Tasking Core를 어떻게 사용할 수 있는지 보여주는 15개의 JSON 예를 제공한다.

디자인

SensorThings API는 리소스 제약 IoT 기기와 웹 개발자 커뮤니티를 위해 특별히 설계되었다.REST 원칙, JSON 인코딩, OASIS OData 프로토콜 및 URL 규약을 따른다.또한 사용자/기기가 기기에서 업데이트를 게시하고 구독할 수 있는 MQTT 확장 기능을 갖추고 있으며, HTTP 이외에 CoAP를 사용할 수 있다.

SensorThings API 데이터 모델

SensorThings API의 기반은 ISO 19156(ISO/OGC 관찰측정)에 기반한 데이터 모델로서, 관찰에 대한 개념 모델과 관찰을 할 때 샘플링에 관련된 특징에 대해 정의한다.SensorThings의 맥락에서 특징은 사물, 센서(즉, O&M의 절차) 및 관심의 특징으로 모델링된다.그 결과, 센서Things API는 상호운용 가능한 관찰 초점 뷰를 제공하며, 이질적인 감지 시스템(예: 현장 센서 및 원격 센서) 간의 차이를 조정하는 데 특히 유용하다.

IoT 기기나 시스템은 물건으로 모델링된다.사물에는 임의의 위치 수(0개의 위치 포함)와 임의의 데이터스트림 수(0개의 데이터스트림 포함)가 있다.데이터스트림하나의 센서로 하나의 WarnedProperty를 관찰하며 센서에 의해 수집된 많은 관찰을 가지고 있다.관측치가 하나의 특정 특징Of를 관찰함흥미가 있다.O&M 기반 모델은 센서Things가 이기종 IoT 기기와 기기가 수집한 데이터를 수용할 수 있도록 했다.[5]

SensorThings API는 두 가지 주요 기능을 제공하며, 각 기능은 부품에 의해 처리된다.두 가지 프로파일은 감지 부품과 작업 부품이다.센싱 파트는 이질적인 IoT 센서 시스템에서 관찰 및 메타데이터를 관리하고 검색할 수 있는 표준 방법을 제공하며, 센싱 파트 기능은 OGC 센서 관찰 서비스와 유사하다.Tasking 파트는 센서나 액추에이터와 같은 작업 가능 IoT 장치의 파라미터화(Tasking이라고도 함)를 위한 표준 방법을 제공한다.작업 부품 기능은 OGC 센서 계획 서비스와 유사하다.센싱 파트는 ISO/OGC 관측측정(O&M) 모델을 기반으로 설계되었으며, 센서스 서비스에서 IoT 기기 및 애플리케이션이 CREATE, READ, UPDATE, DELETE(즉, HTTP POST, GET, Patch, DELETE) IoT 데이터 및 메타데이터를 만들 수 있다.

엔티티(리소스)

SensorThings API Part I - Sensing은 다음과 같은 리소스를 정의한다.SensorThings는 RESTful Web Service이므로 각 엔티티는 표준 HTTP 동사(POST, GET, Patch, DELETE)로 CREATE, READ, UPDATE 및 DELETE가 될 수 있다.[6][7]

  • Thing: 통신망에 식별되고 통합될 수 있는 물리적 세계(물리적 사물) 또는 정보 세계(가상 사물)의 객체.[8]
  • Locations: 관련된 사물 또는 사물을 찾으십시오.
  • HistoricalLocations: Set는 현재(즉, 마지막으로 알려진)와 Thing의 이전 위치 및 시간을 제공한다.
  • Datastream: 데이터스트림의 관찰 및 관찰 컬렉션은 동일한 관찰 속성을 측정하고 동일한 센서에 의해 생성된다.
  • ObservedProperty: 관찰의 현상을 지정한다.
  • Sensor: 재산가치의 추정치를 산출할 목적으로 재산이나 현상을 관측하는 기구
  • Observation:[9] 재산의 가치를 측정하거나 결정하는 행위
  • FeatureOfInterest: 관찰은 현상에 값을 할당하는 결과를 낳는다.그 현상은 특징의 속성이고, 후자는 FeatureOf이다.관찰에 대한 관심.[9]

SensorThings API Part II - Tasking Core는 위의 감지 리소스 외에도 다음과 같은 리소스를 정의한다.[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)",       "PhenomonTime": "2016-01-01T05:00:00.000Z",       "result": "-9",       "resultTime": 무효의,       "Datastream@iot.navisionLink": "http://example.org/v1.0/Observations(1)/Datastream",       "FeatureOf"Interest@iot.navisionLink": "http://example.org/v1.0/Observations(1)/FeatureOfInterest"     },     {       "@iot.id": 2,       "@iot.selfLink": "http://example.org/v1.0/Observations(2)",       "PhenomonTime": "2016-01-01T04:00:00.000Z",       "result": "-10",       "resultTime": 무효의,       "Datastream@iot.navisionLink": "http://example.org/v1.0/Observations(2)/Datastream",       "FeatureOf"Interest@iot.navisionLink": "http://example.org/v1.0/Observations(2)/FeatureOfInterest"     }   ] } 

데이터 배열 확장

네트워크를 통해 전송되는 데이터 크기를 줄이기 위해 센서Things API 데이터 어레이 확장을 통해 사용자는 여러 개의 관찰 엔티티를 요청하고 엔티티를 dataArray 형식으로 포맷할 수 있다.SensorThings 서비스가 dataArray 응답을 반환하면, 서비스 그룹은 Datastream 또는 MultiDatastream을 기준으로 Observation 엔티티를 그룹화하는데, 이는 동일한 Datastream 또는 동일한 MultiDatastream에 연결되는 Observation 엔티티가 하나의 DataArray에 집계됨을 의미한다.

데이터 어레이에 대한 요청 예제

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

데이터 배열 응답 예제

{   "가치": [     {       "Datastream@iot.navisionLink": "http://example.org/v1.0/Datastreams(1)",       "components": [         "id",         "PhenomonTime",         "resultTime",         "result"       ],       "dataArray@iot.count": 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의 상호운용성 "SensorThing API의 구현이 OpenIoT 미들웨어의 주요 개선이 될 것으로 판단된다. 그것은 OpenIoT에 표준화되고 정말로 사용하기 쉬운 센서 값을 제공할 것이다.이것은 간단한 자원 기반 인터페이스로 풍부한 의미 추론 서비스를 보완할 것이다. 그리고 일관된 데이터 모델 매핑은 사물 인터넷을 설명하는 공통적인 맥락을 제공한다."[12]

센서Things API의 효율성 센서Things API에 대한 종합적인 평가는 Jazayeri, Mohammad Ali, Steve HL Liang, Chih-Yuan Huang에 게재되어 있다. "사물인터넷을 위한 상호운용 가능한 4가지 개방형 표준의 구현평가" 센서 15.9(2015): 24343-24373.

인용문

센서Things API는 국토안보부 과학기술국장이 후원한 시범사업에서[13] 시연됐다.국토안보과학기술부 차관인 레지날드 브라더스 박사는 "단일 기술의 연통 한계를 제거하는 개방형 표준을 사용하여 오늘날 이러한 다양한 산업 센서를 통합할 수 있는 '실용 상태'에 대해 깊은 인상을 받았다.[14]"

OGC SensorThings API 규격

무료 및 오픈 소스 센서Things API 구현

수염

2016년 3월 센서업과 캘거리대 지오센서웹랩이 오픈소스 소프트웨어 사업 제안서를 이클립스재단에 제출해 승인을 받았다.이 프로젝트는 휘스커즈라고 불린다.[15]수염은 OGC SensorThings API 프레임워크다.자바스크립트 클라이언트와 IoT 게이트웨이 장치용 경량 서버(예: Rasberry Pi 또는 BeagleBone)를 보유한다.수염은 독점적인 정보 사일로가 지배하는 것과는 달리 건강하고 개방적인 IoT 생태계를 육성하는 것을 목표로 한다.수염은 IoT 개발자들의 크고 성장하는 세계를 위해 센서 Things 개발을 쉽게 하는 것을 목표로 한다.

고스트

GOST는[16] Geodan이 시작한 Go 프로그래밍 언어의 SensorThings API의 오픈 소스 구현이다.배포가 용이한 서버 소프트웨어와 자바스크립트 클라이언트를 포함하고 있다.현재(2016년 6월) 개발 중이지만 이미 첫 번째 버전을 내려받아 배치할 수 있다.소프트웨어는 Docker 또는 Go를 지원하는 모든 장치(예: Windows, Linux, Mac OS 및 Rasberry Pi)에 설치할 수 있다.기본적으로 센서 데이터는 Postgre에 저장됨SQL 데이터베이스.

프로스트

PREST-Server는[17] OGC SensorThings API의 오픈 소스 서버 구현이다.PREST-Server는 모든 확장을 포함한 전체 사양을 구현한다.자바로 작성되어 톰캣이나 와일드플라이에서 실행이 가능하며 도커 이미지로도 이용 가능하다.그것의 많은 기능들 중에는 문자열 또는 UUID 기반 엔티티 ID를 사용하는 기능이 있다.

PREST-Client는[18] SensorThings API 호환 서버와 통신하기 위한 Java 클라이언트 라이브러리 입니다.

SensorThings HcDT 차트 작성 SDK

SensorThings HcDT는[19] OGC SensorThings API를 위한 자바스크립트 차트 작성 라이브러리다.오픈 소스[clarification needed] Highcharts 라이브러리와 DataTables를 기반으로 한다.개발자가 OGC SensorThings API 서비스에서 데이터스트림에 접속할 수 있는 프런트 엔드 차트 작성 라이브러리로서, 웹 애플리케이션용 차트, 테이블 또는 대시보드 위젯에 센서 관찰을 표시할 수 있다.

모질라 STA

모질라는 OGC SensorThings API의 노드 구현을 개발했다.[20]

52°북서 STA

52N 센서ThingsAPI는[21] OGC SensorThings API의 오픈 소스 구현이다.OGC 센서 관찰 서비스를 구현하는 52N SOS와의 상호운용성, 사용자 정의 가능한 데이터베이스 매핑 및 여러 편의 확장 등이 핵심 특징이다.도커 컨테이너, Apache Tomcat 내부 또는 독립 실행형 애플리케이션으로 배포할 수 있다.

응용 프로그램 예

미 국토안보부 S&T 흔들림 퓨리 작전 실험

2019년에 DHS 차세대 최초 대응 프로그램용 Shift Fury 운영 실험은[22] 부분적인 구조 붕괴와 HAZM을 유발하는 지진 시나리오를 묘사한다.경기장에서 AT 누출.OGC SensorThings API는 여러 센서를 상호 연결하고 IoT가 가능한 실시간 상황 인식을 제공하는 표준 인터페이스로[23] 사용된다.

스마트 시티 YYC를 위한 스마트 시민 - 군중 소싱 공기 품질 감지

2016년 10월 8일 캘거리의 자원봉사자(스마트 시민)들이 한자리에 모여 자체 센서를 조립하고, 집에 설치하고, 군중 소싱 방식의 공기질 센서 네트워크를 구성했다.[24]모든 데이터는 OGC SensorThings API를 통해 공개적으로 이용할 수 있다.[25]이 시민 감지 노력은 캘거리의 공기질 센서의 수를 3개에서 50개 이상으로 늘렸다.

NL Nijmegen의 스마트 배출 프로젝트

스마트 배출은[26] NL주 니즈메겐시의 대기질 모니터링 사업이다.그 프로젝트는 도시 전역에 여러 개의 공기 품질 센서를 배치했다.데이터는 OGC SensorThings API를 포함한 개방형 표준으로 발행된다.프로젝트의 일부는 OGC SensorThings API에 프로젝트 센서 데이터를 로드하기 위한 오픈 소스 ETL 엔진이다.[27]

SensorThings 대시보드

대시보드는 OGC SensorThings API 호환 서버의 사물인터넷(Internet-of-Things) 센서 데이터를 사용하기 쉬운 클라이언트 측 시각화 기능을 제공한다.대시보드에 다양한 유형의 위젯을 배치하고 구성할 수 있다.그것은 웹 어플리케이션이고 어떤 웹사이트에도 내장될 수 있다.프로젝트 페이지에서 라이브 데모를 이용할 수 있다.https://github.com/SensorThings-Dashboard/SensorThings-Dashboard

GOST 대시보드 v2

GOST Dashboard v2는 SensorThings API를 지원하는 사용자 지정 HTML 요소(웹 구성요소)의 오픈 소스 라이브러리다.이러한 요소들은 SensorThings API 호환 서비스의 기능과 데이터를 통합하는 HTML 응용 프로그램의 개발을 촉진한다.이 부품들은 Predix-UI폴리머로 개발되었다.

AFarCloud 프로젝트 OGC Connector

이 커넥터는 OGC 호환 데이터 소스와 Horizon 2020 ECSEL 프로젝트 AFarCloud에서 개발된 의미 미들웨어[28] 간의 상호운용성을 가능하게 한다.도커 기반 구축이 가능한 모듈형 자바 애플리케이션으로, OGC SensorThings API 1.0 구현 표준에 따라 구현된다.

OGC SensorThings API와 OGC 센서 관찰 서비스 비교

SensorThings API는 2005년에 승인된 OGC 사양인 OGC 센서 관찰 서비스와 유사한 기능을 제공한다.두 표준 사양은 모두 OGC 센서 웹 활성화 표준 제품군 아래에 있다.다음 표에는 두 규격 간의 기술적 차이가 요약되어 있다.[29]

OGC SensorThings API OGC 센서 관찰 서비스(SOS)
인코딩 제이슨 XML
건축 스타일 자원 지향 아키텍처 서비스 지향 아키텍처
바인딩 쉬다 비누
새 센서 또는 관찰 삽입 HTTP POST(예: CRUD) SOS별 인터페이스 사용(예: RegisterSensor()), InsertObservation()
기존 센서 삭제 HTTP 삭제 SOS별 인터페이스 사용(예: DeleteSensor())
페이지 지정 $top, $skip, $nextLink 지원되지 않음
퍼브/서브 지원 MQTT 및 센서Things MQTT 확장 지원되지 않음
기존 센서 또는 관찰의 속성 업데이트 HTTP 패치 및 JSON 패치 지원되지 않음
관찰 삭제 HTTP 삭제 지원되지 않음
연결된 데이터 지원 제이슨-엘드 지원되지 않음
클라이언트가 선택한 속성만 반환 달러 선택 지원되지 않음
여러 O&M 엔티티 반환(예: FeatureOf)하나의 요청/응답에서 관심 및 관찰) 달러화 지원되지 않음

링크

  1. SensorThings API - GitHub
  2. 프레젠테이션:OGC SensorThings API(FOSS4G)를 사용하여 연결된 응용 프로그램 감지
  3. 장: OGC SensorThings API를 OpenIoT 미들웨어에 매핑
  4. YouTube의 자습서: 시작 시리즈 #1, 센서스Things 자습서 시리즈 #2, 센서스Things 자습서 시리즈 #3
  5. 응용 프로그램:센서스 플레이그라운드는 관심 있는 사람들과 단체들이 친근한 단계별 과정을 통해 센서스 시스템으로 실험할 수 있도록 한다.

참조

  1. ^ "OGC SensorThings API". Open Geospatial Consortium. Retrieved 2018-02-20.
  2. ^ "OGC seeks public comment on SensorThings API standard for Internet of Things OGC". www.opengeospatial.org. Retrieved 2016-01-26.
  3. ^ "Technical Specification D3.2 - SensorThings API - Sensing". www.itu.int. Retrieved 2019-07-17.
  4. ^ "OGC seeks public comment on 'SensorThings API Part 2 – Tasking Core' Candidate Standard for use in the Internet of Things OGC". www.opengeospatial.org. Retrieved 2018-02-21.
  5. ^ "API Reference". www.sensorup.com. Retrieved 2016-01-26.
  6. ^ a b Liang, Steve; Huang, Chih-Yuan; Khalafbeigi, Tania, eds. (2016-07-26). OGC® SensorThings API Part 1: Sensing.
  7. ^ "SensorThings Data Model". ogc-iot.github.io. Retrieved 2016-01-26.
  8. ^ tsbmail. "Y.2060 : Overview of the Internet of things". www.itu.int. Retrieved 2016-01-26.
  9. ^ a b "ISO 19156:2011 - Geographic information -- Observations and measurements". www.iso.org. Retrieved 2016-01-26.
  10. ^ a b Liang, Steve; Khalafbeigi, Tania, eds. (2019-01-08). OGC® SensorThings API Part 2: Tasking Core.
  11. ^ "Sensor Model Language (SensorML) OGC". www.opengeospatial.org. Retrieved 2018-02-21.
  12. ^ Schaaf, Hylke van der; Herzog, Reinhard (2015-01-01). Žarko, Ivana Podnar; Pripužić, Krešimir; Serrano, Martin (eds.). Mapping the OGC SensorThings API onto the OpenIoT Middleware. Lecture Notes in Computer Science. Springer International Publishing. pp. 62–70. doi:10.1007/978-3-319-16546-2_6. ISBN 9783319165455.
  13. ^ "OGC announces successful completion of Incident Management Information Sharing IoT Pilot".
  14. ^ "S&T's Internet of Things Pilot Demonstrates 'State of the Practical'". 2016-01-25. Retrieved 2016-02-14.
  15. ^ "Whisker, an Eclipse project proposal". 2016-03-11. Retrieved 2016-03-24.
  16. ^ "Geodan/gost". GitHub. Retrieved 2016-06-30.
  17. ^ "FraunhoferIOSB/FROST-Server". GitHub. Retrieved 2018-07-04.
  18. ^ "FraunhoferIOSB/FROST-Client". GitHub. Retrieved 2018-07-04.
  19. ^ "SensorThings Highchart and DataTable (HcDT) SensorUp". www.sensorup.com. Retrieved 2016-08-31.
  20. ^ "mozilla-sensorweb/sensorthings". GitHub. Retrieved 2017-03-05.
  21. ^ 52North/sensorweb-server-sta, 52°North Initiative for Geospatial Open Source Software GmbH, 2020-11-17, retrieved 2020-11-24
  22. ^ "News Release: S&T, Industry, Responders Partner to Evaluate Tech". Department of Homeland Security. 2019-06-10. Retrieved 2019-07-17.
  23. ^ "NGFR Integration Handbook". Department of Homeland Security. 2018-02-06. Retrieved 2019-07-17.
  24. ^ "Calgary sensor pilot helps you plan a run with the best air quality Metro News". metronews.ca. Retrieved 2016-11-04.
  25. ^ "Air Quality in Calgary". calgary-air.sensorup.com. Retrieved 2016-11-04.
  26. ^ contributors, Just van den Broecke - Geonovum original: Mark Otto, Jacob Thornton, and Bootstrap. "Smart Emission". data.smartemission.nl. Retrieved 2016-11-04. {{cite web}}: last=일반 이름 포함(도움말)
  27. ^ "Geonovum/smartemission". GitHub. Retrieved 2016-11-04.
  28. ^ Kepka, Michal; Černý, Lukáš; Brada, Premek (November 2020). "An Open System for Monitoring Environmental Phenomena (Poster abstract)". Proceedings of the 18th ACM Conference on Embedded Networked Sensor Systems (SenSys '20). ACM. doi:10.1145/3384419.3430443.
  29. ^ "Comparison of SensorThings API and Sensor Observation Service". Retrieved 2016-02-29.