(57)【要約】  モノのインターネット(IoT)接続性および再構成可能な組み込み規則エンジンを含むコンシューマ電子デバイスを含むシステムおよび装置が、メモリデバイス内のコードベースのメモリフットプリントを小さくするために最小化されたコードベースを含み、コードベースは、コンピュータ通信ネットワークインターフェースを使用してクロスプラットフォームネットワーク通信機能を実現する動作と、通信アプリケーションプログラミングインターフェース(API)を通じてクロスプラットフォームネットワーク通信機能へのアクセスを提供する動作と、少なくとも1つの符号化された通信トリガ規則を含む符号化されたデバイスオペレーション規則に従って通信APIを使用してネットワーク通信をトリガする動作と、規則更新APIを通じて符号化されたデバイスオペレーション規則に対する変更を可能にする動作と、規則更新APIを通じて受け取られた符号化されたデバイスオペレーション規則に対する変更がハードウェアプロセッサおよびメモリデバイスに関連する処理リソースの制約のうちの少なくとも1つに準拠するかどうかをチェックする動作とを含む動作を実行する。
2021513174.tif 000002
【特許請求の範囲】
【請求項１】
ハードウェアプロセッサに動作を実行させるように動作可能な、コンピュータ可読媒体上に符号化されたコンピュータプログラム製品であって、前記動作が、
前記ハードウェアプロセッサにプログラムコード命令によって指定された動作をさらに実行させるためにメモリデバイスに前記プログラムコード命令をロードする動作を含み、前記ハードウェアプロセッサおよび前記メモリデバイスが、関連する処理リソースの制約を有し、
前記プログラムコード命令が、前記メモリデバイス内のコードベースのメモリフットプリントを小さくするために最小化された前記コードベースを含み、
前記コードベースが、
コンピュータ通信ネットワークインターフェースを使用してクロスプラットフォームネットワーク通信機能を実現することと、
通信アプリケーションプログラミングインターフェース(API)を通じて前記クロスプラットフォームネットワーク通信機能へのアクセスを提供することと、
少なくとも1つの符号化された通信トリガ規則を含む符号化されたデバイスオペレーション規則に従って前記通信APIを使用してネットワーク通信をトリガすることと、
規則更新APIを通じて前記符号化されたデバイスオペレーション規則に対する変更を可能にすることと、
前記規則更新APIを通じて受け取られた前記符号化されたデバイスオペレーション規則に対する前記変更が前記ハードウェアプロセッサおよび前記メモリデバイスに関連する前記処理リソースの制約のうちの少なくとも1つに準拠するかどうかをチェックすることと
を含む動作を実行する、コンピュータプログラム製品。
【請求項２】
前記メモリデバイスが、揮発性メモリデバイスであり、メモリデバイスに前記プログラムコード命令をロードする動作が、前記ハードウェアプロセッサに前記プログラムコード命令によって指定された前記動作を実行させるために、前記揮発性メモリデバイスに結合される不揮発性の非一時的コンピュータ可読媒体から前記揮発性メモリデバイスにロードすることを含み、前記コードベースが、前記不揮発性の非一時的コンピュータ可読媒体内の前記コードベースのメモリフットプリントを小さくするために最小化済みである、請求項1に記載のコンピュータプログラム製品。
【請求項３】
前記揮発性メモリデバイスにプログラムコード命令をロードすることが、リブートを避けるようにして前記規則更新APIを通じて受け取られた前記符号化されたデバイスオペレーション規則に対する前記変更をロードすることを含む、請求項2に記載のコンピュータプログラム製品。
【請求項４】
前記符号化されたデバイスオペレーション規則が、テキストに基づくフォーマットである単純なバイナリフォーマットで符号化済みである、請求項1に記載のコンピュータプログラム製品。
【請求項５】
前記コードベースが、前記符号化されたデバイスオペレーション規則に対する前記変更が前記ハードウェアプロセッサおよび前記メモリデバイスに関連する前記処理リソースの制約のうちの少なくとも1つに関連する閾値を超える1つまたは複数の追加的な符号化されたデバイスオペレーション規則を追加することを含むかどうかをチェックする動作と、前記閾値が超えられないときに前記メモリデバイスを使用する動作と、前記閾値が超えられるときにリモートメモリデバイスを使用する動作とをさらに含む動作を実行する、請求項1に記載のコンピュータプログラム製品。
【請求項６】
前記クロスプラットフォームネットワーク通信機能が、ネットワーク上でアクセス可能である複数のコンシューマ電子デバイスを前記コンピュータ通信ネットワークインターフェースを介して通信可能なように接続することを含み、前記複数のコンシューマ電子デバイスが、関連するプロセッサリソースの制約、メモリリソースの制約、または両方を有する、請求項1に記載のコンピュータプログラム製品。
【請求項７】
コンピュータ通信ネットワークインターフェースと、
前記コンピュータ通信ネットワークインターフェースに結合され、関連する処理リソースの制約を有する、ハードウェアプロセッサおよびメモリデバイスを含み、
前記メモリデバイスが、前記ハードウェアプロセッサにプログラムコード命令によって指定された動作を実行させるために前記プログラムコード命令をロードするように構成され、
前記プログラムコード命令が、前記メモリデバイス内のコードベースのメモリフットプリントを小さくするために最小化された前記コードベースを含み、
前記コードベースが、
前記コンピュータ通信ネットワークインターフェースを使用してクロスプラットフォームネットワーク通信機能を実装し、前記クロスプラットフォームネットワーク通信機能へのアクセスを提供するための通信アプリケーションプログラミングインターフェース(API)を含む、通信モジュールと、
単純なバイナリフォーマットで符号化され、少なくとも1つの符号化された通信トリガ規則を含む符号化されたデバイスオペレーション規則に従って、前記通信モジュールの前記通信APIを使用してネットワーク通信をトリガし、前記符号化されたデバイスオペレーション規則に対する変更を可能にする規則更新APIを含み、前記規則更新APIを通じて受け取られた前記符号化されたデバイスオペレーション規則に対する前記変更が前記ハードウェアプロセッサおよび前記メモリデバイスに関連する前記処理リソースの制約のうちの少なくとも1つに準拠するかどうかをチェックするようにプログラミングされる、デバイスオペレーション規則エンジンと
を含むプログラムアーキテクチャを実装する、コンシューマ電子デバイス。
【請求項８】
前記メモリデバイスが、揮発性メモリデバイスであり、前記コンシューマ電子デバイスが、
前記揮発性メモリデバイスに結合され、前記ハードウェアプロセッサに前記プログラムコード命令によって指定された前記動作を実行させるために前記プログラムコード命令を前記揮発性メモリデバイスにロードするように構成され、前記プログラムコード命令の前記コードベースが、不揮発性の非一時的コンピュータ可読媒体内の前記コードベースのメモリフットプリントを小さくするために最小化済みである、前記不揮発性の非一時的コンピュータ可読媒体を含む、
請求項7に記載のコンシューマ電子デバイス。
【請求項９】
前記不揮発性の非一時的コンピュータ可読媒体が、前記コンシューマ電子デバイスのリブートを避けるようにして前記規則更新APIを通じて受け取られた前記符号化されたデバイスオペレーション規則に対する変更を含むプログラムコード命令を前記揮発性メモリデバイスにロードするように構成される、請求項8に記載のコンシューマ電子デバイス。
【請求項１０】
前記単純なバイナリフォーマットが、テキストに基づくフォーマットである、請求項7に記載のコンシューマ電子デバイス。
【請求項１１】
前記デバイスオペレーション規則エンジンが、前記符号化されたデバイスオペレーション規則に対する前記変更が前記ハードウェアプロセッサおよび前記メモリデバイスに関連する前記処理リソースの制約のうちの少なくとも1つに関連する閾値を超える1つまたは複数の追加的な符号化されたデバイスオペレーション規則を追加することを含むかどうかをチェックし、前記閾値が超えられないときに前記メモリデバイスを使用し、前記閾値が超えられるときにリモートメモリデバイスを使用するようにプログラミングされ、前記リモートメモリデバイスへのアクセスが、前記コンピュータ通信ネットワークインターフェースによって確立される、請求項7に記載のコンシューマ電子デバイス。
【請求項１２】
前記クロスプラットフォームネットワーク通信機能が、ネットワーク上でアクセス可能である複数のその他のコンシューマ電子デバイスを前記コンピュータ通信ネットワークインターフェースを介して通信可能なように接続することを含み、前記複数のその他のコンシューマ電子デバイスが、関連するプロセッサリソースの制約、メモリリソースの制約、または両方を有する、請求項7に記載のコンシューマ電子デバイス。
【請求項１３】
前記デバイスオペレーション規則エンジンが、前記符号化されたデバイスオペレーション規則に対する1つまたは複数の追加的な変更を自動的に生成し、前記符号化されたデバイスオペレーション規則に対する前記1つまたは複数の追加的な変更を前記規則更新APIにプッシュしたリモートデバイスから前記符号化されたデバイスオペレーション規則に対する前記1つまたは複数の追加的な変更を受け取る、請求項7に記載のコンシューマ電子デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、モノのインターネット(IoT)接続性および再構成可能な組み込み規則エンジンを含むリソースが制約された電子デバイスまたはコンシューマ電子デバイス(consumer electronic device)に関する。
【背景技術】
【０００２】
ワイヤレス通信、特に、ワイヤレスローカルエリアネットワーク(WLAN)テクノロジは、モバイルコンピューティング環境においてユビキタスになった。いくつかの既存のワイヤレスネットワーキング規格、たとえばWiFiプロトコルIEEE(米国電気電子学会)802.11が、ワイヤレスデバイス間の近距離ワイヤレス接続性を提供するために使用されてもよい。加えて、一部の既存のワイヤレスシステムよりも広い範囲で動作することができ、比較的低いデバイスの電力消費を有する802.11ahなどのより新しいワイヤレスネットワーキングテクノロジが、開発されてきた。これらの遠距離低電力(LRLP: long-range, low power)ワイヤレステクノロジは、WiFiおよびBluetoothなどの一部のレガシー802.11ワイヤレステクノロジによって実現される通信範囲を広げるために使用可能である。
【０００３】
そのような環境の例が、モノのインターネット(IoT)であり、IoTは、ネットワーキング能力を広範な種類の応用に広げる。IoTフレームワークによって、乗り物からサーモスタットにまで及ぶ実質的に任意の種類の物理デバイスが、インターネットに基づく通信をすることができ、デバイス自体もしくはその周辺についての情報を提供し、および/またはインターネットを介してクライアントデバイスによって遠隔で制御される可能性がある。既存の実装においては、現在のIoTの実装のための普遍的な通信言語またはプロトコルが存在しない。さらに、そのような広範なデバイスは、異なる会社のプラットフォームとは異種のコンピューティングフレームワークを持つことが可能であり、これは、これらの異なるプラットフォームにまたがる通信能力を制限する。リソースが制約されたデバイスに関する相互運用性、一様性、および機能拡張に関連するこれらのおよびその他の課題が、一部の現在のIoT環境に存在することがある。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本開示は、モノのインターネット(IoT)接続性および再構成可能な組み込み規則エンジンを含むリソースが制約された電子デバイスまたはコンシューマ電子デバイスに関する。
【課題を解決するための手段】
【０００５】
概して、本明細書に記載の対象の1つまたは複数の態様は、ハードウェアプロセッサに動作を実行させるように動作可能な、コンピュータ可読媒体上に符号化されたコンピュータプログラム製品であって、動作が、ハードウェアプロセッサにプログラムコード命令によって指定された動作をさらに実行させるためにメモリデバイスにプログラムコード命令をロードする動作を含み、ハードウェアプロセッサおよびメモリデバイスが、関連する処理リソースの制約を有し、プログラムコード命令が、メモリデバイス内のコードベースのメモリフットプリントを小さくするために最小化されたコードベースを含み、コードベースが、コンピュータ通信ネットワークインターフェースを使用してクロスプラットフォームネットワーク通信機能を実現する動作と、通信アプリケーションプログラミングインターフェース(API)を通じてクロスプラットフォームネットワーク通信機能へのアクセスを提供する動作と、少なくとも1つの符号化された通信トリガ規則を含む符号化されたデバイスオペレーション規則に従って通信APIを使用してネットワーク通信をトリガする動作と、規則更新APIを通じて符号化されたデバイスオペレーション規則に対する変更を可能にする動作と、規則更新APIを通じて受け取られた符号化されたデバイスオペレーション規則に対する変更がハードウェアプロセッサおよびメモリデバイスに関連する処理リソースの制約のうちの少なくとも1つに準拠するかどうかをチェックする動作とを含む動作を実行する、コンピュータプログラム製品を含む1つまたは複数のシステムに具現化されてもよい。
【０００６】
概して、本明細書に記載の対象の1つまたは複数の態様は、コンピュータ通信ネットワークインターフェース、コンピュータ通信ネットワークインターフェースに結合されるハードウェアプロセッサおよびメモリデバイスであって、ハードウェアプロセッサおよびメモリデバイスが、関連する処理リソースの制約を有し、メモリデバイスが、ハードウェアプロセッサにプログラムコード命令によって指定された動作を実行させるためにプログラムコード命令をロードするように構成され、プログラムコード命令が、メモリデバイス内のコードベースのメモリフットプリントを小さくするために最小化されたコードベースを含み、コードベースが、コンピュータ通信ネットワークインターフェースを使用してクロスプラットフォームネットワーク通信機能を実装する通信モジュールであって、通信モジュールが、クロスプラットフォームネットワーク通信機能へのアクセスを提供するための通信アプリケーションプログラミングインターフェース(API)を含む、通信モジュールと、単純なバイナリフォーマットで符号化され、少なくとも1つの符号化された通信トリガ規則を含む符号化されたデバイスオペレーション規則に従って、通信モジュールの通信APIを使用してネットワーク通信をトリガするデバイスオペレーション規則エンジンであって、デバイスオペレーション規則エンジンが、符号化されたデバイスオペレーション規則に対する変更を可能にする規則更新APIを含み、デバイスオペレーション規則エンジンが、規則更新APIを通じて受け取られた符号化されたデバイスオペレーション規則に対する変更がハードウェアプロセッサおよびメモリデバイスに関連する処理リソースの制約のうちの少なくとも1つに準拠するかどうかをチェックするようにプログラミングされる、デバイスオペレーション規則エンジンとを含むプログラムアーキテクチャを実装する1つまたは複数のコンシューマ電子デバイスに具現化されてもよい。
【０００７】
本明細書に記載の対象の特定の実施形態は、以下の利点のうちの1つまたは複数を実現するために実装されてもよい。開示されるシステムは、規格に準拠し、プロトコルに依存しない通信をサポートする組み込みソフトウェアのソリューションを実装する。結果として、開示されるシステムおよび技術は、IoT接続性を有するコンシューマ電子デバイスのための相互運用性およびクロスプラットフォームネットワーク通信を可能にする。また、システムは、コンシューマ電子デバイスが異種のコンピューティングフレームを有するリソースが制約されたデバイスを含む複数のコンシューマ電子デバイスのためのセキュアな単一の制御点として機能することを可能にする組み込みソフトウェアを実装する。
【０００８】
説明されるシステムおよび技術は、リソースが制約されたIoTシステムのためのフットプリントが小さなモジュール式の接続性フレームを提供する。システムは、メモリの最適化およびプロセッサの効率のために設計されるユーザが構成可能な規則エンジンも実装する。システムは、様々なプラットフォームのためのカスタマイズをサポートしながら、リソースが制約されたデバイス(たとえば、最小限のメモリ、低い処理電力、比較的低い中央演算処理装置(CPU)のクロック速度、小さなオペレーティングシステムまたはオペレーティングシステムなし)に組み込むために最適化されたソフトウェアを含む。さらに、開示されるシステムは、厳しいリソースの制約の要件を満たしながら柔軟な統合フレームワークを提供する最適な折り合いをつけるように設計される。システムは、ネットワークのローカルの任意のデバイスによってアクセスされることが可能であり、ウェブブラウザまたはモバイルアプリケーションなどのAPIを使用することができるソフトウェアを含むウェブベースのユーザインターフェースを実装してもよい。したがって、ユーザが構成可能なエンジン(およびひいてはコンシューマ電子デバイス)は、1つまたは複数のその他のデバイスによって管理されてもよい。
【０００９】
上のおよびその他の態様および実施形態は、図面、説明、および請求項により詳細に記載される。
【図面の簡単な説明】
【００１０】
【図１】モノのインターネット(IoT)接続性管理および再構成可能な組み込み規則エンジンを実装するためのコンシューマ電子デバイスを含むワイヤレス通信システムの例を示す図である。
【図２】モノのインターネット(IoT)接続性管理および再構成可能な組み込み規則エンジンを実装するためのソフトウェアアーキテクチャを含むコンシューマ電子デバイスの例を示す図である。
【図３】規則更新アプリケーションプログラムインターフェース(API)を含むデバイスオペレーション規則エンジンに関連する図2のソフトウェアアーキテクチャの態様を実装するための通信システムの例を示す図である。
【図４】モノのインターネット(IoT)接続性管理および再構成可能な組み込み規則エンジンのためにコンシューマ電子デバイスを構成するために使用されるプロセスの例を示す図である。
【発明を実施するための形態】
【００１１】
様々な図面における同様の参照番号および参照指示は、同様の要素を示す。
【００１２】
様々な実施形態が示され、説明される。その他の実施形態が、開示される実施形態に加えてまたは開示される実施形態の代わりに使用される可能性がある。明らかであるかまたは不必要である可能性がある詳細は、紙幅を節約するためまたはより効果的に提示するために省略される可能性がある。反対に、一部の実施形態は、開示される詳細のすべてなしに実施される可能性がある。
【００１３】
検討されたコンポーネント、ステップ、特徴、目的、利益、および利点は、例示的であるに過ぎない。それらのいずれも保護の範囲を限定するようにまったく意図されておらず、それらに関連する検討も保護の範囲を限定するようにまったく意図されていない。多数のその他の実施形態も考えられる。これらは、より少ない、追加的な、および/または異なるコンポーネント、ステップ、特徴、目的、利益、および利点を有する実施形態を含む。これらは、コンポーネントおよび/またはステップが異なるように配列されるおよび/または順序付けられる実施形態も含む。
【００１４】
図1は、モノのインターネット(IoT)接続性管理および再構成可能な組み込み規則エンジンを実装するためのコンシューマ電子デバイス105を含む通信システム100の例を示す。図1において、システム100は、通信ネットワーク150を含む。例として、通信ネットワーク150は、ネットワーク150によってサポートされるワイヤレス通信リンク101またはチャネルを確立するためのアクセス可能な範囲内の固定、可搬、およびモバイル電子デバイスのためのワイヤレス接続性を提供するために使用されてもよい。ワイヤレス通信ネットワーク150は、IoTデバイスとも呼ばれるIoT接続性を有する様々なコンシューマ電子デバイスの間の無線(OTA)インターフェースを提供するために互いにインタラクションするコンポーネントを含む。IoT接続性は、概して、オープンコネクティビティファンデーション(OCF: Open Connectivity Foundation)規格などのIoTテクノロジ規格によれば、インターネットインフラストラクチャ内の特定可能な電子デバイスの間の通信接続を指す。
【００１５】
示された例において、ネットワーク150は、ユーザの家などの特定の近傍の中にあり、様々なコンシューマ電子デバイスの間のワイヤレス接続を提供する通信ネットワークとして構成される。したがって、図1は、通常、スマートホーム環境とも呼ばれる構成のネットワーク150を示す。家庭用電化製品などの家庭での使用を意図された多くのコンシューマ電子デバイスは、低電力および低複雑性コンピューティングをサポートするように設計される物理的に小さなデバイスである。一部の実施形態においては、複数のIoTデバイス105は、より長い時間(たとえば、数年)動作するようにバッテリ寿命を延ばすために遠距離低電力テクノロジを使用するデバイスである。この場合、通信リンク101は、Bluetooth低エネルギー(LE)などの低電力ワイヤレス通信技術を使用して実装されることが可能であり、IoTデバイス105は、Bluetooth LEアンテナおよびプロトコルスタックを含んでもよい。
【００１６】
たとえば、複数のIoTデバイス105は、冷蔵庫105a、テレビ105b、洗濯機105c、マイクロスピーカ105d、および照明105eなどの、家庭での使用に適した様々なコンシューマ電子デバイスを含む。結果として、複数のIoTデバイス105に含まれるコンシューマ電子デバイスの一部は、これらのデバイスの処理能力および構成可能性を制約するリソース制限を有してもよい。リソース制限は、最小限のメモリ、低い中央演算処理装置(CPU)の処理電力、低いCPUのクロック速度、および低レベルのソフトウェア(たとえば、オペレーティングシステムなし)を含んでもよい。さらに、複数のIoTデバイス105の中のデバイスの各々は、そのデバイスに関連する特定の製造業者(またはサービスプロバイダ)に対応する異なるプラットフォームを使用して動作してもよい。結果として、複数のIoTデバイス105は、異種のプラットフォームが原因で通信に関する一様性の欠如(たとえば、異なる通信プロトコル)に関連付けられてもよい。組み込み接続性管理ソフトウェア110を含むコンシューマ電子デバイス125は、IoTデバイス105の集中化された統御および制御を提供することに関連付けられてもよい複数のプラットフォーム、リソースが制約された制約、およびその他の要因などの様々な課題に対するソリューションを実装する。
【００１７】
場合によっては、複数のIoTデバイス105のうちの1つまたは複数は、デバイス自体または周辺環境に関するデータなどの情報を収集するためのセンサを備える。IoT接続性によって、デバイスは、コンシューマ電子デバイス125を介してモバイルデバイス115またはリモートコンピュータ120に収集した情報を伝達することができる。IoTデバイス105の一部は、コンシューマ電子デバイス105を通じて送信された制御コマンドに応答して指定された機能を実行してもよい。IoTデバイス105によって収集された情報および制御コマンドの様々な特定の例が、下で与えられる。
【００１８】
加えて、図1は、コンシューマ電子デバイス125がインターネット155として示される広域ネットワーク(WAN)などの局所的な近傍の外にあるネットワークとの接続を確立するように構成されることを示す。コンシューマ電子デバイス125は、インターネット接続をサポートするために使用される複数のハードウェアおよび/またはソフトウェア要素、たとえばインターネット155との接続を確立するためのネットワークインターフェースを含んでもよい。例として、ネットワークインターフェースは、セルラサービス(たとえば、モバイル、WiMAX、LTE、5Gなど)によってインターネット155に接続するためのセルラトランシーバであることが可能である。代替的にまたは追加的に、コンシューマ電子デバイス125は、インターネット155との(たとえば、アクセスポイントを通じた)WiFi接続を確立するためのワイヤレストランシーバであるネットワークインターフェースを含んでもよい。場合によっては、コンシューマ電子デバイス125は、たとえばケーブルモデムまたはデジタル加入者線(DSL)を介して有線ネットワーク接続(たとえば、イーサネット、USB、またはファイヤワイヤ)を確立するネットワークインターフェースも含んでもよい。
【００１９】
図1は、コンシューマ電子デバイス125と通信するように構成されるモバイルデバイス115を示す。モバイルデバイス115は、コンシューマ電子デバイス125と通信することができ、組み込み接続性管理ソフトウェア110によって提供される機能にインタラクティブにアクセスするおよび/またはそのような機能を操作するためにユーザによって使用されてもよい。例として、インストールされたアプリ135(またはブラウザに基づくインターフェース)を有するモバイルデバイス115は、コンシューマ電子デバイス125を特定のユーザに関連付けるために使用されてもよいユーザインターフェース(UI)を提示し、コンシューマ電子デバイス105に通信可能なようにハブ接続されたIoTデバイス105の各々に関連する包括的なUIをさらに提示することができる。別の例において、ユーザは、モバイルデバイス115を使用して特定のIoTデバイスに関する新しいユーザ定義の通信規則を作成することができ、それから、その新しいユーザ定義の通信規則は、組み込み接続性管理ソフトウェア110内の規則エンジンに適用される。組み込み接続性管理ソフトウェア110はコンシューマ電子デバイス125にインストールされるものとして示されるが、ソフトウェアは、複数のIoTデバイス105のうちの1つまたは複数に組み込まれる場合があることを理解されたい。結果として、組み込み接続性ソフトウェア110がインストールされたIoTデバイス105は、フレームワーク内のクロスプラットフォーム通信に能動的に参加することを可能にされる。
【００２０】
また、モバイルデバイス115は、コンシューマ電子デバイス125とのインタラクションに基づいて接続されたIoTデバイス105に関連してユーザが様々な機能を実行する(たとえば、アクセスする、構成する、制御する)ことを可能にするモバイルアプリケーション(たとえば、アプリ)を実行することができる。したがって、モバイルデバイス115は、複数のIoTデバイス105のためのコントローラとして働き、選択されたデバイスまたはデバイスのグループを制御するためにアプリを介してユーザから入力を受け取ることができる。一部の実装において、ソフトウェア開発者などのユーザがモバイルデバイス115によって実行されるモバイルアプリを設計することを可能にするAPIを提供し、モバイルデバイス115は、(たとえば、複数のデバイスを管理するために複数のアプリを使用するのではなく)単一のモバイルアプリを通じて複数のIoTデバイス105の各々を管理するようにカスタマイズされる。代替的に、またはモバイルデバイス115に加えて、別の形態のコンピュータデバイス(たとえば、デスクトップコンピュータ、ラップトップコンピュータ、タブレット)が、ソフトウェアアプリケーションを実行することによって上述の技術を実施するために使用されてもよいことを理解されたい。
【００２１】
さらに、モバイルデバイス115は、インターネット155を介してリモートコンピュータ120にアクセスすることができる。リモートコンピュータ120は、組み込み接続性管理ソフトウェア110の供給業者、たとえばIoTサービスプロバイダに関連付けられてもよい。サービスプロバイダは、リモートコンピュータ120を、追加的なサービスがインターネット155を介して複数のユーザに配信される(たとえば、クラウドサービス)ことを可能にする組み込みソフトウェアと一緒に分散型プラットフォームの一部として使用することができる。リモートコンピュータ120は、ユーザのためのこれらの追加的なサービスを組み込み、統合することも可能であり、追加的なサービスは、IoTデバイス105、コンシューマ電子デバイス125、および組み込み接続性管理ソフトウェア110の能力を拡張することができるか、補完することができるか、またはそのような能力に関連する。たとえば、モバイルデバイス115のユーザは、家から離れているときにIoTデバイス105を遠隔で管理する能力をユーザに提供する追加的なサービス(たとえば、クラウドサービス)にアクセスするためにインターネット155を使用してもよい。場合によっては、モバイルデバイス115は、ユーザにさらなるIoT機能を提供するためにIoTサービスプロバイダなどのリモートコンピュータ120の運用者によって設計されたアプリを実行することができる。
【００２２】
示されるように、例示的なシステム100は、ローカル通信チャネル101を介してコンシューマ電子デバイス125に通信可能なように結合される複数のIoTデバイス105を含む。コンシューマ電子デバイス125は、組み込み接続性管理ソフトウェア110がインストールされているものとして示される。組み込み接続性管理ソフトウェア110は、コンシューマ電子デバイス125が、複数のIoTデバイス105の間のプロトコルに依存しないクロスプラットフォーム通信をサポートするIoTハブとして働くことを可能にするように構成される。組み込み接続性管理ソフトウェア110は、IoTデバイス105のグループの中に含まれてもよい広範なコンシューマデバイスの集中化された通信および管理を可能にするOCF規格などのIoT接続性規格に基づくことができる。たとえば、IoTデバイス105の中の第1のデバイスは、Zigbeeプロトコルを使用するように構成されることが可能であり、別のデバイスは、Z-Waveプロトコルを使用するように構成されることが可能であり、さらに別のデバイスは、Threadプロトコルを使用するように構成されることが可能である。組み込み接続性管理ソフトウェア110をインストールすることによって提供される機能のおかげで、コンシューマ電子デバイス125は、これらのデバイスの各々を発見し、管理することができる。一部の実装において、システム100は、OCF以外のプロトコルを使用するデバイスとの相互運用性をサポートする、コンシューマ電子デバイス125と通信するIoTivityブリッジを含む。実装されてもよいブリッジの例は、オープンネットワークビデオインターフェース(ONVIF: Open Network Video Interface)ブリッジおよびHueブリッジを含む。図2を参照してさらに検討されるように、組み込み接続性管理ソフトウェア110は、規則エンジンを、プロトコルに関係なくすべての管理されるデバイスにまたがって規則が定義され、実行されることを可能にするミドルウェアとして含む。たとえば、組み込み接続性管理ソフトウェア110は、Z-Waveプロトコルのために構成されるセンサからトリガを受け取り、それから、Zigbeeプロトコルのために構成される照明を点け、ONVIFのために構成されるカメラから動画の撮影を開始し、OCFのために構成されるスピーカ上でアラームを鳴らす規則を定義(および実行)するために使用されてもよい。
【００２３】
さらに、組み込み接続性管理ソフトウェア110は、コンシューマ電子デバイス125を集中化されたハブとして使用して(および付随モバイルアプリまたはウェブブラウザを使用して)複数のIoTデバイス105との相互運用性をサポートする。組み込み接続性管理ソフトウェア110は、IoTivity制約付きの(IoTivity Constrained)実装などのOCFスタックの能力をさらに拡張してもよいOCF規格の特定の実装に少なくとも部分的に基づくことが可能である。「IoTivity制約付きの」は、本明細書において検討を目的として使用され、リソースが制約された環境のために設計されたIoTデバイスに関するOCF規格のその他のオープンソースの実装が、必要であるおよび/または適切であると考えられるように使用されてもよいことを理解されたい。組み込み接続性管理ソフトウェア110がOCF規格のオープンソースの実装を利用する場合、組み込みソフトウェアは、プラットフォームのいずれに対するカスタマイズも可能にしながら、IoTデバイス105に含まれる様々なリソースが制約されたデバイスに関してOCFの遵守を可能にする。
【００２４】
IoTデバイス105の各々は、たとえば通信チャネル101を確立するためにペアリング技術を使用してコンシューマ電子デバイス125に接続することができる。結果として、コンシューマ電子デバイス125は、IoTデバイス105の様々な機能を直接制御するためにデバイスツーデバイス通信を使用することができる。たとえば、コンシューマ電子デバイス125は、照明105eに関するスイッチオンアクションかまたはスイッチオフアクションかのどちらかをトリガするオン/オフコマンドを伝達することができる。さらに、コンシューマ電子デバイス125は、デバイスの制御のためにクロスプラットフォーム通信を使用する能力を有する。例として、コンシューマ電子デバイス125は、異なるコンピューティングプラットフォーム(たとえば、異なる製造業者)を使用する複数のIoTデバイス105を制御するための複数のコマンドを伝達することができる。コンシューマ電子デバイス125のさらに別の能力は、イベント駆動式の規則を含む。(図2に示される)デバイスオペレーション規則エンジンは、組み込み接続性管理ソフトウェア110の態様である。デバイスオペレーション規則エンジンは、イベント駆動式の規則を実装し、特定されたイベントが、それに応答して1つまたは複数のアクションをトリガしてもよい。たとえば、規則は、組み込み接続性管理ソフトウェア110によって定義され、その後実施されることが可能であり、1つまたは複数の応答アクション、たとえば照明を点滅させることおよびスピーカでアラーム音を再生することをトリガするために、モーションディテクタが家の中の場所で動きを検出することなどの特定のイベントに条件付きで対応する。また、デバイスオペレーション規則エンジンによって実施される規則は、APIからのトリガおよび/またはアクションを含んでもよい。たとえば、サービスプロバイダが、APIを使用して(たとえば、電子番組案内などに基づいて)規則をトリガすることができ、そのとき規則は、家のIoTデバイス105上の変更をもたらす。
【００２５】
コンシューマ電子デバイス125は、ゲートウェイデバイス、ネットワーク接続ストレージ(NAS)デバイス、ワイヤレスルータ、セットトップボックス、ホームオートメーションコントローラなどのネットワーク接続性を有するリソースが制約されたデバイスであることができる。この種類のコンシューマ電子デバイス105は、低RAM、低フラッシュRAM容量、低クロックサイクルの低電力CPU、および小さなオペレーティングシステムを含め、より大規模でより洗練されたコンピュータデバイスと比較して様々な制限に関連付けられてもよい。しかし、図2を参照してより詳細に検討されるように、組み込み接続性管理ソフトウェア110は、そのようなデバイスのために最適化されるプログラムアーキテクチャを実装する。開示される技術によれば、組み込み接続性管理ソフトウェア110は、メモリの最適化、処理/CPU効率、小さなデーモンのフットプリント、およびリソースが制約されたデバイスに組み込まれるように設計された、ユーザが定義可能および編集可能な規則をサポートする規則エンジンなどの、IoT接続性およびリソースが制約されたデバイスに関連する複数のソリューションを提供する。
【００２６】
図2は、モノのインターネット(IoT)接続性管理および再構成可能な組み込み規則エンジンを実装するためのソフトウェアアーキテクチャを含むコンシューマ電子デバイス205の例を示す。図2に示されるように、コンシューマ電子デバイス205は、プログラムコードを記憶するためのメモリ210と、プロセッサ215とを含む。プロセッサ215は、プログラムコードを実行し、データを処理するためのマイクロコントローラであることが可能である。メモリ210は、電源を切られるときにデータを消去するランダムアクセスメモリ(RAM)などの揮発性メモリとして実装されることが可能であり、高速な読み取り/書き込み速度を有することが可能であり、ランタイム中にプログラムメモリを記憶するために使用されることが可能である。代替的にまたは追加的に、メモリ210は、電源を切られるときにデータを消去しない永続的なストレージである読み出し専用メモリ(ROM)などの不揮発性メモリとして実装されることが可能であり、デバイスのファームウェアおよび/またはブートコードを記憶するために使用されることが可能である。さらに、メモリ210は、低電力マイクロコントローラであることが可能なプロセッサ215内に統合されるか、またはバスもしくは通信ファブリックを介してプロセッサ215に結合される可能性がある。検討されるように、組み込み接続性管理ソフトウェア110は、一部の実装においては組み込みコードであることが可能であり、コードを組み込むことが、メモリアーキテクチャに制限を課してもよい。たとえば、組み込みコードは、(必要に応じてさらなるメモリまたはディスクスペースを要求することができるより高レベルのアプリケーションと比較して)ハードウェア設計で与えられたメモリリソースに制約されてもよい。
【００２７】
広域ネットワーク(WAN)インターフェースおよびそれに結合されるアンテナであることが可能であるネットワークインターフェース220が示される。代替的にまたは追加的に、ネットワークインターフェース220は、ローカルネットワークインターフェース、たとえばWiFiインターフェース(およびWiFiアンテナ)、またはローカルエリアネットワーク通信チャネルを確立するためのイーサネットインターフェースであることが可能である。
【００２８】
図2に示されるように、組み込み接続性管理ソフトウェア225は、複数のモジュール式のコンポーネントを含むプログラムアーキテクチャを有する組み込みソフトウェアまたはプログラムコードである。組み込みソフトウェアは、デバイスの機能を制御するためのチップ内のまたはファームウェア上の特殊なプログラミングである。組み込みソフトウェアは、コンピュータのオペレーティングシステムがソフトウェアアプリケーションの機能を制御するのと同様な方法で様々なハードウェアデバイスおよびシステムの機能を制御するために使用されてもよい。
【００２９】
組み込み接続性管理ソフトウェア225のモジュール式のスケーラブルな設計は、コンシューマ電子デバイス205などのリソースが制約されたデバイスへの統合のその容易さをサポートしてもよい。組み込み接続性管理ソフトウェア225は、IoT制約付きの(IoT Constrained)実装などの既存のIoTテクノロジのフレーム上に構築されてもよい。IoT制約付きの実装は、IoTに関するOCF規格のオープンソースの実装である。一部の実装において、組み込み接続性管理ソフトウェア225は、特定のコンシューマ電子デバイスのために使用されるCPU/オペレーティングシステム(OS)の組合せに固有である。
【００３０】
組み込み接続性管理ソフトウェア225は、組み込みソフトウェアとして動作するように設計されるアプリケーションレイヤのソフトウェアとして実装されてもよい。たとえば、ソフトウェアアプリケーションが、(たとえば、ハードディスクドライブ(HDD)、フラッシュメモリ、ソリッドステートデバイス(SSD)上に記憶する)コンシューマ電子デバイス205にインストールされることが可能であり、ソフトウェアアプリケーションは、組み込み接続性管理ソフトウェア225を組み込み、自動的に実行するように構成される。組み込み接続性管理ソフトウェア225のアーキテクチャは、レイヤ間の明確に定義されたAPIを含む。APIは、アプリケーションを作成するためのルーチン、プロトコル、およびツールのセットを定義するアプリケーションプログラミングインターフェースである。APIは、コンポーネントのビヘイビアおよび能力の高レベルのインターフェースならびにその入力および出力を定義する。APIは、汎用的で実装に依存しないように設計されることが可能であり、APIが全般的なインターフェースまたはビヘイビアではなくAPIの実装に対する変更のみによって複数のアプリケーションで使用されることを可能にする。
【００３１】
したがって、組み込み接続性管理ソフトウェア225は、ファームウェアイメージを構築するためにコンシューマ電子デバイス205のOSにインストールされてもよい。アプリケーションレイヤのソフトウェアとして検討されるが、組み込み接続性管理ソフトウェア225は、ミドルウェアおよびファームウェアなどのその他の形態で実装されてもよいことを理解されたい。場合によっては、様々な設計のトレードオフが、組み込み接続性管理ソフトウェア225を実装するための適切なソフトウェアレイヤを決定する際に考慮されてもよい。ファームウェアは、たとえば改善された性能(たとえば、ROMに関連する高速なアクセス速度)がソフトウェアの設計にとって重要であるシナリオにおいて好適であってもよい。
【００３２】
図2は、ネットワークインターフェース220を使用してクロスプラットフォームネットワーク通信機能を実施する通信モジュール240と、クロスプラットフォームネットワーク通信機能へのアクセスを提供する通信API 245と、通信モジュール240の通信API 245を使用して、符号化された規則に従って、ネットワーク通信をトリガするデバイスオペレーション規則エンジン230と、符号化された規則への変更を可能にする規則更新API 235とを含む複数のコンポーネントを組み込むものとして組み込み接続性管理ソフトウェア225を示す。デバイスオペレーション規則エンジン230および規則は、通信モジュール240から抽象化されてもよい。たとえば、デバイスオペレーション規則エンジン230は、デバイスの状態を監視し、変更するそのデバイスオペレーション規則エンジン230の能力のためにオブジェクトモデル(たとえば、OCFオブジェクトモデル)を利用することができ、デバイスとの実際の通信のために通信モジュール240に頼ることができる。通信モジュール240によって使用されるオブジェクトモデルは、(プロトコルブリッジと同様に)異なることが可能であるが、そのとき2つのモデルの間の変換をするためのソフトウェアブリッジを必要としてもよい。デバイスオペレーション規則エンジン230はAPIを使用して通信モジュール240と通信するので、デバイスオペレーション規則エンジン230は、異なる通信モジュールによって実装されてもよい。
【００３３】
小さなフットプリントは、組み込みソフトウェアの開発のための設計の考慮事項であることが多い。デバイスオペレーション規則エンジン230は、ソフトウェアアーキテクチャの一部として、リソースが制約されたデバイスに組み込まれる。したがって、デバイスオペレーション規則エンジン230は、小さなフットプリントを実現するために最適に設計されることが可能であり、小さなフットプリントは、ひいては、コンシューマ電子デバイスに組み込まれるときにメモリおよび処理リソースのより少ない消費を必要とする。例として、デバイスオペレーション規則エンジン230は、以下の仕様、すなわち400MHz未満のAdvanced RISC Machine(ARM) CPU、2MB未満のRAM、約2個のCPUスレッド、およびROMのうちの400kB未満を満たすために最適化されてもよい。接続性管理ソフトウェア225のアーキテクチャが、それがリソースが制約されたデバイスに関するものとして検討される。しかし、アーキテクチャは、様々なサイズのシステムおよび/またはデバイス上で最適なリソースの利用を有するように設計されてもよい。たとえば、メモリおよびCPUスレッドの使用の基準が、上で検討された仕様に従って確立されてもよい。しかしながら、設計は、よりリソースが豊富なシステムに関して上述の基準を上げるなど、より大きなデバイスの能力により適するように適合されてもよい。ソフトウェアアーキテクチャが意図されるプラットフォームに特化してカスタマイズされてもよいので、設計の柔軟性が実現されてもよい。
【００３４】
デバイスオペレーション規則エンジン230は、規則更新API 235の使用を通じて、更新が遠隔で生成され、エンジンの符号化された規則に適用されることを許す。したがって、デバイスオペレーション規則エンジン230は、ユーザによって遠隔で定義されるか、編集されるか、またはそうでなければ更新され、規則更新API 235を介して受け取られてもよい。さらに、規則更新API 235は、任意の変更をロードするためにソフトウェアをリブートするかまたはリスタートすることを防止するようにして、符号化された規則を変更する能力をサポートする。たとえば、規則は、トリガイベントが発生するときにのみ読まれる。そして、規則がアクティブ化される(またはアクティブであるものとして作成される)とき、トリガが、イベントハンドラに登録される。さらに、規則が非アクティブ化される(または削除される)とき、トリガは、登録を抹消される。登録アクションおよび登録抹消アクションは、リブートを必要とせず、結果とし、デバイスオペレーション規則エンジン230に対する更新は、デバイスをリブートすることなく実行されてもよい。場合によっては、デバイスオペレーション規則エンジン230に対する変更は、リモートデバイス(たとえば、クラウドサービスからの自動化された規則生成)によって自動的に生成される。
【００３５】
デバイスオペレーション規則エンジン230は、RAM、ROM、またはそれら両方内のエンジンのフットプリントを小さくするために最小化される最小化されたコードベースを含む。コードベースは、様々な技術を使用することによって最小化されてもよい。背景として、組み込み規則は、通常、トリガ、条件、アクションを含む3つのコンポーネントからなるものとして説明されてもよい。トリガは、バイナリ比較結果を生じる単純なバイナリフォーマットで記憶されるテキストである。本明細書において言及されるように、単純なテキストは、完全なスクリプト言語ではなく、より自然言語の記述に似ているテキストに関する。トリガの例示的なフォーマットが、下に示される。
if(motion is sensed) OR if(is light status on)
【００３６】
両方のトリガが、比較結果(たとえば、TRUEまたはFALSE)へと評価される。このフォーマットに基づいて、トリガは、小さなフットプリントならびに単純さおよび速度に寄与する簡単なバイナリチェックである。さらなる例として、デバイスが、そのプロパティを報告することができ、トリガコンポーネントが、報告されたプロパティのうちの1つの状態に対するバイナリチェックとして実行される。場合によっては、2つの規則が同時にトリガされるとき、これらが処理される順序は、定義されない(ランダムである)。別の規則コンポーネント、条件は、ANDのグループを除いてトリガと同様にして評価される。条件に関する例示的なフォーマットが、下に示される。
if((time is after 8pm) AND (light is on) AND (nobody is home))
【００３７】
したがって、条件もバイナリ比較であり、アクションが実行されるために真と評価されなければならない。条件は、主としてデバイスのプロパティであるが、バイナリチェックをやはり提供する時間、日付などのその他の情報に関することが可能である。
【００３８】
アクションは、デバイスのプロパティを設定する単純な記述である。アクションのフォーマットの例が、下に示される。
(set thermostat set point to 72°), (set light power to ON)
【００３９】
結果として、コードベースは、通常、上で詳細に検討されたように(たとえば、バイナリテキストフォーマットで記憶された)小さなサイズのテキストコンポーネントを含む規則からなるものとして特徴付けられてもよい。したがって、そのとき単純なバイナリテキストからなるコードベースも小さく、結果として小さなフットプリントをもたらすことになる。さらに、規則およびそれぞれのコンポーネントは、規則が単純なバイナリ比較によって評価されるので効率的に解析されてもよい。結果的に、単純な評価およびフォーマットを使用することによって、規則エンジンは、プログラミングがより複雑なその他のエンジン、たとえばJavaScriptエンジンと比較して「軽量な」エンジンとして実装されてもよい。
【００４０】
規則ライブラリ全体をインポートするのではなく必要に応じて特定された機能をインポートすることが、最小限のコードベースを実現するために使用されてもよい。場合によっては、どの機能がエンジンによって必要とされるかを判定することは、コンパイル時の判断であり、様々なデバイスに固有のパラメータに少なくとも部分的に基づくことができる。たとえば、コードは、所与のライブラリ内の機能に関して検索されることが可能であり、呼び出される機能のみがインポートされる。それによって、使用の確率が比較的低い(またはまったくない)機能を削除する。さらに、機能自体が、最適化されてもよい。機能は、所与のタスクのために使用するための最も効率的な機能を決定するために評価されてもよい。この場合、タスクを達成するための異なる手法(たとえば、どの機能を使用すべきか)が、使用される機能を選択するために比較されてもよい。これらの技術は例であり、エンジンおよびソフトウェアのための最も効率的なコードベースを生成するためのその他のメカニズムが、必要であるまたは適切であると考えられるように使用されてもよい。
【００４１】
デバイスオペレーション規則エンジン230はスケーラビリティのために設計されるが、デバイスオペレーション規則エンジン230がデバイスのリソースに最小限の影響を与えるおよび/またはデバイスのリソースの制約を超えてスケーリングされないことを保証するために、様々な技術が実装されてもよい。規則更新API 235を通じて符号化された規則を定義することおよび編集することは、ステートレスであることが可能であり、さらに、単一の呼び出しを使用して達成されることが可能である。規則更新API 235のこのステートレスな実装のおかげで、規則の更新は、ローカルに記憶されるデータに依存する自己充足的な要求、および規則の変更を制約されたリソースに否定的な影響を与えることから守るための行為からなる。たとえば、規則エンジンに新しい規則を追加することは、イベントプロセッサが規則の一部をローカルに記憶すること(たとえば、トリガを登録すること)のみを必要とし、これは(追加されている新しい規則を収容するために既に割り当てられている可能性がある)小さな量のメモリを必要とするので、潜在的に、ソフトウェアの小さなメモリのフットプリントに実質的に何も影響を与えない(またはまったく何も影響を与えない)。
【００４２】
加えて、デバイスオペレーション規則エンジン230は、符号化された規則への変更が制約に関連する閾値を超えるようにしてデバイスオペレーション規則エンジン230を再構成してもよい新しい規則を追加することを含むかどうかを調べるためにプログラミングされてもよい。システムは、様々なリソースの制約、たとえばプロセッサ215またはメモリ210に関する制限に関連付けられる閾値を定義することができる。例として、閾値を超えることは、規則の変更が潜在的にリソースの制約の要件、たとえば2MBを超えるRAMを必要とすることに違反する場合があることを示す。そうでない場合、閾値は超えられず、そのことは、規則の変更がリソースの制約の要件を満たすことを示す。したがって、デバイスオペレーション規則エンジン230は、閾値が超えられないとき、メモリ210を使用し、閾値が超えられるとき、リモートメモリデバイスを使用することができる。場合によっては、利用可能な場合により多くのローカルメモリを割り当てることが、閾値が超えられる場合に実行されてもよい。さらに、実装において、システムは、所定のリソースの利用を示すパラメータを用いて予め構成されてもよい。したがって、システムは、使用されるリソースの変更が所定のリソースの利用に合致しているかどうかを判定し、合致している場合、デバイスの各々にそのような変更をプッシュすることもできる。
【００４３】
一部の実装において、最適化技術は、アクティブなメモリ管理を含む。メモリ管理の例において、システムは、各メモリイベントが最小限の量のメモリを使用するかどうかを動的に判定してもよい。また、メモリ管理の態様は、文字列プーリング(string pooling)および静的メモリ(static memory)(たとえば、動的割り当てなし)を使用する。さらに、メモリ管理技術は、メモリを明示的に割り当てることと、使用後にメモリを直ちに解放することを含んでもよい。最適化は、RAMなどの揮発性メモリおよび/またはROMなどの不揮発性メモリの使用および効率を改善しようと勤めるその他のメカニズムを含んでもよい。
【００４４】
図3は、規則更新API 335を含むデバイスオペレーション規則エンジン330に関連するソフトウェアアーキテクチャの態様を実装するための通信システム300の例を示す。デバイスオペレーション規則エンジン330は、規則が遠隔で生成され、その後、組み込みソフトウェアに適用されることを可能にする柔軟でユーザが構成可能なエンジンであることが可能である。システム300全体の全般的な説明として、図3は、コンシューマ電子デバイス305が遠隔のソースから規則の変更310、320を受け取るときのそのコンシューマ電子デバイス305を示す。1つの場合に、遠隔のソースは、規則更新API 335によって受け取られるために、ユーザによって定義された規則の変更310を伝達するモバイルデバイス315である。たとえば、モバイルデバイス315のユーザは、規則更新インターフェース316を使用して、規則変更310を生成するために使用される選択可能な入力を入力することができる。規則変更310は、1つもしくは複数の既存の規則に対する様々な修正(たとえば、削除)または1つもしくは複数の新たに定義された規則の生成を含んでもよい。
【００４５】
もう一方の場合、遠隔のソースは、接続性管理サービス355(たとえば、クラウドサービス)として示される。接続性管理サービス355は、たとえばオートメーションまたは人工知能(AI)ソフトウェアによって(たとえば、直接的なエンドユーザの入力なしに)規則変更320を自動的に生成することができる。自動的に生成された規則変更320は、コンシューマ電子デバイス305による使用データの集合の結果として得られることが可能であり、使用データのこの集合は、接続性管理サービス355に転送され、たとえば記録されたデータとして記憶される。規則更新API 335は、更新された規則320を生成するためにサービスに関連するコンピューティングリソース(たとえば、サーバ、クラウドコンピューティング)による使用データの分析を可能にするように設計されてもよい。場合によっては、複数の異なるユーザ(たとえば、複数の家)に関連付けられてもよい複数のコンシューマ電子デバイスからの使用データが、接続性管理サービス335によって収集され、規則の変更320を生成するために使用されてもよい。AIまたはオートメーションソフトウェアが、収集されたデータを組み合わせ、規則およびサービスに関連する複数の要因に少なくとも部分的に基づいて規則の変更320を生成することができる。自動的な規則生成中に考慮される要因は、デバイスの種類、デバイスのグループ化位置(grouping location)、家の地理的位置などを含んでもよいがこれらに限定されない。一部の実装においては、同様の構成に関する規則が、特定され、それから、新しい規則が、推測され、作成されてもよい。規則の更新320が自動的に生成された後、規則の更新320は、コンシューマ電子デバイス305に組み込まれたデバイスオペレーション規則エンジン330に自動的にプッシュされてもよい。
【００４６】
さらに、図3は、符号化されたデバイスオペレーション規則331を示す。符号化された規則は、単純なバイナリフォーマットを有するテキストとして実装されてもよい。符号化されたデバイスオペレーション規則331は、情報交換用米国標準コード(ASCII)、Unicodeなどの様々な文字符号化方式に従って実装されてもよい。場合によっては、符号化されたデバイスオペレーション規則331は、拡張可能マークアップ言語(XML)などのより複雑な符号化方式に従って実装される。符号化されたデバイスオペレーション規則331は、関連する名前および識別子を有してもよい。場合によっては、符号化されたデバイスオペレーション規則331は、およそ1キロバイトのサイズを有するデータ構造を使用して実装される。
【００４７】
また、既に検討されたように、符号化されたデバイスオペレーション規則331は、複数のコンポーネント、つまりトリガ、条件、およびアクションを含んでもよい。規則は、複数の条件を有するイベントによってトリガされることが可能であり、条件のすべてが満たされるとき、いくつかのアクションが、実行されることが可能である。イベントは、センサを通じてOCFネットワークから受け取られたイベント(たとえば、温度変化、トリガされたモーションセンサ)またはOCFデバイスにおける別の状態変化(ランプのスイッチオン)であることが可能である。加えて、トリガは、時間に基づくことが可能である(たとえば、毎朝8時)。条件は、システムの現在のステータス(たとえば、「誰も家にいない」もしくは「8pmを過ぎている」)またはデバイスのステータス(たとえば、「ランプがスイッチをオンにされる」)を反映する。規則がイベントによってトリガされ、条件のすべてが満たされる場合、すべてのアクションが行われる。代替的に、単一のアクションが失敗する場合、すべてのその他のアクションが引き続き処理される。アクションは、OCFデバイスの状態変化に関連することが可能である(ランプのスイッチをオンにする)が、OCFの範囲を超えることも可能である(たとえば、電子メールを送信する、通知を送信する)。場合によっては、符号化されたデバイスオペレーション規則331は、ゼロ個以上の規則からなる汎用データファイルに記憶される。符号化されたデバイスオペレーション規則331の構文は、行に基づくことができる(たとえば、各コンポーネントが、行末またはファイルの末尾によって終端される)。符号化されたデバイスオペレーション規則331内の空行または指定された文字(たとえば、"#")で始まる行は、無視されてもよい。
【００４８】
表記法が、上で検討されたように規則のコンポーネントを表すために使用されてもよい。例示的な表記法が、下の表に示される。
【表１】
2021513174.tif 000003
【００４９】
加えて、デバイスが、そのプロパティを報告することができ、トリガコンポーネントが、報告されたプロパティのうちの1つの状態に対するチェックを実行する。システムにおいて報告されてもよいプロパティの例を含む表が、下に示される。
【表２】
2021513174.tif 000004
【００５０】
上で詳細に検討されたように、編集可能なデバイスオペレーション規則エンジン330は、ユーザが規則に関する条件およびアクションを定義することを可能にする。アクションは、デバイスの状態変化に関連し、規則が作成されると自動的に割り振られてもよい優先度プロパティを有してもよい。ユーザは、場合によっては、規則更新インターフェース316を通じてアクションの順序を変更することもできる。システムに含まれてもよいアクションの例を含む表が、下に示される。
【表３】
2021513174.tif 000005
【００５１】
また、符号化されたデバイスオペレーション規則331は、外部フォーマットを有してもよい。例として、規則の外部フォーマットは、Iで始まる1つの規則の識別子の行、Nで始まる1つの規則の名前の行、Eで始まる1つの規則のイベントの行、Uで始まる任意の規則のアイコンの行、Cで始まるゼロ個以上の規則の条件の行、およびAで始まるゼロ個以上の規則のアクションの行を含んでもよい。さらに、外部フォーマットに関する例示的な略式の構文が、下に示される。
<rule> ::= <rule identifier line>
<rule name line>
<rule event line>
<rule icon line>
<rule condition line>*
<rule action line>*
【００５２】
さらに、外部フォーマットの規則の例が、下に示される。
# switch off the fan if the temperature sinks below 25 Celsius
I:4715
N:Stop cooling
E:7b5b2b34-321b-4ebe-572e-390606fe197b/temperature.temperature
C:7b5b2b34-321b-4ebe-572e-390606fe197b/temperature.temperature lt 25.0
A:7b5b2b34-021b-4ebe-572e-390606fe197b/switch.value(false)
【００５３】
場合によっては、符号化されたデバイスオペレーション規則331のうちの1つまたは複数は、名前に関連付けられてもよい。規則は、人間によって使用される平易な意味の語などのユーザフレンドリな名前であることが可能である。規則の名前に関する略式の構文の例が、下に示される。
<rule name line> ::= 'N:' <series of letters, digits or spaces, UTF-8 encoded>
【００５４】
上で検討されたように、規則は、イベントが発生する場合にトリガされる。このイベントは、デバイスかまたはシステムかのどちらかから来る。OCFに基づくイベントは、監視されるリソースによって説明される。たとえば、(たとえば、サーモスタットからの)現在の値の変化が、条件においてチェックされてもよい。タイマイベントが、タイマの指定に基づいてデバイスオペレーション規則エンジン330によって作成されてもよい。規則のイベントに関する略式の構文の例が、下に示される。
<rule event line> ::= 'E:' <event>
<event>           ::= <resource property>
| <system property>
| <timer specification>
【００５５】
場合によっては、規則がイベントの発生によってトリガされた場合、ゼロ個以上の条件が評価される。すべての条件がTRUEと評価される場合、規則の条件はTRUEである。代替的に、一致しないデータタイプとの比較はFALSEと評価される(たとえば、ブール値および整数値を比較する)。条件で使用される演算子の例が、下に示される。
【表４】
2021513174.tif 000006
【００５６】
規則の条件に関する略式の構文の例が、下に示される。
<rule condition line> ::= 'C:' <property> <operator> <comparison value>
<property>            ::= <resource property>
| <system property>
<operator>            ::= 'eq'
| 'ne'
| 'le'
| 'lt'
| 'ge'
| 'gt'
| 'in'
<comparison value>    ::= <integer or Boolean or space
separated integer list or timer specification
【００５７】
イベントが発生し、条件がTRUEであるシナリオにおいて、アクションは、直ちに実行されるか、または遅延が指定される場合は遅延される。OCFデバイスに関して、アクションは、修正されるデバイスのプロパティおよび設定される新しい値を説明する。デバイスが既にアクションが必要とする状態である場合、我々は、別の呼び出しは発さない。規則のアクションに関する略式の構文の例が、下に示される。
<rule action line>::= 'A:' <action>
<action>          ::= <resource property>'('<value>')'[','<delay in seconds>]
| <system property>'('<value>')'
| <system action>
【００５８】
一部の実装においては、符号化されたデバイスオペレーション規則331が、外部フォーマットからJavaScriptオブジェクト表記法(JSON: JavaScript Object Notation)フォーマットにおよびその逆にマッピングされてもよい。規則に関するJSONフォーマットへの規則の例示的なマッピングが、下に示される。
I:は"id"にマッピングされる
任意のフラグdisabledは"enabled": falseにマッピングされる
N:は"n"にマッピングされる
U:はiconidにマッピングされる
E:は"event"にマッピングされる。下の説明参照
各C:は"conditions"配列のconditionエントリにマッピングされる。下の説明参照
各A:は"actions"配列のactionエントリにマッピングされる。下の説明参照
【００５９】
規則に関するJSONオブジェクトの例が、下に示される。
{
"id": "4711",
"enabled": false,
"n": "Cool down",
"iconid": "ico123",
"event": EVENT,
"conditions": [
CONDITION,
CONDITION...
],
"actions": [
ACTION,
ACTION...
]
}
【００６０】
EVENTに関するJSONオブジェクトの例が、下に示される。
"di"を省略することは、"system"または"engine"、つまりタイマイベントを意味する。
API /list_triggerは、各"di"に関する潜在的なトリガのリストを提供する。そのリストの1つのトリガは、ここでは"trigger"として使用されなければならない。
トリガが一意でない(たとえば、デバイスがプロパティ"value"を有するバイナリスイッチ(binary switch)およびプロパティ"value"を有するセンサである)場合、"rt"および"path"が追加されるべきである。
{
"di": "7b5b2b34-321b-4ebe-572e-390606fe197b",
"n": "Temperature Sensor",
"rt" : "oic.r.temperature",
"path" : "/temperature",
"trigger": "temperature"
}
【００６１】
タイマイベントは、"di"を持たず、ISO8601の構文(たとえば、trigger every day at 7:30)を使用してもよい。タイマイベントの例が、下に示される。
{
"trigger": "*-*-*T7:30"
}
【００６２】
"di"を省略することは、"system"または"engine"(たとえば、nobodyathome条件)を示してもよい。API /list_conditionsは、各"di"に関する(利用可能な場合、データタイプおよび値の範囲を含む)潜在的な条件のリストを提供してもよい。そのリストの1つまたは複数のプロパティは、ここでは"condition"リスト内の"property"として使用されてもよい。条件が一意でない場合、"rt"および"path"も、追加されるべきである。
{
"di": "7b5b2b34-021b-4ebe-572e-390606fe197b",
"n": "Temperature Sensor",
"condition": [{
"path": "/temperature",
"property": "temperature",
"operator": "eq",
"value": "25.0"
}]
}
【００６３】
"di"を省略することは、"system"または"engine"、つまりsend_messageアクションを意味する。パラメータが必要とされない場合、"value"は任意であり、パラメータが必要とされない場合、"delay"は任意である。API /list_actionsは、各"di"に関する(利用可能な場合、データタイプおよび値の範囲を含む)潜在的なプロパティのリストを提供する。そのリストの1つまたは複数のプロパティは、ここでは"action"リスト内の"property"として使用されなければならない。アクションが一意でない場合、"rt"および"path"も、追加されるべきである。ACTIONに関するJSONオブジェクトの例が、下に示される。
{
"di": "7b5b2b34-021b-4ebe-572e-390606fe197b",
"n": "Temperature Sensor",
"action": [{
"path": "/switch",
"property": "value",
"value": false,
"delay": 10
}]
}
【００６４】
例として、規則は、下に示される外部フォーマットを有してもよい。
I:4711 disabled
N:Stop cooling
E:7b5b2b34-321b-4ebe-572e-390606fe197b/temperature.temperature
C:nobodyathome eq false
C:7b5b2b34-321b-4ebe-572e-390606fe197b/temperature.temperature lt 25.0
C:7b5b2b34-021b-4ebe-572e-390606fe197b/alarmlight.value eq true
A:7b5b2b34-122c-4ebe-572e-390606fe197b/alarmlight.value(false),10
A:send_message
【００６５】
例について続けると、上述の外部フォーマットは、下に示される例示的なJSONオブジェクトとして表されてもよい。
{
"id": "4711",
"enabled": false,
"n": "Stop cooling",
"event": {
"di": "7b5b2b34-321b-4ebe-572e-390606fe197b",
"path": "/temperature",
"trigger": "temperature"
},
"conditions": [
{
"condition": [{
"property": "nobodyathome",
"operator": "eq",
"value": false
}]
},
{
"di": "7b5b2b34-321b-4ebe-572e-390606fe197b",
"n": "Temperature Sensor",
"condition": [{
"path": "/temperature",
"property": "temperature",
"operator": "lt",
"value": "25.0"
}]
},
{
"di": "7b5b2b34-122c-4ebe-572e-390606fe197b",
"n": "Music Player",
"condition": [{
"path": "/temperature",
"property": "value,
"operator": "eq",
"value": true
}]
}
],
"actions": [
{
"di": "7b5b2b34-122c-4ebe-572e-390606fe197b",
"n": "Music Player",
"action": [{
"path": "/player",
"property": "playmode",
"value": "1",
"delay": 10
}]
},
{
"action": [{
"property": "send_message"
}]
}
]
}
【００６６】
サポートされるリソースプロパティに関連して、デバイスからのプロパティの値は、下のフォーマットを使用して参照されてもよい。
<uuid>[<path>].<property name>,
【００６７】
温度センサの温度を示すリソースプロパティの例が、下に示される。
7b5b2b34-321b-4ebe-572e-390606fe197b.temperature
【００６８】
読み取り専用でないプロパティが、関数として表されるアクションに設定されてもよい。例として、ランプの明るさを50%に変更する読み取り専用でないプロパティが、下に示される。
7b5b2b34-321b-4ebe-572e-390606fe197b.brightness(50)
【００６９】
場合によっては、<path>が、曖昧さを回避するために<uuid>に追加されてもよい。このフォーマットの例が、下に示される。
7b5b2b34-721b-4ebe-572e-390606fe197b/motion.value
7b5b2b34-721b-4ebe-572e-390606fe197b/switch.value.
【００７０】
サポートされるリソースプロパティの例を含む表が、下に示される。
【表５】
2021513174.tif 000007
【００７１】
規則更新API 335は、符号化されたデバイスオペレーション規則331を作成、修正、および削除することができる。デバイスオペレーション規則330によって提供されてもよいAPIの関数の例を含む表が下に示される。
【表６Ａ】
2021513174.tif 000008
【表６Ｂ】
2021513174.tif 000009
【表６Ｃ】
2021513174.tif 000010
【００７２】
規則更新API 335を使用して実装される関数の例が、下に示される。
i. 検出されたモーション--家に誰もいない
IF: LynxMiNDモーションセンサによって検出されたモーション
WHILE: 誰も家にいない
THEN: Timの電話に通知を送信する
1. 外部フォーマット
I:4711
N:Motion detected - nobody home
E:7b5b2b34-221b-4ebe-572e-390606fe197b/motion.value
C:nobodyathome eq true
A:send_message
ii. 検出されたモーション
IF: LynxMiNDモーションセンサによって検出されたモーション
WHILE: 誰かが家にいる
THEN: LynxMiND Alarm Lightをオンにし、LynxMiND Living Room Music Player上でアラームを再生し、LynxMiND Bed Room Music Player上でアラームを再生する
1. 外部フォーマット
I:4712
N:Motion detected
E:7b5b2b34-221b-4ebe-572e-390606fe197b/motion.value
C:nobodyathome eq false
A:7b5b2b34-521b-4ebe-572e-390606fe197b/alarmlight.value(true)
A:7b5b2b34-521b-4ebe-572e-390606fe197b/alarmlight.value(false),10
A:7b5b2b34-122b-4ebe-572e-390606fe197b/player.playmode(2)
A:7b5b2b34-122b-4ebe-572e-390606fe197b/player.playmode(0),10
A:7b5b2b34-122c-4ebe-572e-390606fe197b/player.playmode(2)
A:7b5b2b34-122c-4ebe-572e-390606fe197b/player.playmode(0),10
iii. 目覚まし
IF: 7:30 a.m.である
WHILE: 平日である
THEN: Wake upシーンを有効化する
1. 外部フォーマット
I:4713
N:Wake up
E:*-*-*T7:30
C:weekday in 1 2 3 4 5
A:scn_wake_up_123456
iv. 冷房開始
IF: 温度>=27°C
WHILE: 誰かが家にいる
THEN: LynxMiND Fanをオンにする
1. 外部フォーマット
I:4714
N:Start cooling
E:7b5b2b34-321b-4ebe-572e-390606fe197b/temperature.temperature
C:nobodyathome eq false
C:7b5b2b34-321b-4ebe-572e-390606fe197b/temperature.temperature ge 27.0
C:7b5b2b34-021b-4ebe-572e-390606fe197b/fan.value eq false
A:7b5b2b34-021b-4ebe-572e-390606fe197b/fan.value(true)
v. 冷房停止
IF: 温度<25°C
THEN: LynxMiND Fanをオフにする
1. 外部フォーマット
I:4715
N:Stop cooling
E:7b5b2b34-321b-4ebe-572e-390606fe197b/temperature.temperature
C:7b5b2b34-321b-4ebe-572e-390606fe197b/temperature.temperature lt 25.0
C:7b5b2b34-021b-4ebe-572e-390606fe197b/fan.value eq true
A:7b5b2b34-021b-4ebe-572e-390606fe197b/fan.value(false)
【００７３】
様々な符号化されたデバイスオペレーション規則331の例はコンシューマ電子デバイス305に記憶されるものとして示されているが、符号化されたデバイスオペレーション規則331は、任意のアクセス可能な(たとえば、マッピングされた)ストレージデバイスに記憶されてもよい。さらに、符号化されたデバイスオペレーション規則331は、様々な形態のメモリまたはストレージデバイス(たとえば、HDD、フラッシュメモリ、SSD、クラウドストレージにマッピングされる)に記憶され、スタートアップされるとRAMなどの揮発性メモリに読み込まれてもよい。
【００７４】
図4は、モノのインターネット(IoT)接続性管理および再構成可能な組み込み規則エンジンのためにコンシューマ電子デバイスを構成するために使用されるプロセス400の例を示す。プロセス400は、概して、デバイスのリソースの制約を能動的に考慮しながら組み込みソフトウェアに関連するプログラムコード命令のインストールまたはロードを含むものとして説明されてもよい。場合によっては、コンシューマ電子デバイスは、不揮発性の非一時的コンピュータ可読に組み込まれたプログラムコード、たとえばROMに記憶されたファームウェアを含む。したがって、ブロック410において、コンシューマ電子デバイスが、プログラムコード命令のモノのインターネット(IoT)接続性管理の態様を不揮発性メモリから揮発性メモリ(たとえば、RAM)にロードしてもよい。それから、プログラムコード命令は、揮発性メモリから実行されることが可能であり、それによってプログラムコード命令によって指定された様々なIoT管理動作を実行するようにデバイスを構成する。場合によっては、プログラムコード命令は、不揮発性メモリ以外のソースからデバイスのローカルの揮発性メモリにロードされるかまたはインストールされてもよい。例として、プログラムコード命令は、コンピュータプログラム製品からロードされるか、またはリモートメモリデバイス(たとえば、IoT接続性サービス)からプッシュされてもよい。プログラムコード命令は、不揮発性メモリ、揮発性メモリ、またはそれら両方内のコードベースのメモリフットプリントを小さくするために、図2を参照して説明された技術によって最小化されたコードベースを含んでもよい。さらに、コードベースは、図2に示されたように組み込み接続性管理ソフトウェアに関連するプログラムアーキテクチャを実装してもよい。
【００７５】
図2を参照して詳細に検討されたプログラムアーキテクチャは、符号化されたデバイスオペレーション規則に対する変更を可能にする規則更新APIを含む。したがって、デバイスオペレーション規則エンジンは、規則更新APIを介して受け取られた規則の変更に基づいて再構成されてもよい。ブロック415において、符号化されたデバイスオペレーション規則に対する変更が受け取られたかどうかを判定するためにチェックが、実行される。符号化された規則に対する変更が受け取られた(たとえば、Yes)場合、プロセス400は、ブロック420に進む。そうでない場合、符号化されたデバイスオペレーション規則に対する変更がない(たとえば、変更を適用するためのデバイスオペレーション規則エンジンの再構成が必要とされない)と判定され、プロセス400は、ブロック435において終了するか、または符号化されたデバイスオペレーション規則に対する変更を能動的に特定するためにブロック415に(周期的にもしくは連続的に)戻ることができる。
【００７６】
上述のように、コンシューマ電子デバイスは、そのコンシューマ電子デバイスのプロセッサおよびメモリデバイスに関連するリソースの制約を有してもよい。さらに、規則に対する更新を含むようにデバイスオペレーション規則を再構成することは、潜在的にこれらのリソースに影響を与える。したがって、プロセス400は、デバイスのリソースの制約を、規則の変更をロードし、デバイスオペレーション規則エンジンを再構成するために使用されるメモリ管理方式のパラメータとして考慮する。ブロック420において、デバイスオペレーション規則エンジンは、符号化されたデバイスオペレーション規則がリソースの制約に準拠する(または準拠しない)かどうかをチェックするようにプログラミングされてもよい。たとえば、デバイスオペレーション規則エンジンは、変更が符号化されたデバイスオペレーション規則への1つまたは複数の新たに生成された規則を含むかどうかをチェックし、符号化されたデバイスオペレーション規則にこれらの新たな規則を追加することが閾値を超えるかどうかを判定するようにプログラミングされてもよい。1つまたは複数の閾値が、ブロック420のチェックにおいて適用されることが可能であり、閾値は、デバイスの処理リソースの制約のうちの少なくとも1つに関連付けられる。この判定に基づいて、メモリロケーションが、符号化された規則に対する変更をロードするために選択されてもよい。メモリ管理方式は、概して、エンジンを再構成することが潜在的にデバイスのいかなるリソースの制約にも違反しないときに規則の変更をローカルに記憶するものとして説明されてもよい。そうでない場合、規則の変更は、コンシューマ電子デバイスの仕様を上回る可能性があるメモリおよび/または処理能力を必要とすると判定される。これらの場合、メモリ管理は、符号化されたデバイスオペレーション規則に対するすべての変更を遠隔に記憶することを選択してもよい。
【００７７】
したがって、チェック420が符号化されたデバイスオペレーション規則に対する変更が制約に準拠しない、言い換えると、閾値が超えられた(たとえば、Yes)と判定するとき、プロセス400は、ブロック425に移る。ブロック425において、符号化されたデバイスオペレーション規則に対する変更が、IoT接続性サービスに関連するリモートコンピュータまたはIoT接続性管理ハブとして働くデバイスなどのリモートメモリデバイスによって記憶されてもよい。それから、プロセス400は、符号化されたデバイスオペレーション規則に対する変更を能動的に特定するためにブロック415に(周期的にもしくは連続的に)戻ることができる。
【００７８】
そうでない場合、チェック420は、閾値が超えられなかった(たとえば、No)、または符号化されたデバイスオペレーション規則が制約に確かに準拠すると判定した。その後、ブロック430において、符号化されたデバイスオペレーション規則に対する変更が、コンシューマ電子デバイスのローカルの揮発性メモリデバイス、たとえばRAMにロードされる。符号化されたデバイスオペレーション規則に対する変更は、コンシューマ電子デバイスのリブートを避けるようにして揮発性メモリデバイスにロードされる。それから、プロセス400は、符号化されたデバイスオペレーション規則に対する変更を能動的に特定するためにブロック415に(周期的にもしくは連続的に)戻ることができる。したがって、ブロック415〜430は、反復的な下位プロセスとして実行されることが可能であり、これらのステップの複数回の反復が、規則に対するさらなる変更がなくなるまで実行され、プロセス400は、ブロック435において終了してもよい。
【００７９】
本明細書に記載のシステムおよび技術の様々な実装は、デジタル電子回路、集積回路、特別に設計されたASIC(特定用途向け集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェア、および/またはこれらの組合せ内に実現されてもよい。これらの様々な実装は、ストレージシステム、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスからデータおよび命令を受け取り、それらにデータおよび命令を送信するために結合される、専用または汎用である可能性がある少なくとも1つのプログラミング可能なプロセッサを含むプログラミング可能なシステム上の、実行可能および/または解釈可能な1つまたは複数のコンピュータプログラムへの実装を含んでもよい。
【００８０】
これらのコンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、またはコードとしても知られる)は、プログラミング可能なプロセッサ用の機械命令を含み、高級手続き型プログラミング言語および/もしくはオブジェクト指向プログラミング言語、ならびに/またはアセンブリ/機械言語で実装されてもよい。本明細書で使用されるとき、用語「機械可読媒体」および「コンピュータ可読媒体」とは、機械命令を機械可読信号として受け取る機械可読媒体を含む、プログラム可能なプロセッサに機械命令および/またはデータを提供するために使用される任意のコンピュータプログラム製品、装置、および/またはデバイス(たとえば、磁気ディスク、光ディスク、メモリ、プログラマブルロジックデバイス(PLD))を指す。用語「機械可読信号」とは、プログラミング可能なプロセッサに機械命令および/またはデータを提供するために使用される任意の信号を指す。
【００８１】
ユーザとのインタラクションを行うために、本明細書に記載のシステムおよび技術は、ユーザに対して情報を表示するためのディスプレイデバイス(たとえば、LCD(液晶ディスプレイ)デバイス、OLED(有機発光ダイオード)ディスプレイデバイス、または別のモニタデバイス)、ならびにユーザがコンピュータに入力を与えることができるキーボードおよびポインティングデバイス(たとえば、マウスまたはトラックボール)を有するコンピュータ上に実装されてもよい。その他の種類のデバイスが、ユーザとのインタラクションを行うためにさらに使用されることが可能であり、たとえばユーザに提供されるフィードバックは、任意の形態の感覚フィードバック(たとえば、視覚的フィードバック、聴覚的フィードバック、または触覚的フィードバック)であることが可能であり、ユーザからの入力は、音響、発話、または触覚による入力を含む任意の形態で受け取られてもよい。
【００８２】
本明細書に記載のシステムおよび技術は、バックエンドコンポーネントを(たとえば、データサーバとして)含むか、またはミドルウェアコンポーネント(たとえば、アプリケーションサーバ)を含むか、またはフロントエンドコンポーネント(たとえば、ユーザが本明細書に記載のシステムおよび技術の実装とインタラクションすることができるグラフィカルユーザインターフェースもしくはウェブブラウザを有するクライアントコンピュータ)を含むか、またはそのようなバックエンドコンポーネント、ミドルウェアコンポーネント、もしくはフロントエンドコンポーネントの任意の組合せを含むコンピューティングシステムに実装されてもよい。システムのコンポーネントは、デジタルデータ通信の任意の形態または媒体(たとえば、通信ネットワーク)によって相互に接続されてもよい。通信ネットワークの例は、ローカルエリアネットワーク("LAN")、広域ネットワーク("WAN")、(アドホックなまたは静的なメンバーを有する)ピアツーピアネットワーク、グリッドコンピューティングインフラストラクチャ、およびインターネットを含む。
【００８３】
コンピューティングシステムは、クライアントおよびサーバを含んでもよい。クライアントおよびサーバは、概して互いに離れており、通常は通信ネットワークを通じてインタラクションする。クライアントとサーバとの関係は、それぞれのコンピュータ上で実行されており、互いにクライアント-サーバの関係にあるコンピュータプログラムによって生じる。
【００８４】
数個の実装が上で詳細に説明されたが、その他の修正があってもよい。加えて、図面に示された論理フローは、所望の結果を達成するために、示された特定の順序または逐次的順序である必要はない。その他のステップが設けられる可能性があり、またはステップが説明されたフローから削除される可能性があり、その他のコンポーネントが説明されたシステムに追加されるか、もしくは説明されたシステムから削除される可能性がある。したがって、その他の実装は、添付の請求項の範囲内にある。
【符号の説明】
【００８５】
100  通信システム
101  ワイヤレス通信リンク
105  コンシューマ電子デバイス、IoTデバイス
105a  冷蔵庫
105b  テレビ
105c  洗濯機
105d  マイクロスピーカ
105e  照明
110  組み込み接続性管理ソフトウェア
115  モバイルデバイス
120  リモートコンピュータ
125  コンシューマ電子デバイス
135  アプリ
150  通信ネットワーク
155  インターネット
205  コンシューマ電子デバイス
210  メモリ
215  プロセッサ
220  ネットワークインターフェース
225  組み込み接続性管理ソフトウェア
230  デバイスオペレーション規則エンジン
235  規則更新API
240  通信モジュール
245  通信API
300  通信システム
305  コンシューマ電子デバイス
310  規則の変更
315  モバイルデバイス
316  規則更新インターフェース
320  規則の変更
330  デバイスオペレーション規則エンジン
331  符号化されたデバイスオペレーション規則
335  規則更新API
355  接続性管理サービス
400  プロセス
【図１】
2021513174.tif 000011
【図２】
2021513174.tif 000012
【図３】
2021513174.tif 000013
【図４】
2021513174.tif 000014
【手続補正書】
【提出日】令和2年9月4日(2020.9.4)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ハードウェアプロセッサに動作を実行させるように動作可能な、コンピュータ可読媒体上に符号化されたコンピュータプログラム製品であって、前記動作が、
前記ハードウェアプロセッサにプログラムコード命令によって指定された動作をさらに実行させるためにメモリデバイスに前記プログラムコード命令をロードする動作を含み、前記ハードウェアプロセッサおよび前記メモリデバイスが、関連する処理リソースの制約を有し、
前記プログラムコード命令が、前記メモリデバイス内のコードベースのメモリフットプリントを小さくするために最小化された前記コードベースを含み、
前記コードベースが、
コンピュータ通信ネットワークインターフェースを使用してクロスプラットフォームネットワーク通信機能を実現することと、
通信アプリケーションプログラミングインターフェース(API)を通じて前記クロスプラットフォームネットワーク通信機能へのアクセスを提供することと、
少なくとも1つの符号化された通信トリガ規則を含む符号化されたデバイスオペレーション規則に従って前記通信APIを使用してネットワーク通信をトリガすることと、
規則更新APIを通じて前記符号化されたデバイスオペレーション規則に対する変更を可能にすることと、
前記規則更新APIを通じて受け取られた前記符号化されたデバイスオペレーション規則に対する前記変更が前記ハードウェアプロセッサおよび前記メモリデバイスに関連する前記処理リソースの制約のうちの少なくとも1つに準拠するかどうかをチェックすることと
を含む動作を実行する、コンピュータプログラム製品。
【請求項２】
前記メモリデバイスが揮発性メモリデバイスであり、前記メモリフットプリントが第1のメモリフットプリントであり、メモリデバイスに前記プログラムコード命令をロードすることが、前記ハードウェアプロセッサに前記プログラムコード命令によって指定された前記動作を実行させるために、前記揮発性メモリデバイスに結合される不揮発性の非一時的コンピュータ可読媒体から前記揮発性メモリデバイスにロードすることを含み、前記コードベースが、前記不揮発性の非一時的コンピュータ可読媒体内の前記コードベースの第2のメモリフットプリントを小さくするために最小化済みである、請求項1に記載のコンピュータプログラム製品。
【請求項３】
前記揮発性メモリデバイスにプログラムコード命令をロードすることが、リブートを避けるようにして前記規則更新APIを通じて受け取られた前記符号化されたデバイスオペレーション規則に対する前記変更をロードすることを含み、前記規則更新APIが、トリガイベントが起こるときに、受け取られた規則を読み取るように構成され、前記規則がアクティブ化されるとき、トリガがイベントハンドラに登録され、前記規則が非アクティブ化されるとき、トリガが登録を抹消される、請求項2に記載のコンピュータプログラム製品。
【請求項４】
前記符号化されたデバイスオペレーション規則が、テキストに基づくフォーマットである単純なバイナリフォーマットで符号化済みである、請求項1に記載のコンピュータプログラム製品。
【請求項５】
前記コードベースが、前記符号化されたデバイスオペレーション規則に対する前記変更が前記ハードウェアプロセッサおよび前記メモリデバイスに関連する前記処理リソースの制約のうちの少なくとも1つに関連する閾値を超える1つまたは複数の追加的な符号化されたデバイスオペレーション規則を追加することを含むかどうかをチェックする動作と、前記閾値が超えられないときに前記メモリデバイスを使用する動作と、前記閾値が超えられるときにリモートメモリデバイスを使用する動作とをさらに含む動作を実行する、請求項1に記載のコンピュータプログラム製品。
【請求項６】
前記クロスプラットフォームネットワーク通信機能が、ネットワーク上でアクセス可能である複数のコンシューマ電子デバイスを前記コンピュータ通信ネットワークインターフェースを介して通信可能なように接続することを含み、前記複数のコンシューマ電子デバイスが、関連するプロセッサリソースの制約、メモリリソースの制約、または両方を有する、請求項1に記載のコンピュータプログラム製品。
【請求項７】
コンピュータ通信ネットワークインターフェースと、
前記コンピュータ通信ネットワークインターフェースに結合され、関連する処理リソースの制約を有する、ハードウェアプロセッサおよびメモリデバイスを含み、
前記メモリデバイスが、前記ハードウェアプロセッサにプログラムコード命令によって指定された動作を実行させるために前記プログラムコード命令をロードするように構成され、
前記プログラムコード命令が、前記メモリデバイス内のコードベースのメモリフットプリントを小さくするために最小化された前記コードベースを含み、
前記コードベースが、
前記コンピュータ通信ネットワークインターフェースを使用してクロスプラットフォームネットワーク通信機能を実装し、前記クロスプラットフォームネットワーク通信機能へのアクセスを提供するための通信アプリケーションプログラミングインターフェース(API)を含む、通信モジュールと、
単純なバイナリフォーマットで符号化され、少なくとも1つの符号化された通信トリガ規則を含む符号化されたデバイスオペレーション規則に従って、前記通信モジュールの前記通信APIを使用してネットワーク通信をトリガし、前記符号化されたデバイスオペレーション規則に対する変更を可能にする規則更新APIを含み、前記規則更新APIを通じて受け取られた前記符号化されたデバイスオペレーション規則に対する前記変更が前記ハードウェアプロセッサおよび前記メモリデバイスに関連する前記処理リソースの制約のうちの少なくとも1つに準拠するかどうかをチェックするようにプログラミングされる、デバイスオペレーション規則エンジンと
を含むプログラムアーキテクチャを実装する、コンシューマ電子デバイス。
【請求項８】
前記メモリデバイスが、揮発性メモリデバイスであり、前記メモリフットプリントが、第1のメモリフットプリントであり、前記コンシューマ電子デバイスが、
前記揮発性メモリデバイスに結合され、前記ハードウェアプロセッサに前記プログラムコード命令によって指定された前記動作を実行させるために前記プログラムコード命令を前記揮発性メモリデバイスにロードするように構成され、前記プログラムコード命令の前記コードベースが、不揮発性の非一時的コンピュータ可読媒体内の前記コードベースの第2のメモリフットプリントを小さくするために最小化済みである、前記不揮発性の非一時的コンピュータ可読媒体を含む、
請求項7に記載のコンシューマ電子デバイス。
【請求項９】
前記不揮発性の非一時的コンピュータ可読媒体が、前記コンシューマ電子デバイスのリブートを避けるようにして前記規則更新APIを通じて受け取られた前記符号化されたデバイスオペレーション規則に対する変更を含むプログラムコード命令を前記揮発性メモリデバイスにロードするように構成され、前記規則更新APIが、トリガイベントが起こるときに、受け取られた規則を読み取るように構成され、前記規則がアクティブ化されるとき、トリガがイベントハンドラに登録され、前記規則が非アクティブ化されるとき、トリガが登録を抹消される、請求項8に記載のコンシューマ電子デバイス。
【請求項１０】
前記単純なバイナリフォーマットが、テキストに基づくフォーマットである請求項7に記載のコンシューマ電子デバイス。
【請求項１１】
前記デバイスオペレーション規則エンジンが、前記符号化されたデバイスオペレーション規則に対する前記変更が前記ハードウェアプロセッサおよび前記メモリデバイスに関連する前記処理リソースの制約のうちの少なくとも1つに関連する閾値を超える1つまたは複数の追加的な符号化されたデバイスオペレーション規則を追加することを含むかどうかをチェックし、前記閾値が超えられないときに前記メモリデバイスを使用し、前記閾値が超えられるときにリモートメモリデバイスを使用するようにプログラミングされ、前記リモートメモリデバイスへのアクセスが、前記コンピュータ通信ネットワークインターフェースによって確立される、請求項7に記載のコンシューマ電子デバイス。
【請求項１２】
前記クロスプラットフォームネットワーク通信機能が、ネットワーク上でアクセス可能である複数のその他のコンシューマ電子デバイスを前記コンピュータ通信ネットワークインターフェースを介して通信可能なように接続することを含み、前記複数のその他のコンシューマ電子デバイスが、関連するプロセッサリソースの制約、メモリリソースの制約、または両方を有する、請求項7に記載のコンシューマ電子デバイス。
【請求項１３】
前記デバイスオペレーション規則エンジンが、前記符号化されたデバイスオペレーション規則に対する1つまたは複数の追加的な変更を自動的に生成し、前記符号化されたデバイスオペレーション規則に対する前記1つまたは複数の追加的な変更を前記規則更新APIにプッシュしたリモートデバイスから前記符号化されたデバイスオペレーション規則に対する前記1つまたは複数の追加的な変更を受け取り、前記リモートデバイスが、複数の異なるユーザに関連する複数のコンシューマ電子デバイスから収集された使用データの分析に基づいて前記符号化されたデバイスオペレーション規則に対する前記1つまたは複数の追加的な変更を自動的に生成する、請求項7に記載のコンシューマ電子デバイス。
【請求項１４】
前記符号化されたデバイスオペレーション規則が、トリガ、条件、およびアクションを含むコンポーネントを含み、管理されるモノのインターネット(IoT)デバイスのセットからのデバイスに関連するアクションが、前記符号化されたデバイスオペレーション規則からの規則が満たされた条件を含むイベントによってトリガされるときに実行される、請求項7に記載のコンシューマ電子デバイス。
【請求項１５】
前記規則更新APIが、ローカルに記憶されるデータに依存する自己充足的な要求を含む規則の更新の要求を受け取るように構成されることによって前記変更を可能にする、請求項7に記載のコンシューマ電子デバイス。
【請求項１６】
前記符号化されたデバイスオペレーション規則が、トリガ、条件、およびアクションを含むコンポーネントを含み、管理されるモノのインターネット(IoT)デバイスのセットからのデバイスに関連するアクションが、前記符号化されたデバイスオペレーション規則からの規則が満たされた条件を含むイベントによってトリガされるときに実行される、請求項1に記載のコンピュータプログラム製品。
【請求項１７】
前記規則更新APIを通じて前記変更を可能にする動作が、ローカルに記憶されるデータに依存する自己充足的な要求を含む規則の更新の要求を受け取ることを含む、請求項1に記載のコンピュータプログラム製品。
【請求項１８】
前記コードベースによって実行される前記動作が、前記符号化されたデバイスオペレーション規則に対する1つまたは複数の追加的な変更を自動的に生成し、前記符号化されたデバイスオペレーション規則に対する前記1つまたは複数の追加的な変更を前記規則更新APIにプッシュしたリモートデバイスから前記符号化されたデバイスオペレーション規則に対する前記1つまたは複数の追加的な変更を受け取る動作を含み、前記リモートデバイスが、複数の異なるユーザに関連する複数のコンシューマ電子デバイスから収集された使用データの分析に基づいて前記符号化されたデバイスオペレーション規則に対する前記1つまたは複数の追加的な変更を自動的に生成する、請求項1に記載のコンピュータプログラム製品。
【国際調査報告】
2021513174.tif 000015
2021513174.tif 000016