JP2018518746A - コントローラベースのデバイスのグループに対する自動的なソフトウェア開発のための方法および装置 - Google Patents

コントローラベースのデバイスのグループに対する自動的なソフトウェア開発のための方法および装置 Download PDF

Info

Publication number
JP2018518746A
JP2018518746A JP2017558421A JP2017558421A JP2018518746A JP 2018518746 A JP2018518746 A JP 2018518746A JP 2017558421 A JP2017558421 A JP 2017558421A JP 2017558421 A JP2017558421 A JP 2017558421A JP 2018518746 A JP2018518746 A JP 2018518746A
Authority
JP
Japan
Prior art keywords
controller
code
devices
group
gateway
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
JP2017558421A
Other languages
English (en)
Other versions
JP6719484B2 (ja
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 JP2018518746A publication Critical patent/JP2018518746A/ja
Application granted granted Critical
Publication of JP6719484B2 publication Critical patent/JP6719484B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • 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/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 And Data Communications (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Stored Programmes (AREA)

Abstract

グループ中のコントローラベースのデバイスに対するソフトウェアを自動的に生成するための方法および装置が提供される。この方法は、ユーザデバイス上のグラフィカルユーザインタフェース(GUI)上に表示された複数のコントローラベースのデバイスからのコントローラベースのデバイスについて、コントローラタイプと、コントローラベースのデバイスのグループ中の別のコントローラベースのデバイスと通信するのに使用されることになる通信プロトコルであって、グループが複数のコントローラベースのデバイスを含む、通信プロトコルと、コントローラベースのデバイスからのリモート呼出しに基づいて実施されることになる機能との選択を受け取ることを含む。

Description

本発明の実施形態は、一般に、コントローラベースのデバイスのグループに対する自動的なソフトウェア開発のための方法および装置に関する。
MCU、SoC、モバイルフォン、コンピュータなど、フィールドプログラマブルゲートアレイ(FPGA)および他のコントローラベースのデバイス(例えば、マイクロコントローラベースまたはマイクロプロセッサベースの)の使用は、かなり一般的になってきた。コントローラの、低い製造コスト、可用性、およびカスタマイゼーションは、マイクロコントローラおよびシステムオンチップ(SoC)(例えば、PIC、ARDUINO、RASPBERRY PIなど)が営利企業によっても愛好家によっても同様にデバイスの作成に使用されることの急増につながった。コントローラベースのデバイスは、プロセッサコアおよびメモリを備え、これらのプロセッサコアおよびメモリは、周辺装置との通信において入力/出力データを処理するためにプログラム可能である。このようなコントローラベースのデバイスにはまた、NOR FLASHまたはOTP ROMの形のプログラムメモリ、ならびに少量のランダムアクセスメモリ(RAM)もしばしば備わっている。いくつかのこのようなコントローラベースのデバイスは、より大きいデバイス内における組込み応用例に向けて設計される。このようなコントローラベースのデバイスの実世界応用例は、コントローラベースのデバイスを周辺装置としての従来型オブジェクトまたはシステムと接続して、それによりこのような周辺装置のデジタル化、接続性、さらにはリモート制御を可能にすることを潜在的に含む可能性がある。しかし、クラウド技術をハードウェアおよびソフトウェア技術と組み合わせることの複雑さのせいで、このような実世界応用例を作り出すことにはいくつかの困難が存在する。
一般に、コントローラベースのデバイス、またはこれらのデバイスのグループをプログラムすることは、非常に複雑である。「モノのインターネット(IoT)」が成長するのに伴い、ますます多くのこのようなコントローラベースのデバイスが相互に、かつ/またはインターネットに接続され、プログラミングの複雑さを著しく増大させる。実世界シナリオでは、このようなコントローラベースのデバイスは、相互と、かつ/またはゲートウェイに通信することがあり、したがって、ゲートウェイは、いわゆるエッジデバイスに対して、インターネット通信のためのプロキシになる。エッジデバイスは、1つもしくは複数のゲートウェイを通して通信する場合もあり、または独立したデバイスとして直接に通信する場合もある。グループ内では、すべてのデバイス(ゲートウェイおよびエッジ)は、相互運用性を容易にするために互換性のある方式でプログラムされなければならず、このことはさらに、このようなデバイスをプログラムすることの複雑さを著しく増大させる。さらに、カスタマイゼーションが実装されるたびに互換性を管理することもまた、過度に時間がかかる場合がある。コントローラベースのデバイスのグループをプログラムすることは、ユーザにとって非常に困難である。というのは、コーディングコマンドを記憶すること、階層を理解すること、適正な呼出し構文を利用すること、などをしなければならないからである。1つのデバイスが間違ってプログラムされた場合でも、このデバイスに対する、またはグループ中の別のコントローラベースのデバイスに対する、書かれたプログラムが、実行できないかまたはエラーを生むことがある。
したがって、コントローラベースのデバイスに対するプログラミングを単純化するとともに、コントローラベースのデバイスのグループに対して自動的にそうすることが、当技術分野で必要とされている。
本発明の実施形態は、一般に、コントローラベースのデバイスのグループに対する自動的なソフトウェア開発のための方法および装置に関し、これらは、おおむね図の少なくとも1つに示され、かつ/またはそれに関連して記述され、特許請求の範囲においてより完全に記載される。
本開示のこれらおよび他の特徴および利点は、本開示に関する後続の詳細な記述を添付の図と共に検討することから理解されるであろう。図の全体を通して、同じ参照番号は同じ部分を指す。
上に挙げた本発明の特徴を詳細に理解できるように、実施形態を参照しながら、上に簡潔に要約した本発明についてのより具体的な記述を行うことができるが、これらの実施形態のいくつかは、添付の図面に示されている。しかし、本発明は他の等しく有効な実施形態も許容することができるので、添付の図面は、本発明の典型的な実施形態のみを示すものであり、したがって本発明の範囲を制限するものと考えられるべきではないことに留意されたい。
本発明の一実施形態による、コントローラベースのデバイスのグループに対する自動的なソフトウェア開発のためのシステム100のブロック図である。 本発明の一実施形態による、図1のコード仮想化サーバによって実行される、コントローラベースのデバイスのグループに対する自動的なソフトウェア開発の方法の流れ図である。 本発明の一実施形態による、コントローラベースのデバイスのグループに対する自動的なソフトウェア開発のための、図1のシステム100の様々なデバイスによって実行される方法300の流れ図である。 本発明の一実施形態による、コントローラベースのデバイスおよび関連する入力を指定するのに使用される、図1のグラフィカルユーザインタフェース(GUI)138のGUI画面を描く図である。 本発明の一実施形態による、コントローラベースのデバイスおよび関連する入力を指定するのに使用される、図1のGUI138のGUI画面を描く図である。 本発明の一実施形態による、コントローラベースのデバイスおよび関連する入力を指定するのに使用される、図1のGUI138のGUI画面を描く図である。 本発明の一実施形態による、コントローラベースのデバイスおよび関連する入力を指定するのに使用される、図1のGUI138のGUI画面を描く図である。
本発明の実施形態は、インタラクティブに動作するエッジデバイスまたはゲートウェイデバイスとして機能するコントローラベースのデバイス(例えば、とりわけマイクロコントローラ、マイクロプロセッサ、SoC、MCUなどのコントローラを有するデバイス)のグループに対する自動的なソフトウェア開発のための方法および装置に関し、より具体的には、少なくとも1つのエッジデバイスおよび少なくとも1つのゲートウェイデバイスを含む相互接続されたコントローラベースのデバイスのグループを形成するエッジデバイス上およびゲートウェイデバイス上で実行するためのプログラムまたはコードを生成することに関する。コントローラベースのデバイスに対するコードは、コントローラベースのデバイス上で実行するためのコード(「第1のコード」)を含み、この第1のコードは、コントローラベースのデバイスに対してリモートにあるデバイス、例えばコード仮想化サーバ上の機能を実行する(「第2のコード」を実行することによって)ためのリモート呼出しを含む。第1のコードは、コントローラベースのデバイス上で実行するための完全なプログラム、またはコードスニペットを指し、コードスニペットは、コントローラベースのデバイスに対する既存のプログラムに含めることができるものである。第1のコードはまた、コントローラベースのデバイスのためのソフトウェア開発キット(SDK)も含む。SDKは、グループ中の任意のコントローラベースのデバイスからのリモート呼出しをコード仮想化サーバにルーティングするために、グループ中のコントローラベースのデバイス(エッジデバイスおよびゲートウェイデバイス)間の通信、およびゲートウェイとコード仮想化サーバとの間の通信を可能にするライブラリを含む。第2のコードは、リモート呼出しによって呼び出された機能を実施するための、コード仮想化サーバ上の1つまたは複数の事前定義済みのプロセスまたはプログラムを含む。
いくつかの実施形態では、コード仮想化サーバはまた、コントローラベースのデバイスに関係する入力に基づいて、第1のコードを自動的に生成する。入力は、コード仮想化サーバに対してリモートにあるユーザデバイス上のグラフィカルユーザインタフェース(GUI)を介して行われる選択である。GUIを介して行われる選択は、グループのコントローラベースのデバイスと、コントローラベースのデバイスのコントローラタイプと、グループ中の別のコントローラベースのデバイスと通信するためにコントローラベースのデバイスによって使用されることになる通信プロトコルと、コントローラベースのデバイスから受け取られたリモート呼出しに基づいて実施されることになる機能とを含む。第1のコードが生成されると、第1のコードは、コード仮想化サーバによって直接に、またはユーザデバイスを介して、コントローラベースのデバイスにインストールされる。グループの各デバイスにインストールされた第1のコードは、グループの様々なデバイス間の相互接続性を可能にし、それにより、グループ中の任意のデバイスから発生したリモート呼出しを、ゲートウェイデバイスを介してコード仮想化サーバにルーティングすることを可能にする。したがって、第1のコードを実行する過程で、コントローラベースのデバイスは、リモートの機能を実施するためのリモート呼出しを、この機能についての入力および/または出力データと共に行い、リモート呼出しおよび入力/出力データは、グループのゲートウェイを介してコード仮想化サーバにルーティングされる。これに応答して、コード仮想化サーバは、入力/出力データに従って第2のコードを実行して、機能を実施する。このようにして、GUIを使用して好都合に入力を提供することによって、ソフトウェア(SDKを含む第1のコード)が、相互接続されたコントローラベースのデバイスのグループ中の各デバイスに対して自動的に生成される。ソフトウェアはグループ全体に対して生成され、コントローラベースの各デバイスをプログラムする複雑さに対処する必要はなく、また、コントローラベースのデバイスのグループ中のエッジデバイスおよびゲートウェイデバイスの相互接続に従って各コントローラベースのデバイスにつき個別にプログラムを構成する必要もない。
本願の譲受人に譲渡された、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は、本発明の1つまたは複数の実施形態による、コントローラベースのデバイスのグループに対する自動的なソフトウェア開発のためのシステム100のブロック図である。システム100は、複数のエッジデバイス102-1...102-N(エッジデバイス102と総称される)と、ゲートウェイデバイスまたはゲートウェイ108と、ネットワーク110と、ユーザコンピュータ112と、コード仮想化サーバ114と、リモートサービス118とを含む。いくつかの実施形態では、エッジデバイス102は、エッジデバイスとして構成されたゲートウェイデバイス102-Pを含む。
ネットワーク110は、インターネットまたはワイドエリアネットワーク(WAN)またはこれらの組合せを含み、図1に示されるような様々なデバイスに及ぶ1つまたは複数のこのようなネットワークを含む場合がある。システム100のすべてのコンポーネントは、知られている方法およびコンポーネントを使用して、図1に示されるようにネットワーク110にまたは相互に接続される。
エッジデバイス102およびゲートウェイ108は、インターネット110に接続されたコントローラベースのデバイスのグループ(デバイスグループ116またはグループ116)を形成する。グループ116のデバイスは、通信経路106-1...106-Nに沿ってエッジデバイス102とゲートウェイ108との間で通信する。通信経路は一般にワイヤレス経路だが、いくつかの実施形態では、経路は有線である場合もある。加えて、いくつかの実施形態では、コントローラベースのデバイス102は、破線の経路104-1...104-M(104と総称される)に沿ってデバイス102間で通信し、経路104は、1対1、1対多、多対多(例えばメッシュネットワーク)接続性構成、またはこれらの任意の組合せを含む。エッジデバイス102は、ゲートウェイ108を通してグループ116の外部と通信する。単一のゲートウェイ108が描かれているが、ゲートウェイ108と同様の複数のゲートウェイが、グループ116内で使用される場合もあり、またはグループ116と同様の複数のグループに及ぶ場合もある。
エッジデバイス102およびゲートウェイ108のそれぞれは、デバイスコントローラ(DC)120、周辺電子機器(PE)122、およびメモリ124を備える。エッジデバイスは、グループ116の外部のデバイスと通信しないコントローラベースのデバイスであり、ゲートウェイ108は、グループ116の外部のデバイス、例えばコード仮想化サーバ114やユーザデバイス112やリモートサービス118と通信するデバイスである。例えば、また簡潔にするために、エッジデバイス(またはコントローラベースのデバイス)102-Nのみが、デバイスコントローラ120、周辺電子機器122、およびメモリ124を備えるように示されているが、各コントローラベースのデバイス(エッジデバイス102およびゲートウェイ108)は、例えばエッジデバイス102-Nと同様にして、デバイスコントローラおよびメモリを備え、また周辺電子機器を備える場合もある。デバイスコントローラ120は、当技術分野で一般に知られているような、マイクロコントローラ(例えば、PIC、AVRタイプ、ARMタイプなど)、システムオンチップ(SoC、例えばRASPBERRY PI)、マイクロプロセッサ、のうちの1つまたは複数を含む。コントローラのタイプは、例えばこのようなデバイスの用途および必要とされる機能に基づいて、デバイスごとに異なる場合がある。
周辺電子機器122は、次のものに限定されないが、センサ、ライト、オーディオマイクロフォン、スピーカ、アクチュエータ、ディスプレイ、プリンタ、スキャナ、I/Oデバイス、および、デバイスコントローラ120からのデジタル信号を使用して操作できる他の任意のデバイス、を含む。周辺電子機器122は、従来のシステムを管理もしくは操作するためのコンポーネントを含み、または、周辺電子機器122自体が従来のシステムであり、とりわけ、音楽システム、アラーム、家電製品、電気デバイス、電気機械デバイスなどである。
メモリ124は、データおよび実行可能ソフトウェアを記憶するのに使用される任意の形のデジタルストレージである。このようなメモリは、次のものに限定されないが、ランダムアクセスメモリ、読取専用メモリ、ディスクストレージ、光学ストレージなどを含む。メモリ124は、オペレーティングシステム(図示せず)に対応するコンピュータ可読命令と、第1のコードとを記憶し、第1のコードは、プログラム125、またはプログラム125内のコードスニペット126である。第1のコード(簡単にするために126として言及するが、プログラム125またはスニペット126のいずれかを意味するものと理解されるであろう)はさらに、コントローラベースのデバイス102-Nに対してリモートにあるデバイス上、例えばコード仮想化サーバ114上の機能へのリモート呼出し128を含む。第1のコード126はさらに、第1のコード126およびリモート呼出し128をエッジデバイス102-N上で実行するのに必要なライブラリを含むSDK129など、追加のコードコンポーネントも含む。SDK129は、エッジデバイス102-Nがゲートウェイ108を介してコード仮想化サーバ114に、または他のエッジデバイス102に通信できることを保証する。同様に、ゲートウェイについてのSDKは、ゲートウェイからコード仮想化サーバ114への、またはエッジデバイス102への、または他のゲートウェイデバイス(図示せず)への通信を可能にする。
ユーザデバイス112は、パーソナルコンピュータ(PC)、ラップトップ、タブレット、スマートフォンなどのコンピュータであり、ユーザデバイス112は、CPU130、サポート回路132、およびメモリ136を備える。CPU130は、任意の市販のプロセッサ、マイクロプロセッサ、マイクロコントローラなどとすることができる。サポート回路132は、ユーザインタフェース、クロック回路、ネットワーク通信、キャッシュ、電源、I/O回路など、機能性をCPUに提供する周知の回路を含む。I/O回路は、ディスプレイ134、例えば、当技術分野で一般に知られているコンピュータモニタなど様々な標準的またはタッチベースのディスプレイを含む。いくつかの実施形態では、ユーザインタフェースは、キーパッド、電子ボタン、スピーカ、タッチスクリーン、ディスプレイ、または他のユーザ対話メカニズムを含む。メモリ136は、データおよび実行可能ソフトウェアを記憶するのに使用される任意の形のデジタルストレージである。このようなメモリは、次のものに限定されないが、ランダムアクセスメモリ、読取専用メモリ、ディスクストレージ、光学ストレージなどを含む。メモリ136は、オペレーティングシステム(図示せず)に対応するコンピュータ可読命令とグラフィカルユーザインタフェース(GUI)138とを記憶し、GUI138はディスプレイ134上で表示される。GUI138は、ユーザデバイス112にインストールされているか、または、ユーザデバイス112上でブラウザ138を介してレンダリングされる。いくつかの実施形態では、GUIは、コード仮想化サーバ上にあるが、ユーザデバイス112上のブラウザ138を介してユーザデバイス112上でレンダリングされる。
GUI138は、グループ中の所与のコントローラベースのデバイスならびに関連する入力動作モード(エッジまたはゲートウェイ)、コントローラタイプ、通信プロトコル、および機能などについての、選択可能なリストを提示する。これらのリストは、対応する選択をユーザが行えるように、ディスプレイ134上で提示される。いくつかの実施形態では、ユーザは、ユーザデバイス112のユーザインタフェースを使用してGUI138を操作して、グループ116のコントローラベースのデバイス(エッジデバイス102、ゲートウェイ108)のリスト140をロードすることができる。ユーザはまた、例えばチェックボックスまたはラジオボタン(図示せず)を使用して、グループ116中でゲートウェイが使用されているかどうかを指定することもできる。ユーザは、実線の下線で示されるように、コントローラベースのデバイス102-Nに対応するCBD-Nを選択する。選択されたデバイスCBD-Nに対して、GUI138は、関連する入力のリスト、例えば、CBD-Nのデバイスタイプ(エッジまたはゲートウェイ)のリスト141、コントローラタイプのリスト142、通信プロトコルのリスト143、および、CBD-Nまたはグループ116の様々なデバイスに利用可能な機能のリスト144をロードする。いくつかの実施形態では、機能、例えばリスト144中で選択された機能を実施するための少なくとも1つのパラメータをユーザが入力できるように、入力フォームを含むパラメータのリスト145も提示される。さらに、ユーザは、リスト141〜145に対応する入力を、複数のコントローラベースのデバイスに関して提供することもできる。例えば、あるデバイスに対応する入力を提供した後、リスト140中で異なるデバイスを選択することができる。いくつかの実施形態では、コントローラベースのデバイスに関連する1つまたは複数の入力に対応する事前定義済みのリストが、ユーザデバイス112において利用可能であるか、または、ユーザデバイス112に接続されたコントローラベースのデバイスを検出することによってユーザデバイス112において作成される。いくつかの実施形態では、事前定義済みのリストは、コード仮想化サーバ114から取り出される。
リストは、リスト140〜145としてGUI138によって表示され、ユーザは、リスト140〜145中の下線で示されるように、各リストに対応する入力を選択または提供する。例えば、リスト140中で選択されたCBD-Nについて、リスト141中でエッジが選択され、リスト142中でコントローラタイプ1が選択され、リスト143中でプロトコル1が選択され、リスト144中で機能1が選択され、リスト145中でパラメータ1が提供または選択される。コントローラタイプは、限定ではないが、PIC、AVR、ARMなどを含む。通信プロトコルは、マシン間通信プロトコルであり、限定ではないが、MQTT、CoAP、HTTP、HTTPSなどを含む。機能は、グループ116中のコントローラベースのデバイスのためにコード仮想化サーバ114上で実施されるように利用可能な機能であり、例えば、当技術分野で知られているもののうちでもとりわけ、電子メールやテキストメッセージの送信、他の内的に(非公開に)ホストされるサービス(内部データソース(例えば、DB、noSQL DB、ファイルなど))またはインターネットベースのサービス(例えば、TWITTER(登録商標)やFACEBOOK(登録商標)などのソーシャルネットワーク、AMAZONなどのオンラインショッピングポータル、SKYPEなどのVoIPプロバイダ、GOOGLEやDUCKDUCKGOなどの検索エンジン、音声通話、ビデオ通話など)の呼出しである。パラメータは、機能の所望の挙動を達成するための入力属性であり、例えば、使用する電子メールサービス、電子メールアカウントなどである。選択および/または入力は、ユーザデバイス112のメモリ136にローカルに記憶されてもよく、またはコード仮想化サーバ114に直接送られてもよい。このようにして、GUI138を介して行われた選択入力は、コード仮想化サーバ114に提供される。TABLE 1(表1)に、コントローラタイプ、通信プロトコル、およびパラメータの例が含まれる。いくつかの実施形態では、TABLE 1(表1)において考察されるパラメータを追加的に使用して、述べた実施形態と同様にして第1のコードを生成することができ、このようなパラメータの選択は、GUI138を介した入力として取得されてもよく、またはコード仮想化サーバ114に記憶された事前定義済みのデータから取得されてもよい。
Figure 2018518746
前述のGUI138は、様々な選択を受け取ってこのような選択をコード仮想化サーバ114に通信するための、1つの可能なGUI方式を例証するものであり、本明細書に記載の技法は、GUI138の特定の例証に限定されない。例えば、特許請求の範囲によって定義される本発明の範囲または趣旨を逸脱することなく容易に思いつくであろういくつかのGUI方式のうちでもとりわけ、リストは、同じ画面上で同時に提示されてもよく、または逐次的に提示されてもよく、または組合せで提示されてもよい。例えば、図4〜図7は、本発明の実施形態による代替GUI方式を示す。代替実施形態では、GUI138は、カスタム特定用途向け集積回路(ASIC)上のアルゴリズムを使用して、ユーザデバイス112に関して述べたようなCPU130とサポート回路132とメモリ136との組合せによって提供される機能性を提供することができる。いくつかの実施形態では、I/Oデバイスは、キーパッド、電子ボタン、スピーカ、タッチスクリーン、ディスプレイ、または他のユーザ対話メカニズムを含む。
ユーザデバイス112は、コントローラベースのデバイス(エッジまたはゲートウェイデバイス)をそのソフトウェア生成のために選択して、他の入力(コントローラタイプ、機能、通信プロトコル、機能を実行するためのパラメータなど)を選択するとき、および、開発されたソフトウェア、例えば第1のコード126を受け取るとき、ネットワーク110に結合される。ユーザデバイス112はまた、第1のコードをそれぞれのコントローラベースのデバイスにインストールするとき、直接にまたはネットワーク110を介して、デバイスグループ116中のコントローラベースの(エッジおよびゲートウェイ)デバイスに接続される。いくつかの実施形態では、ユーザデバイス112は、コントローラベースのデバイス上の既存のプログラムにコードのスニペットを挿入するために、またはコントローラベースのデバイスに完全なプログラムをインストールするために、統合開発環境またはIDE(図示せず)を備える。
コード仮想化サーバ114は、本発明の実施形態に関係する機能を実施するようにプログラムされた汎用コンピュータまたは他の電子処理デバイスとすることができる。コード仮想化サーバ114は、CPU150、サポート回路152、およびメモリ154を備え、メモリ154は、命令およびアルゴリズムを含む。CPU150は、任意の市販のプロセッサ、マイクロプロセッサ、マイクロコントローラなどとすることができる。サポート回路152は、ユーザインタフェース、クロック回路、ネットワーク通信、キャッシュ、電源、I/O回路など、機能性をCPUに提供する周知の回路を含む。代替実施形態は、カスタム特定用途向け集積回路(ASIC)上の制御アルゴリズムを使用して、CPU150とサポート回路152とメモリ154との任意の組合せによって提供される機能性を提供することができる。いくつかの実施形態では、ユーザインタフェースは、キーパッド、電子ボタン、スピーカ、タッチスクリーン、ディスプレイ、または他のユーザ対話メカニズムを含む。
メモリ154は、データおよび実行可能ソフトウェアを記憶するのに使用される任意の形のデジタルストレージとすることができる。このようなメモリは、次のものに限定されないが、ランダムアクセスメモリ、読取専用メモリ、ディスクストレージ、光学ストレージなどを含む。メモリ154は、オペレーティングシステム(図示せず)に対応するコンピュータ可読命令、インタフェース156、プロセスプール158、コードジェネレータ160、データベース162、および実行エンジン164を記憶する。
インタフェース156は、ユーザデバイス112がコード仮想化サーバ114と対話するための機能性を提供する。いくつかの実施形態では、インタフェース156はまた、例えばGUI138に対応するGUIソフトウェアを含むこともでき、このGUIソフトウェアは、コード仮想化サーバ114によってユーザデバイス112に送られてよく、または他の方法でユーザデバイス112にインストールされるように提供されてよい。いくつかの実施形態では、インタフェース156は、ユーザデバイス112上でブラウザを通してGUI138をレンダリングするためのソフトウェアを含む。加えて、インタフェース156は、グループ116のコントローラベースのデバイス102、108への、およびリモートサービス118への接続性を提供する。
プロセスプール158は、グループ116のコントローラベースのデバイスから受け取られたリモート呼出しに応答して実施されることになる機能に対応するコードを含む。これらの機能は「コレオグラフ(choreograph)」または「コレオ(choreo)」とも呼ばれ、機能を実施するために実行される対応するコードは、第2のコード166と呼ばれる。以下では、用語「機能」、「コレオグラフ」、「コレオ」は、「第2のコード」166とも呼ばれ、これらの用語は、文脈から別段に明らかでない限り交換可能に使用される。いくつかの実施形態では、機能は、外部サービス、例えばリモートサービス118と対話する。第2のコード166は、第2のコード166の実行をサポートするためのソフトウェア開発キット(SDK)167も含み、SDK167は、機能がリモートサービス118と対話することが必要とされる場合には、リモートサービス118のSDKコンポーネントを含むことがある。プロセスプール158はさらに、例えば前述のようにGUI138によって選択されるように利用可能にされた各機能に対応する機能のリストを含み、リストされた機能に対応する第2のコードを含む。いくつかの実施形態によれば、機能のリストは、表示されてユーザデバイス112のユーザによって機能が選択されるように、GUI138に送られる。
コードジェネレータ160は、コントローラベースのデバイス102-Nに対する第1のコード126を生成し、呼出し128に対応するコードを第1のコード126に埋め込む。コードジェネレータ160はさらに、コントローラベースのデバイス102-N上での第1のコード126の実行をサポートするために第1のコード126に含められるSDK129を生成するための、SDKジェネレータ168を備える。第1のコード126は、コントローラベースのデバイス102-Nに対して、その構成またはデバイスタイプ(エッジ)と、デバイスコントローラ120のコントローラタイプ(コントローラ1)と、グループ116中の他のコントローラベースのデバイスと通信するのに使用される通信プロトコル(プロトコル1)と、リモート呼出し128に応答して実施されることになる機能(機能1)とに基づいて、自動的に生成される。例えば、コードジェネレータ160は、リモート呼出しに基づいて機能1を呼び出すために、第1のコード126中で、第2のコード166についての適切な識別子またはアドレスをリモート呼出し128に組み込む。コードジェネレータ160はさらに、CBD102-Nからのリモート呼出し128をゲートウェイデバイス108にルーティングしてからコード仮想化サーバ114にルーティングするための、適切な通信プロトコルを第1のコード126に組み込む。コードジェネレータ160はさらに、CBD102-Nのコントローラタイプに適したコード126を生成する。いくつかの実施形態では、コードジェネレータ160はさらに、パラメータ1に従ってリモート機能を実施するために、パラメータデータ(パラメータ1)を第1のコード126に組み込む。SDK129は、例えばハードウェア、ソフトウェアプラットフォーム、通信インフラストラクチャ(通信プロトコル、接続タイプなどを含む)、および他のコード実行パラメータに従って必要なコードライブラリを提供することによって、第1のコード126の実行をサポートする。
データベース162は、セキュリティ確保された環境を達成するためにユーザデバイス112またはリモートサービス118をコード仮想化サーバ114に対して認証するための、ユーザ名、識別情報、およびパスワードなど、ユーザデータを含む。いくつかの実施形態では、データベース162はまた、コントローラベースのデバイス(102、108)をコード仮想化サーバ114に対して認証するための認証情報も含む。様々な実施形態によれば、データベース162はさらに、限定ではないが、グループ116中のコントローラベースのデバイスのリストと、グループ116中のコントローラベースの各デバイスのタイプと、グループ116のコントローラベースの各デバイスによって使用される通信プロトコルと、機能を実施する(すなわち第1のコードを実行する)ための既存のパラメータと、のうちの1つまたは複数も含む。インタフェース156は、データベース162からのデータを使用して、GUI138の1つまたは複数のリストをポピュレートすることができる。
実行エンジン164は、コード仮想化サーバ114上のコンポーネントの前述の機能をサポートする。コントローラベースのデバイス102-Nからリモート呼出しを受け取るのに応答して、実行エンジン164は、第2のコード166についての適切なパラメータ(例えば、データベースに記憶されているかまたはGUI138から入力として受け取られた)を使用して、第2のコード166(要求された機能に対応する)を実行する。いくつかの実施形態では、実行エンジン164は、第2のコード166の実行から生成されたデータを、ゲートウェイ108を介してコントローラベースのデバイス102-Nに送る。いくつかの実施形態では、機能または第2のコード166は、リモートサービス118と対話し、実行エンジン164は、リモートサービス118と第2のコード166との間のデータの交換を容易にする。本発明の実施形態により、グループ116のコントローラベースのデバイス(CBD102-N)は、第2のコード166をコード仮想化サーバ114上で実行するためのリモート呼出しを行って、コントローラベースのデバイス102-Nのデバイスコントローラ120が通常なら実施できないはずの機能を実施することができ、グループ116中のデバイスの能力が大きく向上する。
リモートサービス118は、ユーザデバイス112とコード仮想化サーバ114とコントローラベースのデバイス(102、108)とに対してリモートにあるサードパーティサーバまたはデータベース(すなわちデバイス)によって提供される非公開または公開サービスを含む。例えば、リモートサービス118は、サードパーティデータベースおよびサービス(例えば、AMAZON、EBAY、FACEBOOK(登録商標)、APPLE PUSH NOTIFICATIONサーバ、テキストメッセージサーバ、電子メールサーバなど)、または内部データソース(例えば、DB、noSQL DB、ファイルなど)を含む。リモートサービス118へは、ネットワーク110または別のネットワークを介してコード仮想化サーバ114からアクセス可能である。いくつかの実施形態によれば、リモートサービス118は、グループ116のコントローラベースのデバイス102-Nからリモート呼出し128を受け取るのに応答して、第2のコード166が実行されるときに関連パラメータを使用してプロビジョニングされる。
図2は、本発明の実施形態による、コントローラベースのデバイスのグループ116をプログラムするためにコード仮想化サーバ114によって実行される方法200の流れ図を描く。方法200は、例えば、GUI138を介して指示できるように、または図4のGUI画面400を介して示されるように、ゲートウェイデバイスがグループ中で使用されるようなデバイスのグループをプログラムするためのものである。方法200は、ステップ202で開始してステップ204に進み、方法200は、コントローラベースのデバイスの選択をGUI138から受け取る。一実施形態では、選択は、リスト140上のCBD-N(図1の実線の下線で示される)をクリックすることによって行われ、CBD-Nは、グループ116のデバイス102-Nに対応する。別の実施形態では、選択は、図5のGUI画面500上で、コントローラベースのデバイス502(ゲートウェイ)および/または504(エッジ)を選択または追加することによって行われる。
方法200は、ステップ206に進む。ステップ206で、方法200は、ステップ204で選択されたコントローラベースのデバイス(例えば102-N)のデバイスタイプを指定する入力を、GUI138から受け取る。デバイスタイプは、エッジデバイスまたはゲートウェイデバイスを含む。一実施形態では、この選択は、「エッジ」をクリックすることによって行われる(図1のリスト141の実線)。いくつかの実施形態では、デバイスタイプは、例えば図5のGUI画面500を介したコントローラベースのデバイス502、504の選択または追加において示されるように、コントローラベースのデバイスの選択時に指定されてもよい。
方法200はステップ208に進み、方法200は、選択されたコントローラベースのデバイス(例えば102-N)のデバイスコントローラ120のコントローラタイプを指定する入力を、GUI138から受け取る。コントローラタイプは、限定ではないが、マイクロコントローラとマイクロプロセッサとのうちの少なくとも一方、例えば、当技術分野で一般に知られているように、いくつかの類似するコントローラタイプのうちでもとりわけAVR、ARM、PICを含む。いくつかの実施形態では、コントローラタイプは、図1のリスト142からオプションを選択することによって選択される。いくつかの実施形態では、コントローラタイプは、例えばGUI画面500のドロップダウンリスト506を使用して、デバイス詳細を指定することによって選択される。
方法200はステップ210に進み、方法200は、選択されたデバイス(102-N)についての通信プロトコルを指定する入力を、GUI138から受け取る。通常、通信プロトコルは、マシン間(M-to-M)通信プロトコルであり、これは、限定ではないが、HTTP、HTTPS、TCP/IP、MQTT、CoAP、LoRa、ZigBee、Thread、Z-WAVE、Bluetooth(登録商標)、6LOWPAN、または他の知られている通信プロトコルを含む。いくつかの実施形態では、通信プロトコルは、図1のリスト143から選択される。いくつかの実施形態では、通信プロトコルは、図6のGUI画面600中のドロップダウンリスト602から適切なオプションを選択することによって指定される。
方法200はステップ212に進み、方法200は、選択されたデバイス(102-N)によって呼び出されることになる機能(またはコレオ)を指定する入力を、GUI138から受け取る。いくつかの実施形態では、機能は、図1のリスト144から選択される。いくつかの実施形態では、機能は、図7のGUI画面700中の、コレオをリストしたメニュー702から適切なオプションを選択することによって指定される。
方法200は任意選択のステップ214に進み、方法200は、選択された機能を実施するのに必要とされるパラメータを指定する入力を、GUI138から受け取る。パラメータは、機能がデバイス(102-N)から呼び出されたときに機能がどのように動作することになるかを定義する。いくつかの実施形態では、パラメータは、図1のリスト145を使用して指定される。いくつかの実施形態では、パラメータは、例えば図4〜図7に描かれるGUI画面と同様のGUI画面上のフォームを使用して指定される。
ステップ204〜214では、入力は、GUI138から逐次的にまたは同時に受け取られる。さらに、GUI138は、例えば図1のリスト140〜145中の実線の下線によって描かれるように、または図4〜図7のGUI画面によって描かれるように、ユーザデバイス112の入力/出力デバイスを操作して適切な応答を選択するかまたは入力するユーザから、入力を受け取る。限定ではないが、特許請求の範囲によって定義される本明細書に記載の実施形態の範囲および趣旨を逸脱することなく、方法200を実装するために他のGUI方式を使用することもできる。
方法はステップ216に進み、方法200は、ステップ206〜214から受け取られた入力に基づいて、第1のコード、例えば、機能へのリモート呼出し(リモート呼出し128)とSDKとを含む第1のコード126を生成する。例えば、第1のコード126は、デバイスタイプ(エッジ)と、デバイスコントローラ120のコントローラタイプ(コントローラ1)と、グループ116中の他のコントローラベースのデバイスと通信するのに使用される通信プロトコル(プロトコル1)と、リモート呼出し128に応答して実施されることになる機能(機能1)と、パラメータ(パラメータ1)とに基づいて、コントローラベースのデバイス102-Nに対して生成される。第1のコード126は、デバイス102-Nに対するプログラム全体を含むか、または、デバイス102-N上の既存のプログラムに挿入するためのスニペットを含み、コントローラタイプと、通信プロトコルと、リモート呼出しによって実施されることになる機能とに関する情報を含む。具体的には、第1のコード126は、機能(または第2のコード166)を実施するために、デバイス102-Nからのリモート呼出し128を、ゲートウェイ108を介してコード仮想化サーバ114にルーティングするように構成される。機能を動作させるのに必要とされるパラメータが任意選択のステップ214で提供された場合は、第1のコード126はこれらのパラメータも含む。
方法200はステップ218に進み、方法200は、コントローラベースのデバイス102-Nにインストールするために第1のコード126を送る。いくつかの実施形態では、第1のコード126は、ゲートウェイ108を介してコントローラベースのデバイス102-Nに送られる。いくつかの実施形態では、第1のコード126はユーザデバイス112に送られ、ユーザデバイス112は、第1のコードを、コントローラベースのデバイス102-Nに直接にインストールするか、またはゲートウェイ108を介してインストールする。例えば、ユーザデバイス上のGUI138を使用して、コントローラベースのデバイス102-N上の既存のプログラム中のコードスニペットとして第1のコード126を挿入することができる。
ステップ220で、方法200は、別のデバイスが処理されるべきかどうかを照会する。照会への答が肯定的である場合は(オプション「YES」)、方法200は経路222に沿ってステップ204に進み、例えばリスト140からのユーザ選択に基づいて、新しいコントローラベースのデバイスに対応する選択がGUI138から受け取られる。ステップ220で照会への答が否定的である場合(オプション「NO」)、例えばグループ116の所望の数のデバイスに対する第1のコードが生成済みであるときは、方法200はステップ224に進み、方法200は終了する。
方法200は、エッジデバイス102およびゲートウェイ108を含めた、グループ116のいくつかまたはすべてのコントローラベースのデバイスについて繰り返されてよい。本発明の実施形態は、少なくとも1つのゲートウェイデバイスがグループ中で使用されるようなデバイスグループ、例えばデバイスグループ116に対して、プログラムを生成することに関する。ゲートウェイデバイスが使用されない場合、例えば、GUI画面400のチェックボックス402が選択されない場合は、例えば本願の譲受人に譲渡され参照によりその全体が本明細書に組み込まれる2014年6月17日に出願された米国特許出願第14/207,208号に記載のように、単一デバイスGUIを介した単一のデバイスに対するプログラム生成のための技法を使用することができる。
図3は、図1のシステム100の様々なデバイスによって実行される方法300の流れ図を描いており、例えば図2の方法200に従ってプログラムされた、動作しているプログラム済みデバイス102-Nを示す。方法300は、コントローラベースのデバイス102-N、コード仮想化サーバ114、およびリモートサービス118によって実行される。
方法300はステップ302で開始し、方法300は、コントローラベースのデバイス102-N上で第1のコードを実行し始める。ステップ304で、方法300は、第2のコードを実行するためにリモート呼出しをコード仮想化サーバ114に対して行う。ステップ306で、方法300は、ゲートウェイデバイス、例えばグループ116中のゲートウェイ108を通して、リモート呼出しをコード仮想化サーバ114にルーティングする。本発明の実施形態によれば、第1のコード(SDKを含む)は、リモート呼出しがコントローラベースのデバイス102-Nから、直接にまたはグループ116中の別のコントローラベースのデバイスを通して、ゲートウェイ108にルーティングされることを可能にするための接続プロトコルを含み、ゲートウェイ108は、リモート呼出しをコード仮想化サーバ114に通信する。
方法300はステップ308に進み、方法300の実行はコード仮想化サーバ114に移る。ステップ308で、方法300は、所望の機能を実施するための第2のコード166を実行するために、ゲートウェイ108を介して、コントローラベースのデバイス102-Nから発生したリモート呼出しを受け取る。例えば、この機能は、GUI138を使用してリスト144から選択された機能である。
ステップ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は、コントローラベースのデバイス102-N上で第1のコードを実行し続ける。いくつかの実施形態では、リモートサービス118がステップ314で実施されても、リモートサービス118によってどんなデータも生成されず、このような実施形態では、方法300はステップ314で終了する。いくつかの実施形態では、任意選択のステップ316で、方法300は、リモートサービス118が処理されたことを示すデータを、コード仮想化サーバ114(例えば、任意選択のステップ318、320を経て)およびゲートウェイ108を介して、またはゲートウェイ108のみを介して、コントローラベースのデバイス102-Nに送る。方法300は、任意選択のステップ322でこのデータを受け取り、任意選択のステップ324で第1のコードの実行を継続する。いくつかの実施形態では、コントローラベースのデバイス102-Nは、リモートサービス118からのデータを待機することなく、第1のコードの実行を継続する。いくつかの実施形態では、コントローラベースのデバイス102-Nにおける第1のコードの実行は、ステップ306でリモート呼出しをコード仮想化サーバ114にルーティングした後で終了する。
このようにして、コントローラベースのデバイスの機能性は、本明細書に記載の実施形態に従ってデバイス102-Nおよびグループ116をプログラミングすることによって、著しく拡張される。
例えば、コンピュータセンタ内の環境監視システムが複数の温度センサを備える場合があり、各センサはデバイスコントローラ(エッジデバイスと合わせて)に結合され、デバイスコントローラは、センサデータを収集し、このセンサデータを、集約デバイス(ゲートウェイとして機能する)との互換性を有する通信プロトコルを使用してワイヤレス送受信機を介して集約デバイスに送信する。通信プロトコルは、各エッジデバイスにわたって異なる場合がある。ゲートウェイデバイスは、種々のエッジデバイスから受け取ったデータを集約および/または前処理し、インターネットを介してデータを監視サービスに送信する。本発明の実施形態によれば、1つまたは複数のエッジデバイスは、そのデータを機能に送る(すなわち、機能を別のデバイス上でリモートに実施するためのリモート呼出しを行うことによって)ように構成され、機能は、センサデータが事前定義済みの範囲に含まれるとき、例えば温度が環境監視システムの正常範囲を超えるときに、テキストメッセージを送る。いくつかの実施形態では、ゲートウェイは、特定のエッジデバイスからのデータを機能に送るように構成されてよく、機能は、データが事前定義済みの範囲に含まれるとき、またはいくつかのエッジデバイスから集約されたデータが事前定義済みのパターンに合致するときに、テキストメッセージを送る。各場合に、テキストメッセージを送るための呼出しは、ゲートウェイを通してルーティングされる。デバイスコントローラにそれぞれ結合された追加のセンサ(エッジデバイス)、例えば湿度センサが、環境監視システムに加えられる場合があり、これらの新しいエッジデバイスは、様々な通信プロトコルを有する場合がある。本発明の実施形態は、グラフィカルユーザインタフェースに基づく単純な入力を可能にすることによって、好都合な方式で、適切なコードを用いて新しいエッジデバイスをプログラムすることを可能にし、他のデバイス(例えば温度センサ)とのシームレスな相互接続性を可能にする。例えば、本明細書に記載の実施形態を使用すれば、新しいエッジデバイス(湿度センサ)は、ゲートウェイを通してリモートの機能をシームレスに呼び出すことが可能になる。したがって、本発明の実施形態は、エッジデバイスおよびゲートウェイデバイスの機能性を増強し、エッジデバイスおよびゲートウェイデバイスの限られたキャパシティを、利用可能なリモートサービスのキャパシティまで拡張するとともに、これをシームレスな方式で行う。
さらに、いくつかの実施形態によれば、グループ中の1つまたは複数のゲートウェイは、エッジデバイスとして動作するようにプログラムされる。いくつかの実施形態では、グループ116は複数のゲートウェイデバイスを含み、これらのゲートウェイデバイスの1つまたは複数は、エッジデバイスとして動作するように構成されることが可能であり、少なくとも1つのゲートウェイデバイスは、エッジデバイスとして動作するように構成される。いくつかの実施形態では、グループ116は複数のゲートウェイデバイスのみを含み、これらのゲートウェイデバイスの1つまたは複数は、エッジデバイスとして構成されることが可能であり、少なくとも1つのゲートウェイデバイスは、エッジデバイスとして動作するように構成される。
本明細書において考察された様々な実施形態によって示される技法は、複雑なコントローラプログラミング言語を学習する必要、ならびに接続と定義された通信プロトコルとを追跡する必要を回避することによって、コントローラベースのデバイスのグループに対するソフトウェア開発をユーザにとって迅速かつ容易にする。いくつかの実施形態では、コード仮想化サーバ114は、ユーザデバイス(スマートフォン、コンピュータ、タブレットなど)上のウェブインタフェースまたは任意のGUI(例えば、スマートフォンアプリもしくはコンピュータアプリケーション)を通して、コード生成、展開、リモート再プログラミングへのアクセスを提供する、サービス(図示せず)として実装される。実施形態はモノのインターネット(IoT)デバイスに関して記述されているが、開示される実施形態によって例示される技法が他のいくつかのプログラミング環境にも適用可能であることは、当業者ならすぐに理解するであろう。
本明細書に記載の方法は、種々の実施形態で、ソフトウェア、ハードウェア、またはこれらの組合せにおいて実装される場合がある。方法は、非一時的なコンピュータ可読媒体に記憶されたコンピュータ命令において具体化され、方法を実施するために1つまたは複数のプロセッサによって実行される場合がある。加えて、方法の順序は変更されてもよく、様々な要素が追加、並べ替え、結合、省略、または他の方法で修正されてもよい。本明細書に記載のすべての例は、非限定的な方式で提示されている。本開示の利益を有する当業者には自明となるように、様々な修正および変更を加えることができる。実施形態による実現について、特定の実施形態の文脈で述べた。これらの実施形態は、例証であり限定ではないものとする。多くの変形、修正、追加、および改良が可能である。したがって、本明細書において単数のインスタンスとして記述されたコンポーネントについて、複数のインスタンスが提供される場合もある。様々なコンポーネント、動作、およびデータストアの間の境界は、いくぶん恣意的であり、特定の動作が、具体的な例証的構成の文脈で示されている。他の機能性割振りも想定され、また後続の特許請求の範囲内に含まれる場合がある。最後に、例示的な構成において個別のコンポーネントとして提示された構造および機能性は、結合された構造またはコンポーネントとして実装される場合もある。これらおよび他の変形、修正、追加、および改良も、後続の特許請求の範囲において定義される実施形態の範囲に含まれる場合がある。
上記は本発明の実施形態に向けられているが、本発明の基本的な範囲を逸脱することなく本発明の他の実施形態およびさらなる実施形態を考案することもでき、本発明の範囲は、後続の特許請求の範囲によって決定される。
102-1 エッジデバイス
102-N エッジデバイス
102-P エッジデバイスとして構成されたゲートウェイデバイス
104-1 経路
104-M 経路
106-1 通信経路
106-2 通信経路
106-N 通信経路
108 ゲートウェイデバイス、ゲートウェイ
110 ネットワーク
112 ユーザコンピュータ、ユーザデバイス
114 コード仮想化サーバ
116 デバイスグループ、グループ
118 リモートサービス
120 デバイスコントローラ
122 周辺電子機器
124 メモリ
125 プログラム
126 コードスニペット、第1のコード
128 リモート呼出し
129 ソフトウェア開発キット(SDK)
130 CPU
132 サポート回路
134 ディスプレイ
136 メモリ
138 グラフィカルユーザインタフェース(GUI)
140 コントローラベースのデバイスのリスト
141 デバイスタイプのリスト
142 コントローラタイプのリスト
143 通信プロトコルのリスト
144 機能のリスト
145 パラメータのリスト
150 CPU
152 サポート回路
154 メモリ
156 インタフェース
158 プロセスプール
160 コードジェネレータ
162 データベース
164 実行エンジン
166 第2のコード
167 ソフトウェア開発キット(SDK)
168 SDKジェネレータ
400 GUI画面
402 チェックボックス
500 GUI画面
600 GUI画面
602 ドロップダウンリスト
700 GUI画面
702 メニュー

Claims (15)

  1. コントローラベースのデバイスのグループ中のコントローラベースのデバイスに対するプログラムを自動的に生成するためのコンピュータ実装方法であって、
    ユーザデバイス上のグラフィカルユーザインタフェース(GUI)上に表示された複数のコントローラベースのデバイスからのコントローラベースのデバイスについて、
    前記コントローラベースのデバイスのコントローラタイプと、
    コントローラベースのデバイスのグループ中の別のコントローラベースのデバイスと通信するために前記コントローラベースのデバイスによって使用されることになる通信プロトコルであって、前記グループが前記複数のコントローラベースのデバイスを含む、通信プロトコルと、
    前記コントローラベースのデバイスからのリモート呼出しに基づいて実施されることになる機能と
    の選択を受け取るステップと、
    前記コントローラタイプ、前記通信プロトコル、および前記機能に基づいて、前記コントローラベースのデバイス上で実行するための第1のコードを生成するステップであって、前記第1のコードが、前記リモート呼出しを含み、前記リモート呼出しをルーティングすることができる、ステップと
    を含む方法。
  2. コントローラベースの各デバイスが、エッジデバイスまたはゲートウェイデバイスのいずれかであり、前記グループが、少なくとも1つのエッジデバイスおよび少なくとも1つのゲートウェイデバイス、または少なくとも2つのゲートウェイデバイスのいずれかを含む、請求項1に記載の方法。
  3. 前記第1のコードが、前記少なくとも1つのゲートウェイデバイスを通して前記リモート呼出しをルーティングする、請求項2に記載の方法。
  4. 前記コントローラベースのデバイスがエッジデバイスであるかゲートウェイデバイスであるかの選択を前記GUIから受け取るステップをさらに含み、前記第1のコードを生成する前記ステップがさらに、前記エッジデバイスまたは前記ゲートウェイデバイスの前記選択に基づく、請求項2に記載の方法。
  5. 前記コントローラベースのデバイスから前記少なくとも1つのゲートウェイデバイスを介して前記リモート呼出しを受け取るステップと、
    前記機能を実施するステップと
    をさらに含む、請求項2に記載の方法。
  6. 前記第1のコードを、直接にまたは前記ユーザデバイスを介して前記コントローラベースのデバイスにインストールするために送出するステップをさらに含む、請求項1に記載の方法。
  7. 前記機能を実施するための少なくとも1つのパラメータを前記GUIから受け取るステップをさらに含み、前記第1のコードを生成する前記ステップがさらに前記少なくとも1つのパラメータに基づく、請求項1に記載の方法。
  8. コントローラベースのデバイスのグループに対する自動的なソフトウェア開発のための装置であって、
    プロセッサと、
    実行可能命令を含むメモリを備え、前記実行可能命令が、前記プロセッサを使用して実行されたときに方法の実行を引き起こし、前記方法が、
    ユーザデバイス上のグラフィカルユーザインタフェース(GUI)上に表示された複数のコントローラベースのデバイスからのコントローラベースのデバイスについて、
    前記コントローラベースのデバイスのコントローラタイプと、
    コントローラベースのデバイスのグループ中の別のコントローラベースのデバイスと通信するために前記コントローラベースのデバイスによって使用されることになる通信プロトコルであって、前記グループが前記複数のコントローラベースのデバイスを含む、通信プロトコルと、
    前記コントローラベースのデバイスからのリモート呼出しに基づいて実施されることになる機能と
    の選択を受け取るステップと、
    前記コントローラタイプ、前記通信プロトコル、および前記機能に基づいて、前記コントローラベースのデバイス上で実行するための第1のコードを生成するステップであって、前記第1のコードが、前記リモート呼出しを含み、前記リモート呼出しをルーティングすることができる、ステップと
    を含む、装置。
  9. コントローラベースの各デバイスが、エッジデバイスまたはゲートウェイデバイスのいずれかであり、前記グループが、少なくとも1つのエッジデバイスおよび少なくとも1つのゲートウェイデバイス、または少なくとも2つのゲートウェイデバイスのいずれかを含む、請求項8に記載の装置。
  10. 前記第1のコードが、前記少なくとも1つのゲートウェイデバイスを通して前記リモート呼出しをルーティングする、請求項9に記載の装置。
  11. 前記方法がさらに、前記コントローラベースのデバイスがエッジデバイスであるかゲートウェイデバイスであるかの選択を前記GUIから受け取るステップを含み、前記第1のコードを生成する前記ステップがさらに、前記エッジデバイスまたは前記ゲートウェイデバイスの前記選択に基づく、請求項9に記載の装置。
  12. 前記方法がさらに、
    前記コントローラベースのデバイスから前記少なくとも1つのゲートウェイデバイスを介して前記リモート呼出しを受け取るステップと、
    前記機能を実施するステップと
    を含む、請求項9に記載の装置。
  13. 前記方法がさらに、前記第1のコードを、直接にまたは前記ユーザデバイスを介して前記コントローラベースのデバイスにインストールするために送出するステップを含む、請求項8に記載の装置。
  14. 前記方法がさらに、前記機能を実施するための少なくとも1つのパラメータを前記GUIから受け取るステップを含み、前記第1のコードを生成する前記ステップがさらに前記少なくとも1つのパラメータに基づく、請求項8に記載の装置。
  15. コンピュータ命令を記憶するための非一時的なコンピュータ可読媒体であって、前記コンピュータ命令が、少なくとも1つのプロセッサによって実行されたとき、コントローラベースのデバイスのグループ中のコントローラベースのデバイスに対するプログラムを自動的に生成する方法を前記少なくとも1つのプロセッサに実施させ、前記方法が、
    コントローラベースのデバイスのグループからの複数のコントローラベースのデバイスを、ユーザデバイス上のグラフィカルユーザインタフェース(GUI)上に表示するステップと、
    前記グループからのコントローラベースのデバイスについて、
    前記コントローラベースのデバイスのコントローラタイプ、
    前記グループ中の別のコントローラベースのデバイスと通信するために前記コントローラベースのデバイスによって使用されることになる通信プロトコル、および
    前記コントローラベースのデバイスからのリモート呼出しに基づいて実施されることになる機能
    の選択を受け取るステップと、
    前記選択をコード仮想化サーバに送るステップと
    を含む、非一時的なコンピュータ可読媒体。
JP2017558421A 2015-05-08 2016-05-06 コントローラベースのデバイスのグループに対する自動的なソフトウェア開発のための方法および装置 Active JP6719484B2 (ja)

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
JP2018518746A true JP2018518746A (ja) 2018-07-12
JP6719484B2 JP6719484B2 (ja) 2020-07-08

Family

ID=57223090

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017558421A Active JP6719484B2 (ja) 2015-05-08 2016-05-06 コントローラベースのデバイスのグループに対する自動的なソフトウェア開発のための方法および装置

Country Status (9)

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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019083009A (ja) * 2017-10-27 2019-05-30 セールスフォース ドット コム インコーポレイティッド コンピュータ・システムの作動方法、コンピュータ・システム、コンピュータ・プログラム及び記憶媒体

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
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
US10499283B2 (en) 2015-07-01 2019-12-03 Red Hat, Inc. Data reduction in a system
JP6611550B2 (ja) * 2015-10-09 2019-11-27 キヤノン株式会社 通信装置、通信装置の制御方法及びプログラム
US10732969B2 (en) 2015-12-21 2020-08-04 Ciambella Ltd. Method and apparatus for creating and managing controller based remote solutions
WO2019055116A1 (en) * 2017-09-13 2019-03-21 Hrl Laboratories, Llc HIGH SECURITY NETWORK GATEWAY GENERATORS
US11269308B2 (en) 2017-12-01 2022-03-08 Ciambella Ltd. Method and apparatus for creating and managing smart programmable logic controller (PLC) solutions
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
SE545771C2 (en) 2020-08-28 2024-01-09 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
SE545286C2 (en) * 2020-08-28 2023-06-20 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

Family Cites Families (107)

* 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
DE19880536B4 (de) 1997-03-11 2004-08-05 Mitsubishi Denki K.K. Visuelles Programmierverfahren und dieses Verfahren anwendendes Pogrammiersystem
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
US20030037181A1 (en) 2000-07-07 2003-02-20 Freed Erik J. 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
EP1454234A2 (en) 2001-09-28 2004-09-08 British Telecommunications Public Limited Company Client server model
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
US7010773B1 (en) 2001-11-19 2006-03-07 Cypress Semiconductor Corp. Method for designing a circuit for programmable microcontrollers
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
US6966039B1 (en) 2001-11-19 2005-11-15 Cypress Semiconductor Corp. Method for facilitating microcontroller programming
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
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
US8074201B2 (en) * 2002-07-10 2011-12-06 National Instruments Corporation Deployment and execution of a program on an embedded device
WO2004006299A2 (en) 2002-07-03 2004-01-15 Tokyo Electron Limited Method for dynamic sensor configuration and runtime execution
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
US20060041854A1 (en) 2004-07-22 2006-02-23 Steven Schlanger Devices and methods for programming microcontrollers
US20060020910A1 (en) 2004-07-22 2006-01-26 Steven Schlanger Devices and methods for communicating with a microcontroller
CA2618935C (en) 2004-08-13 2014-04-29 Remasys Pty Ltd Monitoring and management of distributed information systems
JP2006079447A (ja) 2004-09-10 2006-03-23 Fujitsu Ltd 集積回路設計支援装置、集積回路設計支援方法及び集積回路設計支援プログラム
US20060259588A1 (en) 2005-04-20 2006-11-16 Lerman David R 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
WO2009073932A1 (en) 2007-12-13 2009-06-18 Labtronics Technology Pty Ltd Application specific virtual real-time operating system compiler
US8230113B2 (en) 2007-12-29 2012-07-24 Amx Llc System, method, and computer-readable medium for development and deployment of self-describing controlled device modules in a control system
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
CN102422263B (zh) 2009-05-07 2016-03-30 赛普拉斯半导体公司 开发、编程和除错环境
EP2433257A4 (en) 2009-05-19 2014-07-30 Nholdings Sa PROVIDING A LOCAL DEVICE OF COMPUTER SERVICES FROM A REMOTE HOST
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
US20120233589A1 (en) 2011-03-10 2012-09-13 Infosys Technologies Ltd. Software development kit for blended services
US20120233588A1 (en) 2011-03-10 2012-09-13 Infosys Technologies Ltd. Blended service creation, test, and deployment environment for multiple service endpoints
US9250883B2 (en) * 2011-06-02 2016-02-02 Open Invention Network, Llc System and method for pervasive software platform-based model driven architecture application generator
US20130201316A1 (en) 2012-01-09 2013-08-08 May Patents Ltd. System and method for server based control
IN2014DN06956A (ja) 2012-01-23 2015-04-10 Scl Elements Inc
AU2013247347B2 (en) 2012-04-12 2018-02-15 Ivanti, 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
DK3011442T3 (da) 2013-06-18 2021-01-04 Ciambella Ltd Fremgangsmåde og anordning til generering af et brugerdefineret softwareudviklingskit (sdk)
KR102243793B1 (ko) 2013-06-18 2021-04-26 시암벨라 리미티드 코드 가상화 및 원격 프로세스 호출 생성을 위한 방법 및 장치
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 株式会社ダイヘン 機械制御システム及び機械制御システムのユーザインタフェース設定方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019083009A (ja) * 2017-10-27 2019-05-30 セールスフォース ドット コム インコーポレイティッド コンピュータ・システムの作動方法、コンピュータ・システム、コンピュータ・プログラム及び記憶媒体
JP7195108B2 (ja) 2017-10-27 2022-12-23 セールスフォース ドット コム インコーポレイティッド コンピュータ・システムの作動方法、コンピュータ・システム、コンピュータ・プログラム及び記憶媒体

Also Published As

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

Similar Documents

Publication Publication Date Title
JP6719484B2 (ja) コントローラベースのデバイスのグループに対する自動的なソフトウェア開発のための方法および装置
US10732969B2 (en) Method and apparatus for creating and managing controller based remote solutions
US10067490B2 (en) Method and apparatus for modifying behavior of code for a controller-based device
JP6581097B2 (ja) 自動デバイスプログラム生成のための方法および装置
US20170063611A1 (en) User Configuration Mechanism for Internet-of-Things (IOT)
US20210168209A1 (en) Platform for Controlling and Operating Network Connected Devices
KR102636605B1 (ko) 어시스턴트 클라이언트 장치에 의해 로컬로 스마트 장치 제어 및/또는 등록
US9619122B2 (en) Method and apparatus for automatic device program generation
US10798780B2 (en) Method and apparatus for creating and managing controller based remote solutions
JP6626956B2 (ja) コントローラに基づくデバイスのためのコードの挙動を修正するための方法および装置
EP3113141A1 (en) Enriched instructions for remotely controlling electronic devices
EP3501160A1 (en) Method and apparatus for creating and managing controller based remote solutions

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190426

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200416

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200518

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200616

R150 Certificate of patent or registration of utility model

Ref document number: 6719484

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250