KR101552768B1 - 사물 정보의 가상객체 생성을 위한 인스턴스 프로파일 스키마를 이용한 서비스 방법 및 시스템 - Google Patents

사물 정보의 가상객체 생성을 위한 인스턴스 프로파일 스키마를 이용한 서비스 방법 및 시스템 Download PDF

Info

Publication number
KR101552768B1
KR101552768B1 KR1020130110312A KR20130110312A KR101552768B1 KR 101552768 B1 KR101552768 B1 KR 101552768B1 KR 1020130110312 A KR1020130110312 A KR 1020130110312A KR 20130110312 A KR20130110312 A KR 20130110312A KR 101552768 B1 KR101552768 B1 KR 101552768B1
Authority
KR
South Korea
Prior art keywords
instance
information
message
interface
network adapter
Prior art date
Application number
KR1020130110312A
Other languages
English (en)
Other versions
KR20150023198A (ko
Inventor
최준균
양진홍
박효진
Original Assignee
한국과학기술원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국과학기술원 filed Critical 한국과학기술원
Publication of KR20150023198A publication Critical patent/KR20150023198A/ko
Application granted granted Critical
Publication of KR101552768B1 publication Critical patent/KR101552768B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions

Abstract

사물 정보의 가상객체 생성을 위한 인스턴스 프로파일 스키마를 이용한 서비스 방법 및 시스템이 개시된다. IoT(Internet of Things) 환경에서의 서비스 방법은, 사물(Thing)에 대한 정보의 가상화 오브젝트(Virtualization Object)를 생성하기 위한 인스턴스 프로파일 스키마를 통해 네트워크 어댑터에 대한 정보를 획득하는 단계 및 상기 네트워크 어댑터에 대한 정보에 기초하여 상기 사물의 메시지를 수신하여 대응하는 인스턴스로 전달하거나 또는 상기 인스턴스의 메시지를 상기 사물로 전달하는 단계를 포함할 수 있다.

Description

사물 정보의 가상객체 생성을 위한 인스턴스 프로파일 스키마를 이용한 서비스 방법 및 시스템{SEVICE METHOD AND SYSTEM USING INSTANCE PROFILE FOR CREATING VIRTUALIZATION OBJECT OF THINGS INFORMATION}
본 발명의 실시예들은 사물 정보의 가상객체 생성을 위한 인스턴스 프로파일 스키마를 이용한 서비스 방법 및 시스템에 관한 것이다.
IoT(Internet of Things)는 기존 USN(Ubiquitous Sensor Network)나 M2M(Machine to Machine)에서 진화된 형태를 띄고 있는데, 기존 M2M이 통신장비(end-device)와 사람과의 통신이 주 목적이었다면, IoT는 사물의 범위를 넓혀 우리가 흔히 볼 수 있는 전화기, 책, 온도계 등의 사물을 사람과 통신이 가능하도록 해준다는 것이다. 즉, IoT는 인간과 사물, 서비스의 세 가지 분산된 환경 요소에 대해, 인간의 명시적인 개입 없이도 상호 협력적으로 센싱, 네트워킹, 정보 처리 등 지능적 관계를 형성하는 사물 공간 연결망을 의미할 수 있다.
이러한 IoT 이외에도, WoT(Web of Things)나 WoO(Web of Objects)와 같이 다양한 개념과 기술들이 연구, 개발되고 있다. 이러한 개념과 기술들의 발전 및 확산으로 인해, 사용자들이 손쉽게 인터넷에 연결 가능한 기기들(가젯(gadget) 디바이스, 센서 디바이스, 액츄에이터(actuator) 등)의 사용이 늘어날 것으로 예상된다.
특히, 최근 들어 다양한 형태의 웹 연동형 가젯 디바이스들이 출시되고 있으며, 대다수의 센서 디바이스들의 경우, 웹을 통한 제어 및 모니터링 기능을 제공하고 있다. 또한, 웹을 통한 제어 기능을 제공하기 위한 단말들은, 단말 자체에 웹 서버 기능이 내장되거나 또는 온라인 상의 웹 서비스를 통해 제어될 수 있는 기능을 포함하고 있다.
그러나, 현재는 상술한 기술들, 기기들 또는 서비스들이 개별적으로 관리되고 있는 실정이라, 사용자의 불편함이 따르는 문제점이 있다. 예를 들어, 사용자는 다수의 기기들이 사용자 주위에 존재하나 개별적인 접근 경로(일례로, URL)를 통해 각각의 디바이스들을 제어해야 하는 불편함이 있다. 기기 자체가 웹 접근 기능(서버 기능)을 제공하는 경우에는 개별적인 기기의 접근을 위한 네트워크 연동 및 URL(IP 주소)가 필요하며, 전용 웹 서비스를 통해 서비스가 제공되는 경우에는 서비스별 접근 권 생성 및 URL이 필요하다.
또한, 개별적으로 관리되는 데이터들을 유기적으로 연동하여 활용하기 힘든 문제점이 있다. 예를 들어, 집안의 보일러를 제어하는 센서의 경우 센서 기기가 직접 수집할 수 있는 주변 환경 정보는 사람 거주 유무, 내부 온도, 시간대 정도와 같이 매우 제한적이다. 만약, 이러한 센서 기기가 외부 정보(일례로 외부의 기온, 사용자의 스케쥴 정보 등)를 추가적으로 활용할 수 있다면, 보다 효과적인 제어 기능을 제공할 수 있으나, 각 기술들, 기기들 또는 서비스들마다 데이터들이 개별적으로 관리되고 있기 때문에 이러한 데이터들을 유기적으로 연동하여 활용하기 힘들다.
도 1은 종래기술에 있어서, 기기에서 임베디드 웹 서버를 내장하고 있는 경우의 서비스 제공 방식을 도시한 도면이다. 사용자는 웹과 같은 온라인(Online (Web))(110)을 통해 실제 세계(Physical World)(120)의 기기(IoT Node)(130)에 내장된 임베디드 웹 서버(Embedded Web Server)(140)에 접근할 수 있다. 이때, 임베디드 웹 서버(140)가 기기(130)에 내장되어 있기 때문에 기기(130)에서 생성되는 데이터, 그리고 특정 기능이나 서비스의 처리를 위한 프로세스 로직 모두가 기기(130)에 탑재되어 있다. 따라서, 기기(130)가 제공하는 서비스 영역을 벗어나, 다른 서비스 영역이나 다른 서비스의 데이터와 연동된 또는 융합된 서비스를 제공하는 것이 불가능하다.
도 2는 종래기술에 있어서, 제조사가 별도의 웹 서버를 온라인상에서 제공하는 경우의 서비스 제공 방식을 도시한 도면이다. 도 2에서는 상술한 도 1에서와 달리, 제조사(또는 별도의 서비스 제공자)가 온라인(110)상에 웹 서버(Web Server)(210)를 구축하여 서비스를 제공하는 방식을 도시하고 있다. 이때, 사용자는 온라인(110)상의 웹 서버(210)를 통해 기기(IoT Node)(220)에 접근할 수 있다. 이 경우, 기기(210)에는 웹 서버(210)와 통신하기 위한 모듈(도 2의 HTTP 어댑터(HTTP Adaptor)(230))이 탑재될 수 있다. 따라서, 기기(220)에서 생성되는 데이터, 그리고 특정 기능이나 서비스의 처리를 위한 프로세스 로직 모두가 온라인상에서 제공이 가능하다. 필요에 따라, 데이터는 기기(220)에, 프로세스 로직은 웹 서버(210)상에 존재할 수도 있다. 이 경우에는, 제조사(또는 별도의 서비스 제공자)의 웹 서비스 가용 성능과 호스팅의 영속성에 대한 문제점이 발생할 수 있다.
또한, 도 1 및 도 2를 참조하면, 사용자는 웹 서버(210)를 통해 임베디드 웹 서버(140)가 내장된 기기(130)로 접근할 수 없으며, 반대로 기기(130)의 임베디드 웹 서버(140)를 통해 웹 서버(210)나 기기(220)에 접근할 수 없다. 즉, 객체 인스턴스간에 상호 정보 교류가 불가능하여 연동형 또는 융합형 서비스를 제공할 수 없다.
또한, 도 2를 참조하면, 기기(220)가 서비스의 제공을 위해, 센서 등과 같은 사물로부터 얻어진 정보나 사용자의 개인 정보(사용자의 위치 등) 등을 웹 서버(210)로 제공해야 하기 때문에 사용자의 프라이버시에 대한 문제가 발생할 소지가 존재한다.
IoT(Internet of Things), WoT(Web of Things) 또는 WoO(Web of Objects) 환경에서 이기종의 기기들이나 다양한 서비스들을 연동 또는 융합하여 관리하고, 통합적으로 서비스를 제공하기 위한 서비스 제공 방법 및 시스템을 제공한다.
IoT(Internet of Things) 환경에서의 서비스 방법에 있어서, 사물(Thing)에 대한 정보의 가상화 오브젝트(Virtualization Object)를 생성하기 위한 인스턴스 프로파일 스키마를 통해 네트워크 어댑터에 대한 정보를 획득하는 단계; 및 상기 네트워크 어댑터에 대한 정보에 기초하여 상기 사물의 메시지를 수신하여 대응하는 인스턴스로 전달하거나 또는 상기 인스턴스의 메시지를 상기 사물로 전달하는 단계를 포함하는 서비스 방법이 제공된다.
일측에 따르면, 상기 프로파일 스키마는, 상기 사물에 대한 정보, 상기 인스턴스에 대한 정보, 상기 네트워크 어댑터에 대한 정보를 포함하는 것을 특징으로 할 수 있다.
다른 측면에 따르면, 상기 사물에 대한 정보는, 상기 사물의 명칭, 상기 사물의 대표 이미지 및 상기 사물의 부가 정보 중 적어도 하나를 포함하는 것을 특징으로 할 수 있다.
또 다른 측면에 따르면, 상기 인스턴스에 대한 정보는, 상기 인스턴스의 태그, 상기 인스턴스의 식별자, 상기 인스턴스의 버전, 상기 인스턴스에 대한 정보가 포함된 위치, 상기 인스턴스의 등록 후 이용될 대표 아이콘(Icon)의 물리적 위치 및 상기 인스턴스의 동작 주기 중 적어도 하나에 대한 정보를 포함하는 것을 특징으로 할 수 있다.
또 다른 측면에 따르면, 상기 네트워크 어댑터에 대한 정보는, 상기 사물과 상기 인스턴스간의 연동을 위해 실질적으로 사용될 통신 프로토콜, 상기 사물의 메시지를 송신하기 위한 목적지의 MAC 주소값, 상기 사물의 IP 주소값, 상기 사물의 TCP 포트값, 상기 사물의 메시지를 송신하기 위한 목적지의 TCP 포트값, 상기 사물의 UDP 포트값, 상기 사물의 메시지를 송신하기 위한 목적지의 UDP 포트값 및 HTTP 메시지 통신 방식을 위해 이용될 주소값 중 복수의 정보를 포함하는 것을 특징으로 할 수 있다.
또 다른 측면에 따르면, 상기 네트워크 어댑터에 대한 정보는, 상기 인스턴스의 서브스크라이버 인스턴스와 연결하기 위한 정보 및 상기 사물과 상기 인스턴스간의 연동 시 사용되는 물리적 인터페이스에 대한 정보를 포함하는 것을 특징으로 할 수 있다.
또 다른 측면에 따르면, 상기 서브스크라이버 인스턴스는, 상기 사물 또는 다른 인스턴스로부터 메시지를 수신하기 위한 인터페이스를 포함하는 것을 특징으로 할 수 있다.
IoT(Internet of Things) 환경에서의 서비스 시스템에 있어서, 적어도 하나의 프로그램이 저장된 적어도 하나의 스토리지 유닛; 및 적어도 하나의 프로세서를 포함하고, 상기 적어도 하나의 프로세서는, 상기 적어도 하나의 프로그램의 제어에 따라, 사물(Thing)에 대한 정보의 가상화 오브젝트(Virtualization Object)를 생성하기 위한 인스턴스 프로파일 스키마를 통해 네트워크 어댑터에 대한 정보를 획득하는 과정; 및 상기 네트워크 어댑터에 대한 정보에 기초하여 상기 사물의 메시지를 수신하여 대응하는 인스턴스로 전달하거나 또는 상기 인스턴스의 메시지를 상기 사물로 전달하는 과정을 처리하는 것을 특징으로 하는 서비스 시스템이 제공된다.
IoT(Internet of Things), WoT(Web of Things) 또는 WoO(Web of Objects) 환경에서 이기종의 기기들이나 다양한 서비스들을 연동 또는 융합하여 관리하고, 통합적으로 서비스를 제공할 수 있다.
도 1은 종래기술에 있어서, 기기에서 임베디드 웹 서버를 내장하고 있는 경우의 서비스 제공 방식을 도시한 도면이다.
도 2는 종래기술에 있어서, 제조사가 별도의 웹 서버를 온라인상에서 제공하는 경우의 서비스 제공 방식을 도시한 도면이다.
도 3은 본 발명의 일실시예에 있어서, 인스턴스 호스팅을 위한 전체 시스템 구조를 개괄적으로 도시한 일례이다.
도 4는 본 발명의 일실시예에 있어서, 인스턴스의 인터페이스들에 대한 개념을 설명하기 위한 도면이다.
도 5는 본 발명의 일실시예에 있어서, 인스턴스의 인터페이스들에 대한 기능을 설명하기 위한 도면이다.
도 6은 본 발명의 일실시예에 있어서, 인스턴스 리스트 페이지의 예를 도시한 도면이다.
도 7은 본 발명의 일실시예에 있어서, 인스턴스 매니저를 설명하기 위한 블록도이다.
도 8은 본 발명의 일실시예에 있어서, 인스턴스 상태 질의 기능을 설명하기 위한 흐름도이다.
도 9는 본 발명의 일실시예에 있어서, 인스턴스 상태 제어 기능을 설명하기 위한 흐름도이다.
도 10은 본 발명의 일실시예에 있어서, 인스턴스 설치 제어 기능을 설명하기 위한 흐름도이다.
도 11은 본 발명의 일실시예에 있어서, 사물 피드 제어 기능을 설명하기 위한 블록도이다.
도 12는 본 발명의 일실시예에 있어서, 스케쥴 등록 방법을 설명하기 위한 흐름도이다.
도 13 내지 도 15는 본 발명의 일실시예에 있어서, 인스턴스 위자드를 설명하기 위한 도면들이다.
도 16은 본 발명의 일실시예에 있어서, 서비스 방법을 도시한 흐름도이다.
이하, 본 발명의 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
도 3은 본 발명의 일실시예에 있어서, 인스턴스 호스팅을 위한 전체 시스템 구조를 개괄적으로 도시한 일례이다. 도 3은 IoT 프로파일(IoT(Internet of Things) Profile)(310), IoT 노드(IoT Node)(320), 인스턴스 호스팅 게이트웨이(Instance Hosting Gateway)(330) 및 인스턴스 호스팅 플랫폼(Instance Hosting Platform)(340)을 도시하고 있다.
IoT 프로파일(310)은 IoT 노드(320)의 제조사나 개발자가 온라인상에서 제공하는 IoT 노드(320)에 대한 정보를 의미할 수 있다. 예를 들어, 이러한 IoT 프로파일(310)은 IoT 노드(320)에 대한 정보를 사용자가 수동으로 인스턴스 호스팅 게이트웨이(330)에 데이터를 입력해야 하는 불편함을 최소화하기 위해, 제조사나 개발자가 IoT 노드(320)에 대한 정보를 기정의된 XML(eXtensible Markup Language) 스킴(scheme)에 따라 처리하여 생성한 XML 파일을 의미할 수 있다.
이러한 IoT 프로파일(310)은 IoT 노드(320)에 대한 설명(Description)과 IoT 노드(320)의 동작에 관해 기술된 프로세스(Process)에 대한 식별자(일례로, 프로세스에 대한 정보가 포함된 문서의 URL)를 포함할 수 있다. 예를 들어, 프로세스는 별도의 파일(일례로, 확장자 '.js' 파일)로 온라인상에서 제공될 수 있으며, 프로세스에 대한 식별자는 이러한 파일의 위치를 나타내는 URL일 수 있다. 아래 표 1은 IoT 프로파일(310)이 포함할 수 있는 정보들의 일례를 나타내고 있다.
Name Description 비고
IoTProfileID IoT Profile이 위치한 고유 URL URI형식으로 표현
IoTProfileVer IoT Profile의 버전 'V'+'숫자 형식'으로 표현
IoTProfileDesc IoT Profile의 설명(Description)
IoTInput IoT Node의 입력값(Input 기능을 제공하지 않는 인스턴스 노드의 경우에는 필요 없음), RESTful API 생성을 위한 정보 데이터 지원 형식
- JSON
- XML
IoTOutput IOT Node의 출력값, RESTFUL API 생성을 위한 정보
IoTProcessID IoT Node의 프로세스 식별자 URI 형식으로 표현
IoT 노드(320)는 센서 기기와 같은 IoT 환경의 사물(Things)에 대응할 수 있으며, 'IoTNodeID'와 같은 자신의 식별자 정보를 제공할 수 있다. 만약, IoT 노드(320)가 스마트 기기와 같은 NC(Non-Constraint) 노드인 경우에는 IoT 노드(320)가 상술한 IoT 프로파일(310)을 직접 제공할 수도 있다.
도 3에서는 설명의 편의를 위해, 하나의 IoT 노드(320)와 IoT 노드(320)에 대한 하나의 IoT 프로파일(310)을 도시하고 있으나, IoT 환경에서는 다수의 IoT 노드들과 IoT 노드들 각각에 대한 IoT 프로파일들이 활용될 수 있음은 너무나 당연하다. 또한, 하나의 IoT 노드에 대한 복수의 IoT 프로파일들이 제공될 수도 있다.
하나의 IoT 노드와 인스턴스(instance)는 1:1, 1:N, N:1, N:M과 같이 다양하게 관계 지어질 수 있다. 또한, 인스턴스는 물리적인 IoT 노드가 없더라도, 프로세스의 형태로 존재 가능하며, 매시업(Mash-up) 프로세스 등과 같이 특정 장치와 연동되는 형태가 아닌 프로세스간 연동을 통해 인스턴스가 생성 및 연동될 수 있다. 예를 들어, 별도의 IoT 노드와 연결하지 않더라도 특정 프로세스가 인스턴스 호스팅 게이트웨이(330)에 설치(deploy)되어 동작함으로써, 인스턴스 호스팅 게이트웨이(330)에서 인스턴스가 생성될 수 있다. 본 명세서에서는 전반적으로 물리적인 장치로서 설명되는 IoT 노드(물리적 노드)와 본 발명의 실시예들에 따른 인스턴스 호스팅 게이트웨이간의 통신을 통해 IoT 노드로부터 수신되는 메시지를 개별 인스턴스와 연결하여 처리하는 실시예를 설명하고 있으나, 상술한 바와 같이, 적어도 하나의 IoT 노드는 물리적인 장치가 아닌 프로세스의 형태(프로세스 노드)로 존재할 수도 있다.
또한, 센서 디바이스 또는 엑추에이터 등과 같은 물리적인 장치 없이 다수의 센서로부터 정보를 받아 이를 온라인상의 다른 웹 서비스 또는 어플리케이션과 연동 기능만을 제공하는 프로세스가 제공될 수도 있다. 예를 들어, 센서들의 정보와 소셜 서비스 또는 사용자가 이용하는 특정 어플리케이션의 상태 정보를 분석해 특정 결과를 제공하는 서비스의 경우, 해당 서비스를 동작시킬 별도의 프로세싱 환경이 필요하다. 이 경우, 본 발명의 실시예들에 따른 인스턴스 호스팅 게이트웨이에서 상기 프로세싱 환경을 제공해줄 수 있다.
인스턴스 호스팅 게이트웨이(330)는 IoT 노드(320)로부터 수신되는 메시지를 개별 인스턴스와 연결해 처리하고, 사용자 또는 서비스의 요청에 따라 외부 서비스와 연동될 수 있다. 이러한 인스턴스 호스팅 게이트웨이(330)는 IoT 노드(320)를 위한 AP(Access Point) 환경에 탑재될 수 있다. 예를 들어, 인스턴스 호스팅 게이트웨이(330)는 AP에 탑재되어 웹 어플리케이션 서버(Web Application Server, WAS) 형태로 동작하는 인스턴스 어플리케이션 서버(Instance Application Server) 부분과 AP상에 소프트웨어 형태, 하드웨어 형태 또는 소프트웨어와 하드웨어의 결합 형태로 탑재(일례로, AP의 운영체제에 소프트웨어의 형태로 탑재되는 모듈과 IoT 노드(320)와의 통신을 위해 하드웨어의 형태로 탑재되는 모듈)되는 부분으로 구성될 수 있다.
일례로, 인스턴스 호스팅 게이트웨이(330)는 특정 공간(일례로, 집안)에 설치된 AP에 포함될 수 있으며, 상기 특정 공간에 포함된 사물들(IoT 노드들)과 통신하여 데이터를 수신 및 처리하고, 외부 서비스와의 연동 서비스를 제공하기 위한 기능을 수행할 수 있다.
이때, 인스턴스 호스팅 게이트웨이(330)는 새로운 IoT 노드(320)를 발견하면, IoT 프로파일(310)을 다운로드하여 설치할 수 있다. 예를 들어, 사용자는 IoT 프로파일(310)에 대응하는 XML 파일의 위치를 인스턴스 호스팅 게이트웨이(330)에 입력할 수 있으며, 인스턴스 호스팅 게이트웨이(330)는 입력된 위치에 기초하여 XML 파일을 다운로드하여 설치할 수 있다.
이러한 인스턴스 호스팅 게이트웨이(330)에 대해서는 이후 도 4 내지 도 7을 통해 더욱 자세히 설명한다.
인스턴스 호스팅 플랫폼(340)은 인스턴스간 상호 연동 기능과 매시업(Mash-up) 기능을 제공할 수 있다. 예를 들어, 인스턴스 호스팅 게이트웨이(330)는 사용자 또는 서비스의 요청에 따라 제공하기 위한 기능을 API(Application Program Interface) 형태로 외부로 제공하여 외부 서비스와 연동하기 위해, 인스턴스 호스팅 플랫폼(340)과 통신할 수 있다.
도 4는 본 발명의 일실시예에 있어서, 인스턴스의 인터페이스들에 대한 개념을 설명하기 위한 도면이다. 사물들(Things, 410)의 가상화객체들(VO(Virtualization Objects), 420)에 있어, 가상화객체와 사물간의 연결, 그리고 가상화객체와 다른 가상화객체간의 연결에 필요한 기본적인 인터페이스가 필요하다. 본 실시예에서는 인터페이스의 효과적이고 명시적인 사용을 위해 총 5가지의 인스턴스용 인터페이스 기능을 제공하는 예들을 설명한다.
개별 인터페이스의 정보는 각 인스턴스별로 인스턴스 프로파일에 이를 명시적으로 기술하여 사용할 수 있으며, 도 3을 통해 설명한 인스턴스 호스팅 게이트웨이(330)가 포함할 수 있는 인스턴스 매니저에서 해당 인스턴스의 정보에 기반하여 관련 기능을 제공할 수 있다. 이때, 도 4에서는 사물들(410) 각각과 관련된 인스턴스(Associated Thing Instance)들 및 인스턴스간 연동을 위한 매시업 인스턴스(Mashup Instance)를 나타내고 있다. 이때, 매시업 인스턴스는, 인스턴스 어플리케이션 서버(IAS(Instance Application Server), 430) 및 써드 파티 서비스(3rd Party Service, 440)와의 연동을 가능하게 할 수 있다.
인스턴스 어플리케이션 서버(430)는 인스턴스 호스팅 게이트웨이(330)의 웹 어플리케이션 서버 기능을 담당할 수 있다. 이때, 인스턴스 어플리케이션 서버(430)를 통해 제공되는 기능들은 웹 인터페이스로 제공될 수 있다. 또한, 써드 파티 서비스(440)는 사용자와 연관된 소셜 네트워크 서비스(Social Network Service, SNS)와 같이 다양한 외부 서비스들을 의미할 수 있다.
도 5는 본 발명의 일실시예에 있어서, 인스턴스의 인터페이스들에 대한 기능을 설명하기 위한 도면이다. 도 4의 가상화객체들(420)인 인스턴스들은 인스턴스 매니저가 제공하는 5가지의 기 제공된 인터페이스를 이용하여, (1) 사물과 인스턴스간, (2) 인스턴스와 인스턴스간, (3) 외부 서비스(써드 파티 서비스(440))와 인스턴스간, 그리고 (4) 인스턴스 호스팅(Instance Hosting, IH) 응용 기능(일례로, 도 4의 인스턴스 아이콘(Instance Icon))과 인스턴스간에 데이터를 주고 받을 수 있다.
피더(Feeder)를 의미하는 F(510)는 인스턴스가 인스턴스 또는 외부 서비스로 제공하고자 하는 정보를 노출하는 인터페이스를 포함할 수 있다. 이때, F(510)는, 직접 메시지를 전달하는 것이 아닌 인스턴스의 메시지 큐(message queue)상에 피딩(feeding)할 정보를 저장하는 형태로 동작할 수 있으며, 다음 (1) 내지 (3)과 같은 경우에 활용될 수 있다.
(1) 장치(사물)로부터 받은 메시지를 판독 후 타 서비스 또는 다른 인스턴스로 전달하고자 하는 경우.
(2) 인스턴스내에서 특정 상태 값을 노출하거나 또는 외부 서비스(일례로, 써드 파티 서비스(440))에게 전달하고자 하는 값을 노출하고자 하는 경우.
(3) 인스턴스의 상태 값 중 인스턴스 리스트 상의 인스턴스 아이콘(일례로, 인스턴스 어플리케이션 서버(430)의 인스턴스 아이콘)을 통해 사용자에게 대표로 노출시킬 값(대표 속성(representative attribute) 값)을 설정하고자 하는 경우.
서브스크라이버(Subscriber)를 의미하는 S(520)는 사물 또는 타 인터페이스의 피더로부터 정보를 수신하는 인터페이스를 포함할 수 있으며, 다음 (4) 및 (5)의 경우에 활용될 수 있다.
(4) 장치(사물)로부터 수신되는 정보를 전달 받기 위해 사용되는 경우(이 경우, 인스턴스 호스팅 게이트웨이(330)가 포함하는 네트워크 어댑터가 리스닝(listening)할 사물의 물리적 인터페이스에 대한 정보가 관련 사물 정보 엘리먼트(associatedThingInformation element)에 기술될 수 있음).
(5) 다른 인스턴스의 피더에 대한 정보를 구독하는 경우(타 인스턴스의 피더 인터페이스로 노출되는 값을 활용하고자 하는 경우) - 타 인스턴스의 피더에 대한 정보를 구독하는 경우, 필터에 정의된 조건에 맞는 인터페이스를 통해 정보의 구독이 가능.
리시버(Receiver)를 의미하는 R(530)은 인스턴스가 타 인스턴스의 컨트롤러로부터 메시지를 전달받는 인터페이스를 포함할 수 있으며, 다음 (6) 내지 (8)과 같은 경우에 활용될 수 있다.
(6) 타 인스턴스로부터 정보를 받는 경우(타 인스턴스의 컨트롤러 인터페이스로부터 정보를 수신).
(7) 인스턴스 아이콘상의 대표 제어값(피더상에서 대표 속성 값을 설정한 경우)을 수신하는 경우(사용자의 직접 제어를 처리하는 경우).
(8) 외부 서비스(일례로, 써드 파티 서비스(440))로부터 메시지를 받는 경우(일례로, 캘린더 서비스의 사용자 상태 정보를 수신하는 경우).
컨트롤러(Controller)를 의미하는 C(540)는 인스턴스가 외부로부터 정보를 전달하기 위한 인터페이스를 포함할 수 있으며, 다음 (9) 및 (10)의 경우에 활용될 수 있다.
(9) 장치(사물)에게 (제어) 메시지를 전달하는 경우(관련 사물 정보 엘리먼트가 설정되어 있는 장치(사물)로 메시지를 전달하는 경우).
(10) 타 인스턴스에게 메시지를 전달하는 경우(타 인스턴스의 리시버 인터페이스 메시지 큐에 들어가는 형태가 아닌, 트리거링 방식을 통해 데이터 전달).
인증(OAuth)을 의미하는 O(550)는 인스턴스가 써드 파티 서비스로 연동하기 위한 인터페이스를 포함할 수 있으며, 다음 (11) 및 (12)의 경우에 활용될 수 있다.
(11) 써드 파티 서비스로 메시지를 전달하는 경우(OAuth 인증이 이루어진 후).
(12) 써드 파티 서비스로 메시지를 수신(질의)하는 경우.
이때, 상술한 (8)과 (12)는 모두 외부 서비스로부터 메시지를 수신하는 경우를 나타내고 있다. 외부 서비스로부터의 메시지는 실시예에 따라 리시버를 통해 수신될 수도 있고, O(550)를 통해 수신될 수도 있다.
본 발명의 실시예들에 따른 인스턴스는 개별적인 인터페이스 정보에 대해 각각의 메시지 큐를 생성할 수 있으며, 인터페이스별 메시지 큐에는 기설정된 수(일례로, 100건)의 메시지가 저장될 수 있다. 해당 인스턴스가 비정상적으로 종료되어도(일례로, 에러 상태(error)로 변경 시) 저장된 메시지는 남아 있으며, 다시 정상 동작 상태(run)로 변경 시, 저장된 메시지를 이용할 수 있다. 이때, 인스턴스가 에러 상태일 때 수신되는 메시지들은 인스턴스의 상태와 관계 없이 개별 인터페이스의 메시지 큐상에 저장될 수 있다.(서브스크라이버 인터페이스나 리시버 인터페이스의 경우)
이후에서는, 인스턴스가 포함하는 인터페이스들에 대해 더욱 자세히 설명한다.
1. 서브스크라이버는 이미 설명한 바와 같이 인스턴스가 사물장치(Thing) 또는 타 인스턴스의 피더 인터페이스로부터 메시지를 수신 및 구독하기 위한 인터페이스일 수 있다. 사물로부터 메시지를 수신하는 경우, 해당 서브스크라이버는 메시지의 수신에 필요한 물리적 인터페이스의 정보를 해당 사물 정보 'associatedThingInformation' 엘리먼트상에 기재하여야 하며, 이때 필요한 정보는 기본적인 장치의 물리 인터페이스를 어댑테이션(adaptation)하기 위한 정보들을 포함할 수 있다. 또한, 타 인스턴스로부터 메시지를 수신하는 경우, 해당 서브스크라이버는 구독(Subscribe)할 타 인스턴스의 피더 인터페이스에 대한 정보를 필터(Filter) 엘리먼트상에 기재하여야 하며, 피더 인터페이스에 대한 정보는, 해당 인스턴스를 등록하는 과정(Instance Wizard를 이용하여 등록)에서 구독할 인스턴스의 정보를 입력하는 것으로 필터 엘리먼트상에 기재될 수 있다. 이때, 트리거 속성(Trigger attribute)을 'true'로 설정할 경우 해당 피더의 값이 생성되면, 인스턴스 매니저는 그 즉시 이를 구독하는 서브스크라이버 인스턴스를 호출할 수 있다. 해당 동작은 인스턴스 동작 주기 'InstanceRunningPeriod' 값과 상관없이 수행될 수 있다.
서브스크라이버가 가질 수 있는 속성은 다음 표 2의 일례와 같이 표현될 수 있다.
<xs:element name="subscriber"> <xs:complexType>
<!-인스턴스(Instance) 별로 인터페이스(I/F)를 식별하기 위한 식별자로 사용. 자릿수는 최대 3자리까지 이용 가능.-->
<xs:attribute name="id" type="xs:unsignedShort" />
<!-- NAME은 인스턴스를 손쉽게 구분하기 위한 정보로 활용 가능하며, 향후 인스턴스간 연결 시 해당 인스턴스의 I/F 구분을 위해 사용자에게 제공되는 정보로 활용 가능.-->
<xs:attribute name="name" type="xs:string" />
<!-- 타 인스턴스를 구독시 해당 값이 생성되는 경우 즉시 반응의 여부에 따라 설정, 인스턴스 매니저가 피더 리스트의 트리거링(triggering) 설정 여부에 대해 모니터링 후 즉시 데이터 전달 -->
<xs:attribute name="trigger" type="xs:boolean" />
</xs:complexType> </xs:element>
또한, 서브스크라이버내의 필터가 가질 수 있는 속성은 다음 표 3의 일례와 같이 표현될 수 있다.
<xs:element name="filter"><xs:complexType>
<!-- 다른 인스턴스의 피더를 구독하는 경우 필터에 정의된 조건에 맞는 인터페이스만 구독이 가능 -->
<xs:attribute name="instanceId" type="xs:string"/>
<!-- 구독할 인스턴스의 식별자(ID) 값을 입력(고유값) -->
<xs:attribute name="feederId" type="xs:unsignedShort"/>
<!-- 구독할 인스턴스 내 Feeder의 고유 식별자를 입력 -->
<xs:attribute name="minVersion" type="xs:string"/>
<!-- 구독할 인스턴스 지원 버전의 최소 값을 입력 -->
<xs:attribute name="maxVersion" type="xs:string"/>
<!-- 구독할 인스턴스 지원 버전의 최대 값을 입력 -->
</xs:complexType></xs:element>
</xs:sequence>
2. 피더는 인스턴스가 타 인스턴스로 정보를 노출하기 위한 인터페이스로, 구독하는 인터페이스의 설정에 따라, 즉시 값이 전달되거나 또는 타 인스턴스의 동작시, 값이 타 인스턴스의 입력값으로 전달될 수 있다. 이때, 개별 피더 식별자(ID) 별로 인스턴스 매니저상에서 메시지 큐를 생성하고, 데이터(메시지)를 메시지 큐에 저장한 후 서브스크라이버 인터페이스를 통해 읽어가게 된다.
피더의 메시지 전달 방식과 관련하여, 피더로부터 메시지를 읽어가는 방식은 서브스크라이버 인터페이스 상에서 트리거 설정여부에 따른 방식과 구독하는 인스턴스의 실행에 따라 입력 값으로 전달되는 방식으로 나뉘게 된다.
해당 피더에 대해 트리거를 설정한 서브스크라이버 인터페이스의 경우 해당 서브스크라이버 인터페이스가 구독하는 피더에 대한 값이 등록될 시 호출되게 된다. 그렇지 않은 경우 인스턴스 매니저가 해당 피더를 구독(Subscribe) 하는 타 인스턴스의 실행 시 데이터를 읽어 입력 값으로 전달하게 된다. 이때, 인스턴스 매니저가 해당 피더의 값을 읽어 갔다고 하더라도 곧 바로 메시지 큐 에 데이터를 지우지는 않는다. 해당 메시지의 큐의 크기는 인터페이스별로 기설정된 수(일례로, 100건)를 가질 수 있으며, 해당 인스턴스가 비정상 종료되어도 해당 값은 남아 있게 된다.
피더는 다음 표 4와 같이 표현되는 속성을 사용할 수 있으며 대표값을 나타내는 'representative'를 사용(true)하는 경우, 단위(unit)를 지정해야 인스턴스 매니저의 리스트 페이지상에서 해당 데이터와 연동되는 온도, Kcal 등의 단위가 표시될 수 있다.
<xs:attribute name="id" type="xs:unsignedShort" />
<!-- 인스턴스별로 인터페이스를 식별하기 위한 식별자로 사용가능. 자릿수는 최대 3자리까지 이용 가능.-->
<xs:attribute name="name" type="xs:string" />
<!-- NAME은 인스턴스를 손쉽게 구분하기 위한 정보로 활용되며, 향후 인스턴스간 연결 시, 해당 인스턴스의 인터페이스(I/F) 구분을 위해 사용자에게 제공되는 정보로 활용.-->
<xs:attribute name="unit" type="xs:string" />
<!-- 해당 인터페이스를 통해 주고 받는 데이터 값을 정의하는데 사용-->
<xs:attribute name="representative" type="xs:boolean" />
<!-- 대표값을 설정하는 부분으로 해당 값을 설정할 경우 인스턴스 리스트 페이지상의 인스턴스 아이콘에 해당 값이 출력되게 됨 -->
도 6은 본 발명의 일실시예에 있어서, 인스턴스 리스트 페이지의 예를 도시한 도면이다. 도 6은 복수의 인스턴스 아이콘들을 포함하는 페이지의 일부가 표시된 화면(600)을 나타내고 있다. 이때, 화면(600)에서 인스턴스 아이콘에 피더 인스턴스의 대표값 속성이 설정된 예들이 점선타원들(610)을 통해 나타나 있다.
3. 리시버는 타 인스턴스로부터 메시지를 호출 받기 위한 인터페이스로서, 타 인스턴스의 컨트롤러 인터페이스를 통해 정보를 전달 받을 수 있다. 타 인스턴스로 부터 전달받은 메시지는 수신한 인스턴스에게 직접 전달되게 되고, 해당 인스턴스의 트리거링(실행)이 일어나게 된다. 이러한 트리거링은 메시지를 수신한 인스턴스의 동작 주기를 나타내는 'runningPeroid' 설정과 상관없이 수행될 수 있다.
리시버는 다음 표 5와 같이 나타나는 속성을 사용할 수 있으며, 대표값을 나타내는 'representative'를 사용(true)하는 경우, 단위(unit)를 지정해야 인스턴스 매니저의 리스트 페이지상에서 해당 인스턴스를 제어하는 버튼이 생성될 수 있다.
<xs:attribute name="id" type="xs:unsignedShort" />
<!-- 인스턴스별로 인터페이스를 식별하기 위한 식별자로 사용. 자릿수는 최대 3자리까지 이용 가능-->
<xs:attribute name="name" type="xs:string" />
<!-- NAME은 인터페이스를 손쉽게 구분하기 위한 정보로 활용되며, 향후 인스턴스간 연결 시 해당 인스턴스의 인터페이스(I/F) 구분을 위해 사용자에게 제공되는 정보로 활용-->
<xs:attribute name="unit" type="xs:string" />
<!-- 해당 인터페이스를 통해 주고 받는 데이터 값을 정의하는데 사용된다 -->
<xs:attribute name="representative" type="xs:boolean" />
<!-- 대표값을 설정하는 부분으로 해당 값을 설정할 경우 인스턴스 리스트 페이지상의 인스턴스 아이콘에 해당 값이 출력되게 됨 -->
다시 도 6을 살펴보면, 도 6의 화면(600)에 표시된 아이콘들 중 활성화된 아이콘들에 "ON", "OFF", "Locked"와 같이 인스턴스 아이콘에 대응하는 인스턴스를 제어하기 위한 버튼이 생성된 모습을 나타내고 있다.
4. 컨트롤러는 인스턴스가 타 인스턴스 또는 장치(사물)로 메시지를 전달하기 위한 인터페이스를 포함할 수 있다. 컨트롤러는, 타 인스턴스로 메시지를 전달하기 위해 직접 전달 방식을 통해 해당 인스턴스를 호출할 수 있으며, 메시지는 리시버 인터페이스를 통해 해당 인스턴스로 전달될 수 있다. 예를 들어, 메시지를 수신한 인스턴스의 동작 주기 'runningPeroid'의 설정과 상관없이 메시지의 전달이 트리거링 될 수 있다. 메시지를 장치(사물)로 전달하는 경우, 컨트롤러는 네트워크 어댑터를 통해 메시지를 즉시 전달할 수 있다.
타 인스턴스로 메시지를 전달하는 경우, 타 인스턴스의 리시버 인터페이스의 정보가 필터 엘리먼트내에 기술되어야 한다. 이때, 필터 엘리먼트내에 기술되는 정보는 다음 표 6과 같이 표현될 수 있다.
<xs:element name="filter"><xs:complexType>
<!-- 다른 인스턴스의 리시버로 메시지를 전달하는 경우 필터에 정의된 조건에 맞는 인터페이스에 대해서만 메시지 전달이 가능 -->
<xs:attribute name="instanceId" type="xs:string"/>
<!-- 메시지를 전달할 인스턴스의 ID 값(고유값) -->
<xs:attribute name="receiverId" type="xs:unsignedShort"/>
<!-- 메시지를 전달할 인스턴스 내의 리시버 인터페이스의 ID 값(고유값) -->
<xs:attribute name="minVersion" type="xs:string"/>
<!-- 전달할 인스턴스 지원 버전의 최소 값을 입력 -->
<xs:attribute name="maxVersion" type="xs:string"/>
<!-- 전달할 인스턴스 지원 버전의 최대 값을 입력 -->
</xs:complexType></xs:element>
또한, 컨트롤러는 다음 표 7과 같은 속성을 가질 수 있다.
<xs:attribute name="id" type="xs:unsignedShort" />
<!-- 인스턴스별로 인터페이스를 식별하기 위한 식별자로 사용. 자릿수는 최대 3자리까지 이용 가능-->
<xs:attribute name="name" type="xs:string" />
<!-- NAME은 인터페이스를 손쉽게 구분하기 위한 정보로 활용되며, 향후 인스턴스간 연결 시 해당 인스턴스의 인터페이스(I/F) 구분을 위해 사용자에게 제공되는 정보로 활용-->
</xs:complexType> </xs:element>
5. 인증 인터페이스(이하 'OAuth')는 인스턴스가 외부 써드 파티 서비스와 OAuth 기반 인증을 통한 연동 시 이용하는 인터페이스를 포함할 수 있다. 이를 위해, 사용자는 자신이 연결하고자 하는 대상 서비스의 OAuth 계정 인증을 선 진행하여야 하며, 이러한 OAuth 계정 인증은 인스턴스 위자드(Instance Wizard) 또는 OAuth 메뉴를 통해 별도로 진행될 수 있다.
개별 인스턴스 별로, 연동하기 위한 OAuth의 인증 정보가 설정 또는 설정 취소 될 수 있다. 예를 들어, 다수의 소셜 네트워크 서비스 계정을 각각의 인스턴스별로 다르게 설정/취소할 수 있다.
인스턴스는 OAuth 의 필요에 따라 해당 OAuth 연동이 필수인지 여부를 결정할 수 있다. 해당 정보는 'required' 속성을 통해 나타내며, 'required' 속성이 'true'로 설정된 경우, OAuth 연동이 정상적으로 이루어지지 않으면 해당 인스턴스는 동작(running) 상태가 될 수 없으며, 등록 후 인스턴스는 에러(error) 상태로 남게 된다.
OAuth 인터페이스는 다음 표 8과 같은 속성을 가질 수 있다.
<xs:element name="oAuth"> <xs:complexType>
<!-- 인스턴스별로 인터페이스(I/F)를 식별하기 위한 식별자로 사용. 자릿수는 최대 3자리까지 이용 가능-->
<xs:attribute name="id" type="xs:unsignedShort" />
<!-- OAuth를 연동할 서비스 명을 기입. 일례로, 트위터(Twitter)는 'twitter', 페이스북(Facebook)은 'facebook', 구글(Google)은 'Google'과 같이 입력-->
<xs:attribute name="serviceName" type="xs:string" />
<!-- 연동할 Oauth 계정에서 이용할 정보에 대해 사용자에게 알려주는 설명을 기재. 예를 들어 어떠한 용도로 어느 정보에 접근하는지에 관한 정보 기술-->
<xs:attribute name="description" type="xs:string" />
</xs:complexType> </xs:element>
이후에서는 인스턴스 호스팅을 위한 시스템이 지원하는 인스턴스의 데이터 타입에 대해 설명한다. 인스턴스의 데이터 타입의 경우, 인스턴스간의 메시지 전달 시 데이터 타입에 따른 처리의 명확성 이외에도 인스턴스 아이콘상에 디스플레이되는 단위 표시 부호를 나타내는 위해 더 이용될 수 있다.
인스턴스의 데이터 타입은 인스턴스의 인터페이스별로 제공하는 단위 정보의 데이터 형을 의미할 수 있다. 인스턴스 호스팅을 위한 시스템에서는 보다 개발의 용이성과 사용자 직관적인 정보의 활용을 위해 기본적인 데이터 타입(일례로, W3C(World Wide Web Consortium) WebIDL(Web Interface Definition Language) 기준)을 제공하고, 일반적인 IoT 장치들의 사용 시 자주 사용하게 되는 데이터 셋을 별도로 제공할 수 있다. 일례로, 데이터 타입은 아래 표 9와 같이 제공될 수 있다.
데이터 타입(Data Type) 설명(Description) 아이콘 표시(Icon Display)
percent 비율 %
onoff 온/오프 Control Icon
celsius 섭씨 °C
lockunlock 락/언락 Control Icon
lux 조명도의 실용단위 Lux
kcal 칼로리 단위 Kcal
Cal 칼로리 단위 Cal
steps 스텝 Steps
floor F
kilogram 질량의 단위 KG
gram 질량의 단위 G
hour 시간의 단위 H
minute 시간의 단위 min
표 9의 예 외에도, 강수량 등을 나타내기 위한 밀리미터(mm) 등과 같이 다양한 데이터 타입이 이용될 수 있다.
인스턴스 호스팅에서는 사물 및 비즈니스 로직의 가상객체 생성 시 필수 정보 수집을 위한 스키마 구조가 제시될 수 있다. 주요한 구조로는 인스턴스 정보 기록부, 사물의 가상 객체화 시 이를 연동하기 위한 네트워크 어댑터 정보의 기술부, 인스턴스 별로 정의된 인터페이스 정보의 기술부 그리고 JS(JavaScript) 코드 기술부를 포함할 수 있으며, 그 내용은 일례로, 아래 표 10과 같이 제공될 수 있다.
<!-- 최상위 element로 instance 태그 사용 -->
<xs:element name="instance">
<xs:complexType><xs:sequence>

<!-- 최대 32자의 길이를 가지는 숫자, 영문, ‘_’ 조합의 unique ID로 기설정된 웹페이지를 통해 발급 받으며, 발급 시 Instance 관련 기본 정보를 등록하게 됨, Instance ID 값은 해당 Instance Profile의 대표 이름 값을 나타냄 -->
<xs:element name="instanceId">
<xs:simpleType> <xs:restriction base="xs:string">
<xs:pattern value="[a-zA-Z0-9_]+"/>
<xs:maxLength value="32"/>
</xs:restriction> </xs:simpleType>
</xs:element>

<!-- 최대 16자의 길이를 가지는 version -->
<xs:element name="instanceVersion">
<xs:simpleType> <xs:restriction base="xs:string">
<xs:pattern value="[0-9](.[0-9])+"/>
<xs:maxLength value="16"/>
</xs:restriction> </xs:simpleType>
</xs:element>

<!-- Instance의 정보를 가지고 있는 대표 url -->
<xs:element name="instanceDetailURL" type="xs:string"/>
<xs:element name="instanceDescription" type="xs:string" />
<!-- 인스턴스의 등록 및 등록 후 사용할 대표 Icon의 물리적 위치 (Icon은 Png, Jpg 형식이어야 하며 사이즈는 최대 96by96을 지원한다)-->
<xs:element name="instanceIconURL" type="xs:string" minOccurs="0" />
<!-- 인스턴스의 동작주기는 -1, 1이상의 정수로 최대 decimal 값의 크기를 따른다 -->
<xs:element name="instanceRunningPeriod" type="xs:decimal" />

<!-- 사물을 가상객체화 한 경우 사물과의 연동 인터페이스를 기술하기 위해 associatedThingInformation 엘리먼트상에 네트워크 어댑터 관련 정보를 기술하여야 한다 -->
<xs:element name="associatedThingInformation"> <xs:complexType> <xs:all minOccurs="1">

<!-- 사물의 명칭 정보를 입력 -->
<xs:element name="thingName" type="xs:string" />
<!-- 사물의 대표 이미지 정보 입력 -->
<xs:element name="thingImageURL" type="xs:string" />
<!-- 사물의 부가 정보 입력 -->
<xs:element name="thingDescription" type="xs:date" />

<!-- 사물의 정보 제공(송신) 물리 인터페이스 가상화-->
<xs:element name="feederInformation"> <xs:complexType>
<!-- 사물로부터 전달 받은 메시지를 인스턴스의 Subscriber Interface와 연결하기 위한 정보로 해당 어트리뷰트의 값은 연결하고자 하는 Subscriber Interface의 ID 값 기술한다. -->
<xs:attribute name="connectedInterfaceId" type="xs:unsignedShort"/>
<!-- 사물과의 연동시 사용할 실질적인 물리 인터페이스 (zigbee, wifi)의 정보를 입력 -->
<xs:attribute name="interface" type="xs:string"/>
<!-- 사물과의 연동시 사물의 정보를 송신할 MAC 주소값 -->
<xs:attribute name="src_mac_addr" type="xs:string"/>
<!-- 사물과의 연동시 사물의 IP 주소값 -->
<xs:attribute name="src_ip_addr" type="xs:string"/>
<!-- 사물과의 연동시 사물이 전달하는 메시지의 destination IP 주소값 (메시지를 Network Adaptor를 통해 후킹하는 경우 이용하게 되는 정보) -->
<xs:attribute name="dst_ip_addr" type="xs:string"/>
<!-- 사물과의 연동시 사물의 TCP Port 값 -->
<xs:attribute name="src_tcp_port" type="xs:string"/>
<!-- 사물과의 연동시 사물이 전달하는 메시지의 destination TCP Port값 (메시지를 Network Adaptor를 통해 후킹하는 경우 이용하게 되는 정보) -->
<xs:attribute name="dst_tcp_port" type="xs:string"/>
<!-- 사물과의 연동시 사물의 UDP Port 값 -->
<xs:attribute name="src_udp_port" type="xs:string"/>
<!-- 사물과의 연동시 사물이 전달하는 메시지의 destination UDP Port값 (메시지를 Network Adaptor를 통해 후킹하는 경우 이용하게 되는 정보) -->
<xs:attribute name="dst_udp_port" type="xs:string"/>
<!-- 사물과의 연동시 HTTP 메시지 통신 방식을 사용하는 경우 HTTP 요청을 위한 주소값-->
<xs:attribute name="http_request_uri" type="xs:string"/>
</xs:complexType> </xs:element>

<!-- 사물의 정보 수신 물리 인터페이스 가상화-->
<xs:element name="receiverInformation"> <xs:complexType>
<!-- 사물이 수신할 메시지에 대한 인스턴스의 Controller Interface와 연결하기 위한 정보로 해당 어트리뷰트의 값은 연결하고자 하는 Controller Interface의 ID 값 기술한다. -->
<xs:attribute name="connectedInterfaceId" type="xs:unsignedShort"/>
<!-- 사물과의 연동시 사용할 실질적인 물리 인터페이스 (zigbee, wifi)의 정보를 입력 -->
<xs:attribute name="interface" type="xs:string"/>
<!-- 사물과의 연동시 사물이 수신할 인터페이스의 MAC 주소값 -->
<xs:attribute name="dst_mac_addr" type="xs:string"/>
<!-- 사물과의 연동시 사물의 IP 주소값 -->
<xs:attribute name="src_ip_addr" type="xs:string"/>
<!-- 사물과의 연동시 사물이 전달하는 메시지의 destination IP 주소값 (메시지를 Network Adaptor를 통해 후킹하는 경우 이용하게 되는 정보) -->
<xs:attribute name="dst_ip_addr" type="xs:string"/>
<!-- 사물과의 연동시 사물의 TCP Port 값 -->
<xs:attribute name="src_tcp_port" type="xs:string"/>
<!-- 사물과의 연동시 사물이 전달하는 메시지의 destination TCP Port값 (메시지를 Network Adaptor를 통해 후킹하는 경우 이용하게 되는 정보) -->
<xs:attribute name="dst_tcp_port" type="xs:string"/>
<!-- 사물과의 연동시 사물의 UDP Port 값 -->
<xs:attribute name="src_udp_port" type="xs:string"/>
<!-- 사물과의 연동시 사물이 전달하는 메시지의 destination UDP Port값 (메시지를 Network Adaptor를 통해 후킹하는 경우 이용하게 되는 정보) -->
<xs:attribute name="dst_udp_port" type="xs:string"/>
<!-- 사물과의 연동시 HTTP 메시지 통신 방식을 사용하는 경우 HTTP 요청을 위한 주소값-->
<xs:attribute name="http_request_uri" type="xs:string"/>
</xs:complexType> </xs:element>

</xs:all> </xs:complexType> </xs:element>
위에서 설명한 인스턴스 매니저는 가상객체화의 동작 환경을 제공하는 동작 환경으로서, 일례로, V8 기반의 자바스크립트 엔진을 이용할 수 있으며, 인스턴스 호스팅을 위한 인스턴스 풀 및 메시지 라우터를 포함할 수 있다.
도 7은 본 발명의 일실시예에 있어서, 인스턴스 매니저를 설명하기 위한 블록도이다. 인스턴스 매니저(700)는 인스턴스의 생성 및 동작과 관련과 관련된 주요 모듈들로서, 입출력 메시지를 라우팅하는 메시지 라우터(Message Router, 710), 인스턴스의 생애주기를 관리하고 스케쥴링하는 인스턴스 라이프사이클 매니저(Instance Lifecycle Manager, 720), 인스턴스 풀링(Pooling)을 위한 인스턴스 풀(Instance Pool, 730) 및 인스턴스 동작 환경을 제공하기 위한 엔진(V8, 740)을 포함할 수 있다.
인터페이스 서버(750)는 인스턴스 매니저(700)와 타 모듈 및 외부 서비스간의 인터페이스 기능을 제공하며, 구조적으로는 요청을 받아 처리하기 위한 서버 부분(Server Module) 및 타 모듈 및 외부로 메시지 전달을 위한 클라이언트 부분(Client Module)으로 구성될 수 있다.
인터페이스 서버(750)의 서버 모듈을 통한 서버 인터페이스의 기능은 다음과 같다.
인스턴스 상태 질의(Instance State Query) 기능 - 인스턴스 어플리케이션 서버(Instance Application Server, IAS) 및 네트워크 어댑터(Network Adaptor, NA)에서 인스턴스 매니저(700)상에서 실행중인 인스턴스의 상태를 알고 싶을 때, HTTP(Hyper Text Transfer Protocol) 요청(Request)을 통해 특정 인스턴스의 상태 정보를 알 수 있는 기능.
인스턴스 상태 제어(Instance State Control) 기능 - 인스턴스 어플리케이션 서버에서 특정 인스턴스의 상태를 변경할 경우, HTTP 요청 통해 해당 인스턴스의 상태를 동작(Run)/정지(Stop)/보류(Suspend)상태로 변경할 수 있는 기능.
인스턴스 설치 제어(Instance Deploy Control) 기능 - 인스턴스 어플리케이션 서버를 통해 새로운 인스턴스가 설치되거나, 기존의 인스턴스를 삭제하는 경우 HTTP 요청을 통해 인스턴스 매니저(700)에 해당 인스턴스에 대한 정보를 전달할 수 있는 기능.
사물 피드 제어(Thing Feed Control) 기능 - 네트워크 어댑터에서 수신한 물리적 사물(Physical Thing)의 메시지를 해당 인스턴스에게 HTTP 요청의 형태로 보낼(dispatch) 수 있는 기능.
대표값 제어를 위한 인스턴스 상태 제어(Instance State Control for Representative Controller) 기능 - 인스턴스 어플리케이션 서버로부터 특정 인스턴스의 대표값 제어를 통해 인스턴스 상태를 변경한 경우 HTTP 요청의 형태로 메시지를 전달할 수 있는 기능.
인터페이스 서버(750)의 클라이언트 모듈을 통한 클라이언트 인터페이스의 기능은 특정 인스턴스가 외부 서비스로의 연결 요청을 하는 경우, 클라이언트 인터페이스를 이용하여 메시지를 전달할 수 있는 기능(특정 인스턴스가 OAuth 인증 서비스를 이용하는 경우)을 포함할 수 있다.
또한, 도 7에서 인스턴스 API(Application Program Interface) 핸들러(Instance API Handler)는 인스턴스와 관련하여 외부로 제공될 오픈 API를 관리할 수 있으며, 데이터베이스 커낵터(DB Connector)는 RDBMS(Relational DataBase Management System)과의 연결을 위해 이용될 수 있다.
도 8은 본 발명의 일실시예에 있어서, 인스턴스 상태 질의 기능을 설명하기 위한 흐름도이다. 인스턴스 어플리케이션 서버(Instance Application Server, IAS)는 개별 인스턴스에 대한 상태 정보 제공을 위해, 인스턴스 상태 질의 기능을 통해 인스턴스 매니저(700)로 질의할 수 있다. 실행중인 인스턴스 매니저(700)상에서의 개별 인스턴스의 상태 관리는 인스턴스 라이프사이클 매니저(720)에서 담당할 수 있으며, 인스턴스 라이프사이클 매니저(720)는 인스턴스 식별자(ID) 값을 이용하여 해당 인스턴스의 상태 정보를 반환할 수 있다. 인스턴스의 상태정보는 동작(Run), 보류(Suspend), 정지(Stop) 및 에러(Error)와 같은 상태 값을 가질 수 있다.
단계(810)에서 인터페이스 서버(750)는 서버 모듈을 통해 HTTP 요청 메시지를 수신할 수 있다. 일례로, 인터페이스 서버(750)는 인스턴스 어플리케이션 서버(Instance Application Server, IAS)나 네트워크 어댑터(Network Adaptor, NA) 또는 외부 웹 서비스(External Web Services, EWS)로부터 HTTP 요청 메시지를 수신할 수 있다.
단계(820)에서 인터페이스 서버(750)는 인스턴스 상태를 얻기 위한 메시지를 생성하여 메시지 라우터(710)로 전달할 수 있다.
단계(830)에서 메시지 라우터(710)는 인스턴스 상태를 얻기 위한 메시지를 파싱하여 인스턴스 라이프사이클 매니저(720)로 전달할 수 있다.
단계(840)에서 인스턴스 라이프사이클 매니저(720)는 등록된 인스턴스 상태 정보를 조회하여, 인스턴스 식별자의 조회가 성공한 경우 해당 인스턴스에 대한 상태 메시지를 생성할 수 있고, 인스턴스 식별자의 조회가 실패한 경우 인스턴스 정보 없음 메시지를 생성할 수 있다. 일례로, 상태 메시지는, 동작(Run), 보류(Suspend), 정지(Stop) 및 에러(Error)와 같은 상태 값을 포함할 수 있다.
단계(850)에서 인터페이스 서버(750)는 서버 모듈을 통해 HTTP요청 메시지에 대한 응답을 제공할 수 있다. 일례로, 인터페이스 서버(750)는 단계(840)에서 생성되는 상태 메시지 또는 정보 없음 메시지를 서버 모듈을 통해 HTTP요청 메시지에 대한 응답으로 제공할 수 있다.
도 9는 본 발명의 일실시예에 있어서, 인스턴스 상태 제어 기능을 설명하기 위한 흐름도이다. 인스턴스 어플리케이션 서버는 개별 인스턴스에 대한 상태를 변경하고자 하는 경우, 인스턴스 상태 제어 기능을 이용할 수 있다. 상태를 변경하고자 하는 인스턴스의 식별자 정보를 이용하여 메시지가 전달되면, 인스턴스 라이프사이클 매니저(720)는 해당 인스턴스의 상태를 변경할 수 있다. 이때 변경 가능한 상태는 동작(Run), 보류(Suspend) 및 정지(Stop) 상태를 포함할 수 있다.
단계(910)에서 인터페이스 서버(750)는 서버 모듈을 통해 HTTP 요청 메시지를 수신할 수 있다. 일례로, 인터페이스 서버(750)는 인스턴스 어플리케이션 서버나 네트워크 어댑터 또는 외부 웹 서비스로부터 HTTP 요청 메시지를 수신할 수 있다.
단계(920)에서 인터페이스 서버(750)는 인스턴스 상태 설정을 위한 메시지를 생성하여 메시지 라우터(710)로 전달할 수 있다.
단계(930)에서 메시지 라우터(710)는 인스턴스 상태 설정을 위한 메시지를 파싱하여 인스턴스 라이프사이클 매니저(720)로 전달할 수 있다.
단계(940)에서 인스턴스 라이프사이클 매니저(720)는 등록된 인스턴스 상태 정보를 조회하여, 인스턴스 식별자의 조회가 성공한 경우 해당 인스턴스에 대한 상태 정보를 변경할 수 있고, 인스턴스 식별자의 조회가 실패한 경우 인스턴스 정보 없음 메시지를 생성할 수 있다. 예를 들어, 인스턴스 라이프사이클 매니저(720)는 인스턴스 식별자의 조회가 성공한 경우, 해당 인스턴스의 상태를 HTTP 요청 메시지에 따라 동작(Run), 보류(Suspend) 및 정지(Stop) 중 하나의 상태로 변경할 수 있다.
단계(950)에서 인터페이스 서버(750)는 서버 모듈을 통해 HTTP요청 메시지에 대한 응답을 제공할 수 있다. 일례로, 인터페이스 서버(750)는 단계(940)에서 상태 정보의 변경에 따라 생성되는 응답 메시지 또는 정보 없음 메시지를 서버 모듈을 통해 HTTP요청 메시지에 대한 응답으로 제공할 수 있다.
도 10은 본 발명의 일실시예에 있어서, 인스턴스 설치 제어 기능을 설명하기 위한 흐름도이다. 인스턴스 어플리케이션 서버는 새로운 인스턴스를 설치(Deploy)하거나 기존의 인스턴스를 삭제(Undeploy) 하고자 하는 경우, 인스턴스 설치 제어 기능을 이용할 수 있다. 상태를 변경하고자 하는 인스턴스 식별자 정보를 이용하여 메시지가 전달되면, 인스턴스 라이프사이클 매니저(720)는 해당 인스턴스의 상태를 변경할 수 있다. 이때, 삭제된 인스턴스는 인스턴스 풀(730)에서 제외될 수 있다.
단계(1010)에서 인터페이스 서버(750)는 서버 모듈을 통해 HTTP 요청 메시지를 수신할 수 있다. 일례로, 인터페이스 서버(750)는 인스턴스 어플리케이션 서버나 네트워크 어댑터 또는 외부 웹 서비스로부터 HTTP 요청 메시지를 수신할 수 있다.
단계(1020)에서 인터페이스 서버(750)는 인스턴스 설치 메시지 또는 인스턴스 삭제 메시지를 생성하여 메시지 라우터(710)로 전달할 수 있다.
단계(1030)에서 메시지 라우터(710)는 인스턴스 설치 메시지 또는 인스턴스 삭제 메시지를 파싱하여 인스턴스 라이프사이클 매니저(720)로 전달할 수 있다.
단계(1040)에서 인스턴스 라이프사이클 매니저(720)는 전달된 메시지가 인스턴스 설치 메시지인 경우 신규 인스턴스의 등록 및 신규 인스턴스의 식별자의 생성을 요청할 수 있고, 전달된 메시지가 인스턴스 삭제 메시지인 경우 등록된 인스턴스를 삭제할 수 있다. 이때, 신규 인스턴스의 등록 및 식별자의 생성에 대한 요청은 인스턴스 풀(730)로 전달될 수 있고, 인스턴스 풀(730)에 신규 인스턴스가 생성되는 경우, 생성된 인스턴스의 식별자가 인스턴스 라이프사이클 매니저(720)로 반환될 수 있다. 또한, 인스턴스 라이프사이클 매니저(720)는 해당 인스턴스의 삭제를 위해, 등록된 인스턴스 상태 정보를 조회하여 인스턴스 식별자의 조회가 성공한 경우, 해당 인스턴스의 상태를 종료(Stop) 상태로 변경한 후, 등록되어 있는 인스턴스에 대한 정보를 삭제할 수 있다.
단계(1050)에서 인터페이스 서버(750)는 서버 모듈을 통해 HTTP요청 메시지에 대한 응답을 제공할 수 있다. 예를 들어, 인스턴스 설치 메시지에 따라 신규 인스턴스가 생성된 경우, 인터페이스 서버(750)는 생성된 신규 인스턴스의 식별자를 포함하는 메시지를 제공할 수 있다. 다른 예로, 인스턴스 삭제 메시지에 따라 인스턴스가 삭제된 경우, 인터페이스 서버(750)는 해당 인스턴스가 삭제되었음을 알리기 위한 메시지를 제공할 수 있다. 또 다른 예로, 삭제하고자 하는 인스턴스가 인스턴스 라이프사이클 매니저(720)에 등록되어 있지 않은 경우, 인터페이스 서버(750)는 인스턴스 정보 없음 메시지를 제공할 수 있다.
도 11은 본 발명의 일실시예에 있어서, 사물 피드 제어 기능을 설명하기 위한 블록도이다. 사물 피드 제어 기능은 네트워크 어댑터로부터 수신한 사물의 메시지를 특정 인스턴스에게 보내기(Dispatch) 위한 기능을 제공할 수 있다. 인터페이스 서버(750)는 서버 모듈을 이용하여 네트워크 어댑터로부터 메시지 수신하는 경우, 메시지 라우터(710)에게 메시지를 HTTP 요청 방식을 이용하여 전달할 수 있고, 네트워크 어댑터에게는 응답 메시지를 전달할 수 있다. 메시지 라우터(710)는 별개의 스레드(Thread)를 이용하여 인터페이스 서버(750)의 서버 모듈로부터 수신한 메시지를 해당 인스턴스 피드상에 추가할 수 있고, 트리거(Trigger)를 이용하여 구독(Subscribe) 중인 인스턴스들이 호출될 수 있도록 인스턴스 라이프사이클 매니저(720)상의 인스턴스 스케쥴러에 스케쥴을 등록할 수 있다.
단계(1110)에서 네트워크 어댑터는 메시지 리스닝 테이블(Message Listening Table) 정보를 이용하여 해당 메시지의 송신 장치(사물) 정보를 인식할 수 있다. 예를 들어, 네트워크 어댑터는 메시지를 전송하는 사물에 대한 정보를 메시지 리스닝 테이블을 통해 인식함으로써, 필요한 인스턴스 식별자를 획득할 수 있다.
단계(1120)에서 네트워크 어댑터는 인터페이스 서버(750)의 서버 모듈로 HTTP 요청 메시지를 전송할 수 있다.
단계(1130)에서 인터페이스 서버(750)는 서버 모듈을 통해 HTTP 요청 메시지를 수신하여 메시지 라우터(710)로 전달할 수 있다.
단계(1140)에서 메시지 라우터(710)는 인스턴스 풀(730)에 해당 인스턴스가 존재하는지 여부를 확인하고, 해당 인스턴스의 서브스크라이버 인터페이스의 메시지 큐에 HTTP 요청 메시지와 연관된 데이터를 저장할 수 있다.
단계(1150)에서 메시지 라우터(710)는 인터페이스 서버(750)의 서버 모듈을 통해 HTTP 요청 메시지에 대한 응답을 제공할 수 있다.
도 12는 본 발명의 일실시예에 있어서, 스케쥴 등록 방법을 설명하기 위한 흐름도이다. 본 실시예에 따른 스케쥴 등록 방법에 포함된 단계들은 도 11에서 설명한 단계(1140) 및 단계(1150) 사이에 포함될 수 있다.
단계(1210)에서 메시지 라우터(710)는 인스턴스 라이프사이클 매니저(720)로 특정 인스턴스에 대한 메시지 피드 정보 업데이트를 알릴 수 있다.
단계(1220)에서 인스턴스 라이프사이클 매니저(720)는 해당 인스턴스의 피드에 대해 구독 중인 인스턴스들의 트리거 여부를 판단하여, 트리거가 존재하는 인스턴스를 위한 스케쥴을 등록할 수 있다. 일례로, 등록되는 스케쥴은 인스턴스의 즉시 동작을 위한 스케쥴을 포함할 수 있다.
도 11의 단계(1150)에서 메시지 라우터(710)는 도 12에서 설명한 트리거가 존재하는 인스턴스를 위한 스케쥴이 등록된 경우, 네트워크 어댑터로부터의 HTTP 요청 메시지에 따라 장치(사물)로부터의 메시지가 인스턴스에 반영되었음을 알리는 메시지를 응답으로 제공할 수 있다. 반대로, 트리거가 존재하는 인스턴스를 위한 스케쥴이 등록되지 않은 경우, 메시지 라우터(710)는 해당 인스턴스가 존재하지 하지 않음을 나타내는 메시지를 응답으로 제공할 수 있다.
도 13 내지 도 15는 본 발명의 일실시예에 있어서, 인스턴스 위자드를 설명하기 위한 도면들이다.
제1 화면(1300)은 웹을 통해 제공되는 인스턴스 위자드를 이용하여 인스턴스 정보를 입력하는 제1 단계를 나타내고 있다. 제1 단계에서는 인스턴스의 이름, 태그, IoT 노드의 프로파일이 저장된 URL 등에 대한 정보들이 입력될 수 있다.
제2 화면(1400)은 웹을 통해 제공되는 인스턴스 위자드를 이용하여 인스턴스 정보를 입력하는 제2 단계를 나타내고 있다. 제2 단계에서는 인스턴스 아이콘을 선택하기 위한 사용자 인터페이스, 인스턴스의 상태를 선택하기 위한 사용자 인터페이스, 컨트롤러를 선택하기 위한 사용자 인터페이스, 대표값의 단위를 선택하기 위한 사용자 인터페이스 등이 제공될 수 있고, 사용자는 제공된 사용자 인터페이스들을 이용하여 인스턴스에 대한 다양한 정보들을 입력할 수 있다.
제3 화면(1500)은 웹을 통해 제공되는 인스턴스 위자드를 이용하여 인스턴스 정보를 입력하는 제3 단계를 나타내고 있다. 제3 단계에서는 사용자와 관련된 외부 서비스를 통해 조건에 따른 정보를 제공받기 위한 정보가 설정될 수 있다.
예를 들어, 제1 화면(1300)을 통해 설정(프로파일의 URL에 기초하여)한 IoT 노드에서 물의 양에 대한 정보가 감지될 수 있고, IoT 노드에서 네트워크 어댑터를 통해 인스턴스 매니저로 물의 양에 대한 정보가 포함된 메시지를 전송할 수 있다. 이때, 도 11 및 도 12를 통해 설명한 바와 같이, 메시지가 처리되어 인스턴스의 동작이 스케쥴링될 수 있다. 이때, 제3 화면(1500)에 나타난 바와 같이, 물의 양이 10% 미만이 되면, 외부 서비스 A를 통해 알림이 제공될 수 있다. 이 경우, 제2 화면(1400)에서는 10% 미만이라는 조건을 위해 비율에 대한 데이터 타입이 설정될 수 있다.
도 16은 본 발명의 일실시예에 있어서, 서비스 방법을 도시한 흐름도이다. 본 실시예에 따른 서비스 방법은 적어도 하나의 프로그램이 저장된 적어도 하나의 스토리지 유닛 및 적어도 하나의 프로세서를 포함하는 서비스 시스템에 의해 수행될 수 있다. 이때, 서비스 방법이 포함하는 단계들은 적어도 하나의 프로그램의 제어에 따라 적어도 하나의 프로세서에 의해 처리될 수 있다.
단계(1610)에서 서비스 시스템은 사물(Thing)에 대한 정보의 가상화 오브젝트(Virtualization Object)를 생성하기 위한 인스턴스 프로파일 스키마를 통해 네트워크 어댑터에 대한 정보를 획득할 수 있다.
단계(1620)에서 서비스 시스템은 네트워크 어댑터에 대한 정보에 기초하여 사물의 메시지를 수신하여 대응하는 인스턴스로 전달하거나 또는 인스턴스의 메시지를 사물로 전달할 수 있다. 사물의 메시지를 수신하는 것은 인스턴스의 서브스크라이버 인터페이스를, 인스턴스의 메시지를 사물로 전달하는 것은 인스턴스의 컨트롤러 인터페이스를 통해 처리될 수 있다.
일례로, 프로파일 스키마는, 사물에 대한 정보, 인스턴스에 대한 정보, 네트워크 어댑터에 대한 정보를 포함할 수 있다. 보다 자세한 예로, 사물에 대한 정보는, 사물의 명칭, 사물의 대표 이미지 및 사물의 부가 정보 중 적어도 하나를 포함할 수 있다. 또한, 인스턴스에 대한 정보는, 인스턴스의 태그, 인스턴스의 식별자, 인스턴스의 버전, 인스턴스에 대한 정보가 포함된 위치, 인스턴스의 등록 후 이용될 대표 아이콘(Icon)의 물리적 위치 및 인스턴스의 동작 주기 중 적어도 하나에 대한 정보를 포함할 수 있다. 또한, 네트워크 어댑터에 대한 정보는, 사물과 인스턴스간의 연동을 위해 실질적으로 사용될 통신 프로토콜, 사물의 메시지를 송신하기 위한 목적지의 MAC 주소값, 사물의 IP 주소값, 사물의 TCP 포트값, 사물의 메시지를 송신하기 위한 목적지의 TCP 포트값, 사물의 UDP 포트값, 사물의 메시지를 송신하기 위한 목적지의 UDP 포트값 및 HTTP 메시지 통신 방식을 위해 이용될 주소값 중 복수의 정보를 포함할 수 있다.
다른 예로, 네트워크 어댑터에 대한 정보는, 인스턴스의 서브스크라이버 인스턴스와 연결하기 위한 정보 및 사물과 인스턴스간의 연동 시 사용되는 물리적 인터페이스에 대한 정보를 포함할 수 있다. 이때, 서브스크라이버 인스턴스는, 사물 또는 다른 인스턴스로부터 메시지를 수신하기 위한 인터페이스를 포함할 수 있다.
도 16에서 생략된 내용은 도 1 내지 도 15를 참조할 수 있다.
이와 같이, 본 발명의 실시예들에 따르면, IoT(Internet of Things), WoT(Web of Things) 또는 WoO(Web of Objects) 환경에서 이기종의 기기들이나 다양한 서비스들을 연동 또는 융합하여 관리하고, 통합적으로 서비스를 제공할 수 있다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPA(field programmable array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (14)

  1. IoT(Internet of Things) 환경에서의 인스턴스 호스팅 게이트웨이의 서비스 방법에 있어서,
    사물(Thing)에 대한 정보의 가상화 오브젝트(Virtualization Object)를 생성하기 위한 인스턴스 프로파일 스키마를 통해 네트워크 어댑터에 대한 정보를 획득하는 단계; 및
    상기 네트워크 어댑터에 대한 정보에 기초하여 상기 사물의 메시지를 수신하여 대응하는 인스턴스로 전달하거나 또는 상기 인스턴스의 메시지를 상기 사물로 전달하는 단계
    를 포함하고,
    상기 인스턴스는, 상기 사물과 1:N(상기 N은 1 이상의 자연수)의 관계로 통신하는 인스턴스 중 하나로, 상기 인스턴스 호스팅 게이트웨이에 의해 프로세스의 형태로 생성되는 것을 특징으로 하는 서비스 방법.
  2. 제1항에 있어서,
    상기 프로파일 스키마는, 상기 사물에 대한 정보, 상기 인스턴스에 대한 정보, 상기 네트워크 어댑터에 대한 정보를 포함하는 것을 특징으로 하는 서비스 방법.
  3. 제2항에 있어서,
    상기 사물에 대한 정보는, 상기 사물의 명칭, 상기 사물의 대표 이미지 및 상기 사물의 부가 정보 중 적어도 하나를 포함하는 것을 특징으로 하는 서비스 방법.
  4. 제2항에 있어서,
    상기 인스턴스에 대한 정보는, 상기 인스턴스의 태그, 상기 인스턴스의 식별자, 상기 인스턴스의 버전, 상기 인스턴스에 대한 정보가 포함된 위치, 상기 인스턴스의 등록 후 이용될 대표 아이콘(Icon)의 물리적 위치 및 상기 인스턴스의 동작 주기 중 적어도 하나에 대한 정보를 포함하는 것을 특징으로 하는 서비스 방법.
  5. 제2항에 있어서,
    상기 네트워크 어댑터에 대한 정보는, 상기 사물과 상기 인스턴스간의 연동을 위해 실질적으로 사용될 통신 프로토콜, 상기 사물의 메시지를 송신하기 위한 목적지의 MAC 주소값, 상기 사물의 IP 주소값, 상기 사물의 TCP 포트값, 상기 사물의 메시지를 송신하기 위한 목적지의 TCP 포트값, 상기 사물의 UDP 포트값, 상기 사물의 메시지를 송신하기 위한 목적지의 UDP 포트값 및 HTTP 메시지 통신 방식을 위해 이용될 주소값 중 복수의 정보를 포함하는 것을 특징으로 하는 서비스 방법.
  6. 제1항에 있어서,
    상기 네트워크 어댑터에 대한 정보는, 상기 인스턴스의 서브스크라이버 인스턴스와 연결하기 위한 정보 및 상기 사물과 상기 인스턴스간의 연동 시 사용되는 물리적 인터페이스에 대한 정보를 포함하는 것을 특징으로 하는 서비스 방법.
  7. 제6항에 있어서,
    상기 서브스크라이버 인스턴스는, 상기 사물 또는 다른 인스턴스로부터 메시지를 수신하기 위한 인터페이스를 포함하는 것을 특징으로 하는 서비스 방법.
  8. IoT(Internet of Things) 환경에서의 서비스 시스템에 있어서,
    적어도 하나의 프로그램이 저장된 적어도 하나의 스토리지 유닛; 및
    적어도 하나의 프로세서
    를 포함하고,
    상기 적어도 하나의 프로세서는, 상기 적어도 하나의 프로그램의 제어에 따라,
    사물(Thing)에 대한 정보의 가상화 오브젝트(Virtualization Object)를 생성하기 위한 인스턴스 프로파일 스키마를 통해 네트워크 어댑터에 대한 정보를 획득하는 과정; 및
    상기 네트워크 어댑터에 대한 정보에 기초하여 상기 사물의 메시지를 수신하여 대응하는 인스턴스로 전달하거나 또는 상기 인스턴스의 메시지를 상기 사물로 전달하는 과정
    을 처리하고,
    상기 인스턴스는, 상기 사물과 1:N(상기 N은 1 이상의 자연수)의 관계로 통신하는 인스턴스 중 하나로, 상기 서비스 시스템에 의해 프로세스의 형태로 생성되는 것을 특징으로 하는 것을 특징으로 하는 서비스 시스템.
  9. 제8항에 있어서,
    상기 프로파일 스키마는, 상기 사물에 대한 정보, 상기 인스턴스에 대한 정보, 상기 네트워크 어댑터에 대한 정보를 포함하는 것을 특징으로 하는 서비스 시스템.
  10. 제9항에 있어서,
    상기 사물에 대한 정보는, 상기 사물의 명칭, 상기 사물의 대표 이미지 및 상기 사물의 부가 정보 중 적어도 하나를 포함하는 것을 특징으로 하는 서비스 시스템.
  11. 제9항에 있어서,
    상기 인스턴스에 대한 정보는, 상기 인스턴스의 태그, 상기 인스턴스의 식별자, 상기 인스턴스의 버전, 상기 인스턴스에 대한 정보가 포함된 위치, 상기 인스턴스의 등록 후 이용될 대표 아이콘(Icon)의 물리적 위치 및 상기 인스턴스의 동작 주기 중 적어도 하나에 대한 정보를 포함하는 것을 특징으로 하는 서비스 시스템.
  12. 제9항에 있어서,
    상기 네트워크 어댑터에 대한 정보는, 상기 사물과 상기 인스턴스간의 연동을 위해 실질적으로 사용될 통신 프로토콜, 상기 사물의 메시지를 송신하기 위한 목적지의 MAC 주소값, 상기 사물의 IP 주소값, 상기 사물의 TCP 포트값, 상기 사물의 메시지를 송신하기 위한 목적지의 TCP 포트값, 상기 사물의 UDP 포트값, 상기 사물의 메시지를 송신하기 위한 목적지의 UDP 포트값 및 HTTP 메시지 통신 방식을 위해 이용될 주소값 중 복수의 정보를 포함하는 것을 특징으로 하는 서비스 시스템.
  13. 제8항에 있어서,
    상기 네트워크 어댑터에 대한 정보는, 상기 인스턴스의 서브스크라이버 인스턴스와 연결하기 위한 정보 및 상기 사물과 상기 인스턴스간의 연동 시 사용되는 물리적 인터페이스에 대한 정보를 포함하는 것을 특징으로 하는 서비스 시스템.
  14. 제13항에 있어서,
    상기 서브스크라이버 인스턴스는, 상기 사물 또는 다른 인스턴스로부터 메시지를 수신하기 위한 인터페이스를 포함하는 것을 특징으로 하는 서비스 시스템.
KR1020130110312A 2013-08-22 2013-09-13 사물 정보의 가상객체 생성을 위한 인스턴스 프로파일 스키마를 이용한 서비스 방법 및 시스템 KR101552768B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20130099845 2013-08-22
KR1020130099845 2013-08-22

Publications (2)

Publication Number Publication Date
KR20150023198A KR20150023198A (ko) 2015-03-05
KR101552768B1 true KR101552768B1 (ko) 2015-09-14

Family

ID=53020729

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130110312A KR101552768B1 (ko) 2013-08-22 2013-09-13 사물 정보의 가상객체 생성을 위한 인스턴스 프로파일 스키마를 이용한 서비스 방법 및 시스템

Country Status (1)

Country Link
KR (1) KR101552768B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101723172B1 (ko) 2016-01-19 2017-04-04 (주)파인원커뮤니케이션즈 사물 인터넷 서비스 제공 방법

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107409459B (zh) * 2015-02-25 2020-02-07 日本先锋公司 发光装置、发光装置的制造方法及发光系统
KR101689349B1 (ko) * 2015-05-18 2016-12-26 동아대학교 산학협력단 양방향 통신을 지원하는 물류 IoT 통신 시스템 및 방법
KR101869519B1 (ko) * 2016-09-20 2018-07-19 주식회사 한컴엠디에스 스마트 게이트웨이를 포함하는 사물기기 시스템
KR102321392B1 (ko) * 2020-01-06 2021-11-03 정규홍 모빌리티 서비스의 제공을 위한 IoT 디바이스와 통합 관리 서버 및 이를 이용한 모빌리티 서비스 제공 방법

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
A resource oriented architecture for the web of things (Internet of Things(IOT)) 2010.11

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101723172B1 (ko) 2016-01-19 2017-04-04 (주)파인원커뮤니케이션즈 사물 인터넷 서비스 제공 방법

Also Published As

Publication number Publication date
KR20150023198A (ko) 2015-03-05

Similar Documents

Publication Publication Date Title
EP2840813B1 (en) Service method and system using instance interface of virtualization object in internet of things environment
KR101605967B1 (ko) 어플리케이션 특성을 반영하여 트랜잭션을 관리하는 서비스 방법 및 시스템
US11711682B2 (en) Cross-resource subscription for M2M service layer
KR101605968B1 (ko) 가상 객체의 동적 인스턴스 호스팅 서비스 변경 방법 및 시스템
JP5981662B2 (ja) 無線通信システムにおいて接近権限認証のための方法及び装置
US20170063611A1 (en) User Configuration Mechanism for Internet-of-Things (IOT)
CN106797400B (zh) 用于使得能够经由服务层访问第三方服务的系统和方法
JP6342014B2 (ja) サービスイネーブラ機能
US20140289366A1 (en) Service providing method and system for instance hosting
KR101552768B1 (ko) 사물 정보의 가상객체 생성을 위한 인스턴스 프로파일 스키마를 이용한 서비스 방법 및 시스템
KR101493166B1 (ko) IoT 환경에서 가상화된 객체의 인스턴스를 관리하기 위한 웹 기반 사용자 인터페이스를 제공하는 서비스 방법 및 시스템
KR102036420B1 (ko) 머신-투-머신 시스템에서의 애플리케이션 관계 관리
KR101494096B1 (ko) 가상화된 객체의 동작 환경을 제공하기 위한 서비스 방법 및 시스템
KR101478902B1 (ko) 인스턴스 호스팅 환경에서 노드 별 특성에 따른 프로파일에 기초하여 서비스를 제공하는 방법 및 시스템
KR101478903B1 (ko) 인스턴스 호스팅 환경에서 노드의 프로파일에 기반하여 노드의 정보를 처리하기 위한 방법 및 시스템
KR101570619B1 (ko) 인스턴스 호스팅 환경에서의 성능 개선 방법 및 서비스 시스템
JP2020534605A (ja) 通信ネットワークにおけるサービス層メッセージテンプレート
KR101494097B1 (ko) IoT 환경에서 가상화 오브젝트의 인스턴스 인터페이스를 이용한 서비스 방법 및 시스템
KR101573594B1 (ko) 서비스 의도에 기반하여 동적 매쉬업 서비스를 제공하는 서비스 시스템 및 방법
KR101399800B1 (ko) 인스턴스 호스팅을 위한 서비스 제공 방법 및 서비스 제공 시스템
KR101478909B1 (ko) 인스턴스 호스팅 환경에서의 외부 인터페이스 연결을 위한 서비스 제공 방법 및 서비스 제공 시스템

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20180823

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190826

Year of fee payment: 5