2. 사물인터넷 간단한 유즈케이스
<Source: http://www.belkin.com/us/Products/home-automation/c/wemo-home-automation/ >
3. 사물인터넷 제품 개발을 위해 무엇이 필요한가?
• 뛰어난 사물인터넷 기기간 상호운영성 ?
• 빠른 사물인터넷 제품 개발 ?
• 최신의 사물인터넷 기술 활용 ?
• 다양한 하드웨어 / 소프트웨어 플랫폼 지원 ?
4. IoTivity 소개 (1/2)
• 목적: 미래 IoT 세상에 출현할 수십억 개의 디바이스를 다양
한 운영체제와 네트워크 프로토콜에 상관없이 자연스럽게
연결할 수 있는 오픈소스 소프트웨어 프레임워크 개발
• OIC 표준 기반의 사물인터넷 미들웨어 오픈소스 기술
– 사물인터넷 개발자를 위한 상위 레벨 API 제공
– 리눅스 재단 운영
– 아파치 2.0 라이센스
5. IoTivity 소개 (2/2)
• Resource 기반 RESTful 아키텍처 모델
– CoAP 기반 非데몬 설계로 저사양, 저전력 기기 지원 용이
– 현실의 ‘Thing’을 Resource로 표현하며, CRUD & N 오퍼레
이션으로 동작
• 지원 소프트웨어 플랫폼: Ubuntu, Tizen, Android, iOS(?)
• 지원 하드웨어 플랫폼 (지속 확장): Arduino, Edison
9. IoTivity 아키텍처
Additional
Service
REST
Framework
Basic
Service
Resource
IoTivityFramework
Protocol Plugin
Manager
Software Sensor
Manager
Things
Manager
Notification
Manager
Control/Controllee
Manager(CM Ver.)
IoTivity Base 2
(C++ SDK)
(UD Ver.)
IoTivity Base 1
(C API Stack/Internal)
Resource Manager
(Registration, Discovery, Attribute GET/SET/OBSERVE)
ConnectivityOCSocket (Socket Abstraction)
JSON
Encoder/Decoder
OCCoAP (Transport)
OCStack
libcoap-4.1.1 ocrandom ocmalloc
Logger
Transport.
Protocol
UDP/IP TCP/IP (Future) Future PAN (Future)
<Source: ETRI 이혜선 박사>
10. IoTivity Resource API 스택
<Android*, iOS*, or Microsoft* Windows* 등 > <IoTivity Service 미지원>
고사양 기기를 위한 Resource API Stack 저사양 기기를 위한
Resource API Stack
13. IoTivity Protocol
• OIC Protocol
– CoAP(Constrained Application Protocol) 지원
– Wi-Fi, BT, BLE 지원
– 연내 ZigBee, Z-Wave 지원예정
– 추가로 Thread 지원 고려 중 (Thread는 ZigBee 프로파일 경쟁 기술)
• CoAP(Constrained Application Protocol)
– UDP 기반
– Multicast 지원 (IoTivity에서 Discovery 용도로만 사용)
– IETF(Internet Engineering Task Force) CoRE Working Group에서 표준
(RFC7252) 정의
14. IoTivity Resource 스택 지원 기능
• Resource registration (server)
• Resource discovery (client)
• Device discovery with filtering (client) – e.g. GET /oc/core?rt=light
• Property attributes (get/ set/ observe) (client / server)
• Resource tree (resources with sub-resources)
24. Protocol Plugin Manager
• Plugin 기반 프로토콜 확장 기능 제공하며 런타임에 필요한 프로토콜에
대한 .so 로딩
• Plugin은 특정한 Protocol(e.g. MQTT or AllSeen) 지원 형태나 특정한
Protocol을 쓰는 특정한 기기(e.g. AllSeen FAN or Philip Hue) 지원 형
태 모두 가능 (Plug-in 개발자의 선택)
<Source: SOSCON 2014 삼성전자 정진국 수석 발표자료>
26. Things Manager
• Thing의 그룹을 효과적으로 관리할 수 있는 기능 및 API 제공
– 그룹 생성, 조회, 수정, 삭제
– 그룹 상태나 디바이스 변경에 대한 Presence
– Action Set 생성, 조회, 수정, 삭제
<Source: SOSCON 2014 삼성전자 정진국 수석 발표자료>
27. 결 론
• 뛰어난 사물인터넷 기기간 상호운영성!
• 빠른 사물인터넷 제품 개발!
• 최신의 사물인터넷 기술 활용!
• 다양한 하드웨어 / 소프트웨어 플랫폼 지원!
메일링 리스트: iotivity-dev@lists.iotivity.org
28. IoTivity 오픈소스 개발에 참여하기
• Discuss on mailing list to get general consensus about approach
• Pull latest code
• Build on Your Supported Build Platform
• Develop feature or fix bug following IoTivity Coding Standards; ask
questions on mailing list as needed
• Submit to Gerrit for review
• Review and respond to reviewer comments
• Change accepted!
참고: https://wiki.iotivity.org/development_workflow