様々な態様および実施形態が、例示的な態様および実施形態に関する特定の例を示すために以下の説明および関連する図面において開示される。代替的態様および代替的実施形態は、この開示を読むと当業者には明らかであり、本開示の範囲または趣旨を逸脱することなく構築され、実践され得る。加えて、本明細書で開示する態様および実施形態の関連する詳細を不明瞭にしないように、よく知られている要素は詳細には説明されず、または省略され得る。
「例示的」という言葉は、本明細書では「例、事例、または例示として機能すること」を意味するために使用される。本明細書で「例示的」として説明するいかなる実施形態も、必ずしも他の実施形態よりも好ましいか、または有利であると解釈されるべきではない。同様に、「実施形態」という用語は、すべての実施形態が、論じられた特徴、利点または動作モードを含むことを要求しない。
本明細書で使用される用語は、特定の実施形態のみを説明しており、本明細書で開示されるいずれかの実施形態を限定すると解釈されるべきではない。本明細書で使用される単数形「a」、「an」、および「the」は、文脈が別段に明確に示すのでなければ、複数形をも含むものとする。さらに、「含む(comprises)」、「含んでいる(comprising)」、「含む(includes)」、および/または「含んでいる(including)」という用語は、本明細書で使用すると、述べられた特徴、整数、ステップ、動作、要素、および/または構成要素の存在を明示するが、1つまたは複数の他の特徴、整数、ステップ、動作、要素、構成要素、および/またはそれらのグループの存在または追加を排除しないことが理解されよう。
さらに、多くの態様について、たとえばコンピューティングデバイスの要素によって実施されるべき、動作のシーケンスに関して説明する。本明細書で説明する様々な動作は、特定の回路(たとえば、特定用途向け集積回路(ASIC))によって、1つまたは複数のプロセッサによって実行されるプログラム命令によって、あるいは両方の組合せによって実施され得ることは認識されよう。さらに、本明細書で説明されるこれらの一連の動作は、実行されると、関連するプロセッサに本明細書において説明される機能を実行させることになる対応する1組のコンピュータ命令を記憶した、任意の形のコンピュータ可読記憶媒体内で完全に具現されるものと見なされ得る。したがって、本明細書において説明する様々な態様は、特許請求される主題の範囲内にすべて入ることが企図されているいくつかの異なる形で具現され得る。さらに、本明細書で説明される実施形態ごとに、任意のそのような実施形態の対応する形は、本明細書において、たとえば、説明される動作を実行する「ように構成された論理」として説明される場合がある。
本明細書で使用する「モノのインターネットデバイス」(すなわち「IoTデバイス」)という用語は、アドレス指定可能なインターフェース(たとえば、インターネットプロトコル(IP)アドレス、Bluetooth(登録商標)識別子(ID)、近距離無線通信(NFC:near-field communication)IDなど)を有し、有線またはワイヤレス接続を通じて1つまたは複数の他のデバイスに情報を送信することができる任意の物(たとえば、電化製品、センサーなど)を指すことができる。IoTデバイスは、クイックレスポンス(QR)コード、無線周波数識別(RFID)タグ、NFCタグなどの受動通信インターフェース、または、モデム、トランシーバ、送信機-受信機などの能動通信インターフェースを有し得る。IoTデバイスは、中央処理装置(CPU)、マイクロプロセッサ、ASICなどの中に組み込まれること、および/あるいは、それらによって制御/監視されることが可能であり、ローカルアドホックネットワークまたはインターネットなどのIoTネットワークに接続するように構成された特定の属性セット(たとえば、IoTデバイスがオンであるか、もしくはオフであるか、開いているか、もしくは閉じているか、アイドルであるか、もしくはアクティブであるか、タスク実行のために利用可能であるか、もしくはビジーであるかなど、冷房機能であるか、もしくは暖房機能であるか、環境監視機能であるか、もしくは環境記録機能であるか、発光機能であるか、音響放射機能であるかなど、デバイスの状態またはステータス)を有し得る。たとえば、IoTデバイスは、これらのデバイスがIoTネットワークと通信するためのアドレス指定可能通信インターフェースを備える限り、冷蔵庫、トースター、オーブン、電子レンジ、冷凍庫、皿洗い機、パラボラアンテナ(dishes)、手工具、洗濯機、衣類乾燥機、加熱炉、空調機、温度自動調整器、テレビジョン、照明設備、掃除機、スプリンクラー、電気メータ、ガスメータなどを含み得るが、これらに限定されない。IoTデバイスはまた、セルフォン、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、携帯情報端末(PDA)などを含み得る。したがって、IoTネットワークは、通常はインターネット接続性を有しないデバイス(たとえば、皿洗い機など)に加えて、「レガシー」インターネットアクセス可能デバイス(たとえば、ラップトップコンピュータまたはデスクトップコンピュータ、セルフォンなど)の組合せから構成され得る。
図1Aは、様々な態様によるワイヤレス通信システム100Aのハイレベルシステムアーキテクチャを示す。ワイヤレス通信システム100Aは、テレビジョン110と、屋外空調機112と、温度自動調整器114と、冷蔵庫116と、洗濯機および乾燥機118とを含む、複数のIoTデバイスを含む。
図1Aを参照すると、IoTデバイス110〜118は、図1Aにエアインターフェース108および直接有線接続109として示す物理通信インターフェースまたは物理通信レイヤを介してアクセスネットワーク(たとえば、アクセスポイント125)と通信するように構成される。エアインターフェース108は、IEEE 802.11など、ワイヤレスインターネットプロトコル(IP)に準拠し得る。図1Aは、エアインターフェース108を介して通信するIoTデバイス110〜118と、直接有線接続109を介して通信するIoTデバイス118とを示すが、各IoTデバイスは、有線接続もしくはワイヤレス接続、または両方を介して通信することができる。
インターネット175は、いくつかのルーティングエージェントおよび処理エージェント(便宜上、図1Aには示されていない)を含む。インターネット175は、標準インターネットプロトコルスイート(たとえば、伝送制御プロトコル(TCP)およびIP)を使用して、異種のデバイス/ネットワークの間で通信する、相互接続されたコンピュータならびにコンピュータネットワークのグローバルシステムである。TCP/IPは、データが、宛先において、どのようにフォーマッティング、アドレス指定、送信、経路指定、および受信されるべきかを指定するエンドツーエンド接続性を提供する。
図1Aでは、デスクトップコンピュータまたはパーソナルコンピュータ(PC)などのコンピュータ120は、(たとえば、Ethernet(登録商標)接続またはWi-Fiもしくは802.11ベースのネットワークを介して)インターネット175と直接接続するとして示される。コンピュータ120は、(たとえば、有線接続性とワイヤレス接続性の両方を有するWiFiルータ用の)アクセスポイント125自体などに相当してよいモデムまたはルータとの直接接続など、インターネット175との有線接続を有し得る。代替的に、有線接続を介して、アクセスポイント125およびインターネット175に接続されるのではなく、コンピュータ120は、エアインターフェース108または別のワイヤレスインターフェースを介してアクセスポイント125に接続されてよく、エアインターフェース108を介してインターネット175にアクセスしてよい。デスクトップコンピュータとして例示されているが、コンピュータ120は、ラップトップコンピュータ、タブレットコンピュータ、PDA、スマートフォンなどであり得る。コンピュータ120は、IoTデバイスであり得、かつ/またはIoTデバイス110〜118のネットワーク/グループなど、IoTネットワーク/グループを管理するための機能を含み得る。
アクセスポイント125は、たとえば、FiOS、ケーブルモデム、デジタル加入者線(DSL)モデムなど、光通信システムを介して、インターネット175に接続され得る。アクセスポイント125は、標準インターネットプロトコル(たとえば、TCP/IP)を使用して、IoTデバイス110〜120およびインターネット175と通信することができる。
図1Aを参照すると、IoTサーバ170は、インターネット175に接続されるように示されている。IoTサーバ170は、複数の構造的に別々の複数のサーバとして実装され得るか、または代替的には、単一のサーバに対応し得る。一態様では、IoTサーバ170は、(点線によって示されるように)オプションであり、IoTデバイス110〜120のグループは、ピアツーピア(P2P)ネットワークであり得る。そのような場合、IoTデバイス110〜120は、適切なデバイス間(D2D)通信技術を使用してエアインターフェース108および/または直接有線接続109を介して互いに直接通信することができる。代替的に、または追加として、IoTデバイス110〜120の一部またはすべては、エアインターフェース108および直接有線接続109に依存しない通信インターフェースで構成され得る。たとえば、エアインターフェース108がWiFiインターフェースに対応する場合、IoTデバイス110〜120のうちの1つもしくは複数は、互いに、または他のBluetooth(登録商標)対応デバイスもしくはNFC対応デバイスと直接通信するためのBluetooth(登録商標)インターフェースあるいはNFCインターフェースを有し得る。
ピアツーピアネットワークでは、サービス発見方式は、ノードの存在、その能力、およびグループメンバーシップをマルチキャストすることができる。ピアツーピアデバイスは、この情報に基づいて、関連性および後続の相互作用を確立することができる。
様々な態様によれば、図1Bは、複数のIoTデバイスを含む別のワイヤレス通信システム100Bのハイレベルアーキテクチャを示す。一般に、図1Bに示すワイヤレス通信システム100Bは、上でより詳細に説明した、図1Aに示すワイヤレス通信システム100Aと同じ、ならびに/または実質的に同様の様々な構成要素(たとえば、エアインターフェース108および/もしくは直接有線接続109を介してアクセスポイント125と通信するように構成された、テレビジョン110と、屋外空調機112と、温度自動調整器114と、冷蔵庫116と、洗濯機および乾燥機118とを含む様々なIoTデバイス、インターネット175に直接接続する、かつ/あるいはアクセスポイント125を通してインターネット175に接続するコンピュータ120、ならびにインターネット175を介してアクセス可能なIoTサーバ170など)を含み得る。したがって、説明を簡潔かつ簡単にするために、同じまたは同様の詳細が図1Aに示したワイヤレス通信システム100Aに関して上ですでに提供されている限り、図1Bに示すワイヤレス通信システム100B内のいくつかの構成要素に関する様々な詳細は本明細書で省略される場合がある。
図1Bを参照すると、ワイヤレス通信システム100Bは、代替的に、IoTマネージャ130またはIoTマネージャデバイス130と呼ばれる場合もあるスーパーバイザデバイス130を含み得る。したがって、以下の説明が「スーパーバイザデバイス」130という用語を使用する場合、IoTマネージャ、グループ所有者、または同様の用語に対するいずれの参照もスーパーバイザデバイス130、あるいは同じもしくは実質的に同様の機能を提供する別の物理的構成要素または論理的構成要素を指す場合があることを当業者は諒解されよう。
様々な実施形態では、スーパーバイザデバイス130は、一般に、ワイヤレス通信システム100B内の様々な他の構成要素を観測、監視、制御、あるいは管理することができる。たとえば、スーパーバイザデバイス130は、エアインターフェース108および/または直接有線接続109を介してアクセスネットワーク(たとえば、アクセスポイント125)と通信して、ワイヤレス通信システム100B内の様々なIoTデバイス110〜120に関連付けられた属性、活動、もしくは他の状態を監視または管理することができる。スーパーバイザデバイス130は、インターネット175に対して、および、オプションで、(点線として示される)IoTサーバ170に対して、有線接続またはワイヤレス接続を有し得る。スーパーバイザデバイス130は、様々なIoTデバイス110〜120に関連付けられた属性、活動、もしくは他の状態をさらに監視または管理するために使用され得る情報をインターネット175および/あるいはIoTサーバ170から取得することができる。スーパーバイザデバイス130は、独立型デバイスであってよく、または、コンピュータ120など、IoTデバイス110〜120のうちの1つであってもよい。スーパーバイザデバイス130は、物理デバイスであってよく、または物理デバイス上で実行するソフトウェアアプリケーションであってもよい。スーパーバイザデバイス130は、IoTデバイス110〜120に関連付けられた、監視される属性、活動、または他の状態に関する情報を出力して、それらに関連付けられた属性、活動、または他の状態を制御あるいは管理するための入力情報を受信することができるユーザインターフェースを含み得る。したがって、スーパーバイザデバイス130は、一般に、様々な構成要素を含むことが可能であり、ワイヤレス通信システム100B内の様々な構成要素を観測、監視、制御、あるいは管理するために様々な有線通信インターフェースおよびワイヤレス通信インターフェースをサポートし得る。
図1Bに示すワイヤレス通信システム100Bは、ワイヤレス通信システム100Bに結合され得るか、あるいはワイヤレス通信システム100Bの一部であり得る(能動IoTデバイス110〜120と対照的な)1つまたは複数の受動IoTデバイス105を含み得る。一般に、受動IoTデバイス105は、短距離インターフェースを介して問い合わされたとき、その識別子と属性とを別のデバイスに提供することができる、バーコード付きデバイス、Bluetooth(登録商標)デバイス、無線周波数(RF)デバイス、RFIDタグ付きデバイス、赤外線(IR)デバイス、NFCタグ付きデバイス、または任意の他の適切なデバイスを含み得る。能動IoTデバイスは、受動IoTデバイスの属性の変化を検出すること、記憶すること、通信すること、それらの変化に作用することなどが可能である。
たとえば、受動IoTデバイス105は、各々、RFIDタグまたはバーコードを有するコーヒーカップとオレンジジュースの容器とを含み得る。キャビネットIoTデバイスおよび冷蔵庫IoTデバイス116は、各々、RFIDタグもしくはバーコードを読み取って、コーヒーカップおよび/またはオレンジジュースの容器の受動IoTデバイス105がいつ追加あるいは除去されたかを検出することができる適切なスキャナまたはリーダーを有し得る。キャビネットIoTデバイスがコーヒーカップの受動IoTデバイス105の除去を検出し、冷蔵庫IoTデバイス116がオレンジジュースの容器の受動IoTデバイスの除去を検出すると、スーパーバイザデバイス130は、キャビネットIoTデバイスおよび冷蔵庫IoTデバイス116において検出された活動に関する1つまたは複数の信号を受信することができる。スーパーバイザデバイス130は、次いで、ユーザがコーヒーカップからオレンジジュースを飲んでいる、およびまたはコーヒーカップからオレンジジュースを飲みたいことを推定することができる。
上記は何らかの形のRFIDタグ通信インターフェースまたはバーコード通信インターフェースを有するとして受動IoTデバイス105を説明しているが、受動IoTデバイス105は、そのような通信能力を有しない、1つもしくは複数のデバイスまたは他の物理的対象物を含み得る。たとえば、あるIoTデバイスは、受動IoTデバイス105を識別するために、受動IoTデバイス105に関連付けられた形状、サイズ、色、および/もしくは他の観測可能な特徴を検出することができる適切なスキャナ機構またはリーダー機構を有し得る。このようにして、任意の適切な物理的対象物はその識別情報および属性を通信して、ワイヤレス通信システム100Bの一部になることができ、スーパーバイザデバイス130を用いて観測、監視、制御、あるいは管理され得る。さらに、受動IoTデバイス105は、図1Aのワイヤレス通信システム100Aに結合され得るか、あるいはその一部であり得、実質的に同様の形で、観測、監視、制御、または管理され得る。
様々な態様によれば、図1Cは、複数のIoTデバイスを含む別のワイヤレス通信システム100Cのハイレベルアーキテクチャを示す。一般に、図1Cに示すワイヤレス通信システム100Cは、上でより詳細に説明した、図1Aおよび図1Bにそれぞれ示したワイヤレス通信システム100Aならびに100Bと同じ、かつ/または実質的に同様の様々な構成要素を含み得る。したがって、説明を簡潔かつ簡単にするために、同じまたは類似の詳細が、それぞれ、図1Aおよび図1Bに示したワイヤレス通信システム100Aならびに100Bに関して上ですでに提供されている限り、図1Cに示すワイヤレス通信システム100C内のいくつかの構成要素に関する様々な詳細は本明細書で省略される場合がある。
図1Cに示す通信システム100Cは、IoTデバイス110〜118とスーパーバイザデバイス130との間の例示的なピアツーピア通信を示す。図1Cに示すように、スーパーバイザデバイス130は、IoTスーパーバイザインターフェースを介してIoTデバイス110〜118の各々と通信する。さらに、IoTデバイス110および114、IoTデバイス112、114、および116、ならびにIoTデバイス116および118は、互いに直接通信する。
IoTデバイス110〜118はIoTグループ160を構成する。IoTデバイスグループ160は、ユーザのホームネットワークに接続されたIoTデバイスなど、ローカルに接続されたIoTデバイスのグループである。示さないが、複数のIoTデバイスグループは、インターネット175に接続されたIoT SuperAgent140を介して互いに接続されること、および/または通信することが可能である。ハイレベルで、スーパーバイザデバイス130はグループ内通信を管理するのに対して、IoT SuperAgent140はグループ間通信を管理することができる。別個のデバイスとして示すが、スーパーバイザデバイス130およびIoT SuperAgent140は、同じデバイス(たとえば、図1Aのコンピュータ120など、独立型デバイスもしくはIoTデバイス)であり得るか、またはその中に存在し得る。代替的に、IoT SuperAgent140は、アクセスポイント125の機能に対応し得るか、またはその機能を含み得る。さらに別の代替として、IoT SuperAgent140は、IoTサーバ170などのIoTサーバの機能に対応し得るか、またはその機能を含み得る。IoT SuperAgent140は、ゲートウェイ機能145をカプセル化することができる。
各IoTデバイス110〜118は、スーパーバイザデバイス130をピアとして扱って、属性/スキーマ更新をスーパーバイザデバイス130に送信することができる。IoTデバイスが別のIoTデバイスと通信する必要があるとき、IoTデバイスは、スーパーバイザデバイス130にそのIoTデバイスに対するポインタを要求し、次いで、ピアとしてターゲットIoTデバイスと通信することができる。IoTデバイス110〜118は、共通メッセージングプロトコル(CMP)を使用して、ピアツーピア通信ネットワークを介して互いに通信する。2つのIoTデバイスがCMP対応であり、共通通信トランスポートを介して接続される限り、それらのIoTデバイスは互いに通信することができる。プロトコルスタック内で、CMPレイヤ154は、アプリケーションレイヤ152の下にあり、トランスポートレイヤ156および物理レイヤ158の上にある。
様々な態様によれば、図1Dは、複数のIoTデバイスを含む別のワイヤレス通信システム100Dのハイレベルアーキテクチャを示す。一般に、図1Dに示すワイヤレス通信システム100Dは、それぞれ、上でより詳細に説明した、図1A〜図1Cに示したワイヤレス通信システム100A〜100Cと同じ、かつ/または実質的に類似した様々構成要素を含み得る。したがって、説明を簡潔かつ簡単にするために、同じまたは類似の詳細がそれぞれ図1A〜図1Cに示したワイヤレス通信システム100A〜100Cに関して上ですでに提供されている限り、図1Dに示すワイヤレス通信システム100D内のいくつかの構成要素に関する様々な詳細は本明細書で省略される場合がある。
インターネット175は、IoTの概念を使用して調整され得る「リソース」である。しかしながら、インターネット175は、調整されるリソースのほんの一例であり、任意のリソースがIoTの概念を使用して調整され得る。調整され得る他のリソースは、電気、ガス、ストレージ、セキュリティなどを含むが、これらに限定されない。IoTデバイスは、リソースに接続され得、それによって、リソースを調整するか、またはリソースはインターネット175を介して調整され得る。図1Dは、天然ガス、ガソリン、湯、および電気など、いくつかのリソース180を示し、リソース180は、インターネット175に加えて調整され得るか、またはインターネット175を介して調整され得る。
IoTデバイスは、互いに通信して、リソース180の使用を調整することができる。たとえば、トースター、コンピュータ、およびヘアドライヤなどのIoTデバイスは、Bluetooth(登録商標)通信インターフェースを介して互いに通信して、その電気(リソース180)使用を調整することができる。別の例として、デスクトップコンピュータ、電話、およびタブレットコンピュータなどのIoTデバイスは、Wi-Fi通信インターフェースを介して通信して、インターネット175(リソース180)に対するそのアクセスを調整することができる。さらに別の例として、ストーブ、衣類乾燥機、および湯沸かし器などのIoTデバイスは、Wi-Fi通信インターフェースを介して通信して、そのガス使用を調整することができる。代替的に、または追加として、各IoTデバイスは、IoTデバイスから受信された情報に基づいて、そのリソース180の使用を調整するための論理を有する、IoTサーバ170などのIoTサーバに接続され得る。
様々な態様によれば、図1Eは、複数のIoTデバイスを含む別のワイヤレス通信システム100Eのハイレベルアーキテクチャを示す。一般に、図1Eに示すワイヤレス通信システム100Eは、上でより詳細に説明した、それぞれ、図1A〜図1Dに示したワイヤレス通信システム100A〜100Dと同じ、かつ/または実質的に類似した様々構成要素を含み得る。したがって、説明を簡潔かつ簡単にするために、同じまたは類似の詳細がそれぞれ図1A〜図1Dに示したワイヤレス通信システム100A〜100Dに関して上ですでに提供されている限り、図1Eに示すワイヤレス通信システム100E内のいくつかの構成要素に関する様々な詳細は本明細書で省略される場合がある。
通信システム100Eは、2つのIoTデバイスグループ160Aおよび160Bを含む。複数のIoTデバイスグループは、インターネット175に接続されたIoT SuperAgentを介して互いに接続されること、および/または互いに通信することが可能である。ハイレベルで、IoT SuperAgentは、IoTデバイスグループ内のグループ間通信を管理することができる。たとえば、図1Eで、IoTデバイスグループ160Aは、IoTデバイス116A、122A、および124Aと、IoT SuperAgent140Aとを含むのに対して、IoTデバイスグループ160Bは、IoTデバイス116B、122B、および124Bと、IoT SuperAgent140Bとを含む。したがって、IoT SuperAgent140Aおよび140Bは、インターネット175と接続して、インターネット175を介して互いと通信すること、ならびに/またはIoTデバイスグループ160Aおよび160B間の通信を促すために互いと直接通信することができる。さらに、図1Eは、IoT SuperAgent140Aおよび140Bを介して互いと通信する2つのIoTデバイスグループ160Aおよび160Bを示すが、任意の数のIoTデバイスグループが、IoT SuperAgentを使用して互いと好適に通信することができることを当業者は諒解されよう。
図2Aは、様々な態様によるIoTデバイス200Aのハイレベルな例を示す。外観および/または内部構成要素はIoTデバイス間でかなり異なる場合があるが、大部分のIoTデバイスは、ディスプレイとユーザ入力のための手段とを含み得る、ある種のユーザインターフェースを有することになる。ユーザインターフェースがないIoTデバイスは、図1A〜図1Bにおけるエアインターフェース108など、有線ネットワークまたはワイヤレスネットワークを介してリモートで通信され得る。
図2Aに示すように、IoTデバイス200Aに関する例示的な構成では、IoTデバイス200Aの外部ケーシングは、当技術分野で知られているように、構成要素の中でも、ディスプレイ226と、電源ボタン222と、2つの制御ボタン224Aおよび224Bとで構成され得る。ディスプレイ226は、タッチスクリーンディスプレイであり得、その場合、制御ボタン224Aおよび224Bは必要でない場合がある。IoTデバイス200Aの一部として明示的に示されてはいないが、IoTデバイス200Aは、限定はしないが、Wi-Fiアンテナ、セルラーアンテナ、衛星位置システム(SPS)アンテナ(たとえば、全地球測位システム(GPS)アンテナ)などを含む、1つまたは複数の外部アンテナおよび/または外部ケーシングに内蔵される1つのまたは複数の内蔵アンテナを含むことができる。
IoTデバイス200AなどのIoTデバイスの内部構成要素は異なるハードウェア構成によって具体化され得るが、内部ハードウェア構成要素のための基本的なハイレベル構成は図2Aにプラットフォーム202として示されている。プラットフォーム202は、図1A〜図1Bのエアインターフェース108ならびに/または有線インターフェースなど、ネットワークインターフェースを介して送信されたソフトウェアアプリケーション、データ、および/またはコマンドを受信ならびに実行することができる。プラットフォーム202は、ローカルに記憶されたアプリケーションを独立して実行してもよい。プラットフォーム202は、一般に、プロセッサ208と呼ばれることになる、マイクロコントローラ、マイクロプロセッサ、特定用途向け集積回路、デジタル信号プロセッサ(DSP)、プログラマブル論理回路、または他のデータ処理デバイスなど、1つもしくは複数のプロセッサ208に動作可能に結合された有線通信および/あるいはワイヤレス通信のために構成された1つもしくは複数のトランシーバ206(たとえば、Wi-Fiトランシーバ、Bluetooth(登録商標)トランシーバ、セルラートランシーバ、衛星トランシーバ、GPS受信機またはSPS受信機など)を含み得る。プロセッサ208は、IoTデバイス内のメモリ212内でアプリケーションプログラミング命令を実行することができる。メモリ212は、読取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、電気消去可能プログラマブルROM(EEPROM)、フラッシュカード、またはコンピュータプラットフォームに共通の任意のメモリのうちの1つもしくは複数を含み得る。1つもしくは複数の入出力(I/O)インターフェース214は、プロセッサ208が、示すようなディスプレイ226、電源ボタン222、制御ボタン224Aおよび224Bなどの様々なI/Oデバイス、ならびにIoTデバイス200Aに関連付けられたセンサー、アクチュエータ、リレー、バルブ、スイッチなどの任意の他のデバイスと通信すること、ならびにそれらから制御することを可能にするように構成され得る。
したがって、様々な態様は、本明細書に記載された機能を実行する能力を含むIoTデバイス(たとえば、IoTデバイス200A)を含むことができる。当業者によって諒解されるように、様々な論理要素は、本明細書で開示する機能を実現するように個別の要素、プロセッサ(たとえば、プロセッサ208)上で実行されるソフトウェアモジュール、またはソフトウェアとハードウェアとの任意の組合せにおいて具現されてもよい。たとえば、トランシーバ206、プロセッサ208、メモリ212、およびI/Oインターフェース214をすべて協調的に使用して、本明細書で開示する様々な機能をロードし、記憶し、実行してもよく、したがって、これらの機能を実行するための論理は様々な要素に分散されてもよい。代替的には、機能は1つの個別の構成要素に組み込むことができる。したがって、図2AにおけるIoTデバイス200Aの特徴は、単に例示にすぎないものと見なされ、IoTデバイス200Aは、図2Aに示す、示された特徴または構成に限定されない。
図2Bは、様々な態様による受動IoTデバイス200Bのハイレベルな例を示す。一般に、図2Bに示す受動IoTデバイス200Bは、上でより詳細に説明した、図2Aに示したIoTデバイス200Aと同じ、かつ/または実質的に類似した様々構成要素を含み得る。したがって、説明を簡潔かつ簡単にするために、同じまたは類似の詳細が図2Aに示したIoTデバイス200Aに関して上ですでに提供されている限り、図2Bに示す受動IoTデバイス200B内のいくつかの構成要素に関する様々な詳細は本明細書で省略される場合がある。
図2Bに示す受動IoTデバイス200Bは、プロセッサ、内部メモリ、またはある種の他の構成要素を有しない場合があるという点で、一般に、図2Aに示すIoTデバイス200Aとは異なる場合がある。代わりに、様々な実施形態では、受動IoTデバイス200Bは、受動IoTデバイス200Bが、制御されたIoTネットワーク内で観測されること、監視されること、制御されること、管理されること、あるいは知られることを可能にする、I/Oインターフェース214または他の適切な機構だけを含み得る。たとえば、様々な実施形態では、受動IoTデバイス200Bに関連付けられたI/Oインターフェース214は、短距離インターフェースを介して問い合わされたとき、受動IoTデバイス200Bに関連付けられた識別子および属性を別のデバイス(たとえば、受動IoTデバイス200Bに関連付けられた属性に関する情報を検出すること、記憶すること、通信すること、その情報に作用すること、あるいはその情報を処理することができる、IoTデバイス200Aなどの能動IoTデバイス)に提供することができる、バーコード、Bluetooth(登録商標)インターフェース、無線周波数(RF)インターフェース、RFIDタグ、IRインターフェース、NFCインターフェース、または任意の他の適切なI/Oインターフェースを含み得る。
上記は何らかの形のRF、バーコード、または他のI/Oインターフェース214を有するとして受動IoTデバイス200Bを説明しているが、受動IoTデバイス200Bは、そのようなI/Oインターフェース214を有しないデバイスまたは他の物理的対象物を含み得る。たとえば、あるIoTデバイスは、受動IoTデバイス200Bを識別するために、受動IoTデバイス200Bに関連付けられた形状、サイズ、色、および/もしくは他の観測可能な特徴を検出することができる適切なスキャナ機構またはリーダー機構を有し得る。このようにして、任意の適切な物理的対象物は、その識別および属性を通信することができ、制御されたIoTネットワーク内で観測、監視、制御、あるいは管理され得る。
図3は、機能を実行するように構成される論理を含む通信デバイス300を示す。通信デバイス300は、限定はしないが、IoTデバイス110〜120、IoTデバイス200A、インターネット175に結合された任意の構成要素(たとえば、IoTサーバ170)などを含む、上記の通信デバイスのうちのいずれかに対応し得る。したがって、通信デバイス300は、図1A〜図1Bのワイヤレス通信システム100A〜100Bを介して1つもしくは複数の他のエンティティと通信する(または通信を容易にする)ように構成された任意の電子デバイスに対応し得る。
図3を参照すると、通信デバイス300は、情報を受信および/または送信するように構成される論理305を含む。一例では、通信デバイス300がワイヤレス通信デバイス(たとえば、IoTデバイス200Aおよび/または受動IoTデバイス200B)に対応する場合には、情報を受信および/または送信するように構成される論理305は、ワイヤレストランシーバおよび関連ハードウェア(たとえば、RFアンテナ、モデム、変調器および/または復調器など)のようなワイヤレス通信インターフェース(たとえば、Bluetooth(登録商標)、Wi-Fi、Wi-Fi Direct、Long-Term Evolution (LTE) Directなど)を含むことができる。別の例では、情報を受信および/または送信するように構成された論理305は、有線通信インターフェース(たとえば、インターネット175にアクセスする手段となり得るシリアル接続、USBまたはFirewire接続、Ethernet(登録商標)接続など)に対応することができる。したがって、通信デバイス300が、何らかのタイプのネットワークベースのサーバ(たとえば、アプリケーション170)に対応する場合には、情報を受信および/または送信するように構成された論理305は、一例では、Ethernet(登録商標)プロトコルによってネットワークベースのサーバを他の通信エンティティに接続するEthernet(登録商標)カードに対応し得る。さらなる例では、情報を受信および/または送信するように構成された論理305は、通信デバイス300がそのローカル環境を監視する手段となり得る感知または測定ハードウェア(たとえば、加速度計、温度センサー、光センサー、ローカルRF信号を監視するためのアンテナなど)を含むことができる。情報を受信および/または送信するように構成された論理305は、実行されるときに、情報を受信および/または送信するように構成された論理305の関連ハードウェアがその受信機能および/または送信機能を実行できるようにするソフトウェアも含むことができる。しかしながら、情報を受信および/または送信するように構成された論理305は、ソフトウェアだけに対応するのではなく、情報を受信および/または送信するように構成された論理305は、その機能性を達成するためのハードウェアに少なくとも部分的に依拠する。
図3を参照すると、通信デバイス300は、情報を処理するように構成される論理310をさらに含む。一例では、情報を処理するように構成される論理310は、少なくともプロセッサを含むことができる。情報を処理するように構成された論理310によって実施され得るタイプの処理の例示的な実装形態は、判断を行うこと、接続を確立すること、異なる情報オプション間で選択を行うこと、データに関係する評価を実施すること、測定動作を実施するために通信デバイス300に結合されたセンサーと対話すること、情報をあるフォーマットから別のフォーマットに(たとえば、.wmvから.aviへなど、異なるプロトコル間で)変換することなどを含むが、これらに限定されない。たとえば、情報を処理するように構成された論理310中に含まれるプロセッサは、汎用プロセッサ、DSP、ASIC、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタ論理、個別ハードウェア構成要素、または本明細書において説明される機能を実行するように設計されたそれらの任意の組合せに対応し得る。汎用プロセッサはマイクロプロセッサとすることができるが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械とすることができる。プロセッサはまた、コンピューティングデバイスの組合せ(たとえば、DSPおよびマイクロプロセッサの組合せ、複数のマイクロプロセッサ、DSPコアと連携する1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成)として実現され得る。情報を処理するように構成された論理310は、実行されるとき、情報を処理するように構成された論理310の関連ハードウェアがその処理機能を実行できるようにするソフトウェアも含むことができる。しかしながら、情報を処理するように構成された論理310は、ソフトウェアだけに対応するのではなく、情報を処理するように構成された論理310は、その機能を達成するためにハードウェアに少なくとも部分的に依拠する。
図3を参照すると、通信デバイス300は、情報を記憶するように構成される論理315をさらに含む。一例では、情報を記憶するように構成される論理315は、少なくとも非一時的メモリおよび関連ハードウェア(たとえば、メモリコントローラなど)を含むことができる。たとえば、情報を記憶するように構成される論理315に含まれる非一時的メモリは、RAM、フラッシュメモリ、ROM、消去可能プログラマブルROM(EPROM)、EEPROM、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当該技術分野において知られている任意の他の形の記憶媒体に対応することができる。情報を記憶するように構成される論理315は、実行されるときに、情報を記憶するように構成される論理315の関連ハードウェアがその記憶機能を実行できるようにするソフトウェアも含むことができる。しかしながら、情報を記憶するように構成される論理315は、ソフトウェアだけに対応するのではなく、情報を記憶するように構成される論理315は、その機能を達成するためにハードウェアに少なくとも部分的に依拠する。
図3を参照すると、通信デバイス300は、情報を提示するように構成された論理320をさらにオプションで含む。一例では、情報を提示するように構成される論理320は、少なくとも出力デバイスおよび関連ハードウェアを含むことができる。たとえば、出力デバイスは、ビデオ出力デバイス(たとえば、ディスプレイスクリーン、USB、HDMI(登録商標)のようなビデオ情報を搬送することができるポートなど)、オーディオ出力デバイス(たとえば、スピーカ、マイクロフォンジャック、USB、HDMI(登録商標)のようなオーディオ情報を搬送することができるポートなど)、振動デバイス、および/または、情報がそれによって出力のためにフォーマットされ得る、または通信デバイス300のユーザもしくは操作者によって実際に出力され得る任意の他のデバイスを含むことができる。たとえば、通信デバイス300が、図2Aに示したIoTデバイス200Aおよび/または図2Bに示した受動IoTデバイス200Bに対応する場合、情報を提示するように構成された論理320は、ディスプレイ226を含み得る。さらなる一例では、情報を提示するように構成される論理320は、ローカルユーザを有しないネットワーク通信デバイス(たとえば、ネットワークスイッチ、またはルータ、リモートサーバなど)のようないくつかの通信デバイスでは省くことができる。情報を提示するように構成された論理320は、実行されるとき、情報を提示するように構成された論理320の関連ハードウェアがその提示機能を実施できるようにするソフトウェアも含むことができる。しかしながら、情報を提示するように構成された論理320は、ソフトウェアだけに対応するのではなく、情報を提示するように構成された論理320は、その機能性を達成するためにハードウェアに少なくとも部分的に依拠する。
図3を参照すると、通信デバイス300は、ローカルユーザ入力を受信するように構成された論理325をさらにオプションで含む。一例では、ローカルユーザ入力を受信するように構成される論理325は、少なくともユーザ入力デバイスおよび関連ハードウェアを含むことができる。たとえば、ユーザ入力デバイスは、ボタン、タッチスクリーンディスプレイ、キーボード、カメラ、オーディオ入力デバイス(たとえば、マイクロフォン、もしくはマイクロフォンジャックなど、オーディオ情報を搬送することができるポートなど)、および/または情報がそれによって通信デバイス300のユーザもしくはオペレータから受信され得る任意の他のデバイスを含み得る。たとえば、通信デバイス300が図2Aに示すようなIoTデバイス200Aおよび/または図2Bに示すような受動IoTデバイス200Bに対応する場合、ローカルユーザ入力を受信するように構成された論理325は、ボタン222、224Aおよび224B、ディスプレイ226(タッチスクリーンの場合)などを含み得る。さらなる例では、ローカルユーザ入力を受信するように構成された論理325は、(たとえば、ネットワークスイッチまたはルータ、リモートサーバなど)ローカルユーザを有さないネットワーク通信デバイスのようないくつかの通信デバイスでは省略されることがある。ローカルユーザ入力を受信するように構成された論理325は、実行されるとき、ローカルユーザ入力を受信するように構成された論理325の関連ハードウェアがその入力受信機能を実施できるようにするソフトウェアも含むことができる。しかしながら、ローカルユーザ入力を受信するように構成された論理325は、ソフトウェアだけに対応するのではなく、ローカルユーザ入力を受信するように構成された論理325は、その機能性を達成するためにハードウェアに少なくとも部分的に依拠する。
図3を参照すると、305〜325の構成された論理は、図3では別個のまたは相異なるブロックとして示されているが、それぞれの構成された論理がその機能を実行するためのハードウェアおよび/またはソフトウェアは、部分的に重複できることは理解されよう。たとえば、305〜325の構成された論理の機能を容易にするために使用される任意のソフトウェアを、情報を記憶するように構成された論理315に関連する非一時的メモリに記憶することができ、それにより、305〜325の構成された論理は各々、その機能(すなわち、この場合、ソフトウェア実行)を、情報を記憶するように構成された論理315によって記憶されたソフトウェアの動作に部分的に基づいて実行する。同様に、構成された論理のうちの1つに直接関連付けられるハードウェアは、時々、他の構成された論理によって借用または使用され得る。たとえば、情報を処理するように構成された論理310のプロセッサは、データを、情報を受信および/または送信するように構成された論理305によって送信される前に、適切な形式にフォーマットすることができ、それにより、情報を受信および/または送信するように構成された論理305は、その機能(すなわち、この場合、データの送信)を、情報を処理するように構成された論理310に関連付けられたハードウェア(すなわち、プロセッサ)の動作に部分的に基づいて実行する。
概して、別段に明示的に記載されていない限り、本明細書において使用される「ように構成された論理」という句は、ハードウェアにより少なくとも部分的に実施される論理を指すものとし、ハードウェアから独立したソフトウェアだけの実施形態に位置づけるものではない。様々なブロックにおける構成された論理または「ように構成された論理」は、特定の論理ゲートまたは論理要素に限定されるのではなく、概して、本明細書に記載した機能性を、(ハードウェアまたはハードウェアとソフトウェアの組合せのいずれかを介して)実施するための能力を指すことが諒解されよう。したがって、様々なブロックに示す構成された論理または「ように構成された論理」は、「論理」という言葉を共有するにもかかわらず、必ずしも論理ゲートまたは論理要素として実装されるとは限らない。様々なブロックの論理間の他のやりとりまたは協働が、以下でより詳細に説明する態様の検討から、当業者には明らかになるであろう。
様々な実施形態は、図4に示すサーバ400などの、様々な市販のサーバデバイスのいずれにおいても実装され得る。一例では、サーバ400は、上記で説明したIoTサーバ170の1つの例示的な構成に対応し得る。図4では、サーバ400は、揮発性メモリ402と、ディスクドライブ403などの大容量の不揮発性メモリとに結合されたプロセッサ401を含む。サーバ400は、プロセッサ401に結合された、フロッピー(登録商標)ディスクドライブ、コンパクトディスク(CD)ドライブまたはDVDディスクドライブ406を含むことも可能である。サーバ400は、他のブロードキャストシステムコンピュータおよびサーバに、またはインターネットに結合されたローカルエリアネットワークなどのネットワーク407とのデータ接続を確立するための、プロセッサ401に結合されたネットワークアクセスポート404を含むことも可能である。図3の文脈において、図4のサーバ400は、通信デバイス300の1つの例示的な実装形態を示すが、情報を送信および/または受信するように構成された論理305は、ネットワーク407と通信するためにサーバ400によって使用されるネットワークアクセスポート404に相当し、情報を処理するように構成された論理310は、プロセッサ401に相当し、情報を記憶するように構成された論理315は、揮発性メモリ402、ディスク(disk)ドライブ403、および/またはディスク(disc)ドライブ406のうちの任意の組合せに相当することが諒解されよう。情報を提示するように構成されたオプションの論理320およびローカルユーザ入力を受信するように構成されたオプションの論理325は、図4には明示的に示さず、その中に含まれる場合もあれば、含まれない場合もある。したがって、図4は、通信デバイス300が、図2Aに示すようなIoTデバイスの実装形態に加えてサーバとして実装され得ることを説明するのを助ける。
概して、上述のように、IPベースの技術およびサービスが成熟し、コストを削減しIPの可用性を向上させており、それによって、インターフェース接続性をますます多くの種類の日常の電子対象物に付加することが可能になっている。したがって、IoTは、コンピュータおよびコンピュータネットワークだけでなく、日常の電子的対象物が、インターネットを介して読取り可能、認識可能、位置特定可能、アドレス指定可能、および制御可能であり得るという発想に基づく。概して、IoTが開発され普及することによって、それぞれに異なる種類を有しそれぞれに異なる活動を実行する多数の近位異種IoTデバイスおよびその他の対象物(たとえば、ライト、プリンタ、冷蔵庫、空調装置など)は、多くの異なる方法で相互作用し、多くの異なる方法で使用される場合がある。したがって、制御されたIoTネットワーク内で使用される場合がある場合によっては多数の異種IoTデバイスおよびその他の対象物に起因して、概して、特に、様々な異種IoTデバイスが適切に構成され、管理され、かつ互いに通信して情報を交換することが可能になるように、明確な信頼できる通信インターフェースを様々な異種IoTデバイスに接続する必要がある。したがって、図5〜図8に関する以下の説明では、概して、本明細書で開示するように分散型プログラミング環境における異種デバイス間の直接D2D通信を有効化することができる発見可能なデバイス間(D2D)またはピアツーピア(P2P)サービスをサポートする場合がある例示的な通信フレームワークについて概略的に説明する。
概して、ユーザ機器(UE)(たとえば、電話、タブレットコンピュータ、ラップトップコンピュータおよびデスクトップコンピュータ、車両など)は、互いに(たとえば、Bluetooth(登録商標)、ローカルWi-Fiなどによって)ローカルに接続するように構成されても、あるいは(たとえば、セルラーネットワーク、インターネットなどを介して)リモートに接続するように構成されても、あるいはそれらの適切な組合せに従って構成されてもよい。さらに、いくつかのUEは、1対1の接続をサポートするかまたは互いに直接通信するいくつかのデバイスを含むグループに同時に接続するのをサポートする特定のワイヤレスネットワーキング技術(たとえば、Wi-Fi、Bluetooth(登録商標)、Wi-Fi Directなど)を使用する近接度ベースのD2D通信をサポートしてもよい。ここで、図5は、直接D2D通信を有効化することができる発見可能なD2Dサービスをサポートする場合がある例示的なワイヤレス通信ネットワークまたはWAN500を示し、この場合、ワイヤレス通信ネットワーク500は、様々な基地局510とその他のネットワークエンティティとを含むLTEネットワークまたは別の適切なWANを備えてもよい。簡単のために、図5には、3つの基地局510a、510bおよび510c、1つのネットワークコントローラ530、ならびに1つのダイナミックホストコンフィギュレーションプロトコル(DHCP)サーバ540のみを示す。基地局510は、デバイス520と通信するエンティティであってもよく、Node B、evolved Node B(eNB)、アクセスポイントなどとも呼ばれることがある。各基地局510は、特定の地理的エリアに対して通信カバレージを実現し得、カバレージエリア内に位置するデバイス520のための通信をサポートし得る。ネットワーク容量を向上させるために、基地局510の全体的なカバレージエリアが複数の(たとえば、3つの)より小さいエリアに区分されてもよく、各々のより小さいエリアがそれぞれの基地局510によってサービスされてもよい。3GPPでは、「セル」という用語は、この用語が使用される状況に応じて、このカバレッジエリアにサービスしている基地局510および/または基地局サブシステム510のカバレッジエリアを指し得る。3GPP2では、「セクタ」または「セルセクタ」という用語は、このカバレッジエリアにサービスしている基地局510および/または基地局サブシステム510のカバレッジエリアを指し得る。明確にするために、本明細書の説明では3GPPの「セル」の概念が使用されることがある。
基地局510は、マクロセル、ピコセル、フェムトセル、および/または他のセルタイプの通信カバレッジを可能にすることができる。マクロセルは、比較的大きい地理的エリア(たとえば、半径数キロメートル)をカバーすることができ、サービスに加入しているデバイス520による無制限アクセスを可能にし得る。ピコセルは、比較的小さい地理的エリアをカバーすることができ、サービスに加入しているデバイス520による無制限アクセスを可能にし得る。フェムトセルは、比較的小さい地理的エリア(たとえば、家庭)をカバーすることができ、フェムトセルとの関連付けを有するデバイス520(たとえば、限定加入者グループ(CSG)中のデバイス)による限定アクセスを可能にし得る。図5に示す例では、ワイヤレスネットワーク500は、マクロセルのためのマクロ基地局510a、510b、および510cを含む。ワイヤレスネットワーク500は、ピコセルのためのピコ基地局510および/またはフェムトセルのためのホーム基地局510(図5には示されていない)も含み得る。
ネットワークコントローラ530は、基地局510のセットに結合することができ、これらの基地局510の調整および制御を行うことができる。ネットワークコントローラ530は、バックホールを介して基地局と通信することができる単一のネットワークエンティティまたはネットワークエンティティの集合であってもよい。また、基地局は、(たとえば、直接またはワイヤレスバックホールまたはワイヤラインバックホールを介して間接的に、)互いに通信し得る。DHCPサーバ540は、以下に説明するように、D2D通信をサポートすることができる。DHCPサーバ540は、ワイヤレスネットワーク500の一部であっても、またはインターネット接続共有(ICS)を介して実行されるワイヤレスネットワーク500の外部のサーバであっても、またはそれらの任意の適切な組合せであってもよい。DHCPサーバ540は、(図5に示されるように)別個のエンティティであってよく、または、基地局510、ネットワークコントローラ530、もしくは他の何らかのエンティティの一部であってもよい。いずれの場合も、DHCPサーバ540は、直接に通信を望むデバイス520によって到達可能であり得る。
デバイス520はワイヤレスネットワーク500全体にわたって分散され得、各デバイス520は固定されてもまたは移動可能であってもよい。デバイス520はまた、ノード、ユーザ機器(UE)、局、移動局、端末、アクセス端末、加入者ユニットなどと呼ばれ得る。デバイス520は、セルラー電話、携帯情報端末(PDA)、ワイヤレスモデム、ワイヤレス通信デバイス、ハンドヘルドデバイス、ラップトップコンピュータ、コードレス電話、ワイヤレスローカルループ(WLL)局、スマートフォン、ネットブック、スマートブック、タブレットなどであってよい。デバイス520は、ワイヤレスネットワーク500内の基地局510と通信してもよく、さらに他のデバイス520とピアツーピア通信してもよい。たとえば、図5に示すように、デバイス520aとデバイス520bがピアツーピア通信してもよく、デバイス520cとデバイス520dがピアツーピア通信してもよく、デバイス520eとデバイス520fがピアツーピア通信してもよく、デバイス520gとデバイス520hとデバイス520iがピアツーピア通信し、一方、残りのデバイス520が基地局510と通信してもよい。さらに図5に示すように、デバイス520a、520d、520f、および520hは、(たとえば、D2D通信を行っていないとき、または場合によってはD2D通信と同時)に基地局500と通信してもよい。
本明細書の説明では、WAN通信は、(たとえば別のデバイス520などのリモートエンティティと通話するための)ワイヤレスネットワーク500におけるデバイス520と基地局510との間の通信を指し得る。WANデバイスは、WAN通信に関心を持っているか、WAN通信に関与しているデバイス520である。概して、本明細書において使用される「ピアツーピア」または「P2P」通信および「デバイス間」または「D2D」通信という用語は、基地局510を介さない2つ以上のデバイス520間の直接的な通信を指す。説明を簡単にするために、本明細書における説明では、そのような直接的な通信を指すために「デバイス間」または「D2D」という用語を使用する。ただし、本明細書において説明する様々な態様および実施形態では「ピアツーピア」、「P2P」、「デバイス間」、および「D2D」という用語が交換可能であってもよいことを当業者は諒解されよう。
様々な実施形態によれば、D2Dデバイスは、D2D通信に関心を持っているかまたはD2D通信に関与しているデバイス520(たとえば、D2Dデバイスの近傍内の別のデバイス520に関するトラフィックデータを有するデバイス520)である。2つのデバイスは、たとえば、各デバイス520が他のデバイス520を検出できる場合、互いに近傍に位置すると見なされてもよい。概して、デバイス520は、別のデバイス520と、D2D通信の場合は直接通信してもよく、WAN通信の場合は少なくとも1つの基地局510を介して通信してもよい。
様々な実施形態では、D2Dデバイス520間の直接通信はD2Dグループとして構成されてもよい。より詳細には、D2Dグループは概して、D2D通信に関心を持っているか、またはD2D通信に関与している2つ以上のデバイス520のグループを指し、D2Dリンクは、D2Dグループ用の通信リンクを指す。さらに、様々な実施形態では、D2Dグループは、D2Dグループオーナー(またはD2Dサーバ)と指定される1つのデバイス520と、D2DグループオーナーによってサービスされるD2Dクライアントと指定される1つまたは複数のデバイス520とを含んでもよい。D2Dグループオーナーは、WANとのシグナリングの交換、D2DグループオーナーとD2Dクライアントとの間のデータ送信の調整などのような、いくつかの管理機能を実行することができる。たとえば、図5に示すように、第1のD2Dグループは、基地局510aの対象となるデバイス520aおよび520bを含み、第2のD2Dグループは、基地局510bの対象となるデバイス520cおよび520dを含み、第3のD2Dグループは、異なる基地局510bおよび510cの対象となるデバイス520eおよび520fを含み、第4のD2Dグループは、基地局510cの対象となるデバイス520g、520h、および520iを含む。デバイス520a、520d、520f、および520hは、そのそれぞれのD2DグループにおけるD2Dグループオーナーであってもよく、デバイス520b、520c、520e、520g、および520iは、そのそれぞれのD2DグループにおけるD2Dクライアントであってもよい。図5の他のデバイス520は、WAN通信に関与していてもよい。
様々な実施形態では、D2D通信は、D2Dグループ内でのみ行われ、かつ、D2Dグループに関連するD2DグループオーナーとD2Dクライアントとの間でのみ行われる。たとえば、同じD2Dグループ内の2つのD2Dクライアント(たとえば、デバイス520gおよび520i)が情報を交換することを望む場合、D2Dクライアントの一方がD2Dグループオーナー(たとえば、デバイス520h)に情報を送ってもよく、次いでD2Dグループオーナーが送信を他のD2Dクライアントに中継してもよい。様々な実施形態では、特定のデバイス520は、複数のD2Dグループに属してもよく、各D2Dグループ内でD2DグループオーナーまたはD2Dクライアントのいずれかとして振る舞ってもよい。さらに、様々な実施形態では、特定のD2Dクライアントは、1つのD2Dグループのみに属するかまたは複数のD2Dグループに属し、任意の特定の瞬間に複数のD2DグループのいずれかにおけるD2Dデバイス520と通信してもよい。概して、通信は、ダウンリンクおよびアップリンク上での送信を通じて促進され得る。WAN通信では、ダウンリンク(または順方向リンク)は基地局510からデバイス520への通信リンクを指し、アップリンク(または逆方向リンク)はデバイス520から基地局510への通信リンクを指す。D2D通信では、D2DダウンリンクはD2DグループオーナーからD2Dクライアントへの通信リンクを指し、D2DアップリンクはD2DクライアントからD2Dグループオーナーへの通信リンクを指す。いくつかの実施形態では、2つ以上のデバイスが、WAN技術を使用してD2D通信するのではなく、Wi-Fi、Bluetooth(登録商標)、またはWi-Fi Directなどの技術を使用してより小さいD2Dグループを形成してワイヤレスローカルエリアネットワーク(WLAN)上でD2D通信してもよい。たとえば、Wi-Fi、Bluetooth(登録商標)、Wi-Fi Direct、またはその他のWLAN技術を使用するD2D通信では、2つ以上のモバイルフォン、ゲームコンソール、ラップトップコンピュータ、またはその他の適切な通信エンティティ間のD2D通信を可能にすることができる。
図6は、様々な態様による、様々なデバイス610、620、630がD2D技術を使用して通信するのに利用することができる近接度ベースの分散バス640を確立するために発見可能なD2Dサービスを使用し得る例示的な環境600を示す。たとえば、様々な実施形態では、ネットワーク化コンピューティング環境におけるアプリケーション間通信を有効化するのに使用されるソフトウェアバスを含んでもよい分散バス640を介したプロセス間通信プロトコル(IPC)フレームワークを使用して単一のプラットフォーム上でのアプリケーション同士などの間の通信を容易にすることができ、この場合、ネットワーク化コンピューティング環境におけるアプリケーション間通信では、各アプリケーションが分散バス640に登録して他のアプリケーションにサービスを提供し、他のアプリケーションが登録されているアプリケーションに関する情報を分散バス640に問い合わせる。そのようなプロトコルは、信号メッセージ(たとえば、通知)がポイントツーポイントメッセージであってもまたはブロードキャストメッセージであってもよく、メソッド呼出しメッセージ(たとえば、RPC)が同期メッセージであってもまたは非同期メッセージであってもよく、分散バス640が(たとえば、1つまたは複数のバスルータまたは「デーモン」あるいは分散バス640との接続を可能にする場合がある他の適切なプロセスを介して)様々なデバイス610、620、630間のメッセージルーティングに対処する場合がある、非同期通知およびリモートプロシージャ呼出し(RPC)を可能にしてもよい。
様々な実施形態では、分散バス640は、様々なトランスポートプロトコル(たとえば、Bluetooth(登録商標)、TCP/IP、Wi-Fi、CDMA、GPRS、UMTSなど)によってサポートされてもよい。たとえば、様々な態様によれば、第1のデバイス610は、分散バスノード612と1つまたは複数のローカルエンドポイント614とを含んでもよく、分散バスノード612は、第1のデバイス610に関連するローカルエンドポイント614と第2のデバイス620および第3のデバイス630に関連するローカルエンドポイント624および634との間の、分散バス640を通じた(たとえば、第2のデバイス620および第3のデバイス630上の分散バスノード622および632を介した)通信を容易にすることができる。図7を参照しながら以下にさらに詳細に説明するように、分散バス640は、対称的マルチデバイスネットワークトポロジーをサポートしてもよく、デバイスドロップアウトの存在下でロバストな動作を可能にしてもよい。したがって、仮想分散バス640は、概して任意の下位トランスポートプロトコル(たとえば、Bluetooth(登録商標)、TCP/IP、Wi-Fiなど)とは無関係であってもよく、非セキュア(たとえば、オープン)からセキュア(たとえば、認証または暗号化)まで様々なセキュリティオプションを実現することができ、セキュリティオプションは、第1のデバイス610、第2のデバイス620、および第3のデバイス630間の自発的な接続を容易にしつつ、様々なデバイス610、620、630が互いの範囲に入るかまたは互いに近接したときに介入せずに使用され得る。
図7は、様々な態様による、第1のデバイス(「デバイスA」)710および第2のデバイス(「デバイスB」)720がD2D技術を使用して通信するのに利用することができる近接度ベースの分散バスを確立するために発見可能なD2Dサービスを使用し得る例示的なシグナリングフロー700を示す。たとえば、図7に示すシグナリングフロー700において、デバイスA 710は、デバイスB 720との通信を要求してもよく、デバイスA 710は、そのような通信を容易にするのを助ける場合があるバスノード712に加えて、通信を要求する場合があるローカルエンドポイント714(たとえば、ローカルアプリケーション、サービスなど)を含んでもよい。さらに、デバイスB 720は、ローカルエンドポイント714が、デバイスA 710上のローカルエンドポイント714とデバイスB 720上のローカルエンドポイント724との間の通信を容易にするのを助けることができるバスノード722に加えて通信を試み得るローカルエンドポイント724を含んでもよい。
様々な実施形態では、754において、バスノード712および722は適切な発見機構を実行してもよい。たとえば、Bluetooth(登録商標)、TCP/IP、UNIX(登録商標)などによってサポートされる接続を発見するための機構が使用されてもよい。756において、デバイスA 710上のローカルエンドポイント714は、バスノード712を通じて利用可能なエンティティ、サービス、エンドポイントなどに接続することを要求してもよい。様々な実施形態では、この要求は、ローカルエンドポイント714とバスノード712との間の要求応答プロセスを含んでもよい。758において、分散メッセージバスが、バスノード712をバスノード722に接続し、それによってデバイスA 710とデバイスB 720との間のD2D接続を確立するように形成されてもよい。様々な実施形態では、バスノード712とバスノード722との間に分散バスを形成するための通信は、近接度ベースのD2Dプロトコル(たとえば、接続された製品間の相互運用性を実現するように設計されたAllJoyn(登録商標)ソフトウェアフレームワークおよび近位ネットワークを動的に作成し近位D2D通信を容易にするための様々な製造業者によるソフトウェアアプリケーション)を使用して容易にされてもよい。代替として、様々な実施形態では、サーバ(図示せず)はバスノード712とバスノード722との間の接続を容易にしてもよい。さらに、様々な実施形態では、バスノード712とバスノード722との間に接続を形成する前に適切な認証機構が使用されてもよい(たとえば、クライアントが認証コマンドを送って認証対話を開始することができるSASL認証)。さらに、758において、バスノード712および722は、利用可能な他のエンドポイント(たとえば、図6のデバイスC 630上のローカルエンドポイント634)に関する情報を交換してもよい。そのような実施形態では、バスノードが維持する各ローカルエンドポイントが他のバスノードに通知されてもよく、この通知は、一意のエンドポイント名、トランスポートタイプ、接続パラメータ、または他の適切な情報を含んでもよい。
様々な実施形態では、760において、バスノード712およびバスノード722は、それぞれローカルエンドポイント724および714に関連する得られた情報を使用して、様々なバスノードを通じて利用可能な得られた実エンドポイントを表すことのできる仮想エンドポイントを作成してもよい。様々な実施形態では、バスノード712上のメッセージルーティングでは、実エンドポイントおよび仮想エンドポイントを使用してメッセージを送信してもよい。さらに、リモートデバイス(たとえば、デバイスA 710)上に存在するあらゆるエンドポイントに1つのローカル仮想エンドポイントがあってもよい。さらに、そのような仮想エンドポイントは、分散バス(たとえば、バスノード712とバスノード722との間の接続)を介して送られたメッセージを多重化しならびに/あるいは多重化解除してもよい。様々な実施形態では、仮想エンドポイントは、実エンドポイントと同様にローカルバスノード712または722からメッセージを受信してもよく、分散バスを介してメッセージを転送してもよい。したがって、仮想エンドポイントは、エンドポイント多重化分散バス接続からローカルバスノード712および722へメッセージを転送してもよい。さらに、様々な実施形態では、リモートデバイス上の仮想エンドポイントに対応する仮想エンドポイントは、任意の時点で特定のトランスポートタイプの所望のトポロジーに対処するように再接続されてもよい。そのような実施形態では、UNIX(登録商標)ベースの仮想エンドポイントは、ローカルと見なされることがあり、したがって、再接続の候補とは見なされないことがある。さらに、TCPベースの仮想エンドポイントは、1つのホップルーティングに関して最適化されてもよい(たとえば、各バスノード712および722は互いに直接接続されてもよい)。さらに、Bluetooth(登録商標)ベースの仮想エンドポイントは、Bluetooth(登録商標)ベースのマスタがローカルマスタノードと同じバスノードであってもよい単一ピコネット(たとえば、1つのマスタおよびn個のスレーブ)に関して最適化されてもよい。
様々な実施形態では、バスノード712とバスノード722は、762においてバス状態情報を交換してバスインスタンス同士をマージし、分散バスを介した通信を可能にしてもよい。たとえば、様々な実施形態では、バス状態情報は、周知の一意のエンドポイント名マッピング、整合規則、ルーティンググループ、または他の適切な情報を含んでもよい。様々な実施形態では、状態情報は、分散バスベースのローカル名と通信するローカルエンドポイント714および724とのインターフェースを使用してバスノード712インスタンスとバスノード722インスタンスとの間で伝達されてもよい。別の態様では、バスノード712およびバスノード722の各々は、分散バスへのフィードバックを可能にする役割を果たすローカルバスコントローラを維持してもよく、バスコントローラは、グローバルメソッド、引数、信号、およびその他の情報を分散バスに関連する規格に変換してもよい。バスノード712およびバスノード722は、764において上述のようなバスノードノード接続の間に導入されるあらゆる変化に関してそれぞれのローカルエンドポイント714および724に通知する信号を伝達(たとえば、ブロードキャスト)してもよい。様々な実施形態では、新しいおよび/または削除されたグローバル名および/または変換後の名前が、名前オーナー変更後信号によって示されてもよい。さらに、(たとえば、名前衝突に起因して)ローカルに失われることがあるグローバル名が名前喪失信号によって示されてもよい。さらに、名前衝突に起因して転送されるグローバル名が名前オーナー変更後信号によって示されてもよく、バスノード712およびバスノード722が切り離された場合および/またはときに消える一意の名前が名前オーナー変更後信号によって示されてもよい。
上記に使用されたように、周知の名前を使用してローカルエンドポイント714および724を一意に記述してもよい。様々な実施形態では、デバイスA 710とデバイスB 720との間で通信が行われるとき、異なる周知の名前タイプが使用されてもよい。たとえば、バスノード712が直接接続されるデバイスA 710に関連するバスノード712上にのみデバイスローカル名が存在してもよい。別の例では、すべての既知のバスノード712および722上にグローバル名が存在してもよく、すべてのバスセグメント上に存在してもよい名前のオーナーは1人だけである。言い換えれば、バスノード712とバスノード722が連結され、衝突が起こると、オーナーのうちの1人がグローバル名を失うことがある。さらに別の例では、クライアントが仮想バスに関連する他のバスノードに接続されるときに変換後の名前が使用されてもよい。そのような実施形態では、変換後の名前はアペンデッドエンドを含んでもよい(たとえば、グローバルに一意の識別子「1234」を有する分散バスに接続された周知の名前「org.foo」を有するローカルエンドポイント714は「G1234.org.foo」と見なされてもよい)。
様々な実施形態では、バスノード712およびバスノード722は、766においてエンドポイントバストポロジーの変更について他のバスノードに通知するための信号を伝達(たとえば、ブロードキャスト)してもよい。その後、ローカルエンドポイント714からのトラフィックは、仮想エンドポイントを通過してデバイスB 720上の意図されるローカルエンドポイント724に達してもよい。さらに、動作中に、ローカルエンドポイント714とローカルエンドポイント724との間の通信はルーティンググループを使用してもよい。様々な実施形態では、ルーティンググループは、エンドポイントが信号、メソッド呼出し、またはエンドポイントのサブセットからの他の適切な情報を受信するのを可能にしてもよい。したがって、ルーティング名は、バスノード712または722に接続されたアプリケーションによって決定されてもよい。たとえば、D2Dアプリケーションは、アプリケーションに組み込まれた一意で周知のルーティンググループ名を使用してもよい。さらに、バスノード712および722は、ローカルエンドポイント714および724のルーティンググループへの登録および/または登録解除をサポートしてもよい。様々な実施形態では、ルーティンググループは、現在のバスインスタンスよりも後のインスタンスまで持続しなくてもよい。別の態様では、アプリケーションは、分散バスに接続するたびにアプリケーションの好ましいルーティンググループの登録をしてもよい。さらに、グループはオープンであっても(たとえば、任意のエンドポイントが参加してよい)またはクローズドであっても(たとえば、グループの作成者がグループを修正してもよい)よい。さらに、バスノード712または722は、他のリモートバスノードにルーティンググループエンドポイントの追加、削除、またはその他の変更を通知するための信号を送ってもよい。そのような実施形態では、バスノード712または722は、グループにメンバーが追加されならびに/あるいはグループからメンバーが削除されたときはいつでも他のグループメンバーにルーティンググループ変更信号を送ってもよい。さらに、バスノード712または722は、最初にルーティンググループから削除されることなく分散バスから切り離されるエンドポイントにルーティンググループ変更信号を送ってもよい。
様々な態様によれば、図8Aは、第1のホストデバイス810と第2のホストデバイス830との間のD2D通信を可能にするために第1のホストデバイス810と第2のホストデバイス830との間に形成される場合がある近接度ベースの例示的な分散バスを示す。より詳細には、図6に関して上記に説明したように、近接度ベースの分散バスの基本構造は、別個の物理的ホストデバイス上に存在する複数のバスセグメントを備えてもよい。したがって、図8Aでは、近接度ベースの分散バスの各セグメントがホストデバイス810、830のうちの1つのホストデバイス上に配置されてもよく、ホストデバイス810、830の各々は、それぞれのホストデバイス810、830上に配置されたバスセグメントを実施する場合があるローカルバスルータ(または「デーモン」)を実行する。たとえば、図8Aでは、各ホストデバイス810、830は、それぞれのホストデバイス810、830上に配置されたバスセグメントを実施するバスルータを表すために丸で囲まれた「D」を含む。さらに、ホストデバイス810、830のうちの1つまたは複数はいくつかのバスアタッチメントを有してもよく、各バスアタッチメントはローカルバスルータに接続する。たとえば、図8Aでは、ホストデバイス810および830上のバスアタッチメントは、各々がサービス(S)またはサービスを要求する場合があるクライアント(C)に対応する六角形として示されている。
しかし、場合によっては、埋込みデバイスにはローカルバスルータを実行するのに十分なリソースがない場合がある。したがって、図8Bは、1つまたは複数の埋込みデバイス820、825が近接度ベースの分散バスに接続するためにホストデバイス(たとえば、ホストデバイス830)に接続し、それによって、(たとえば、ホストデバイス830あるいはホストデバイス830を介して近接度ベースの分散バスにアタッチされた他のホストデバイス810および/または埋込みデバイス825との)D2D通信に関与することができる例示的な近接度ベースの分散バスを示す。したがって、埋込みデバイス820、825は概して、ホストデバイス830上で実行されているバスルータを「借用して」もよく、図8Bは、埋込みデバイス820、825が、埋込みデバイス820、825が存在する分散バスセグメントを管理する借用されたバスルータを実行するホストデバイス830から物理的に分離される構成を示す。概して、埋込みデバイス820、825とホストデバイス830との間の接続は、伝送制御プロトコル(TCP)に従って行われてもよく、埋込みデバイス820、825とホストデバイス830との間を流れるネットワークトラフィックは、上記に図6および図7に関してさらに詳細に説明したのと同様にそれぞれのセッションを介して流れるバスメソッド、バス信号、および特性を実現するメッセージを含んでもよい。
より詳細には、埋込みデバイス820、825は、クライアントとサービスとの間の発見および接続プロセスと概念的に同様であってもよい発見および接続プロセスに従ってホストデバイス830に接続してもよく、ホストデバイス830は、埋込みデバイス820、825をホストする能力または意志をシグナリングする周知の名前を通知してもよい(たとえば、「org.alljoyn.BusNode」)。一使用事例では、埋込みデバイス820、825は、単に、周知の名前を通知する「第1の」ホストデバイスに接続してもよい。しかし、埋込みデバイス820、825は、単に、周知の名前を通知する第1のホストデバイスに接続する場合、そのホストデバイスに関連する種類に関する知識(たとえば、ホストデバイス830がモバイルデバイスであるか、セットトップボックスであるか、アクセスポイントであるか、など)を有さない場合があり、またホストデバイスに関するロードステータスに関する知識を有さない可能性がある。したがって、他の使用事例では、埋込みデバイス820、825は、ホストデバイス810、830が、他のデバイス(たとえば、埋込みデバイス820、825)をホストする能力または意志を通知するときに提供する情報に基づいてホストデバイス830に適応的に接続してもよく、それによって、他のデバイスは、ホストデバイス810、830に関連する特性(たとえば、種類、ロードステータスなど)および/または埋込みデバイス820、825に関連する要件(たとえば、同じ製造業者から得られる、ホストデバイスに接続するための優先権を表すランキングテーブル)に従って近接度ベースの分散バスに参加してもよい。
近い将来、IoT技術がますます発展することによって、家庭、車両内、職場、ならびに他の多数の位置および個人空間においてユーザが多数のIoTデバイスに囲まれるようになるので、多数のユーザが特定の環境内で様々なデバイスと相互に関係した状態で相互作用するようになる。したがって、本明細書においてさらに詳しく説明する様々な機構は、異種デバイスが、論理的に関係付けられる場合がある共通する活動または日常的な活動を自動化するためにサポートする、イベント通知と制御コマンドをユーザがリンクするのを可能にする場合がある。たとえば、様々な実施形態では、ソースデバイスからブロードキャストされたイベント通知が制御デバイス(たとえば、スマートフォンまたは別の適切なデバイス)に到達したときに、ターゲットデバイスを制御するためにトリガすることができるコマンドにイベント通知をリンクするためのオプションがユーザに提示されてもよい。したがって、ユーザがイベント通知をリンクするためのオプションを選択したことに応答して、1つまたは複数の制御可能なターゲットデバイスがユーザに示されてもよく、ユーザは、将来そのイベント通知が再び生じたときに制御可能なターゲットデバイス上で自動的にトリガすべき1つまたは複数のコマンドを定義してもよい。たとえば、以下に図9および図10を参照してさらに詳しく説明するように、制御デバイスは、トリガ定義を記憶し、その後、ソースデバイスがリンクされたイベント通知をブロードキャストしたことを検出したことに応答して、制御可能なターゲットデバイス上のコマンドを自動的に呼び出すかまたは場合によっては起動してもよい。別の例では、以下に図11および図12を参照してさらに詳しく説明するように、制御デバイスは、ブロードキャスト中のソースデバイスにトリガ定義およびリンクされたコマンドをプッシュしてもよく、その場合、ソースデバイスは、将来イベント通知をブロードキャストする際に制御可能なターゲットデバイス上でリンクされたコマンドを起動してもよい。さらに別の例では、図13および図14を参照して以下にさらに詳しく説明するように、制御デバイスは、制御可能なターゲットデバイス上でリスナーを構成してもよく、それによって、制御可能なターゲットデバイスが、ブロードキャスト中のソースデバイスからのイベント通知をリッスンし、次いで、構成済みのリスナーが、ソースデバイスからブロードキャストされたイベント通知を検出したことに応答して、リンクされたコマンドをローカルに起動してもよい。
より詳細には、図9は、様々な態様による、制御デバイス920が、ソースデバイス910からブロードキャストされたイベント通知を検出したことに応答してターゲットデバイス930上でコマンドをトリガする場合がある例示的な呼フロー900を示す。
特に、制御デバイス920(たとえば、スマートフォンまたは別の適切なデバイス)は、942においてIoTネットワークまたは別の適切なワイヤレスネットワークを監視するように構成されてもよく、ソースデバイス910、制御デバイス920、およびターゲットデバイス930の各々は、ソースデバイス910、制御デバイス920、およびターゲットデバイス930が近接度ベースの分散バス(たとえば、図6〜図8を参照して上記においてさらに詳細に説明したAllJoyn(商標)ソフトウェアフレームワーク)を介した直接通信に関与するのを可能にする場合がある近接度ベースの適切なD2Dプロトコルをサポートしてよい。したがって、制御デバイス920は、944においてソースデバイス910が特定のイベント通知をブロードキャストしたことに応答して、946において、ブロードキャストされたイベント通知を検出し、ターゲットデバイス930上でトリガすべきコマンドに検出されたイベント通知をリンクし、それによってターゲットデバイス930を制御するのに使用できるユーザインターフェースを表示してもよい。たとえば、様々な実施形態では、ソースデバイス910は、目覚まし時計を備えてもよく、ターゲットデバイス930は、空調ユニットを備えてもよい。したがって、ソースデバイス910は、944において「目覚まし時計スヌーズ」イベント通知をブロードキャストしてもよく、制御デバイス920は、「目覚まし時計スヌーズ」イベント通知を検出したことに応答して、ユーザが「目覚まし時計スヌーズ」イベントを1つまたは複数の制御可能なターゲットデバイス930(たとえば、空調ユニット)上のコマンドにリンクするのを可能にするためにユーザインターフェースを表示してもよい。たとえば、図15は、制御デバイス920が、「目覚まし時計スヌーズ」イベント通知を検出したことに応答して表示する場合がある例示的なユーザインターフェース1510を示し、ユーザインターフェース1510は、ユーザが目覚まし時計スヌーズイベント通知にリンクすべきトリガコマンドを定義するのを可能にしてもよく、ユーザインターフェース1510は、目覚まし時計スヌーズイベント通知にリンクすべきトリガコマンドを定義せずに目覚まし時計スヌーズイベント通知を取り消すための代替物をユーザにさらに提供してもよい。
様々な実施形態では、制御デバイス920は、ユーザが、目覚まし時計スヌーズイベント通知にリンクすべきトリガコマンドを定義するためのオプションを(たとえば、ユーザインターフェース1510から)選択したことに応答して、目覚まし時計スヌーズイベント通知にリンクすることのできる1つまたは複数の制御可能なターゲットデバイスを示すデバイス制御パネルを表示してもよい。たとえば、図15は、ユーザがユーザインターフェース1510からトリガコマンドオプションを選択したことに応答して制御デバイス920上に表示される場合がある例示的なデバイス制御パネル1520をさらに示し、デバイス制御パネル1520は、空調ユニットおよびスヌーズイベント通知をブロードキャストした目覚まし時計に加えてラジオ、コーヒーメーカー、ヒーター、および照明上のコマンドに目覚まし時計スヌーズイベント通知をリンクできることを示してもよい。したがって、制御デバイス920は、ユーザがデバイス制御パネル1520から空調ユニットを選択したことに応答して、空調ユニットに関連するデバイス固有の制御パネルを表示してもよい。たとえば、図15は、ユーザがデバイス制御パネル1520から空調ユニットを選択したことに応答して制御デバイス920が表示する場合がある例示的なデバイス固有の制御パネル1530をさらに示し、デバイス固有の制御パネル1530は、ユーザが目覚まし時計スヌーズイベントを特定のファン速度、温度、およびターゲットデバイス930(たとえば、空調ユニット)上のオン/オフ状態に目覚まし時計スヌーズイベントをリンクするコマンドをトリガするのを可能にしてもよい。したがって、図9に戻るとわかるように、制御デバイス920は、948において、ブロードキャストされたイベント通知にリンクすべきコマンドを定義するユーザ入力を受信してもよく、ソースデバイス910は次いで、ソースデバイス910が将来再びイベント通知をブロードキャストしたときにそれに応答して、948において定義されたコマンドをターゲットデバイス930上で自動的にトリガすることができるようにイベント通知を記憶してもよい。さらに、様々な実施形態では、制御デバイス920は、場合によっては、ブロードキャストされたイベント通知にリンクされたコマンドが以前に構成された1つまたは複数のトリガ定義と矛盾すると判定したことに応答して、非アクティブ化スクリーンを表示してもよい。たとえば、図15は、イベントトリガ同士の矛盾を解消するために表示される場合がある例示的な非アクティブ化スクリーン1540をさらに示す(たとえば、以前のトリガ定義が目覚まし時計スヌーズイベントをヒーター上の特定のコマンドにリンクしている場合があり、ユーザが同じイベント通知に応答して空調ユニットおよびヒーターをオンにすることを望まない可能性が非常に高いので、非アクティブ化スクリーン1540は、ユーザに以前のトリガ定義を非アクティブ化することを促すように表示されてもよい)。したがって、再び図9を参照するとわかるように、制御デバイス920は、ターゲットデバイス830上でトリガすべきコマンドを適切に定義し(かつ必要に応じてイベントトリガ同士の矛盾を解消し)た後、目覚まし時計スヌーズイベントにリンクされたトリガ定義を記憶してもよい。様々な実施形態では、制御デバイス920は、950において引き続きネットワークを監視してもよく、ソースデバイス910は、952においてイベント通知を再びブロードキャストしてもよく、それによって、制御デバイスは、954においてイベント通知を検出し、次いで956において、ターゲットデバイス930上の以前に定義されたコマンドをトリガする。
図10は、様々な態様による、制御デバイスが、ソースデバイスからブロードキャストされたイベント通知を検出したことに応答してターゲットデバイス上のコマンドをトリガする場合がある例示的な方法1000を示し、この方法は、図9に示す制御デバイス920において実行される機能と概ね同様であってもよい。特に、ブロック1010において、制御デバイスは、ローカルワイヤレスネットワークを監視し、その後、ソースデバイスがブロック1020において適切な近接度ベースのD2Dプロトコルを使用してブロードキャストするイベント通知を検出してもよい。制御デバイスは、イベント通知を検出したことに応答して、ブロック1030においてそのイベント通知が新しいイベント通知であるかどうかを判定してもよく、その場合、制御デバイスは、ユーザにイベント通知を取り消すか、またはソースデバイスからブロードキャストされたイベント通知にリンクされる場合がある、ターゲットデバイス上でトリガすべきコマンドを定義するよう促すためにブロック1040においてユーザインターフェースを表示してもよい。したがって、ブロック1040において、制御デバイスは、ローカルネットワークブロック1070の監視を再開する前にイベント通知を取り消すかまたはコマンドトリガを定義する1つまたは複数のユーザ入力を受信してもよい。しかし、制御デバイスにおいて受信される入力がコマンドトリガを定義する後者の場合、制御デバイスは、ローカルネットワーク監視を再開する前にコマンドトリガを記憶してもよく、それによって、コマンドは、ソースデバイスが将来再びイベント通知をブロードキャストしたときにそれに応答してターゲットデバイス上で自動的にトリガされてもよい。たとえば、ブロック1030において、制御デバイスは、ソースデバイスからブロードキャストされたイベント通知が以前に観測されており、したがって新しくないと判定する。したがって、ブロック1050において、制御デバイスは、そのイベント通知に関して既存のコマンドトリガが定義されているかどうかを判定してもよい。より詳細には、ユーザが以前にイベント通知を取り消した場合、制御デバイスは、ブロック1070においてそれ以上のアクションを実行せずにローカルネットワークの監視を再開してもよい。しかし、ユーザが以前にコマンドトリガを定義した場合、制御デバイスは、D2D技術を使用してターゲットデバイスと通信し、ブロック1070においてローカルネットワークの監視を継続する前にブロック1060においてターゲットデバイス上のコマンドを起動してもよい。
図11は、様々な態様による、制御デバイス1120が、ソースデバイス1110からブロードキャストされたイベント通知に応答してターゲットデバイス1130上でコマンドをトリガするのに使用される場合がある別の例示的な呼フロー1100を示す。特に、図11に示す呼フロー1100は、図9に示され上記においてさらに詳細に説明した呼フロー900と概ね同様であってもよく、制御デバイス1120は、1142においてIoTネットワークまたは別の適切なワイヤレスネットワークを監視し、1144、1146においてソースデバイス1110からブロードキャストされたイベント通知を検出したことに応答して図15に示すユーザインターフェース1510を表示し、1148においてそのイベント通知にリンクすべきトリガコマンドをユーザが定義するのを可能にするために図15に示すユーザインターフェース1520、1530、1540をさらに表示してもよい。しかし、図11に示す呼フロー1100は、1150において、ユーザがソースデバイス1110からブロードキャストされたイベント通知に基づいてターゲットデバイス1130上でトリガすべきコマンドを適切に定義した後、制御デバイス1120が、ブロードキャスト中のソースデバイス1110にコマンドパケットを送信する場合があるという点で図9における呼フロー900とは異なってもよい。したがって、制御デバイス1120は、1150において、ブロードキャスト中のソースデバイス1110にトリガ定義およびリンクされたコマンドを全体的にプッシュしてもよく、ソースデバイス1110は、次いで、ソースデバイス1110が将来再び1152、1154においてイベント通知をブロードキャストしたときに、制御可能なターゲットデバイス1130上のリンクされたコマンドを起動してもよい。たとえば、上述の例示的な使用事例では、ソースデバイス1110は目覚まし時計であってもよく、ターゲットデバイス1130は空調ユニットであってもよく、トリガ定義は、空調ユニットをオンにすることと、目覚まし時計がスヌーズイベント通知をブロードキャストしたことに応答して空調ユニットを特定のファン速度および温度に設定することとを含んでもよい。したがって、その例示的な使用事例では、制御デバイス1120からソースデバイス1110に送信されるコマンドパケットは以下の例示的なフォーマットを有してもよい。
したがって、図11に示すように、制御デバイス1120は、上記のフォーマットまたは別の適切なフォーマットを有する場合があるコマンドパケットをソースデバイス1110に送信してもよく、それによって、ソースデバイス1110は、イベント通知を将来再びブロードキャストしたときにそれに応答してターゲットデバイス1130上のコマンドパケットに定義されたコマンドをトリガしてもよい。
図12は、様々な態様による、制御デバイスが、ソースデバイスからブロードキャストされたイベント通知を検出したことに応答してターゲットデバイス上のコマンドをトリガするようにソースデバイスを構成する場合がある例示的な方法1200を示し、この方法は、図11に示す制御デバイス1120において実行される機能と概ね同様であってもよい。特に、ブロック1210において、制御デバイスは、ローカルワイヤレスネットワークを監視し、その後、ソースデバイスがブロック1220において適切な近接度ベースのD2Dプロトコルを使用してブロードキャストするイベント通知を検出してもよい。制御デバイスは、イベント通知を検出したことに応答して、ブロック1230においてそのイベント通知が新しいイベント通知であるかどうかを判定してもよく、その場合、制御デバイスは、ユーザにイベント通知を取り消すか、またはソースデバイスからブロードキャストされたイベント通知にリンクされる場合がある、ターゲットデバイス上でトリガすべきコマンドを定義するよう促すためにブロック1240においてユーザインターフェースを表示してもよい。したがって、ブロック1240において、制御デバイスは、イベント通知を取り消すか、またはターゲットデバイス上でトリガしかつブロック1220において検出されたイベント通知にリンクすべきコマンドを定義する1つまたは複数のユーザ入力を受信してもよい。したがって、制御デバイスは、制御デバイスにおいて受信された入力がコマンドトリガを定義しているとブロック1250において判定したことに応答して、ブロック1260においてブロードキャスト中のソースデバイスにコマンドパケットを送信してもよい。本明細書において説明する各事例では、制御デバイスは、次いで、ブロック1270においてローカルネットワークの監視を再開してもよく、同じイベント通知を将来再び検出したときにそれに応答してそれ以上のアクションを実行しなくてもよい。その代わり、制御デバイスは、ブロック1260において、ブロードキャスト中のソースデバイスにトリガ定義およびリンクされたコマンドをプッシュしているので、ソースデバイスはその後、ソースデバイスが将来再びイベント通知をブロードキャストしたときには必ず、制御可能なターゲットデバイス上のリンクされたコマンドを起動してもよい。したがって、制御デバイスは、ブロック1230においてイベント通知が再び検出されたと判定した場合、ソースデバイスがすでにそのイベント通知にリンクされたコマンドをプロビジョニングされているので、ブロック1270においてそれ以上のアクションを実行せずに単にローカルネットワークの監視を再開してもよい。
図13は、様々な態様による、ソースデバイスからブロードキャストされたイベント通知に応答してターゲットデバイス上のコマンドをトリガするのに使用される場合がある別の例示的な呼フロー1300を示し、ターゲットデバイス1330に、ソースデバイス1310からブロードキャストされる特定のイベント通知をリッスンさせ、かつソースデバイス1310がそのイベント通知をブロードキャストしたことをリスナーが検出したことに応答してイベント通知にリンクされている場合がある特定のローカルコマンドを起動させるリスナーを、制御デバイス1320がターゲットデバイス1330上に構成することができるコンテキストにおいて図13に示す呼フロー1300が使用されてもよい。特に、制御デバイス1320は、1342において、最初に、ソースデバイス1310上でサポートされるイベント通知ブロードキャストを学習してもよく、1344において、制御デバイス1320は、ターゲットデバイス1330上でサポートされる1つまたは複数のコマンドをさらに学習してもよい。したがって、様々な実施形態では、制御デバイス1320は、ユーザが特定のネットワーク環境内の制御可能なデバイス上にブロードキャストリスナーを登録するのを可能にする適切なアプリケーションを実行してもよい。たとえば、図16を参照するとわかるように、制御デバイス1320は、ユーザがブロードキャストリスナーを登録するのを可能にするアプリケーションをユーザがローンチしたことに応答してイベント通知ブロードキャストをサポートするネットワーク環境内の1つまたは複数のデバイスを示すユーザインターフェース1610を表示してもよい(たとえば、ユーザインターフェース1610は、特定のイベント通知をブロードキャストすることができるラジオ、コーヒーメーカー、ヒーター、空調ユニット、目覚まし時計、照明などに相当するボタンを含んでもよい)。
したがって、制御デバイス1320は、ユーザがユーザインターフェース1610に示されるブロードキャスト中のデバイスからソースデバイス1310を選択したことに応答して、ソースデバイス1310が学習した特定のイベント通知ブロードキャストがソースデバイス1310上でサポートされることを示す別のユーザインターフェース1620を表示してもよい(たとえば、制御デバイス1320は、ユーザがユーザインターフェース1610から目覚まし時計を選択したことに応答して、「目覚ましセット」イベント、「目覚まし鳴動」イベント、「目覚ましスヌーズ」イベント、「目覚ましオフ」イベントなどに関係するブロードキャストを目覚まし時計がサポートすることを示すようにユーザインターフェース1620を表示してもよい)。様々な実施形態では、ユーザは次いで、ソースデバイス1310がサポートする特定のイベント通知ブロードキャストをユーザインターフェース1620から選択してもよく、それによって、選択されたイベント通知ブロードキャストにリンクされたコマンドを示し、選択されたイベント通知ブロードキャストをネットワーク環境内の制御可能なデバイス上の特定のコマンドにさらにリンクするためのオプションを提示する別のユーザインターフェース1630を制御デバイス1320に表示させてもよい。たとえば、ユーザは、ユーザインターフェース1630から「Add Event」オプションを選択してもよく、制御デバイス1320は次いで、ユーザインターフェース1620から選択されたイベント通知ブロードキャストに関連するリスナーを登録するように構成することができるネットワーク環境内の制御可能なデバイスを示すユーザインターフェース1640を表示してもよい(たとえば、ユーザインターフェース1640は、ラジオ、コーヒーメーカー、ヒーター、空調ユニット、目覚まし時計、照明などに相当するボタンを含んでもよい)。
様々な実施形態では、制御デバイス1320は、ユーザがユーザインターフェース1640に示される制御可能なデバイスからターゲットデバイス1330を選択したことに応答して、ソースデバイス1310が学習した特定のメソッドまたはコマンドがターゲットデバイス1330上でサポートされることを示す別のユーザインターフェース1650を表示してもよい(たとえば、制御デバイス1320は、ユーザがユーザインターフェース1640から空調ユニットを選択したことに応答して、空調ユニットのオン、オフを切り替えること、空調ユニット上のファン速度を設定すること、空調ユニット上の温度を設定することなどを行うのに使用される場合があるメソッドまたはコマンドを空調ユニットがサポートすることを示すようにユーザインターフェース1650を表示してもよい)。したがって、制御デバイス1320は、ユーザがユーザインターフェース1650から特定のメソッドまたはコマンドを選択したことに応答して、選択されたイベント通知ブロードキャストにリンクされたコマンドを示すユーザインターフェース1630を再び表示してもよく、この場合、選択されたメソッドまたはコマンドがユーザインターフェース1620から選択されたイベント通知ブロードキャストにリンクされていることを確認するためにユーザインターフェース1630にユーザインターフェース1650から選択されたメソッドまたはコマンドが存在してもよい。図13を参照するとわかるように、その場合、制御デバイス1320は、1346においてコマンドトリガ定義を受信している場合がある。様々な実施形態では、次いで1348において、制御デバイス1320は、ユーザが、ターゲットデバイス1330においてサポートされるメソッドまたはコマンドをソースデバイス1310においてサポートされるイベント通知ブロードキャストに適切にリンクしたことに応答してターゲットデバイス1330上にリスナーを構成するかあるいは場合によっては登録してもよい。したがって、ターゲットデバイス1330は、1352において構成済みのリスナーを実行してもよく、リスナーは概して、ソースデバイス1310からブロードキャストされるイベント通知(たとえば、ユーザインターフェース1620から選択されたイベント通知ブロードキャスト)をターゲットデバイス1330にリッスンさせてもよい。したがって、ターゲットデバイス1330は、1350において、ソースデバイス1310がイベント通知をブロードキャストしたことに応答して、構成済みのイベントリスナーを介してイベント通知を検出し、1354において、制御デバイス1320によるさらなる介入なしにそのイベント通知にリンクされたメソッドまたはコマンド(たとえば、ユーザインターフェース1650から選択されたメソッドまたはコマンド)を実行してもよい。
図14は、様々な態様による、制御デバイスが、ターゲットデバイスを、ソースデバイスからブロードキャストされるイベント通知をリッスンし、そのイベント通知を検出したことに応答してコマンドをトリガするように構成する場合がある例示的な方法1400を示し、この方法は、図13に示す制御デバイス1320において実行される機能と概ね同様であってもよい。特に、制御デバイスは、ブロック1410において、最初に、ソースデバイス上でサポートされるイベント通知ブロードキャストを学習してもよく、ブロック1420において、ターゲットデバイス上でサポートされる1つまたは複数のコマンドをさらに学習してもよい。したがって、様々な実施形態では、制御デバイスは、ユーザが特定のネットワーク環境内の制御可能なデバイス上にブロードキャストリスナーを定義し登録するのを可能にする適切なアプリケーションを実行してもよく、その場合、ブロック1430は、(たとえば、図13および図16に関して上記においてさらに詳細に説明したように)1つまたは複数のそのようなコマンドトリガ定義を受信することを含んでもよい。様々な実施形態では、制御デバイスは、ブロック1430において1つまたは複数のコマンドトリガ定義を受信したことに応答して、ターゲットデバイスにおいてサポートされる1つまたは複数のメソッドまたはコマンドをソースデバイスにおいてサポートされる1つまたは複数のイベント通知にリンクするイベントリスナーを作成してもよく、制御デバイスは、ブロック1440においてターゲットデバイスにイベントリスナーを構成してもよい。したがって、その場合、ターゲットデバイスは構成済みのリスナーを実行してもよく、リスナーは概して、ターゲットデバイスに、ソースデバイスからブロードキャストされるイベント通知(たとえば、構成済みのリスナーに定義されたイベント通知)をリッスンさせ、かつ制御デバイスによるさらなる介入なしに、そのイベント通知を検出したことに応答してそのイベント通知にリンクされたメソッドまたはコマンドを起動させてもよい。
図17は、様々な態様による、発見可能なD2Dサービスを使用した近接度ベースの分散バスを介した通信によって本明細書において説明する様々な態様および実施形態のうちのいずれかに関連して使用される場合がある例示的な通信デバイス1700を示す。したがって、ソースデバイスからブロードキャストされたイベント通知に従ってターゲットデバイス上のコマンドをトリガするためのメソッドに関係する上述の様々な態様および実施形態の文脈では、図17に示す通信デバイス1700は、それぞれ図9、図11、および図13に示すソースデバイス910、1110、1310、制御デバイス920、1120、1320、および/またはターゲットデバイス930、1130、1330に相当してもよい。
様々な実施形態では、図17に示すように、通信デバイス1700は、たとえば、受信アンテナ(図示せず)から信号を受信し、受信信号に典型的なアクション(たとえばフィルタ処理、増幅、ダウンコンバートなど)を実行し、条件付きの信号をデジタル化してサンプルを取得する場合があるレシーバ1702を備えてもよい。レシーバ1702は、受信されたシンボルを復調し、復調されたシンボルをチャネル推定のためにプロセッサ1706に提供することができる復調器1704を備えてもよい。プロセッサ1706については、レシーバ1702によって受信された情報の分析および/またはトランスミッタ1720によって送信される情報の生成専用に使用すること、通信デバイス1700の1つまたは複数の構成要素を制御すること、ならびに/あるいはそれらの任意の適切な組合せが可能であってもよい。
様々な実施形態では、通信デバイス1700は、プロセッサ1806に動作可能に結合されたメモリ1708をさらに備えることができ、メモリ1708は、受信されたデータ、送信すべきデータ、利用可能なチャネルに関連する情報、分析された信号および/または干渉強度に関連するデータ、割り当てられたチャネル、電力、レートなどに関連する情報、およびチャネルを推定し、チャネルを介して通信するための任意の他の適切な情報を記憶することができる。様々な実施形態では、メモリ1708は、1つまたは複数のローカルエンドポイントアプリケーション1710を含むことができ、ローカルエンドポイントアプリケーション1710は、分散バスモジュール1730を通じた通信デバイス1700および/または他の通信デバイス(図示せず)上のエンドポイントアプリケーション、サービスなどとの通信を求めてもよい。メモリ1708は、(たとえば、性能ベース、容量ベースなど)チャネルの推定および/またはチャネルの使用に関連付けられたプロトコルおよび/またはアルゴリズムをさらに記憶することができる。
当業者には、本明細書で説明するメモリ1708が、揮発性メモリもしくは不揮発性メモリであることが可能であり、または揮発性と不揮発性の両方のメモリを含むことが可能であることが諒解されよう。限定ではなく例として、不揮発性メモリは、読取り専用メモリ(ROM)、プログラマブルROM(PROM)、電気的プログラマブルROM(EPROM)、電気的消去可能PROM(EEPROM)、またはフラッシュメモリを含むことができる。揮発性メモリは、外部キャッシュメモリとして働くランダムアクセスメモリ(RAM)を含むことができる。限定ではなく例として、RAMは、同期RAM(SRAM)、ダイナミックRAM(DRAM)、同期DRAM(SDRAM)、ダブルデータレートSDRAM(DDR SDRAM)、拡張SDRAM(ESDRAM)、シンクリンクDRAM(SLDRAM)、およびダイレクトRambus RAM(DRRAM(登録商標))などの多くの形で使用可能である。対象のシステムおよび方法におけるメモリ1708は、それだけに限定されないが、これらの種類のメモリおよび任意の他の適切な種類のメモリを備えてもよい。
様々な実施形態では、通信デバイス1700に関連する分散バスモジュール1730は、他のデバイスとの接続を確立するのをさらに容易にすることができる。分散バスモジュール1730は、分散バスモジュール1730が複数のデバイス間の通信を管理するのを助けるためのバスノードモジュール1732をさらに備えてもよい。様々な実施形態では、バスノードモジュール1732は、バスノードモジュール1732が他のデバイスに関連するエンドポイントアプリケーションと通信するのを助けるためのオブジェクト命名モジュール1734をさらに含んでもよい。さらに、分散バスモジュール1730は、ローカルエンドポイントアプリケーション1710が確立された分散バスを通じて他のローカルエンドポイントおよび/または他のデバイス上のアクセス可能なエンドポイントアプリケーションと通信するのを助けるためのエンドポイントモジュール1736を含んでもよい。別の態様では、分散バスモジュール1730は、複数の利用可能なトランスポート(たとえば、Bluetooth(登録商標)、Unixドメインソケット、TCP/IP、Wi-Fiなど)を介したデバイス間通信および/またはデバイス内通信を容易にしてもよい。したがって、様々な実施形態では、分散バスモジュール1730およびエンドポイントアプリケーション1710を使用して、通信デバイス1700が直接デバイス間(D2D)通信を使用して通信デバイス1700に近接する他の通信デバイスと通信することができる近接度ベースの分散バスを確立しならびに/あるいはそのような近接度ベースの分散バスに参加してもよい。
さらに、様々な実施形態では、通信デバイス1700は、ユーザインターフェース1740を含んでもよく、ユーザインターフェース1740は、通信デバイス1700への入力を生成するための1つまたは複数の入力機構1742と、通信デバイス1700のユーザによって消費される情報を生成するための1つまたは複数の出力機構1744とを含んでもよい。たとえば、入力機構1742は、キーまたはキーボード、マウス、タッチスクリーンディスプレイ、マイクロフォンなどの機構を含んでもよい。さらに、たとえば、出力機構1744は、ディスプレイ、オーディオスピーカ、触覚フィードバック機構、パーソナルエリアネットワーク(PAN)送受信機などを含んでもよい。図示した態様では、出力機構1744は、メディアコンテンツをオーディオ形式にレンダリングするように動作可能なオーディオスピーカ、メディアコンテンツの画像フォーマットもしくはビデオフォーマットへのレンダリングおよび/または時限メタデータのテキスト形式または視覚形式へのレンダリングを行うように動作可能なディスプレイ、あるいは他の適切な出力機構を含んでもよい。しかし、様々な実施形態では、ヘッドレス通信デバイス1700は、一般にモニタ、キーボード、および/またはマウスなしで動作するように構成されたコンピュータシステムまたはデバイスを指すので、いくつかの入力機構1742および/または出力機構1744を含まなくてもよい。
さらに、様々な実施形態では、通信デバイス1700は、通信デバイス1700に関連するローカル環境に関係する様々な測定値を取得することができる1つまたは複数のセンサー1750を含んでもよい。たとえば、様々な実施形態では、センサー1750は、加速度計、ジャイロスコープ、または通信デバイス1700に加えられる動きに関係する測定値を取得することができる他の適切なセンサーを含んでもよい。別の例では、センサー1750は、内部温度および/または周囲温度、電力消費量、ローカル無線信号、照明、ならびに/あるいは他のローカル環境変数および/または周囲環境変数に関係する測定値を取得することのできる適切なハードウェア、回路、または他の適切なデバイスを含んでもよい。
図18は、様々な態様による、ソースデバイスからのブロードキャストされたイベント通知に応答してターゲットデバイス上のコマンドをトリガするための様々な方法のいずれかを使用することができる例示的な接続された家庭ネットワーク環境1800を示し、例示的な接続された家庭ネットワーク環境1800は、上記においてさらに詳細に説明したようにターゲットデバイス上のコマンドをトリガするための様々な方法を実行するために様々な態様で相互作用するように構成される場合がある様々なIoTデバイスを含んでもよい。たとえば、図18に示す例では、接続された家庭ネットワーク環境1800は、スマートフォン1870と、屋外スピーカ1812、1814と、目覚まし時計1816と、寝室スピーカ1818と、サーモスタット1820と、洗濯機1822と、壁時計1824と、コーヒーメーカー1826と、居間用フロアスピーカ1828と、本棚オーディオシステム1830と、ホームシアタースピーカ1832、1834と、ドアノブ1836と、冷蔵庫1850と、テレビジョン1852と、スマートフォン1870と、ワイヤレスルータまたはホームゲートウェイ1872とを含む。さらに、図18に示すように、家庭ネットワーク環境1800における様々なIoTデバイスは、上記においてさらに詳細に説明する様々な役割のうちの1つまたは複数(たとえば、制御デバイス、ソースデバイス、ターゲットデバイスなど)において動作するように構成されてもよい。したがって、様々な実施形態では、環境1800におけるスマートフォン1870、ワイヤレスルータまたはホームゲートウェイ1872、または別の適切なデバイスは、1つまたは複数のソースデバイスからブロードキャストされたイベント通知を検出したことに応答して1つまたは複数のターゲットデバイス上のコマンドをトリガすることができる制御デバイスとして動作してもよい。たとえば、一実施形態では、スマートフォン1870は、ローカル環境1800を監視し、適切な近接度ベースのD2Dプロトコルを使用して目覚まし時計1816がブロードキャストするイベント通知を検出してもよく、スマートフォン1870は、イベント通知の検出に応答して、D2D技術を使用して1つまたは複数のターゲットデバイスと通信して以前に定義されたコマンドトリガを起動してもよい(たとえば、サーモスタット1820上の温度を上げること、コーヒーメーカー1826をオンにすることなど)。別の例では、スマートフォン1870は、目覚まし時計1816が後で、将来再び同じイベント通知をブロードキャストする際に必ず、制御可能なターゲットデバイス上のリンクされたコマンドを起動することができるように、コマンドトリガが最初に定義されるときに目覚まし時計1816にコマンドパケットを送信してもよい。さらに別の例では、スマートフォン1870は、ユーザがネットワーク環境1800内のIoTデバイスのうちの1つまたは複数上にブロードキャストリスナーを定義し登録することができるように、環境1800内の様々なIoTデバイス上でサポートされるイベント通知およびコマンドを学習してもよい。したがって、スマートフォン1870は、ユーザから1つまたは複数のコマンドトリガ定義を受信したことに応答して、特定のターゲットデバイスにおいてサポートされる1つまたは複数のメソッドまたはコマンドを特定のソースデバイスにおいてサポートされる1つまたは複数のイベント通知にリンクするイベントリスナーを作成し、そのイベントリスナーをターゲットデバイスにおいて構成してもよく、それによって、ターゲットデバイスは、構成済みのリスナーを実行し、スマートフォン1870によるさらなる介入なしにソースデバイスからのイベント通知を検出したことに応答してイベント通知にリンクされたメソッドまたはコマンドを起動してもよい。
情報および信号が多種多様な異なる技術および技法のいずれかを使用して表すことができることを、当業者は理解されよう。たとえば上記説明全体を通して参照することができるデータ、命令、指令、情報、信号、ビット、記号およびチップは、電圧、電流、電磁波、磁界または粒子、光学場または粒子、あるいはそれらの任意の組合せによって表すことができる。
さらに、本明細書で開示する態様に関連して説明した様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装され得ることを当業者は理解されよう。ハードウェアおよびソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップは、一般的にそれらの機能性に関してこれまで説明されてきた。そのような機能性がハードウェアとして実現されるか、またはソフトウェアとして実現されるかは、具体的な適用例および全体的なシステムに課される設計制約によって決まる。当業者は、記載された機能を特定の適用例ごとに様々な方法で実装することができるが、そのような実装の決定は、本明細書に記載された態様および/または実施形態の範囲から逸脱するものと解釈されるべきではない。
本明細書に開示する態様と関連して説明する様々な例示的な論理ブロック、モジュール、および回路は、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途用集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブルロジックデバイス、個別のゲートもしくはトランジスタロジック、個別のハードウェア部品、または本明細書に記載した機能を行うように設計されたこれらの任意の組合せを用いて、実装または実行され得る。汎用プロセッサを、マイクロプロセッサとすることができるが、代替案では、プロセッサを、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械とすることができる。プロセッサはまた、コンピューティングデバイスの組合せ(たとえば、DSPおよびマイクロプロセッサの組合せ、複数のマイクロプロセッサ、DSPコアと連携する1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成)として実装され得る。
本明細書において開示する態様に関連して説明した方法、シーケンス、および/またはアルゴリズムは、ハードウェアで、プロセッサによって実行されるソフトウェアモジュールで、またはその2つの組合せで直接具現され得る。ソフトウェアモジュールは、RAM、フラッシュメモリ、ROM、EPROM、EEPROM、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野で知られている任意の他の形態の記憶媒体内に存在し得る。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読取り、そこに情報を書込みできるようにプロセッサに結合される。代替案では、記憶媒体は、プロセッサに一体とされ得る。プロセッサおよび記憶媒体は、ASIC内に存在し得る。ASICはIoTデバイス内に存在し得る。代替として、プロセッサおよび記憶媒体は、ユーザ端末内に個別の構成要素として存在し得る。
1つまたは複数の例示的な態様では、述べられる機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで、実施され得る。ソフトウェアに実装される場合、機能は、1つまたは複数の命令またはコードとして、コンピュータ可読媒体上に記憶されるか、または、コンピュータ可読媒体を介して送信される場合がある。コンピュータ可読媒体は、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む、コンピュータ記憶媒体と通信媒体の両方を含む。記憶媒体は、コンピュータによってアクセスできるすべての使用可能な媒体とすることができる。限定ではなく例として、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD-ROMもしくは他の光ディスク(disc)ストレージ、磁気ディスク(disk)ストレージもしくは他の磁気ストレージデバイス、あるいは命令もしくはデータ構造の形で所望のプログラムコードを担持しまたは記憶するのに使用でき、コンピュータによってアクセスできる任意の他の媒体を含むことができる。また、任意の接続は、適切にコンピュータ可読媒体と呼ばれる。たとえば、同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースからソフトウェアが送信される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。本明細書で使用するディスク(disk)およびディスク(disc)は、CD、レーザディスク(disc)、光ディスク(disc)、DVD、フロッピーディスク(disk)およびBlu-ray(登録商標)ディスク(disc)を含み、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、データをレーザで光学的に再生する。前述の組合せも、コンピュータ可読媒体の範囲内に含まれるべきである。
上記の開示は、例示的な態様および実施形態を示しているが、添付の特許請求の範囲によって定義されるような本開示の範囲から逸脱することなく、本明細書において様々な変更および修正を施すことが可能であることが、当業者には諒解されよう。本明細書で説明した態様および実施形態による方法クレームの機能、ステップおよび/または動作は、特定の順序で実施される必要はない。さらに、要素は、単数形で上に記載または特許請求されている場合があるが、単数形に限定することが明示的に述べられていない限り、複数形が考えられる。