사물 설명

Thing Description
사물 설명
ThingDescription
최신 버전의 로고, Thing Description
파일 이름 확장명
.jsontd, .nf.json, .nf.jsonld
인터넷 미디어 유형
애플리케이션/프로토콜+json
개발자W3C
초기 릴리즈2020년 4월 9일
형식 유형제이슨-엘드
표준W3C 웹 오브 사물
오픈 포맷?
웹사이트https://www.w3.org/TR/wot-thing-description/

Thing Description(TD)(또는 W3C WoT Thing Description(TD))사물인터넷(IoT)을 위한 JSON 기반 표현 형식을 가진 로열티 없는 개방형 정보 모델이다.TD는 제공된 데이터 모델 및 기능, 프로토콜 사용 및 추가 메타데이터를 통해 IoT 기기 또는 서비스의 기능을 설명할 수 있는 통일된 방법을 제공한다.Thing Description을 사용하면 IoT 기기 및 그 기능을 IoT 애플리케이션에 통합하는 복잡성을 줄일 수 있다.[1]

TD는 W3C의 국제표준기구의 WoT(Web of Things) 이니셔티브에서 비롯된 것으로 IoT의 상호운용성을 높이려는 의도가 있다.[2]2020년 4월부터 Thing Description[3] W3C 권장사항이다.

원칙

Thing Description의 주요 원칙은 IoT 장치/사물에 대해 사람이 판독할 수 있고 기계로 해석할 수 있는 인터페이스 설명을 제공하는 것이다.이러한 맥락에서 WoT Thing Description은 IoT에 어떤 index.html을 웹 사이트에 제공하는가? 물리적 또는 가상 Thing/기기의 진입점으로 간주할 수 있다.[4]Thing Description은 특정 통신 프로토콜에만 국한되지 않고 WoT 바인딩 템플릿이라는 프레임워크를 제공한다.[5]그러한 프로토콜 바인딩은 MQTT, HTTP, CoAP, Modbus 또는 OPC UA와 같은 특정 IoT 프로토콜의 구체적인 메시지에 대한 상호 작용 가능성의 매핑을 정의한다.

WoT Thing Description은 속성, 행동 및 이벤트라는 세 가지 종류의 상호작용을 정의한다.

속성

IoT 장치의 상태를 표시하는 상호 작용 제공성.그런 다음 이 상태를 검색(읽기)하고 선택적으로 업데이트(쓰기)할 수 있다.또한 기기는 변경 후 새로운 상태를 눌러 속성을 관측할 수 있도록 선택할 수 있다.

액션

상태를 조작하거나(예: 램프를 켜거나 끄는 경우) 장치에 프로세스를 트리거하는 IoT 장치의 기능을 호출할 수 있는 인터랙션 어베넌스(예: 시간이 지남에 따라 램프를 어둡게 하는 경우)

이벤트

이벤트 소스를 설명하는 인터랙션 제공, 이벤트 데이터를 이벤트 가입자에게 비동기적으로 푸시(예: 과열 경보)한다.

구성 요소 및 표준 기술

WoT Thing Description components: Context Extension Framework, Security Framework, Things Relation Definitions, WoT Interaction Model (containing Properties, Actions and Evens), Data Model, Binding Templates.
그림 1. WoT Thing Description 구성 요소

