KR20180008548A - 컨트롤러 기반 디바이스들의 그룹에 대한 자동 소프트웨어 개발을 위한 방법 및 장치 - Google Patents

컨트롤러 기반 디바이스들의 그룹에 대한 자동 소프트웨어 개발을 위한 방법 및 장치 Download PDF

Info

Publication number
KR20180008548A
KR20180008548A KR1020177035354A KR20177035354A KR20180008548A KR 20180008548 A KR20180008548 A KR 20180008548A KR 1020177035354 A KR1020177035354 A KR 1020177035354A KR 20177035354 A KR20177035354 A KR 20177035354A KR 20180008548 A KR20180008548 A KR 20180008548A
Authority
KR
South Korea
Prior art keywords
controller
code
group
devices
gateway
Prior art date
Application number
KR1020177035354A
Other languages
English (en)
Other versions
KR102622652B1 (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 KR20180008548A publication Critical patent/KR20180008548A/ko
Application granted granted Critical
Publication of KR102622652B1 publication Critical patent/KR102622652B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/64Retargetable
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Telephonic Communication Services (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)
  • Stored Programmes (AREA)

Abstract

그룹 내의 컨트롤러 기반 디바이스들에 대한 소프트웨어의 자동 생성을 위한 방법 및 장치가 제공된다. 이 방법은, 사용자 디바이스 상의 그래픽 사용자 인터페이스(graphical user interface; GUI) 상에 표시된 복수의 컨트롤러 기반 디바이스들로부터의 컨트롤러 기반 디바이스에 대해, 컨트롤러 타입, 컨트롤러 기반 디바이스들의 그룹(복수의 컨트롤러 기반 디바이스들을 포함함) 내의 다른 컨트롤러 기반 디바이스와 통신하기 위해 사용되는 통신 프로토콜, 및 상기 컨트롤러 기반 디바이스로부터의 원격 호출에 의거하여 행해지는 기능의 선택을 수신하는 것을 포함한다.

Description

컨트롤러 기반 디바이스들의 그룹에 대한 자동 소프트웨어 개발을 위한 방법 및 장치
본 발명의 실시예는 일반적으로 컨트롤러 기반 디바이스들의 그룹에 대한 자동 소프트웨어 개발을 위한 방법 및 장치에 관한 것이다.
FPGAs(field programmable gate arrays), 및 MCU, SoC, 이동 전화, 컴퓨터 등과 같은 다른 컨트롤러 기반 디바이스들(예를 들면, 마이크로컨트롤러 또는 마이크로프로세서 기반)의 사용이 상당히 보급되어 왔다. 컨트롤러의 낮은 제조 비용, 가용성, 및 커스터마이징으로 인해, 디바이스를 만드는 데 있어 상업용 회사 및 애호가 등이 사용하는 마이크로컨트롤러 및 SoC(Systems on a Chip)(예를 들면, PIC, ARDUINO, RASPBERRY PI 등)가 확산되었다. 컨트롤러 기반 디바이스는, 주변 장치와의 통신으로 입력/출력 데이터를 처리하도록 프로그래밍할 수 있는 프로세서 코어 및 메모리를 포함한다. 이러한 컨트롤러 기반 디바이스에는, 소수의 RAM(random access memory)뿐만 아니라 종종 NOR FLASH 또는 OTP ROM 형태의 프로그램 메모리도 포함된다. 이러한 복수의 컨트롤러 기반 디바이스들은 대형 장치 내의 내장 애플리케이션에 대해 설계되었다. 이러한 컨트롤러 기반 디바이스들의 실제 애플리케이션은 잠재적으로, 컨트롤러 기반 디바이스를, 주변 장치로서의 종래의 오브젝트 또는 시스템과 연결하는 것을 포함해서, 이러한 주변 장치의 디지털화, 연결성 및 심지어 원격 제어를 가능하게 할 수 있다. 그러나, 클라우드 기술과 하드웨어 및 소프트웨어 기술을 결합하는 복잡성으로 인해, 이러한 실제 애플리케이션을 만드는 데는 몇 가지 과제가 있다
일반적으로, 컨트롤러 기반 디바이스들 또는 그 그룹들을 프로그래밍하는 것은 상당히 복잡하다. "IoT(Internet of Things)"가 증가함에 따라, 점점 더 많은 이러한 컨트롤러 기반 디바이스들이 서로 및/또는 인터넷에 연결되어, 프로그래밍의 복잡성을 크게 증가시키고 있다. 실제 시나리오에서, 그러한 컨트롤러 기반 디바이스들은 서로 및/또는 게이트웨이와 통신하고, 게이트웨이는 소위 에지 디바이스(edge device)에 대한 인터넷 통신을 위한 프록시가 될 수 있다. 에지 디바이스들은 하나 이상의 게이트웨이를 통해 통신하거나, 직접 독립적인 디바이스로서 통신할 수 있다. 그룹 내에서, 상호 운용성을 용이하게 하기 위해 모든 디바이스들(게이트웨이 및 에지)은 호환 가능하게 프로그래밍되어야 하며, 이는 이러한 디바이스들을 프로그래밍하는 복잡성을 현저히 더 가중시킨다. 또한, 커스터마이징이 실시될 때마다 호환성을 관리하는 데 과도한 시간이 걸릴 수도 있다. 컨트롤러 기반 디바이스들의 그룹을 프로그래밍하는 것은, 코딩 커맨드를 암기하고, 계층 구조를 이해하고, 적절한 호출 구문을 활용하는 등 해야 하기 때문에, 사용자에게 매우 어려운 과제이다. 하나의 디바이스가 잘못 프로그래밍되어 있을 경우에도, 그룹의 해당 또는 다른 컨트롤러 기반 디바이스를 위해 작성된 프로그램이 실행되지 않거나 오류를 발생시킬 수 있다.
따라서, 본 기술분야에서는, 컨트롤러 기반 디바이스들에 대한 프로그래밍을 단순화하고, 컨트롤러 기반 디바이스들의 그룹에 대해 프로그래밍을 자동화하는 요구가 있다.
본 발명의 실시예들은, 실질적으로는 도면들 중 적어도 하나와 관련해서 도시 및/또는 설명된 바와 같이, 보다 완전히는 특허청구범위에서 제시되는 바와 같이, 일반적으로 컨트롤러 기반 디바이스들의 그룹에 대한 자동 소프트웨어 개발을 위한 방법 및 장치에 관한 것이다.
본 개시(開示)의 이들 및 다른 특징들 및 이점들은, 동일한 참조 번호가 전체적으로 동일한 부분을 나타내는 첨부된 도면들과 함께, 본 개시의 다음의 상세한 설명의 검토로부터 이해될 수 있다.
본 발명의 상술한 특징이 구체적으로 이해될 수 있게, 위에서 간략히 요약된 본 발명의 보다 구체적인 설명이 실시예를 참조해서 이루어질 수 있으며, 그 일부는 첨부 도면에 도시된다. 다만, 첨부된 도면은 본 발명의 전형적인 실시예만을 도시하는 것뿐이므로, 본 발명의 범주를 제한하는 것으로 간주되어서는 안 되며, 본 발명은 다른 동등한 효과의 실시예가 인정될 수 있다.
도 1은 본 발명의 일 실시예에 따른 컨트롤러 기반 디바이스들의 그룹에 대한 자동 소프트웨어 개발을 위한 시스템(100)의 블록도.
도 2는 본 발명의 일 실시예에 따른 도 1의 코드 가상화 서버에 의해 실행되는 컨트롤러 기반 디바이스들의 그룹에 대한 자동 소프트웨어 개발을 위한 방법의 플로우도.
도 3은 본 발명의 일 실시예에 따른 컨트롤러 기반 디바이스들의 그룹에 대한 자동 소프트웨어 개발을 위한 도 1의 장치(100)의 다양한 디바이스들에 의해 실행되는 방법(300)의 플로우도.
도 4 내지 도 7은 본 발명의 일 실시예에 따른 컨트롤러 기반 디바이스 및 관련 입력을 지정하는 데 사용되는 도 1의 GUI(138)의 그래픽 사용자 인터페이스(GUI)의 일련의 화면들을 나타내는 도면.
본 발명의 실시예는, 상호 작용하게 동작하는 에지 또는 게이트웨이 디바이스들로서 기능하는 컨트롤러 기반 디바이스들(예를 들면, 특히 마이크로컨트롤러, 마이크로프로세서, SoC, MCU 등의 컨트롤러를 갖는 디바이스들)의 그룹에 대한 자동 소프트웨어 개발을 위한 방법 및 장치에 관한 것이고, 보다 구체적으로는 적어도 하나의 에지 디바이스 및 적어도 하나의 게이트웨이 디바이스를 포함하는 상호 연결된 컨트롤러 기반 디바이스들의 그룹을 형성하는 에지 및 게이트웨이 디바이스들 상에서 실행하기 위한 프로그램 또는 코드를 생성하는 방법 및 장치에 관한 것이다. 컨트롤러 기반 디바이스들을 위한 코드는, 예를 들면 코드 가상화 서버 등 컨트롤러 기반 디바이스들에 대해 원격인 디바이스 상에서 ("제2 코드"를 실행함으로써) 기능을 실행하기 위한 원격 호출을 포함하는, 컨트롤러 기반 디바이스들 상에서의 실행을 위한 코드("제1 코드")를 포함한다. 제1 코드는 컨트롤러 기반 디바이스 상에서의 실행을 위한 완전한 프로그램, 또는 컨트롤러 기반 디바이스용의 기존 프로그램에 포함될 수 있는 코드 스니펫(code snippet)을 의미한다. 제1 코드는 또한 컨트롤러 기반 디바이스들에 대한 소프트웨어 개발 키트(SDK)를 포함한다. SDK는, 그룹 내의 다양한 컨트롤러 기반 디바이스들(에지 및 게이트웨이 디바이스) 사이에서, 및 게이트웨이와 코드 가상화 서버 사이에서 통신을 가능하게 하는 라이브러리를 포함해서, 그룹 내의 임의의 컨트롤러 기반 디바이스로부터 코드 가상화 서버로 원격 호출을 라우팅한다. 제2 코드는, 원격 호출에 의해 불러온 기능을 행하기 위한 코드 가상화 서버 상의 하나 이상의 미리 정의된 프로세스 또는 프로그램을 포함한다.
일부 실시예에서, 코드 가상화 서버는 또한 컨트롤러 기반 디바이스와 관련된 입력에 의거하여 자동으로 제1 코드를 생성한다. 입력은, 코드 가상화 서버에 대해 원격인 사용자 디바이스 상의 그래픽 사용자 인터페이스(GUI)를 통해 이루어지는 선택이다. GUI를 통해 이루어지는 선택은 그룹의 컨트롤러 기반 디바이스, 컨트롤러 기반 디바이스의 컨트롤러 타입, 컨트롤러 기반 디바이스가 그룹 내의 다른 컨트롤러 기반 디바이스와 통신하기 위해 사용되는 통신 프로토콜, 및 컨트롤러 기반 디바이스로부터 수신된 원격 호출에 의거하여 행해지는 기능을 포함한다. 제1 코드는, 생성 시, 코드 기반 가상화 서버에 의해 직접 또는 사용자 디바이스를 통해 컨트롤러 기반 디바이스에 설치된다. 그룹의 각 디바이스에 설치된 제1 코드는 그룹의 다양한 디바이스들간의 상호 연결을 가능하게 하고, 이에 의해 그룹의 임의의 디바이스로부터 발해지는 원격 호출을 게이트웨이 디바이스를 통해 코드 가상화 서버로 라우팅하게 할 수 있다. 따라서, 제1 코드를 실행하는 과정에서, 컨트롤러 기반 디바이스는 기능에 대한 입력 및/또는 출력 데이터와 함께 원격 기능을 행하기 위한 원격 호출을 하고, 원격 호출 및 입력/출력 데이터는 그룹의 게이트웨이를 통해 코드 가상화 서버로 라우팅된다. 이에 응해, 코드 가상화 서버는 입력/출력 데이터에 따라 제2 코드를 실행해 기능을 행한다. 이러한 방식으로, 소프트웨어(SDK를 포함하는 제1 코드)는, GUI를 사용해서 편리하게 입력을 제공함으로써 상호 연결된 컨트롤러 기반 그룹의 각 디바이스에 대해 자동으로 생성된다. 이 소프트웨어는, 각 컨트롤러 기반 디바이스를 프로그래밍하는 복잡성을 처리하거나, 컨트롤러 기반 디바이스들의 그룹의 에지 및 게이트웨이 디바이스들의 상호 연결에 따라 개별적으로 각 컨트롤러 기반 디바이스마다 프로그램을 구성할 필요 없이, 그룹 전체에 대해 생성된다.
공통으로 양도된 특허출원 일련번호로, 2007년 9월 11일에 출원된 11/853,137, 2007년 9월 11일에 출원된 11/853,143, 및 2011년 1월 28일에 출원된 12/931,292(현재 미국 특허 8,726,285)에는, 원격으로 워크플로우를 생성, 배치 및 실행하기 위한 기술을 설명되어 있다. 공통으로 양도된 특허출원 일련번호로, 2014년 6월 17일에 출원된 14/307,198, 2014년 6월 17일에 출원된 14/307,208, 2014년 6월 17일에 출원된 14/307,227, 2014년 7월 10일에 출원된 14/328,415, 2015년 1월 9일에 출원된 14/593,151, 및 2015년 4월 13일에 출원된 14/685,064에는, 관련 기술들 중 특히, 코드 및 SDK의 자동 생성, 코드 및 SDK의 가상화, 코드 가상화를 위한 원격 프로세스 호출 생성이 설명되어 있다. 이 리스트된 출원들에서는, 컨트롤러를 포함하는 컨트롤러 기반 디바이스에 대해 소프트웨어를 자동으로 개발하고, 그래픽 사용자 인터페이스를 사용해서 센서 또는 액추에이터 등의 하드웨어 사용을 컨트롤러에 원격으로 매핑하고, 소프트웨어를 예를 들면 원격으로 실행해서, 정의된 워크플로우를 통해 이러한 컨트롤러 기반 디바이스의 능력을 확장하는 기술이 설명되어 있다. 상기 리스트된 각각의 출원은 그 전체가 원용에 의해 본원에 포함된다. 이러한 기술들은 컨트롤러 기반 디바이스의 메모리에 라이브러리(예를 들면 SDK) 및/또는 코드의 스니펫을 배치해서 기능하고, 여기에서 스니펫은, 실행 시, 원격 디바이스, 예를 들면 코드 가상화 서버 상에서 실행되는 기능(예를 들면, 코드의 일부)을 호출하거나, 및/또는 (직접, 또는 코드 가상화 서버를 통해) 데이터를 코드 가상화 서버에 대해 원격인 원격 서비스에 송신하거나, 및/또는 원격 서비스에 의해 데이터에 대해 실행될 기능을 더 호출한다.
본 발명의 실시예는 이들 기술을 사용해서, 에지 및 게이트웨이 디바이스를 포함하는 그룹 내의 복수의 컨트롤러 기반 디바이스에 대해 프로그램을 자동으로 생성하고, 에지 디바이스들은 게이트웨이 디바이스들을 통해 그룹 외부와 통신한다. 이러한 실시예에서, 코드는 그룹 내의 일부 또는 모든 디바이스에 대해 자동적으로 생성되어, 그룹의 기능성을 확장시키고, 그룹 내의 디바이스들의 호환성 및 상호 운용성을 유지하면서 추가 디바이스들의 플러그 앤 플레이를 가능하게 한다.
도 1은 본 발명의 하나 이상의 실시예에 따른 컨트롤러 기반 디바이스들의 그룹에 대한 자동 소프트웨어 개발을 위한 시스템(100)의 블록도이다. 시스템(100)은 다수의 에지 디바이스(102-1... 102-N)(총칭해서 에지 디바이스(102)라 함), 게이트웨이 디바이스 또는 게이트웨이(108), 네트워크(110), 사용자 컴퓨터(112), 코드 가상화 서버(114), 및 원격 서비스(118)를 포함한다. 일부 실시예에서, 에지 디바이스(102)는 에지 디바이스로서 구성되는 게이트웨이 디바이스(102-P)를 포함한다.
네트워크(110)는 인터넷, 또는 광역 네트워크(WAN) 또는 이들의 조합을 포함하며, 도 1에 도시된 바와 같이 다양한 디바이스들에 걸친 하나 이상의 이러한 네트워크를 포함할 수 있다. 장치(100)의 모든 구성 요소는 공지된 방법들 및 컴포넌트들을 사용하여 도 1에 도시된 바와 같이 네트워크(110)에 또는 서로 연결된다.
에지 디바이스(102) 및 게이트웨이(108)는 인터넷(110)에 연결되는 컨트롤러 기반 디바이스들의 그룹(디바이스 그룹(116), 또는 그룹(116))을 형성한다. 그룹(116)의 디바이스들은 에지 디바이스(102)와 게이트웨이(108) 사이에서 통신 경로(106-1... 106-N)를 따라 통신한다. 통신 경로는 일반적으로 무선 경로이지만, 일부 실시예에서, 경로는 유선으로 될 수 있다. 또한, 일부 실시예에서, 컨트롤러 기반 디바이스들(102)은 그들간에서, 1대1, 일대다(one-to-many), 다대다(many-to-many)(예를 들면 메쉬 네트워크) 연결 구성 또는 그 임의의 조합을 포함하는 대쉬 표시 경로(104-1... 104-M)(총칭해서 104라 함)를 따라 통신한다. 에지 디바이스(102)는 게이트웨이(108)를 통해 그룹(116) 외부와 통신한다. 단일 게이트웨이(108)가 도시되어 있지만, 게이트웨이(108)와 마찬가지인 다수의 게이트웨이가 그룹(116) 내에서 사용되거나, 그룹(116)과 마찬가지인 다수의 그룹에 걸쳐 사용될 수 있다.
에지 디바이스(102) 및 게이트웨이(108) 각각은 디바이스 컨트롤러(DC)(120), 주변 전자기기(PE)(122), 및 메모리(124)를 포함한다. 에지 디바이스는 그룹(116) 외부의 디바이스와 통신하지 않는 컨트롤러 기반 디바이스인 반면, 게이트웨이 디바이스(108)는 그룹(116) 외부의 디바이스들, 예를 들면 코드 가상화 서버(114), 사용자 디바이스(112), 및 원격 서비스(118)와 통신하는 디바이스들이다. 예를 들면, 간결성을 위해, 단지 에지 디바이스(또는 컨트롤러 기반 디바이스)(102-N)가 디바이스 컨트롤러(120), 주변 전자기기(112) 및 메모리(124)를 포함하는 것으로 나타냈지만, 각 컨트롤러 기반 디바이스(에지 디바이스(102) 및 게이트웨이(108))는 디바이스 컨트롤러 및 메모리를 포함하고, 주변 전자기기를, 예를 들면 에지 디바이스(102-N)와 마찬가지인 방식으로 포함할 수 있다. 디바이스 컨트롤러(120)는 마이크로컨트롤러(예를 들면, PIC, AVR 타입, ARM 타입 등), 시스템 온 칩(SoC, 예를 들면, RASPBERRY PI), 또는 본 기술분야에 일반적으로 알려진 마이크로프로세서 중 하나 이상을 포함한다. 컨트롤러의 타입은 예를 들면 그러한 디바이스의 적용 및 요구 기능에 의거하여 디바이스마다 다를 수 있다.
주변 전자기기(122)는, 제한이 아닌 예시로서, 디지털 컨트롤러(120)로부터의 디지털 신호를 사용해서 조작될 수 있는 센서, 라이트, 오디오 마이크로폰, 스피커, 액추에이터, 디스플레이, 프린터, 스캐너, I/O 디바이스, 및 임의의 다른 디바이스를 포함한다. 주변 전자기기(122)는 종래의 시스템을 관리 또는 동작시키기 위한 컴포넌트를 포함하거나, 주변 전자기기(122) 자체가 종래의 시스템, 특히 뮤직 시스템, 알람, 가전기기, 전기 디바이스, 전자-기계 디바이스 등이다.
메모리(124)는 데이터 및 실행 가능한 소프트웨어를 저장하기 위해 사용되는 임의의 형태의 디지털 스토리지이다. 이러한 메모리는, 제한이 아닌 예시로서, 랜덤 액세스 메모리, 판독 전용 메모리, 디스크 스토리지, 광학 스토리지 등을 포함한다. 메모리(124)는 오퍼레이팅 시스템(도시되지 않음)에 대응하는 컴퓨터 판독 가능한 명령어들, 및 프로그램(125) 또는 프로그램(125) 내의 코드 스니펫(126)인 제1 코드를 저장한다. 제1 코드(간략화를 위해 126이라 했지만, 프로그램(125) 또는 스니펫(126)을 의미하는 것으로 이해함)는 컨트롤러 기반 디바이스(102-N), 예를 들면 코드 가상화 서버(114)에 대해 원격인 디바이스 상의 기능에 대한 원격 호출(128)을 더 포함한다. 제1 코드(126)는 제 1 코드(126) 및 에지 디바이스(102-N) 상의 원격 호출(128)을 실행하는 데 필요한 라이브러리(들)를 포함하는 SDK(129) 등 추가적인 코드 컴포넌트를 더 포함한다. SDK(129)는, 에지 디바이스(102-N)가 게이트웨이(108)를 통해 코드 가상화 서버(114)에 또는 다른 에지 디바이스(102)와 통신할 수 있게 하는 것을 보장한다. 마찬가지로, 게이트웨이용 SDK는 게이트웨이로부터, 코드 가상화 서버, 에지 디바이스(102), 또는 다른 게이트웨이 디바이스들(도시되지 않음)과의 통신을 가능하게 한다.
사용자 디바이스(112)는 퍼스널 컴퓨터(PC), 랩탑, 태블릿, 스마트폰 등과 같은 컴퓨터이고, 사용자 디바이스(112)는 CPU(130), 지원 회로(132) 및 메모리(136)를 포함한다. CPU(130)는 상업적으로 이용 가능한 임의의 프로세서, 마이크로프로세서, 마이크로컨트롤러 등일 수 있다. 지원 회로(132)는, 사용자 인터페이스, 클럭 회로, 네트워크 통신, 캐시, 전원, I/O 회로 등 기능을 CPU에 제공하는 공지의 회로를 포함한다. I/O 회로는 디스플레이(134), 예를 들면 본 기술분야에서 일반적으로 알려진 컴퓨터 모니터 등의 다양한 표준 또는 터치 기반 디스플레이를 포함한다. 일부 실시예에서, 사용자 인터페이스는 키패드, 전자식 버튼, 스피커, 터치스크린, 디스플레이, 또는 다른 사용자 상호 작용 메커니즘을 포함한다. 메모리(136)는 데이터 및 실행 가능한 소프트웨어를 저장하기 위해 사용되는 임의의 형태의 디지털 스토리지이다. 이러한 메모리는, 제한이 아닌 예시로서, 랜덤 액세스 메모리, 판독 전용 메모리, 디스크 스토리지, 광학 스토리지 등을 포함한다. 메모리(136)는 오퍼레이팅 시스템(도시되지 않음)에 대응하는 컴퓨터 판독 가능한 명령어, 및 디스플레이(134) 상에 표시되는 그래픽 사용자 인터페이스(GUI)(138)를 저장한다. GUI(138)는 사용자 디바이스(112) 상에 설치되거나, 브라우저(138)를 통해 사용자 디바이스(112) 상에 렌더링된다. 일부 실시예에서, GUI는 코드 가상화 서버 상에 상주하지만, 사용자 디바이스(112) 상의 브라우저(138)를 통해 사용자 디바이스(112)에 렌더링된다.
GUI(138)는 그룹 내의 주어진 컨트롤러 기반 디바이스에 대한 선택 가능한 리스트들 및 관련 입력들(동작 모드(에지 또는 게이트웨이), 컨트롤러 타입(들), 통신 프로토콜(들) 및 기능(들) 등)을 제시하며, 이들은 사용자가 대응하는 선택을 하도록 디스플레이(134) 상에 제시된다. 일부 실시예에서, 사용자는 사용자 디바이스(112)의 사용자 인터페이스를 사용하여 GUI(138)를 조작해서, 그룹(116)의 컨트롤러 기반 디바이스들(에지 디바이스(102), 게이트웨이(108))의 리스트(140)를 로드할 수 있다. 그룹(116)에서 게이트웨이가 사용되면, 예를 들면 사용자는 체크 박스 또는 라디오 버튼(도시되지 않음)을 사용해서 지정할 수도 있다. 사용자는, 실선 밑줄로 표시된 바와 같이, 컨트롤러 기반 디바이스(102-N)에 대응하는 CBD-N을 선택한다. 선택된 디바이스(CBD-N)에 대해, GUI(138)는, 리스트 관련 입력, 예를 들면, CBD-N의 디바이스 타입(에지 또는 게이트웨이)의 리스트(141), 컨트롤러 타입(들)의 리스트(142), 통신 프로토콜(들)의 리스트(143), CBD-N 또는 그룹(116)의 다양한 디바이스들에 이용 가능한 기능(들)의 리스트(144)를 로드한다. 일부 실시예에서, 또한, 사용자가 기능, 예를 들면 리스트(140)에서 선택되는 기능을 행하기 위한 적어도 하나의 파라미터를 입력하도록, 입력 폼들을 포함하는 파라미터들의 리스트(145)가 제시된다. 또한, 사용자는 다수의 컨트롤러 기반 디바이스들에 대해 리스트(141-145)에 대응하는 입력을 제공할 수 있으며, 예를 들면, 리스트(140) 내의 다른 디바이스를 선택할 때 입력 후에 해당하는 것이 제공된다. 일부 실시예에서, 컨트롤러 기반 디바이스와 관련된 하나 이상의 입력에 대응하는 미리 정의된 리스트가 사용자 디바이스(112)에서 이용 가능하거나, 또는 사용자 디바이스(112)에 연결된 컨트롤러 기반 디바이스들을 검출함으로써 사용자 디바이스(112)에 생성된다. 일부 실시예에서, 미리 정의된 리스트는 코드 가상화 서버(114)로부터 검색된다.
리스트는 GUI(138)에 의해 리스트(140-145)로서 표시되고, 사용자는 리스트(140-145)에서 밑줄로 표시되는 바와 같이 각 리스트에 대응하는 입력을 선택하거나 제공한다. 예를 들면, 리스트(140)로부터 선택된 CBD-N에 대해, EDGE가 리스트(141)에서 선택되고, CONTROLLER TYPE-1이 리스트(142)에서 선택되고, PROTOCOL-1이 리스트(143)에서 선택되고, FUNCTION-1이 리스트(144)에서 선택되고, PARAMETER-1이 리스트(145)에서 제공되거나 선택된다. 컨트롤러 타입은 제한이 아닌 예시로서 PIC, AVR, ARM 등을 포함한다. 통신 프로토콜은 제한이 아닌 예시로서 MQTT, CoAP, HTTP, HTTPS 등을 포함하는 머신-투-머신 통신 프로토콜이다. 기능들은 그룹(116)의 컨트롤러 기반 디바이스들에 대해 코드 가상화 서버(114)에서 행해지는 데 이용 가능한 기능들로, 예를 들면 이메일, 텍스트 메시지를 송신하고, 내부 데이터 소스(예를 들면, DB, noSQL DB, 파일 등) 등의 다른 내부(사설) 호스팅 서비스, 또는 (본 기술분야에서 특히) 인터넷 서비스, 예를 들면 TWITTER 또는 FACEBOOK 등의 소셜 네트워크, AMAZON 등의 온라인 쇼핑 포털, SKYPE 등의 VoIP 공급자, GOOGLE, DUCKDUCKGO 등의 검색 엔진, 음성 통화, 화상 통화를 호출하는 것이다.
파라미터는, 예를 들면 사용하고자 하는 이메일 서비스, 이메일 계정 등 원하는 기능 동작을 달성하기 위한 입력 속성이다. 선택 및/또는 입력은 사용자 디바이스(112)의 메모리(136)에 로컬로 저장되거나, 코드 가상화 서버(114)에 직접 송신될 수 있다. 이러한 방식으로, GUI(138)를 통해 이루어지는 선택 입력은 코드 가상화 서버(114)에 제공된다. 컨트롤러 타입, 통신 프로토콜 및 파라미터의 예는 표 1에 포함된다. 일부 실시예에서, 표 1에서 논의되는 파라미터를 사용하여, 설명된 실시예들의 것과 마찬가지로 제1 코드를 생성할 수 있고, 그러한 파라미터들의 선택은 GUI(138)를 통한 입력으로서 얻어지거나, 코드 가상화 서버(114)에 저장된 미리 정의된 데이터로부터 얻어질 수 있다.
Figure pct00001
Figure pct00002
표 1
상술한 GUI(138)는, 다양한 선택을 수신하고 이러한 선택을 코드 가상화 서버(114)에 통신하기 위한 하나의 가능한 GUI 방식을 나타내고, 여기에서 기술된 기술은 GUI(138)의 지정 예로 한정되지 않는다. 예를 들면, 특허청구범위에 의해 정의된 본 발명의 범위 또는 사상을 벗어나지 않고 쉽게 일어나는 몇몇 다른 GUI 방식들 중에서, 동일한 스크린 상에, 또는 순차적으로, 또는 조합되어 리스트가 제시될 수 있다. 예를 들면, 도 4 내지 도 7은 본 발명의 실시예에 따른 또 다른 GUI 방식을 나타낸다. 또 다른 실시예에서, GUI(138)는 ASIC(Application Specific Integrated Circuit)에서의 알고리즘의 이용을 통해, 사용자 디바이스(112)와 관련해서 설명한 바와 같이 CPU(130), 지원 회로(132) 및 메모리(136)의 조합에 의해 제공되는 기능을 제공할 수 있다. 일부 실시예에서, I/O 디바이스는 키패드, 전자식 버튼, 스피커, 터치스크린, 디스플레이, 또는 다른 사용자 상호 작용 메커니즘을 포함한다.
사용자 디바이스(112)는, 소프트웨어 생성을 위한 컨트롤러 기반 디바이스(에지 또는 게이트웨이 디바이스)를 선택할 때, 컨트롤러 타입, 기능, 통신 프로토콜, 기능을 실행하기 위한 파라미터 등의 다른 입력을 선택할 때, 및 개발된 소프트웨어, 예를 들면 제1 코드를 수신할 때, 네트워크(110)에 연결된다. 사용자 디바이스(112)는 또한, 각 컨트롤러 기반 (에지 및 게이트웨이) 디바이스에 제1 코드를 설치할 경우, 디바이스 그룹(116)의 컨트롤러 기반 디바이스에 직접 또는 네트워크(110)를 통해 연결된다. 일부 실시예에서, 사용자 디바이스(112)는, 컨트롤러 기반 디바이스 상의 기존 프로그램에 코드의 스니펫을 삽입하거나, 컨트롤러 기반 디바이스에 완전한 프로그램을 설치하기 위한 통합 개발 환경(integrated development environment; IDE)(도시되지 않음)을 포함한다.
코드 가상화 서버(114)는, 본 발명의 실시예들에 관련된 기능들을 수행하도록 프로그램된 범용 컴퓨터 또는 다른 전자 처리 디바이스일 수 있다. 코드 가상화 서버(114)는 CPU(150), 지원 회로(152), 및 명령 및 알고리즘을 포함하는 메모리(154)를 포함한다. CPU(150)는 임의의 상업적으로 이용 가능한 프로세서, 마이크로프로세서, 마이크로컨트롤러 등일 수 있다. 지원 회로(152)는 사용자 인터페이스, 클럭 회로, 네트워크 통신, 캐시, 전원, I/O 회로 등 기능을 CPU에 제공하는 공지의 회로를 포함한다. 또 다른 실시예는, 커스텀 ASIC에서의 제어 알고리즘을 사용하여, CPU(150), 지원 회로(152) 및 메모리(154)의 임의의 조합에 의해 제공되는 기능을 제공할 수 있다. 일부 실시예에서, 사용자 인터페이스는 키패드, 전자식 버튼, 스피커, 터치스크린, 디스플레이, 또는 다른 사용자 상호 작용 메커니즘을 포함한다.
메모리(154)는 데이터 및 실행 가능한 소프트웨어를 저장하기 위해 사용되는 임의의 형태의 디지털 스토리지일 수 있다. 이러한 메모리는 제한이 아닌 예시로서 랜덤 액세스 메모리, 판독 전용 메모리, 디스크 스토리지, 광학 스토리지 등을 포함한다. 메모리(154)는 오퍼레이팅 시스템(도시되지 않음), 인터페이스(156), 프로세스 풀(158), 코드 생성기(160), 데이터베이스(162), 및 실행 엔진(164)에 대응하는 컴퓨터 판독 가능한 명령어를 저장한다.
인터페이스(156)는 사용자 디바이스(112)가 코드 가상화 서버(114)와 상호 작용하게 하는 기능을 제공한다. 일부 실시예에서, 인터페이스(156)는 또한, 예를 들면 코드 가상화 서버(114)에 의해 사용자 디바이스(112)에 송신되거나 사용자 디바이스(112) 상의 설치를 위해 달리 제공될 수 있는 GUI(138)에 대응하는 GUI 소프트웨어를 포함할 수 있다. 일부 실시예에서, 인터페이스(156)는 사용자 디바이스(112) 상의 브라우저를 통해 GUI(138)를 렌더링하는 소프트웨어를 포함한다. 또한, 인터페이스(156)는 그룹(116)의 컨트롤러 기반 디바이스들(102, 108) 및 원격 서비스(118)에 대한 연결을 제공한다.
프로세스 풀(158)은 그룹(116)의 컨트롤러 기반 디바이스들로부터 수신된 원격 호출에 응답해서 행해질 기능들에 대응하는 코드를 포함한다. 기능들은 또한 "코레오그래프(choreograph)" 또는 "코레오스"라고 하며, 기능을 행하기 위해 실행되는 대응하는 코드를 제2 코드(166)라 한다. 이하, 용어 "기능", "코레오그래프", "코레오스"는 또한 "제2 코드"(166)라고 하며, 이들 용어는 문맥상 달리 명백한 경우가 아니라면 상호 교환적으로 사용될 수 있다. 일부 실시예에서, 기능은 외부 서비스, 예를 들면 원격 서비스(118)와 상호 작용한다. 제2 코드(166)는 또한, 제2 코드(166)의 실행을 지원하는 위해 소프트웨어 개발 키트(SDK)(167)를 포함하고, SDK(167)는, 기능이 원격 서비스(118)와 상호 작용할 필요가 있을 경우 원격 서비스(118)의 SDK 컴포넌트를 포함할 수 있다. 프로세스 풀(158)은 예를 들면 상술한 바와 같이 GUI(138)에 의한 선택에 이용 가능한 각각의 기능에 대응하는 기능들의 리스트를 더 포함하며, 리스트된 기능에 대응하는 제2 코드를 포함한다. 일부 실시예에 따르면, 기능들의 리스트는, 표시 및 사용자 디바이스(112)의 사용자에 의한 기능 선택을 위해 GUI(138)에 송신된다.
코드 생성기(160)는 컨트롤러 기반 디바이스(102-N)에 대한 제1 코드(126)를 생성하고, 호출(128)에 대응하는 코드를 제1 코드(126)에 내장한다. 코드 생성기(160)는, 컨트롤러 기반 디바이스(102-N) 상의 제1 코드(126)의 실행을 지원하기 위해 제1 코드(126)에 포함되는 SDK(129)를 생성하도록 SDK 생성기(168)를 더 포함한다. 제1 코드(126)는, 그 구성 또는 디바이스 타입(EDGE), 디지털 컨트롤러(120)의 컨트롤러 타입(CONTROLLER-1), 그룹(116) 내의 다른 컨트롤러 기반 디바이스(들)와 통신하는 데 사용되는 통신 프로토콜(PROTOCOL-1), 및 원격 호출(128)에 응답해서 행해지는 기능(FUNCTION-1)에 의거하여, 컨트롤러 기반 디바이스(102-N)에 대해 자동적으로 생성된다. 예를 들면, 코드 생성기(160)는 원격 호출에 의거하여 FUNCTION-1을 호출하기 위해, 원격 호출(128) 내에 제2 코드(166)에 대한 적절한 식별자 또는 주소를 포함시킨다. 코드 생성기(160)는, CBD(102N)로부터 게이트웨이 디바이스(108)로, 그리고 나서 코드 가상화 서버(114)로 원격 호출(128)을 라우팅하도록, 제1 코드(126)에 적절한 통신 프로토콜을 더 포함시킨다. 코드 생성기(160)는 CBD(102-N)의 컨트롤러 타입에 적절한 코드(126)를 더 생성한다. 일부 실시예에서, 코드 생성기(160)는, PARAMETER-1에 따라 원격 기능을 행하도록, 제1 코드(126)에 파라미터 데이터(PARAMETER-1)를 더 포함시킨다. SDK(129)는, 예를 들면 하드웨어, 소프트웨어 플랫폼, 통신 인프라(통신 프로토콜, 연결 타입 등을 포함함) 및 다른 코드 실행 파라미터에 따라 필요한 코드 라이브러리를 제공함으로써 제1 코드(126)의 실행을 지원한다.
데이터베이스(162)는 보안 환경을 달성하도록, 사용자 디바이스(112) 또는 원격 서비스(118)를 코드 가상화 서버(114)에 인증하기 위한 사용자 이름, 식별 정보 및 패스워드 등의 사용자 데이터를 포함한다. 일부 실시예에서, 데이터베이스(162)는 또한, 컨트롤러 기반 디바이스(102, 108)를 코드 가상화 서버(114)에 인증하기 위한 인증 정보를 포함한다. 다양한 실시예에 따르면, 데이터베이스(162)는 제한없이 그룹(116) 내의 컨트롤러 기반 디바이스들의 리스트, 그룹(116) 내의 컨트롤러 기반 디바이스마다의 컨트롤러 타입(들), 그룹(116)의 컨트롤러 기반 디바이스 각각에 의해 사용되는 통신 프로토콜(들), 및 기능을 행하는, 즉 제1 코드를 실행하기 위한 기존 파라미터들을 더 포함한다. 인터페이스(158)는 데이터베이스(162)로부터의 데이터를 사용해서 GUI(138)의 하나 이상의 리스트를 채울 수 있다.
실행 엔진(164)은 코드 가상화 서버(114) 상의 컴포넌트의 전술한 기능을 지원한다. 컨트롤러 기반 디바이스(102-N)로부터 원격 호출(128)을 수신하는 것에 응답해서, 실행 엔진(164)은 제2 코드(166)에 대한 적절한 파라미터(예를 들면, 데이터베이스에 저장되거나 GUI(138)로부터 입력으로서 수신됨)를 사용하여 (요구된 기능에 대응하는) 제2 코드(166)를 실행한다. 일부 실시예에서, 실행 엔진(164)은 제2 코드(166)의 실행으로부터 생성된 데이터를 게이트웨이(108)를 통해 컨트롤러 기반 디바이스(102-N)로 송신한다. 일부 실시예에서, 기능들 또는 제2 코드(166)는 원격 서비스(118)와 상호 작용하고, 실행 엔진(164)은 원격 서비스(118)와 제2 코드(166) 사이의 데이터 교환을 용이하게 한다. 본 발명의 실시예는, 그룹(116)의 컨트롤러 기반 디바이스들(CBD(102-N))이 코드 가상화 서버(114) 상의 제2 코드(166)의 실행을 위한 원격 호출을 해서, 컨트롤러 기반 디바이스(102-N)의 디바이스 컨트롤러(120)가 달리 행할 수 없는 기능을 행해서, 그룹(116) 내의 디바이스의 능력을 크게 향상시킬 수 있다.
원격 서비스(118)는 사용자 디바이스(112), 코드 가상화 서버(114), 및 컨트롤러 기반 디바이스(102, 108)에 대해 원격인 제3자 서버 또는 데이터베이스(즉, 디바이스)에 의해 제공되는 사설 또는 공공 서비스를 포함한다. 예를 들면, 원격 서비스(118)는 제3자 데이터베이스 및 서비스(예를 들면, AMAZON, EBAY, FACEBOOK, APPLE PUSH NOTIFICATION 서버, 텍스트 메시지 서버, 이메일 서버 등), 또는 내부 데이터 소스(예를 들면, DB, noSQL DB, 파일 등)를 포함한다. 원격 서비스(118)는 네트워크(110) 또는 다른 네트워크를 통해 코드 가상화 서버(114)에 액세스 가능하다. 일부 실시예에 따르면, 원격 서비스(118)는, 그룹(116)의 컨트롤러 기반 디바이스(102-N)로부터 원격 호출(128)을 수신하는 것에 응답해서 관련된 파라미터를 사용해서 제2 코드(166)를 실행할 때 제공된다.
도 2는 본 발명의 실시예에 따른 컨트롤러 기반 디바이스들의 그룹(116)을 프로그램하도록, 코드 가상화 서버(114)에 의해 실행되는 방법(200)의 플로우도를 나타낸다. 방법(200)은, 예를 들면 GUI(138)를 통해 나타나거나 도 4의 GUI 스크린(400)을 통해 나타난 바와 같이, 게이트웨이 디바이스가 사용되는 디바이스들의 그룹을 프로그래밍하기 위한 것이다. 방법(200)은 단계 202에서 개시해서 단계 200로 진행되어, 방법(200)은 GUI(138)로부터 컨트롤러 기반 디바이스의 선택을 수신한다. 일 실시예에서, 리스트(140) 상의 CBD-N(도 1의 실선 밑줄로 표시됨)을 클릭함으로써 선택이 이루어지고, 여기에서 CBD-N은 그룹(116)의 디바이스(102-N)에 대응한다. 또 다른 실시예에서, 컨트롤러 기반 디바이스(502(게이트웨이) 및/또는 504(에지)를 선택 또는 추가함으로써, 도 5의 GUI 스크린(500) 상에서 선택이 이루어진다.
방법(200)은 단계 206으로 진행된다. 단계 206에서, 방법(200)은 GUI(138)로부터 단계 204에서 선택된 컨트롤러 기반 디바이스의 디바이스 타입을 지정하는 입력을 수신한다(예를 들면, 102-N). 디바이스 타입은 에지 디바이스 또는 게이트웨이 디바이스를 포함한다. 일 실시예에서, "EDGE"(실선 밑줄, 도 1의 리스트(141))를 클릭함으로써 선택이 이루어진다. 일부 실시예에서, 예를 들면, 도 5의 GUI 스크린(500)을 통해 컨트롤러 기반 디바이스(502, 504)의 선택 또는 추가에서 도시된 바와 같이, 컨트롤러 기반 디바이스를 선택할 때 디바이스 타입이 지정될 수 있다.
방법(200)은 단계 208로 진행하여, 방법(200)은, GUI(138)로부터, 선택된 컨트롤러 기반 디바이스(예를 들면, 102-N)의 디바이스 컨트롤러(120)의 컨트롤러 타입을 지정하는 입력을 수신한다. 컨트롤러 타입은, 당해 기술분야에서 일반적으로 알려진 몇몇 유사한 다른 컨트롤러 타입들 중 마이크로컨트롤러 또는 마이크로프로세서, 예를 들면 AVR, ARM, PIC 중 적어도 하나를 제한없이 포함한다. 일부 실시예에서, 컨트롤러 타입은 도 1의 리스트(142)로부터 옵션을 선택함으로써 선택된다. 일부 실시예에서, 예를 들면 GUI 스크린(500)의 드롭 다운 리스트(506)를 사용해서 디바이스 세부 사항을 지정함으로써 컨트롤러 타입이 선택된다.
방법(200)은 단계 210으로 진행하여, 방법(200)은, GUI(138)로부터, 선택된 디바이스(102-N)에 대한 통신 프로토콜을 지정하는 입력을 수신한다. 전형적으로는, 통신 프로토콜은 HTTP, HTTPS, TCP/IP, MQTT, CoAP, LoRa, ZigBee, Thread, Z-WAVE, Bluetooth, 6LOWPAN을 제한없이 포함하는 머신-투-머신(M-to-M) 통신 프로토콜, 또는 다른 공지의 통신 프로토콜이다. 일부 실시예에서, 통신 프로토콜은 도 1의 리스트(143)로부터 선택된다. 일부 실시예에서, 통신 프로토콜은 도 6의 GUI 스크린(600)의 드롭 다운 리스트(602)로부터 적절한 옵션을 선택함으로써 지정된다.
방법(200)은 단계 212로 진행하여, 방법(200)은, GUI(138)로부터, 선택된 디바이스(102-N)에 의해 호출되는 기능(또는 코레오)을 지정하는 입력을 수신한다. 일부 실시예에서, 기능은 도 1의 리스트(144)로부터 선택된다. 일부 실시예에서, 기능은 도 7의 GUI 스크린(700)의 코레오들을 리스트하는 메뉴(702)로부터 적절한 옵션을 선택함으로써 지정된다.
방법(200)은 선택적 단계 214로 진행하여, 방법(200)은, GUI(138)로부터, 선택된 기능을 행하는데 필요한 파라미터를 지정하는 입력을 수신한다. 이 파라미터는 디바이스(102-N)로부터 호출될 때 기능이 동작하는 방법을 정의한다. 일부 실시예에서, 파라미터는 도 1의 리스트(145)를 사용해서 지정된다. 일부 실시예에서, 파라미터는, 예를 들면 도 4-도 7에 도시된 GUI 스크린과 마찬가지로, GUI 스크린 상의 폼을 사용해서 지정된다.
단계 204-단계 214에서, 입력이 GUI(138)로부터 순차적으로 또는 동시에 수신된다. 또한, GUI(138)는, 예를 들면 도 4-도 7의 GUI 스크린 또는 도 1의 리스트(140-145)의 실선 밑줄로 도시된 바와 같이, 적절한 응답을 선택 또는 입력하도록 사용자 디바이스(112)의 입력/출력 디바이스를 조작하는 사용자로부터 입력을 수신한다. 제한없이, 청구범위에 의해 정의되는 바와 같이, 여기에서 설명된 실시예의 범위 및 사상으로부터 벗어나지 않고, 방법(200)을 구현하는데 다른 GUI 방식이 사용될 수도 있다.
방법은 단계 216으로 진행하여, 방법(200)은 단계 206-214로부터 수신된 입력에 의거하여 SDK, 및 제1 코드, 예를 들면 기능에 대한 원격 호출(원격 호출(128))을 포함하는 제1 코드(126)를 생성한다. 예를 들면, 제1 코드(126)는, 디바이스 타입(EDGE), 디지털 컨트롤러(120)의 컨트롤러 타입(CONTROLLER-1), 그룹(116) 내의 다른 컨트롤러 기반 디바이스(들)와 통신하는데 사용되는 통신 프로토콜(PROTOCOL-1), 원격 호출(128)에 응답해서 행해지는 기능(FUNCTION-1), 및 파라미터(PARAMETER-1)에 의거하여 컨트롤러 기반 디바이스(102-N)에 대해 생성된다. 제1 코드(126)는 디바이스(102-N)에 대한 전체 프로그램, 또는 디바이스(102-N) 상의 기존 프로그램에 삽입하기 위한 스니펫을 포함하고, 컨트롤러 타입, 통신 프로토콜, 및 원격 호출에 의해 행해지는 기능에 대한 정보를 포함한다. 특히, 제1 코드(126)는 디바이스(102-N)로부터 게이트웨이(108)를 통해 기능(또는 제2 코드(166))을 실행하기 위한 코드 가상화 서버(114)로 원격 호출(128)을 라우팅하도록 구성된다. 선택적 단계(214)에서 제공될 경우, 제1 코드(126)는 또한, 기능을 동작시키는 데 필요한 파라미터를 포함한다.
방법(200)은 단계 218로 진행하여, 방법(200)은 컨트롤러 기반 디바이스(102-N) 상에 설치하기 위한 제1 코드(126)를 송신한다. 일부 실시예에서, 제1 코드(126)는 게이트웨이(108)를 통해 컨트롤러 기반 디바이스(102-N)로 송신된다. 일부 실시예에서, 제1 코드(126)는 게이트웨이(108)를 통해 또는 직접 컨트롤러 기반 디바이스(102-N)에 제1 코드(126)를 설치하는 사용자 디바이스(112)에 송신된다. 예를 들면, 사용자 디바이스 상의 GUI(138)를 사용하여, 컨트롤러 기반 디바이스(102-N) 상의 기존 프로그램에 코드 스니펫으로서 제1 코드(126)를 삽입할 수 있다.
단계 220에서, 방법(200)은 또 다른 디바이스가 처리되어야 하는지의 여부를 질의한다. 질의가 긍정적으로 응답되면(옵션 "YES"), 방법(200)은 경로(222)를 따라 단계 204로 진행되어, 예를 들면 리스트(140)로부터의 사용자 선택에 의거하여 새로운 컨트롤러 기반 디바이스에 대응하는 선택이 수신된다. 단계 218에서, 그룹(116)의 원하는 수의 디바이스에 대한 제 1 코드가 생성되었을 때, 예를 들어 질의가 부정적으로 응답되면(옵션 "NO"), 방법(200)은 단계 224로 진행되어, 방법(200)이 종료된다.
방법(200)은, 에지 디바이스(102) 및 게이트웨이(108)를 포함하는 그룹(116)의 복수 또는 모든 컨트롤러 기반 디바이스에 대해 반복될 수 있다. 본 발명의 실시예는 적어도 하나의 게이트웨이 디바이스가 사용되는 디바이스 그룹들, 예를 들면 디바이스 그룹(116)에 대한 프로그램을 생성하는 것에 관한 것이다. 게이트웨이 디바이스가 사용되지 않을 경우, 예를 들면, GUI 스크린(400)의 체크 박스(402)가 선택되지 않을 경우, 단일 디바이스 GUI를 통해 단일 디바이스에 대한 프로그램 생성을 위한 기술이, 예를 들면, 2014년 6월 17일자로 출원되고 본 명세서에 그 전문이 원용에 의해 포함되는 공동 양도된 미국 특허출원 제14/207,208호에 설명된 바와 같이, 사용될 수 있다
도 3은, 예를 들면 도 2의 방법(200)에 따라 프로그래밍된 동작 중인 프로그래밍된 디바이스(102-N)를 도시하는 도 1의 장치(100)의 다양한 디바이스들에 의해 실행되는 방법(300)의 플로우도를 나타낸다. 방법(300)은 컨트롤러 기반 디바이스(102-N), 코드 가상화 서버(114), 및 원격 서비스(118)에 의해 실행된다.
방법(300)은 단계 302에서 개시되어, 방법(300)은 컨트롤러 기반 디바이스(102-N) 상의 제1 코드의 실행을 개시한다. 단계 304에서, 방법(300)은 제2 코드를 실행하도록 코드 가상화 서버(114)에 대한 원격 호출을 한다. 단계 306에서, 방법(300)은 게이트웨이 디바이스, 예를 들면 그룹(116)의 게이트웨이(108)를 통해 코드 가상화 서버(114)로 원격 호출을 라우팅한다. 본 발명의 실시예에 따르면, 제1 코드(SDK를 포함)는, 직접, 또는 그룹(116) 내의 다른 컨트롤러 기반 디바이스(들)를 통해 컨트롤러 기반 디바이스(102-N)로부터 게이트웨이(108)로 원격 호출이 라우팅될 수 있게 하는 연결 프로토콜을 포함하고, 게이트웨이(108)는 원격 호출을 코드 가상화 서버(114)에 통신한다.
방법(300)은 단계 308로 진행하여, 방법(300)의 실행은 코드 가상화 서버(114)로 이동되고, 단계 308에서, 제2 코드(166)를 실행해 원하는 기능을 행하도록, 게이트웨이(108)를 통해 컨트롤러 기반 디바이스(102-N)로부터 발생되는 원격 호출을 수신한다. 예를 들면, 기능은 리스트(144)로부터 GUI(138)를 사용해서 선택되는 기능이다.
단계 310에서, 방법(300)은 기능을 행하도록 제2 코드를 실행하기 시작한다. 일부 실시예에서, 제2 코드는 예를 들면 상술한 바와 같이 기능에 대한 파라미터를 사용해서 실행된다. 일부 실시예에서, 기능을 행하는 것은 원격 서비스, 예를 들면 원격 서비스(118)에 대한 서비스 요청을 행하는 것을 포함하고, 제2 코드는 예를 들면 API 및 다른 사용 가능한 기능을 사용해서 원격 서비스(118)에 대한 요청을 처리하는 기능을 포함한다.
단계(312)에서, 방법(300)은 코드 가상화 서버(114)로부터 원격 서비스(118)로 원격 서비스 요청을 개시한다. 방법(300)의 실행은 단계 314에서 원격 서비스(118)로 이동하여, 방법(300)은 원격 서비스 요청을 처리하고, 선택적 단계 316에서, 방법(300)은 원격 서비스(118)에 의해 코드 가상화 서버(114)로 (생성되었을 경우) 데이터를 송신한다. 일부 실시예에서, 원격 서비스(118)의 처리로부터 생성된 데이터는 원격 서비스(118)에 대한 요청이 처리되었다는 확인을 포함한다. 다른 실시예에서, 추가 데이터가 원격 서비스(118)에 의해 생성될 수 있다.
방법(300)의 실행은 선택적 단계 318에서 코드 가상화 서버(114)로 이동하여, 방법(300)은 원격 서비스(118)로부터 데이터를 수신한다. 선택적 단계 320에서, 방법(300)은 수신된 데이터를 컨트롤러 기반 디바이스(102-N)로 송신한다. 일부 실시예(도시 생략)에서, 원격 서비스(118)로부터 수신된 데이터는 선택적 단계 320에서 GUI를 통한 표시를 위해 사용자 디바이스(112)로 송신된다. 방법(300)의 실행은 선택적 단계 322에서 컨트롤러 기반 디바이스(102-N)로 이동하여, 방법(300)은 원격 서비스(118)로부터의 처리된 데이터를 코드 가상화 서버(114)로부터 수신한다. 선택적 단계 324에서, 방법(300)은 컨트롤러 기반 디바이스 상에서의 제1 코드의 실행을 계속한다. 일부 실시예에서, 원격 서비스(118)가 단계 314에서 행해질 경우라도, 원격 서비스(118)에 의해 데이터가 생성되지 않고, 이러한 실시예들에서 방법(300)은 단계 314에서 종료된다. 일부 실시예에서, 선택적 단계 316에서, 방법(300)은, 코드 가상화 서버(114)(예를 들면 선택적 단계들 318, 320) 및 게이트웨이(108)를 통해, 또는 게이트웨이(108)만을 통해 원격 서비스(118)가 처리되었음을 나타내는 데이터를 컨트롤러 기반 디바이스(102-N)에 송신한다. 방법(300)은 선택적 단계 322에서 이 데이터를 수신하고 선택적 단계 324에서 제1 코드의 실행을 계속한다. 일부 실시예에서, 컨트롤러 기반 디바이스(102-N)는 원격 서비스(118)로부터의 데이터를 대기하지 않고 제1 코드의 실행을 계속한다. 일부 실시예에서, 컨트롤러 기반 디바이스(102-N)에서의 제1 코드의 실행은 단계 306에서 원격 호출을 코드 가상화 서버(114)로 라우팅한 후에 종료된다.
이러한 방식으로, 컨트롤러 기반 디바이스의 기능은 본원에서 기술된 실시예에 따라 디바이스(102-N) 및 그룹(116)을 프로그래밍함으로써 현저히 확장된다.
예를 들면, 컴퓨터 센터 내의 환경 모니터링 시스템은 다수의 온도 센서를 포함할 수 있으며, 각각의 센서는, 수집 디바이스와 호환 가능한 통신 프로토콜을 사용하는 무선 송수신기를 통해, 센서 데이터를 수집해서 수집 디바이스(게이트웨이로서 기능함)로 송신하는 디바이스 컨트롤러(더불어, 에지 디바이스)에 연결된다. 통신 프로토콜은 에지 디바이스들에 따라 다를 수 있다. 게이트웨이 디바이스는 상이한 에지 디바이스들로부터 수신된 데이터를 수집 및/또는 전처리(pre-process)하고, 이 데이터를 인터넷을 통해 모니터링 서비스에 전송한다. 본 발명의 실시예에 따르면, 하나 이상의 에지 디바이스는, 센서 데이터가 미리 정의된 범위 내에 들어갈 경우, 예를 들면 온도가 환경 모니텅링 시스템에 대한 정상 범위를 초과할 경우, 텍스트 메시지를 송신하는 기능에 그 데이터를 송신하도록 구성된다(즉, 또 다른 디바이스 상에서 원격으로 기능을 행하도록 원격 호출을 함에 의함). 일부 실시예에서, 게이트웨이는, 데이터가 미리 정의된 범위 내에 속할 때, 또는 복수의 에지 디바이스로부터 수집된 데이터가 미리 정의된 패턴과 일치할 때, 게이트웨이는 특정 에지 디바이스로부터 텍스트 메시지를 송신하는 기능으로 데이터를 송신하도록 구성될 수 있다. 각각의 경우에, 텍스트 메시지를 송신하는 호출은 게이트웨이를 통해 라우팅된다. 디바이스 컨트롤러에 각각 연결된 추가 센서(에지 디바이스들), 예를 들면 습도 센서가 환경 모니터링 시스템에 추가될 수 있고, 새로운 에지 디바이스는 다양한 통신 프로토콜을 가질 수 있다. 본 발명의 실시예는 적절한 코드로 새로운 에지 디바이스를 프로그래밍할 수 있게 하며, 간단한 그래픽 사용자 인터페이스 기반 입력을 허용함으로써 편리하게 다른 디바이스(예를 들면, 온도 센서)와의 원활한 상호 연결을 가능하게 한다. 예를 들면, 본원에서 설명된 실시예를 사용해서, 새로운 에지 디바이스(습도 센서)는 게이트웨이를 통해 원격 기능을 원활히 호출할 수 있게 된다. 따라서, 본 발명의 실시예는, 에지 및 게이트웨이 디바이스의 기능을 향상시키고, 에지 및 게이트웨이 디바이스의 한정된 능력을 이용 가능한 원격 서비스의 능력으로 확장하면서, 이를 원활한 방식으로 행한다.
또한, 일부 실시예에 따르면, 그룹 내의 하나 이상의 게이트웨이 디바이스는 에지 디바이스로서 동작하도록 프로그래밍된다. 일부 실시예에서, 그룹(116)은 다수의 게이트웨이 디바이스를 포함하며, 이들 중 하나 이상은 에지 디바이스로서 동작하도록 구성될 수 있고, 적어도 하나의 게이트웨이 디바이스는 에지 디바이스로서 동작하도록 구성된다. 일부 실시예에서, 그룹(116)은 단지 다수의 게이트웨이 디바이스를 포함하며, 이들 중 하나 이상은 에지 디바이스로서 구성될 수 있고, 적어도 하나의 게이트웨이 디바이스는 에지 디바이스로서 동작하도록 구성된다.
본원에서 논의된 다양한 실시예에 의해 예시된 기술은, 복잡한 컨트롤러 프로그래밍 언어를 학습하거나 접속 및 정의된 통신 프로토콜을 추적할 필요를 피함으로써, 사용자에 대해 컨트롤러 기반 디바이스들의 그룹에 대한 소프트웨어 개발을 빠르고 쉽게 만든다. 일부 실시예에서, 코드 가상화 서버(114)는 코드 생성, 배치, 웹 인터페이스를 통한 원격 재프로그래밍, 또는 사용자 디바이스(스마트폰, 컴퓨터, 태블릿 등) 상의 임의의 GUI(예를 들면, 스마트폰 앱 또는 컴퓨터 애플리케이션)에 대한 액세스를 제공하는 서비스(도시되지 않음)로서 구현된다. 실시예가 사물 인터넷(IoT) 디바이스들과 관련해서 기술되었지만, 통상의 기술자는 개시된 실시예에 의해 예시된 기술이 몇몇 다른 프로그래밍 환경에 적용 가능함을 쉽게 이해할 것이다.
본원에서 설명된 방법은 서로 다른 실시예들에서 소프트웨어, 하드웨어, 또는 이들의 조합으로 구현될 수 있다. 방법들은, 비일시적인 컴퓨터 판독 가능한 매체에 저장되고 방법을 행하도록 하나 이상의 프로세서에 의해 실행되는 컴퓨터 명령어로 구현될 수 있다. 또한, 방법의 순서는 변경될 수 있으며, 다양한 요소가 추가, 재정렬, 결합, 생략 또는 다른 방식으로 변경될 수 있다. 본원에 기재된 모든 예는 비제한적인 방식으로 제시된다. 이 개시의 이점을 갖는 통상의 기술자에게 명백한 바와 같이 다양한 수정 및 변경이 이루어질 수 있다. 실시예에 따른 실현은 특정 실시예의 맥락으로 기술되었다. 이들 실시예는 설명을 위함이지 한정을 의도하는 것은 아니다. 많은 변형, 수정, 추가, 및 개선이 가능하다. 따라서, 단일 인스턴스로서 본원에서 설명된 구성 요소에 대해서 복수의 인스턴스가 제공될 수 있다. 다양한 컴포넌트, 동작, 및 데이터 저장소 사이의 경계는 다소 임의적이며 특정 동작은 특정 설명 구성의 맥락에서 설명되고 있다. 기능의 다른 할당도 예상되며 다음의 청구범위에 속할 수 있다. 마지막으로, 예시적 구성에서 이산적인 컴포넌트로서 제시된 구조 및 기능은 결합된 구조 또는 컴포넌트로서 구현될 수 있다. 이들 및 다른 변형, 수정, 추가, 및 개선은 다음의 청구범위에서 정의된 실시예들의 범위 내에 있을 수 있다.
상술한 바는 본 발명의 실시예에 관한 것이지만, 본 발명의 다른 실시예 및 추가 실시예는 본 발명의 기본 범위를 벗어나지 않고 고안될 수 있으며, 그 범위는 다음의 청구범위에 의해 결정된다.

Claims (15)

  1. 컨트롤러 기반 디바이스들의 그룹 내의 컨트롤러 기반 디바이스에 대한 프로그램의 자동 생성을 위한 컴퓨터 구현 방법으로서,
    사용자 디바이스 상의 그래픽 사용자 인터페이스(graphical user interface; GUI) 상에 표시된 복수의 컨트롤러 기반 디바이스들로부터의 컨트롤러 기반 디바이스에 대해,
    상기 컨트롤러 기반 디바이스의 컨트롤러 타입,
    상기 컨트롤러 기반 디바이스에 의해, 컨트롤러 기반 디바이스들의 그룹 내의 다른 컨트롤러 기반 디바이스와 통신하기 위해 사용되는 통신 프로토콜 ― 상기 그룹은 상기 복수의 컨트롤러 기반 디바이스들을 포함함 ―, 및
    상기 컨트롤러 기반 디바이스로부터의 원격 호출에 의거하여 행해지는 기능
    의 선택을 수신하는 단계; 및
    상기 컨트롤러 타입, 상기 통신 프로토콜, 및 상기 기능에 의거하여 상기 컨트롤러 기반 디바이스에서 실행하기 위한 제1 코드를 생성하는 단계로서, 상기 제1 코드는 상기 원격 호출을 포함하고 상기 원격 호출을 라우팅할 수 있는 상기 제1 코드를 생성하는 단계;를 포함하는 방법.
  2. 제1항에 있어서,
    각각의 상기 컨트롤러 기반 디바이스는 에지 디바이스 또는 게이트웨이 디바이스이고, 상기 그룹은 적어도 하나의 에지 디바이스 및 적어도 하나의 게이트웨이 디바이스 중 어느 하나, 또는 적어도 2개의 게이트웨이 디바이스들을 포함하는 방법.
  3. 제2항에 있어서,
    상기 제1 코드는 상기 적어도 하나의 게이트웨이 디바이스를 통해 상기 원격 호출을 라우팅하는 방법.
  4. 제2항에 있어서,
    상기 GUI로부터, 상기 컨트롤러 기반 디바이스가 에지 디바이스인지 또는 게이트웨이 디바이스인지의 여부의 선택을 수신하는 단계를 더 포함하고, 상기 제1 코드를 생성하는 단계는 또한, 에지 디바이스 또는 게이트웨이 디바이스의 선택에 의거하는 방법.
  5. 제2항에 있어서,
    상기 컨트롤러 기반 디바이스로부터 상기 적어도 하나의 게이트웨이 디바이스를 통해 상기 원격 호출을 수신하는 단계; 및
    상기 기능을 행하는 단계를 더 포함하는 방법.
  6. 제1항에 있어서,
    직접 또는 사용자 디바이스를 통해 상기 컨트롤러 기반 디바이스에 설치하기 위한 상기 제1 코드를 디스패치(dispatch)는 단계를 더 포함하는 방법.
  7. 제1항에 있어서,
    상기 GUI로부터, 상기 기능을 행하기 위한 적어도 하나의 파라미터를 수신하는 단계를 더 포함하고, 상기 제1 코드를 생성하는 단계는 또한 상기 적어도 하나의 파라미터에 의거하는 방법.
  8. 컨트롤러 기반 디바이스들의 그룹에 대한 자동 소프트웨어 개발을 위한 장치로서,
    프로세서, 및
    메모리를 포함하고,
    상기 메모리는,
    상기 프로세서를 사용한 실행 시,
    사용자 디바이스 상의 그래픽 사용자 인터페이스(GUI) 상에 표시된 복수의 컨트롤러 기반 디바이스들로부터의 컨트롤러 기반 디바이스에 대해,
    상기 컨트롤러 기반 디바이스의 컨트롤러 타입,
    상기 컨트롤러 기반 디바이스에 의해, 컨트롤러 기반 디바이스들의 그룹 내의 다른 컨트롤러 기반 디바이스와 통신하기 위해 사용되는 통신 프로토콜 ― 상기 그룹은 상기 복수의 컨트롤러 기반 디바이스들을 포함함 ―, 및
    상기 컨트롤러 기반 디바이스로부터의 원격 호출에 의거하여 행해지는 기능
    의 선택을 수신하는 단계; 및
    상기 컨트롤러 타입, 상기 통신 프로토콜, 및 상기 기능에 의거하여 상기 컨트롤러 기반 디바이스에서 실행하기 위한 제1 코드를 생성하는 단계로서, 상기 제1 코드는 상기 원격 호출을 포함하고 상기 원격 호출을 라우팅할 수 있는 상기 제1 코드를 생성하는 단계;를 포함하는 방법을 실행하게 하는 실행 가능한 명령어들을 포함하는 장치.
  9. 제8항에 있어서,
    각각의 상기 컨트롤러 기반 디바이스는 에지 디바이스 또는 게이트웨이 디바이스이고, 상기 그룹은 적어도 하나의 에지 디바이스 및 적어도 하나의 게이트웨이 디바이스 중 어느 하나, 또는 적어도 2개의 게이트웨이 디바이스들을 포함하는 장치.
  10. 제9항에 있어서,
    상기 제1 코드는 상기 적어도 하나의 게이트웨이 디바이스를 통해 상기 원격 호출을 라우팅하는 장치.
  11. 제9항에 있어서,
    상기 방법은, 상기 GUI로부터, 상기 컨트롤러 기반 디바이스가 에지 디바이스인지 또는 게이트웨이 디바이스인지의 여부의 선택을 수신하는 단계를 더 포함하고, 상기 제1 코드를 생성하는 단계는 또한, 에지 디바이스 또는 게이트웨이 디바이스의 선택에 의거하는 장치.
  12. 제9항에 있어서,
    상기 방법은, 상기 컨트롤러 기반 디바이스로부터 상기 적어도 하나의 게이트웨이 디바이스를 통해 상기 원격 호출을 수신하는 단계; 및
    상기 기능을 행하는 단계를 더 포함하는 장치.
  13. 제8항에 있어서,
    상기 방법은, 직접 또는 사용자 디바이스를 통해 상기 컨트롤러 기반 디바이스에 설치하기 위한 상기 제1 코드를 디스패치하는 단계를 더 포함하는 장치.
  14. 제8항에 있어서,
    상기 방법은, 상기 GUI로부터, 상기 기능을 행하기 위한 적어도 하나의 파라미터를 수신하는 단계를 더 포함하고, 상기 제1 코드를 생성하는 단계는 또한 상기 적어도 하나의 파라미터에 의거하는 장치.
  15. 적어도 하나의 프로세서에 의한 실행 시,
    사용자 디바이스 상의 그래픽 사용자 인터페이스(GUI) 상에서 컨트롤러 기반 디바이스들의 그룹으로부터 복수의 컨트롤러 기반 디바이스들을 디스플레이하는 것;
    상기 그룹으로부터의 컨트롤러 기반 디바이스에 대해,
    상기 컨트롤러 기반 디바이스의 컨트롤러 타입,
    상기 컨트롤러 기반 디바이스에 의해, 상기 그룹 내의 다른 컨트롤러 기반 디바이스와 통신하기 위해 사용되는 통신 프로토콜, 및
    상기 컨트롤러 기반 디바이스로부터의 원격 호출에 의거하여 행해지는 기능의 선택을 수신하는 것; 및
    상기 선택을 코드 가상화 서버로 송신하는 것;을 포함하는, 상기 적어도 하나의 프로세서가 컨트롤러 기반 디바이스들의 그룹 내의 컨트롤러 기반 디바이스에 대한 프로그램의 자동 생성 방법을 행하도록 하는 컴퓨터 명령어를 저장하는
    비일시적인 컴퓨터 판독 가능한 매체.
KR1020177035354A 2015-05-08 2016-05-06 컨트롤러 기반 디바이스들의 그룹에 대한 자동 소프트웨어 개발을 위한 방법 및 장치 KR102622652B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201562158636P 2015-05-08 2015-05-08
US62/158,636 2015-05-08
PCT/US2016/031217 WO2016182913A1 (en) 2015-05-08 2016-05-06 Method and apparatus for automatic software development for a group of controller-based devices

Publications (2)

Publication Number Publication Date
KR20180008548A true KR20180008548A (ko) 2018-01-24
KR102622652B1 KR102622652B1 (ko) 2024-01-10

Family

ID=57223090

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177035354A KR102622652B1 (ko) 2015-05-08 2016-05-06 컨트롤러 기반 디바이스들의 그룹에 대한 자동 소프트웨어 개발을 위한 방법 및 장치

Country Status (9)

Country Link
US (1) US10095495B2 (ko)
EP (1) EP3295649B1 (ko)
JP (1) JP6719484B2 (ko)
KR (1) KR102622652B1 (ko)
CN (1) CN107750356B (ko)
CA (1) CA2984106C (ko)
HK (1) HK1246421A1 (ko)
SG (1) SG11201708743UA (ko)
WO (1) WO2016182913A1 (ko)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11122034B2 (en) 2015-02-24 2021-09-14 Nelson A. Cicchitto Method and apparatus for an identity assurance score with ties to an ID-less and password-less authentication system
US11171941B2 (en) 2015-02-24 2021-11-09 Nelson A. Cicchitto Mobile device enabled desktop tethered and tetherless authentication
US10848485B2 (en) 2015-02-24 2020-11-24 Nelson Cicchitto Method and apparatus for a social network score system communicably connected to an ID-less and password-less authentication system
US10499283B2 (en) 2015-07-01 2019-12-03 Red Hat, Inc. Data reduction in a system
JP6611550B2 (ja) * 2015-10-09 2019-11-27 キヤノン株式会社 通信装置、通信装置の制御方法及びプログラム
SG11201805215UA (en) 2015-12-21 2018-07-30 Ciambella Ltd Method and apparatus for creating and managing controller based remote solutions
EP3682326A4 (en) * 2017-09-13 2021-06-02 HRL Laboratories, LLC GENERATORS OF HIGH SECURITY NETWORK GATEWAYS
US10715459B2 (en) * 2017-10-27 2020-07-14 Salesforce.Com, Inc. Orchestration in a multi-layer network
EP3717976A4 (en) * 2017-12-01 2021-08-04 Ciambella Ltd. METHOD AND DEVICE FOR GENERATING AND MANAGING INTELLIGENT SOLUTIONS FOR MEMORY PROGRAMMABLE CONTROLS (PLC)
US11190513B2 (en) 2018-01-19 2021-11-30 Vmware, Inc. Gateway enrollment for internet of things device management
CN109032573A (zh) * 2018-06-20 2018-12-18 深圳市编玩边学教育科技有限公司 一种硬件编程系统和方法
US10904078B2 (en) 2018-07-12 2021-01-26 Honeywell International Inc. Systems and methods for autonomous creation of a domain specific industrial internet of things gateway using a conversational interface
US11005719B2 (en) * 2018-12-11 2021-05-11 Vmware, Inc. Internet of Things system topology generation
WO2020231707A1 (en) * 2019-05-14 2020-11-19 The Regents Of The University Of California Illumination device for spatial and temporal control of morphogen signaling in cell cultures
SE545286C2 (en) 2020-08-28 2023-06-20 Stream Analyze Sweden Ab Method and system for data processing
SE545287C2 (en) * 2020-08-28 2023-06-20 Stream Analyze Sweden Ab Method and system for data processing
SE545771C2 (en) * 2020-08-28 2024-01-09 Stream Analyze Sweden Ab Method and system for data processing
US20230101738A1 (en) * 2021-09-27 2023-03-30 Vmware, Inc. Management service device platform creation and device configuration

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120311526A1 (en) * 2011-06-02 2012-12-06 Recursion Software, Inc. System and method for pervasive software platform-based model driven architecture application generator
US20140372975A1 (en) * 2013-06-18 2014-12-18 Ciambella Ltd. Method and apparatus for code virtualization and remote process call generation

Family Cites Families (105)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5623604A (en) 1992-11-18 1997-04-22 Canon Information Systems, Inc. Method and apparatus for remotely altering programmable firmware stored in an interactive network board coupled to a network peripheral
US6108715A (en) * 1994-12-13 2000-08-22 Microsoft Corporation Method and system for invoking remote procedure calls
US5887172A (en) 1996-01-10 1999-03-23 Sun Microsystems, Inc. Remote procedure call system and method for RPC mechanism independent client and server interfaces interoperable with any of a plurality of remote procedure call backends
US5852733A (en) 1996-12-16 1998-12-22 Chien; Yung-Ping S. Microcontroller development tool using software programs
WO1998040817A1 (fr) 1997-03-11 1998-09-17 Mitsubishi Denki Kabushiki Kaisha Methode et systeme de programmation visuelle
US6266809B1 (en) 1997-08-15 2001-07-24 International Business Machines Corporation Methods, systems and computer program products for secure firmware updates
US6065053A (en) 1997-10-01 2000-05-16 Micron Electronics, Inc. System for resetting a server
US6158031A (en) 1998-09-08 2000-12-05 Lucent Technologies, Inc. Automated code generating translator for testing telecommunication system devices and method
US6324681B1 (en) 1998-10-01 2001-11-27 Unisys Corporation Automated development system for developing applications that interface with both distributed component object model (DCOM) and enterprise server environments
US6401156B1 (en) 1999-08-23 2002-06-04 Advanced Micro Devices, Inc. Flexible PC/AT-compatible microcontroller
US6490723B1 (en) 1999-11-30 2002-12-03 Dell Products L.P. Method and system for installing files in a computing system
US7043715B1 (en) 2000-06-06 2006-05-09 Emc Corporation Method and apparatus for customizing software
WO2002005106A1 (en) 2000-07-07 2002-01-17 Consilient, Inc. Method and apparatus for providing process-container platforms
US7127705B2 (en) 2000-09-06 2006-10-24 Oracle International Corporation Developing applications online
US6907446B1 (en) 2000-10-16 2005-06-14 Implicit Networks, Inc. Method and system for dynamic delivery of beads
US20020111995A1 (en) 2001-02-14 2002-08-15 Mansour Peter M. Platform-independent distributed user interface system architecture
US6931288B1 (en) 2001-04-16 2005-08-16 Rockwell Automation Technologies, Inc. User interface and system for creating function block diagrams
US20020194608A1 (en) 2001-04-26 2002-12-19 Goldhor Richard S. Method and apparatus for a playback enhancement system implementing a "Say Again" feature
US8131827B2 (en) 2001-05-09 2012-03-06 Rockwell Automation Technologies, Inc. PLC with web-accessible program development software
US7103641B2 (en) 2001-06-18 2006-09-05 Intel Corporation Method and apparatus for distributing computer platform firmware across a network
US7039892B2 (en) 2001-07-24 2006-05-02 Hewlett-Packard Development Company, L.P. Systems and methods for ensuring correct connectivity between circuit designs
US6993642B2 (en) 2001-07-24 2006-01-31 Microsoft Corporation Method and system for creating and employing an operating system having selected functionality
US8082318B2 (en) 2001-09-28 2011-12-20 British Telecommunications Plc Controlling service requests transmitted from a client to a server
US6895573B2 (en) 2001-10-26 2005-05-17 Resultmaker A/S Method for generating a workflow on a computer, and a computer system adapted for performing the method
US7143360B1 (en) 2001-10-29 2006-11-28 Cypress Semiconductor Corporation Pin-out connections/drive levels direct-set by drop down list
US7320126B2 (en) 2001-11-06 2008-01-15 Sandisk Corporation Implementation of in system programming to update firmware on memory cards
US6966039B1 (en) 2001-11-19 2005-11-15 Cypress Semiconductor Corp. Method for facilitating microcontroller programming
US7010773B1 (en) 2001-11-19 2006-03-07 Cypress Semiconductor Corp. Method for designing a circuit for programmable microcontrollers
US6715132B1 (en) 2001-11-19 2004-03-30 Cypress Semiconductor Corporation Datasheet browsing and creation with data-driven datasheet tabs within a microcontroller design tool
US7086014B1 (en) 2001-11-19 2006-08-01 Cypress Semiconductor Corporation Automatic generation of application program interfaces, source code, interrupts, and datasheets for microcontroller programming
US20030120707A1 (en) 2001-12-21 2003-06-26 Sander Bogdan Systems and methods for exporting functionality of a modularized system
US7346672B2 (en) 2002-03-12 2008-03-18 Hewlett-Packard Development Company, L.P. Automatic TFTP firmware download
JP4635121B2 (ja) 2002-07-03 2011-02-16 東京エレクトロン株式会社 動的センサ構築およびランタイム実行のための方法
US8074201B2 (en) * 2002-07-10 2011-12-06 National Instruments Corporation Deployment and execution of a program on an embedded device
FR2841998B1 (fr) 2002-07-04 2004-10-22 Canon Kk Procede d'execution sur une station d'un reseau de communication d'un programme informatique represente dans un langage de balisage
SE524627C2 (sv) 2002-10-07 2004-09-07 Abb Research Ltd Trådlös regulator och förfarande för styrning av en anordning anordnad relativt en robot
US7478141B2 (en) 2003-06-26 2009-01-13 Intel Corporation Accessing firmware of a remote computer system using a remote firmware interface
US7246319B2 (en) 2003-08-22 2007-07-17 Idx Systems Corporation Information system supporting customizable user interfaces and process flows
EP1530139A1 (en) 2003-11-05 2005-05-11 Sap Ag Method and computer system for workflow management
US8104043B2 (en) 2003-11-24 2012-01-24 Microsoft Corporation System and method for dynamic cooperative distributed execution of computer tasks without a centralized controller
US7331047B2 (en) 2003-11-25 2008-02-12 Microsoft Corporation Deterministic system and method for implementing software distributed between a desktop and a remote device
GB2411495A (en) 2004-02-27 2005-08-31 Cyan Holdings Ltd Method and apparatus for generating configuration data
US20050198624A1 (en) 2004-03-02 2005-09-08 Chipman Timothy W. Method and system for program transformation
US20060036755A1 (en) * 2004-05-07 2006-02-16 Abdullah Ibrahim S Meta-protocol
US7810099B2 (en) 2004-06-17 2010-10-05 International Business Machines Corporation Optimizing workflow execution against a heterogeneous grid computing topology
US7526534B2 (en) 2004-07-16 2009-04-28 Cassatt Corporation Unified system services layer for a distributed processing system
US20060020910A1 (en) 2004-07-22 2006-01-26 Steven Schlanger Devices and methods for communicating with a microcontroller
US20060041854A1 (en) 2004-07-22 2006-02-23 Steven Schlanger Devices and methods for programming microcontrollers
NZ553600A (en) 2004-08-13 2008-12-24 Remasys Pty Ltd Monitoring and management of distributed information systems
JP2006079447A (ja) 2004-09-10 2006-03-23 Fujitsu Ltd 集積回路設計支援装置、集積回路設計支援方法及び集積回路設計支援プログラム
AU2006247999A1 (en) 2005-04-20 2006-11-23 Videoegg, Inc. Browser enabled video manipulation
US7558915B2 (en) 2005-06-06 2009-07-07 Dell Products L.P. System and method for updating the firmware of a device in a storage network
KR100714693B1 (ko) 2005-06-07 2007-05-04 삼성전자주식회사 소프트웨어 모듈의 독립성을 보장하는 데이터베이스어플리케이션을 구현하는 시스템 및 방법
US20070073771A1 (en) 2005-09-28 2007-03-29 Baikov Chavdar S Method and system for directly mapping web services interfaces and java interfaces
US7481361B2 (en) 2005-09-29 2009-01-27 International Business Machines Corporation Method and system for identifying unsafe synthetic transactions and modifying parameters for automated playback
US20070174037A1 (en) 2005-11-10 2007-07-26 Chuan-Po Ling Multiple-microcontroller emulation system, multiple-microcontroller integrated development environment, and method for the same
US20070142929A1 (en) 2005-12-16 2007-06-21 Microsoft Corporation Specifying optional and default values for method parameters
US7813909B2 (en) 2006-05-03 2010-10-12 Sony Computer Entertainment Inc. Register mapping in emulation of a target system on a host system
US8028258B1 (en) 2006-02-16 2011-09-27 Cypress Semiconductor Corporation Interactive graphical pin assignment
US7627838B2 (en) 2006-04-25 2009-12-01 Cypress Semiconductor Corporation Automated integrated circuit development
US7886234B2 (en) 2006-10-13 2011-02-08 Mediatek Inc. Systems and methods for creating embedded target images
US20080109782A1 (en) 2006-10-18 2008-05-08 Utstarcom, Inc. Method and system for pin assignment
KR20080044576A (ko) 2006-11-17 2008-05-21 오종택 애드혹 통신 네트워크를 이용한 전력분산 장치 및 시스템과그 방법
JP2008165340A (ja) 2006-12-27 2008-07-17 Fujitsu Ltd 遠隔手続呼出方式
US8316427B2 (en) 2007-03-09 2012-11-20 International Business Machines Corporation Enhanced personal firewall for dynamic computing environments
US20120022674A1 (en) 2007-12-13 2012-01-26 Yun Peng Choo Application specific virtual real-time operating system compiler
US8954541B2 (en) 2007-12-29 2015-02-10 Amx Llc Method, computer-readable medium, and system for discovery and registration of controlled devices associated with self-describing modules
US20090198770A1 (en) 2008-02-04 2009-08-06 Universal Scientific Industrial Co., Ltd. System and method of updating codes in controller
US9311115B2 (en) 2008-05-13 2016-04-12 Apple Inc. Pushing a graphical user interface to a remote device with display rules provided by the remote device
US8249950B2 (en) 2008-07-11 2012-08-21 Ebay Inc. Payment mechanism integration wizard
EP2329369A1 (en) 2008-08-25 2011-06-08 Power-One Italy S.p.a. A hardware virtualization system
US9411864B2 (en) 2008-08-26 2016-08-09 Zeewise, Inc. Systems and methods for collection and consolidation of heterogeneous remote business data using dynamic data handling
KR101042908B1 (ko) 2009-02-12 2011-06-21 엔에이치엔(주) 네트워크 분리 장애 상황에서 메이저 그룹을 결정하기 위한방법, 시스템, 및 컴퓨터 판독 가능한 기록 매체
DE102009011679A1 (de) 2009-02-23 2010-08-26 Pilz Gmbh & Co. Kg Verfahren und Vorrichtung zum Erstellen eines Anwenderprogrammes für eine Sicherheitssteuerung
US8948067B2 (en) 2009-04-23 2015-02-03 Honeywell International Inc. Wireless controller grids for process control and other systems and related apparatus and method
WO2010129909A1 (en) 2009-05-07 2010-11-11 Cypress Semiconductor Corporation Development, programming, and debugging environment
BRPI1010897A2 (pt) 2009-05-19 2019-02-19 Nholdings Sa método e sistema para prover um dispositivo local com serviços de computador de um provedor remoto e método e sistema para anunciar um usuário de uma máquina virtual hospedada por um servido remoto
CA2698066A1 (en) 2009-07-31 2011-01-31 Nitobi Software Inc. System and method for remotely compiling multi-platform native applications for mobile devices
US8214653B1 (en) 2009-09-04 2012-07-03 Amazon Technologies, Inc. Secured firmware updates
US8508367B2 (en) * 2009-09-21 2013-08-13 Checkpoint Systems, Inc. Configurable monitoring device
US8707161B2 (en) 2009-09-30 2014-04-22 Facebook, Inc. Executing server side script code specified using PHP on a server to generate dynamic web pages
CN101697125B (zh) 2009-11-04 2013-05-08 中兴通讯股份有限公司 一种开发环境转换的方法及装置
US8869138B2 (en) 2011-11-11 2014-10-21 Wyse Technology L.L.C. Robust firmware update with recovery logic
US8775781B2 (en) 2010-03-25 2014-07-08 Microsoft Corporation Intelligent boot device selection and recovery
US8655461B2 (en) 2010-05-25 2014-02-18 Siemens Product Lifecycle Management Software Inc. Method, system, and non-transitory computer readable storage medium for generating code for a closed-loop controller
US8479154B1 (en) 2010-08-20 2013-07-02 Google Inc. Interaction with partially constructed mobile device applications
US8694954B2 (en) 2010-11-29 2014-04-08 Norman Ortiz System and methods for mobile application development using mobile devices
US8726285B2 (en) 2011-01-28 2014-05-13 Ciambella Ltd. Method and apparatus for triggering workflow deployment and/or execution
US9678747B2 (en) 2011-02-08 2017-06-13 Openspan, Inc. Code injection and code interception in an operating system with multiple subsystem environments
US8504989B2 (en) 2011-03-10 2013-08-06 Infosys Limited Service definition document for providing blended services utilizing multiple service endpoints
US20120233588A1 (en) 2011-03-10 2012-09-13 Infosys Technologies Ltd. Blended service creation, test, and deployment environment for multiple service endpoints
US20130201316A1 (en) 2012-01-09 2013-08-08 May Patents Ltd. System and method for server based control
WO2013110178A1 (en) 2012-01-23 2013-08-01 Scl Elements Inc. Programmable peripheral unit
US9319270B2 (en) 2012-04-12 2016-04-19 FrontRange Solutions, Inc. Configuration of third party applications in a sandboxed environment
KR20130115729A (ko) 2012-04-13 2013-10-22 삼성전자주식회사 디스플레이장치, 리모컨 및 그 제어방법
US9292416B2 (en) 2012-10-12 2016-03-22 Vmware, Inc. Software development kit testing
CN102929681B (zh) * 2012-10-31 2016-06-01 中国运载火箭技术研究院 一种虚拟试验分布式对象模型框架代码自动生成方法
US9015694B2 (en) 2012-10-31 2015-04-21 Aruba Networks, Inc Cloud-based firmware distribution service
US20140215433A1 (en) 2013-01-30 2014-07-31 Oracle International Corporation Class oriented file format for modeling and persisting bpmn scripting code
US9372785B2 (en) 2013-03-07 2016-06-21 Microsoft Technology Licensing, Llc Identifying implicit assumptions associated with a software product
CA2915619C (en) 2013-06-18 2021-11-23 Ciambella Ltd. Method and apparatus for customized software development kit (sdk) generation
US10296297B2 (en) 2013-08-09 2019-05-21 Oracle International Corporation Execution semantics for sub-processes in BPEL
CN103473108A (zh) * 2013-08-12 2013-12-25 福建富士通信息软件有限公司 一种Java代码生成方法
US20150127192A1 (en) 2013-11-06 2015-05-07 Hitachi, Ltd Wireless vehicle control system
JP6441061B2 (ja) 2014-12-16 2018-12-19 株式会社ダイヘン 機械制御システム及び機械制御システムのユーザインタフェース設定方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120311526A1 (en) * 2011-06-02 2012-12-06 Recursion Software, Inc. System and method for pervasive software platform-based model driven architecture application generator
US20140372975A1 (en) * 2013-06-18 2014-12-18 Ciambella Ltd. Method and apparatus for code virtualization and remote process call generation

Also Published As

Publication number Publication date
WO2016182913A1 (en) 2016-11-17
CN107750356B (zh) 2020-02-14
EP3295649B1 (en) 2024-03-06
CN107750356A (zh) 2018-03-02
CA2984106C (en) 2021-12-21
EP3295649A1 (en) 2018-03-21
US10095495B2 (en) 2018-10-09
HK1246421A1 (zh) 2018-09-07
US20160328216A1 (en) 2016-11-10
KR102622652B1 (ko) 2024-01-10
CA2984106A1 (en) 2016-11-17
JP6719484B2 (ja) 2020-07-08
JP2018518746A (ja) 2018-07-12
SG11201708743UA (en) 2017-11-29
EP3295649A4 (en) 2019-01-09

Similar Documents

Publication Publication Date Title
KR102622652B1 (ko) 컨트롤러 기반 디바이스들의 그룹에 대한 자동 소프트웨어 개발을 위한 방법 및 장치
EP3394743B1 (en) Method and apparatus for creating and managing controller based remote solutions
JP6581097B2 (ja) 自動デバイスプログラム生成のための方法および装置
US10079874B2 (en) System, non-transitory computer readable medium storing a computer readable program for executing a method for an interaction logic through the system, and IoT interaction system
US10067490B2 (en) Method and apparatus for modifying behavior of code for a controller-based device
US9246757B2 (en) Commissioning devices for automation systems
EP3596593B1 (en) Method and apparatus for automatically generating and incorporating code in development environments
US10798780B2 (en) Method and apparatus for creating and managing controller based remote solutions
JP6626956B2 (ja) コントローラに基づくデバイスのためのコードの挙動を修正するための方法および装置
EP3501160B1 (en) Method and apparatus for creating and managing controller based remote solutions

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right