일반적으로 Thing Description은 기존의 인터넷 및 웹 표준을 재사용하고 의존하도록 설계되었으며, 여기에는 다음이 포함된다.

  • 직렬화:TD 정보 모델의 JSON 직렬화는 JSON-LD 1.1의 구문에 맞추어 조정된다.[6] JSON-LD는 Schema.org과 같은 추가적인 (예: 도메인별) 의미론들로 문맥 확장의 기회를 열고 Thing Description 인스턴스를 풍부하게 한다.또한 IoT 애플리케이션의[7] 검색 시나리오와 같은 관련 정보의 추출과 이해를 지원한다.
  • 보안:Thing Description에는 OAuth2 또는 Digest Access Authentication과 같은 기존 보안 체계를 따르도록 메타데이터를 제공할 수 있는 프레임워크가 함께 제공된다.[8]Thing Description의 컨텍스트 확장 개념으로 인해 특정 보안 체계를 가져올 수 있다.
  • 연결 중:사물은 다른 사물에 대한 참조를 가지고 있거나 더 많은 정보와 연결하기를 좋아할 수 있다.그러한 종류의 관계를 정의하기 위해 Thing Description은 잘 알고 있는 Web Linking[9] 개념에 의존한다.
  • 교호작용:사물의 제공된 데이터 및/또는 기능은 해당 상호 작용 제공 특성, 작용 및 이벤트에 할당된다.
  • 데이터 스키마:교환할 수 있는 Thing의 데이터를 모델링하기 위해 JSON 스키마의[10] 개념이 Thing Description에 내장되어 있다.
  • 바인딩:바인딩 템플릿은 Thing의 속성, 작업 및 이벤트에 대한 특정 프로토콜과 직렬화 방법을 정의한다.프로토콜 식별 및 주소 지정 방법 URI 식별자가[11] 사용된다.데이터 스키마에 의해 지정된 페이로드의 직렬화 인코딩(예: JSON, CBOR, XML, Efficient XML Interchange)을 알리는 경우 미디어 유형[12] 할당이 Thing Description에 적용된다.

사물 설명 예제

아래는 JSON-LD 형식으로 직렬화된 TD의 예로서, 하나의 속성, 하나의 동작, 하나의 이벤트를 가지고 있다.이 TD로 대표되는 IoT 장치는 HTTP 프로토콜을 사용하지만 TD는 아래 예와 같이 URI 방식으로 모든 프로토콜을 대표할 수 있다.

{     "@context": "https://www.w3.org/2019/wot/td/v1",     "id": "urn:dev:ops:32473-WoTLamp-1234",     "title": "MyLampThing,     "보안 정의": {         "basic_sc": {"scheme": "기본", "인":"header"}     },     "보안": ["basic_sc"],     "properties": {         "상태" : {             "형식": "끈",             "forms": [{                 "흐레프": "https://mylamp.example.com/status",                 "htv:methodName":"GET"             }]         }     },     "행동": {         "toggle" : {             "forms": [{                 "흐레프": "https://mylamp.example.com/toggle",                 "htv:methodName":"포스트"             }]         }     },     "events":{         "overheating":{             "데이터": {"형식": "끈"},             "forms": [{                 "흐레프": "https://mylamp.example.com/oh",                 "htv:methodName":"GET",                 "하위 프로토콜": "롱폴"             }]         }     } } 

TD는 필립스 휴 램프의 단순한 버전이라고 생각할 수 있는 인터넷 연결 램프를 대표한다.

이 TD 예를 통해, 고객은 타이틀 상태(10-16행)에 대한 하나의 속성 제공이 존재한다는 것을 알고 있다.또한 URI에 대한 HTTP GET 요청으로 이 속성을 읽을 수 있다는 정보가 13-14행으로 제공된다. 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,     "보안 정의": {         "nosec_sc": {"scheme": "nosec"}     },     "보안": ["nosec_sc"],     "properties": {         "상태" : {             "형식": "끈",             "forms": [{                 "흐레프": "mqtt:///mylamp.example.com/status",                 "mqv:controlPacketValue": "Subscribe"             }]         }     },     "행동": {         "toggle" : {             "forms": [{                 "흐레프": "mqtt:///mylamp.example.com/toggle",                 "mqv:controlPacketValue": "게시"             }]         }     },     "events":{         "overheating":{             "데이터": {"형식": "끈"},             "forms": [{                 "흐레프": "mqtt:///mylamp.example.com/oh",                 "mqv:controlPacketValue": "Subscribe"             }]         }     } } 

지난 TD와 달리, 여기 양식은 WoT 바인딩 템플릿에서 지정한 MQTT 프로토콜을 포함한다.좀 더 구체적으로, 17, 25 및 34행은 제공권을 사용하기 위해 어떤 메시지 유형을 사용해야 하는지를 설명한다.예를 들어 과열 이벤트를 관찰하기 위해 HTTP GET와 롱폴 서브 프로토콜 대신 클라이언트가 MQTT 프로토콜을 사용하여 이 이벤트에 가입할 수 있다.게다가, MQTT 프로토콜이 있는 WoT 장치는 출판사와 구독자 둘 다 될 수 있다.속성 및 이벤트 제공의 경우 값을 게시하는 반면, 조치 제공의 경우 다른 MQTT 출판사가 이러한 주제에 게시함으로써 트리거할 수 있는 액션 주제에 구독하는 것이다.

구현

Thing Description 편집 및 검증 도구

  • 이클립스 에디{TD}or:[13] W3C Thing Description 및 Thing Model을 단순하게 설계하기 위한 도구
  • TD 플레이그라운드:[14]Thing Description 인스턴스 검증을 위한 플레이그라운드

Thing Description을 사용한 구현

  • Eclipse Node-wot:[15] Node.js에서 W3C WoT 기술의 구현
  • WoTify:[16] 사물 설명을 지원하는 WoT 구현 라이브러리
  • Wot-py:[17] Python의 W3C WoT 기술 구현
  • 노드-RED 노드-젠:[18] 노드-RED의 사물 설명에 기반한 노드 생성
  • SANE:[19] 자바에서 W3C WoT 기술의 구현

참고 항목

참조

  1. ^ "Web of Things over IoT and Its Applications". InfoQ. Retrieved 2020-12-03.
  2. ^ "Solution for IoT Interoperability – W3C Web of Things". DATAVERSITY - Data Education for Business and IT Professionals. 13 April 2020. Retrieved 2020-04-13.
  3. ^ Käbisch, Sebastian; Kamiya, Takuki; McCool, Michael; Charpenay, Victor; Kovatsch, Matthias (2020-04-09). "Web of Things (WoT) Thing Description". www.w3.org. Archived from the original on 2020-04-09. Retrieved 2020-04-17.
  4. ^ "Solution for IoT Interoperability - W3C Web of Things (WoT)". W3C. W3C Press. Retrieved 22 December 2020.
  5. ^ Koster, Michael; Korkan, Ege (2019-01-30). "Web of Things (WoT) Binding Templates". www.w3.org. Archived from the original on 2020-01-30. Retrieved 2020-04-17.
  6. ^ Kellogg, Gregg; Champin, Pierre-Antoine; Longley, Dave (2020-07-16). "JSON-LD Syntax 1.1".
  7. ^ Serena, Fernando; Poveda-Villalón, María; García-Castro, Raúl (22 February 2018). Semantic Discovery in the Web of Things. Cham, Switzerland: Springer. doi:10.1007/978-3-319-74433-9_2. ISBN 978-3-319-74433-9.
  8. ^ Ed., R. Shekh-Yusef; Ahrens, D.; Bremer, S. "HTTP Digest Access Authentication". IETF. Retrieved 2020-09-01.
  9. ^ Nottingham, M. (September 2017). "Web Linking". IETF.
  10. ^ Wright, Austin; Andrews, Henry; Luff, Geraint. "JSON Schema Validation: A Vocabulary for Structural Validation of JSON". IETF.
  11. ^ Berners-Lee, T.; Fielding, R.; Masinter, L. "Uniform Resource Identifier (URI): Generic Syntax". IETF.
  12. ^ Freed, N.; Borenstein, N. "Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types". IETF.
  13. ^ Eclipse edi{TD}or project, Eclipse Foundation, 2020-12-04
  14. ^ Thing Description Playground, 2020-11-14
  15. ^ thingweb.node-wot. W3C Web of Things implementation on NodeJS., Eclipse Foundation, 2019-11-14, retrieved 2019-11-17
  16. ^ Korkan, Ege; Hassine, Hassib Belhaj; Schlott, Verena Eileen; Käbisch, Sebastian; Steinhorst, Sebastian (2019-09-07). "WoTify: A platform to bring Web of Things to your devices". arXiv:1909.03296 [cs.DC].
  17. ^ Mangas, Andrés García (2020-01-08), Experimental implementation of a W3C Web of Things runtime: agmangas/wot-py, retrieved 2020-01-15
  18. ^ Toumura, Kunihiko (2019-05-21), GitHub - k-toumura/node-red-nodegen, retrieved 2020-01-15
  19. ^ "Java-Implementation für das Web of Things veröffentlicht". sane.city. Retrieved 2020-01-28.