(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-06-20
(45)【発行日】2024-06-28
(54)【発明の名称】住宅ネットワークの装置のための効率的通信
(51)【国際特許分類】
H04L 69/165 20220101AFI20240621BHJP
H04L 49/25 20220101ALI20240621BHJP
【FI】
H04L69/165
H04L49/25
(21)【出願番号】P 2022167520
(22)【出願日】2022-10-19
(62)【分割の表示】P 2021123111の分割
【原出願日】2014-06-23
【審査請求日】2022-10-28
(32)【優先日】2013-06-25
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】エリクソン,グラント・エム
(72)【発明者】
【氏名】ローグ,ジェイ・ディ
(72)【発明者】
【氏名】ボロス,クリストファー・エイ
(72)【発明者】
【氏名】スミス,ザカリー・ビィ
(72)【発明者】
【氏名】ハーディソン,オスボーン・ビィ
(72)【発明者】
【氏名】シュルツ,リチャード・ジェイ
(72)【発明者】
【氏名】グジャール,サニー・ピィ
(72)【発明者】
【氏名】ニーリー,マシュー・ジィ
【審査官】羽岡 さやか
(56)【参考文献】
【文献】米国特許出願公開第2009/0073983(US,A1)
【文献】特表2005-535247(JP,A)
【文献】特開2013-042243(JP,A)
【文献】特開2005-100251(JP,A)
【文献】特表2014-504043(JP,A)
【文献】米国特許出願公開第2010/0262650(US,A1)
【文献】川島 英之 Hideyuki KAWASHIMA,サービス指向ルータ上の分散ストリーム処理エンジンにおけるノード間通信機構の検討 A Consideration of Communication Architecture on Distributed Stream Processing Engine for Service oriented Router,電子情報通信学会技術研究報告 Vol.110 No.448 IEICE Technical Report,日本,社団法人電子情報通信学会 The Institute of Electronics,Information and Communication Engineers,第110巻,P.427-432
【文献】別所 雄三 Yuzo Bessho,クラウドサービスを支える通信ゲートウェイ技術,三菱電機技報 第87巻 第5号 ,三菱電機エンジニアリング株式会社,2013年05月25日,第87巻,P.13 (271)-18 (276)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 12/00-69/40
(57)【特許請求の範囲】
【請求項1】
電子装置であって、
ネットワークスタックを動作させる命令を記憶するメモリまたは記憶装置と;
前記ネットワークスタックを動作させる前記命令を実行するよう構成されるプロセッサと;
ネットワーク接続された装置のファブリックに加わり、前記ネットワークスタックを用いて、前記装置のファブリックの目標装置にメッセージを通信するよう構成されるネットワークインターフェイスとを含み、
前記ネットワークスタックは、
前記メッセージにおいて送信されるべきデータを含むアプリケーションペイロードを与えるよう構成されるアプリケーション層と;
前記アプリケーションペイロードを前記メッセージの一般的なメッセージフォーマットにおいてカプセル化するよう構成されるプラットフォーム層と;
前記一般的なメッセージフォーマットは、タイプ-長さ-値(TLV)フォーマットを含み、
ユーザ・データグラム・プロトコル(UDP)または伝送制御プロトコル(TCP)のいずれかを用いて、前記メッセージを選択可能に伝送するよう構成されたトランスポート層と;
前記メッセージを、インターネットプロトコルバージョン6(IPv6)を用いて、
802.11ワイヤレスネットワーク;
802.15.4ワイヤレスネットワーク;
電力線網;
セルラーネットワーク;
イーサネット(登録商標)ネットワーク;または
それらの任意の組合せを介して通信するよう構成されるネットワーク層とを含み;
前記アプリケーション層、前記プラットフォーム層、前記トランスポート層、前記ネットワーク層またはそれらの任意の組合せは、前記目標装置への前記メッセージの通信の態様のプロパティを、
前記メッセージのタイプ;
前記メッセージが送信されることになるネットワーク;
前記メッセージが前記ファブリックを通って移動し得る距離;
前記電子装置の電力消費挙動;
前記目標装置の電力消費挙動;
前記電子装置と前記目標装置との間において前記メッセージを通信することになる、前記装置のファブリックの介在装置の電力消費挙動;
前記目標装置はサービスを含むかどうか;または
それらの任意の組合せに少なくとも
部分的に基づいて判断するように構成され、
前記通信の態様のプロパティは、前記メッセージの通信に用いられるプロトコルのタイプを含み、
前記電子装置は、前記メッセージを、判断した前記通信の態様のプロパティを用いて生成するよう構成され、
前記通信の態様の前記プロパティを変動させることは、前記電子装置、前記目標装置、もしくは前記介在装置、またはそれらの任意の組合に、
変動されるプロパティによって異なる量の電力を消費させ、前記メッセージを、前記目標装置に、より信頼性高くまたはそれほど信頼性高くなく到達させるよう構成され、
前記プロセッサは
、前記電子装置が前記電子装置の外部の電源によって電力供給されるかどうかに応じて、
前記電子装置の節電がメッセージ通信の信頼性よりも所望されるかを判断し、前記節電が前記信頼性よりも所望されるとの判断に応じて、前記ユーザ・データグラム・プロトコル(UDP)を用いて前記メッセージを伝送すると判断するよう構成される、電子装置。
【請求項2】
前記通信の態様の前記プロパティ
を判断することは、
前記メッセージを伝送するよう伝送制御プロトコル(TCP)を選択する判断;
前記メッセージを伝送するようユーザ・データグラム・プロトコル(UDP)を選択する判断;
より小電力のネットワークを用いて、前記メッセージを通信する判断;
より高電力のネットワークを用いて、前記メッセージを通信する判断;
前記目標装置の好ましいネットワークを、前記メッセージのIPv6パケットヘッダにおいてエンコードされた拡張固有ローカルアドレス(EULA)において示される、より高電力のネットワークとして選択する判断;
前記目標装置の好ましいネットワークを、前記メッセージの前記IPv6パケットヘッダにおいてエンコードされた前記拡張固有ローカルアドレス(EULA)において示される、より小電力のネットワークとして選択する判断;または
それらの任意の組合せを含む、請求項1に記載の電子装置。
【請求項3】
前記アプリケーション層は、前記メッセージの緊急度によって伝送制御プロトコル(TCP)またはユーザ・データグラム・プロトコル(UDP)
のどちらを用いて前記メッセージを伝送するべきであるか
を判断するように構成される、請求項1または2に記載の電子装置。
【請求項4】
前記メッセージが装置警報を通信するとき、前記メッセージは緊急メッセージを含み、前記メッセージが装置警報なしに非危険な環境状態を示すものを通信するとき、前記メッセージは非緊急メッセージを含む、請求項3に記載の電子装置。
【請求項5】
前記メッセージは、緊急メッセージを含む場合、TCPを用いて伝送されるように構成され、前記メッセージは、非緊急メッセージを含む場合、UDPを用いて伝送されるように構成される、請求項4に記載の電子装置。
【請求項6】
前記アプリケーション層は、前記メッセージが送信されることになるネットワークに応じて、TCPまたはUDP
のどちらを用いて前記メッセージを伝送する
かを判断するように構成される、請求項1~5のいずれか1項に記載の電子装置。
【請求項7】
前記メッセージは、前記メッセージが送信されることになるネットワークがWiFi(登録商標)ネットワークを含む場合、TCPを用いて伝送されるように構成され、前記メッセージは、前記メッセージが送信されることになるネットワークが802.15.4ワイヤレスネットワークを含む場合、UDPを用いて伝送されるように構成される、請求項6に記載の電子装置。
【請求項8】
前記アプリケーション層は、前記メッセージが前記ファブリックを通って移動し得る距離に応じて、TCPまたはUDP
のどちらを用いて前記メッセージを伝送する
かを判断するように構成される、請求項1~5のいずれか1項に記載の電子装置。
【請求項9】
前記メッセージは、前記メッセージが前記ファブリックを通って移動し得る距離がしきい値よりも大きい場合、TCPを用いて伝送されるように構成され、前記メッセージは、前記メッセージが前記ファブリックを通って移動し得る距離がしきい値未満である場合、UDPを用いて伝送されるように構成される、請求項8に記載の電子装置。
【請求項10】
前記アプリケーション層は、前記電子装置が当該電子装置の外部の電源によって電力供給される
ことに応じて
、TCPを用いて前記メッセージを伝送する
と判断するように構成される、請求項1~5のいずれか1項に記載の電子装置。
【請求項11】
前記メッセージは、前記電子装置が当該電子装置の外部の電源によって電力供給されるとき、TCPを用いて伝送されるように構成され、前記メッセージは、前記電子装置が当該電子装置の内部の電源によって電力供給されるとき、UDPを用いて伝送されるように構成される、請求項10に記載の電子装置。
【請求項12】
前記アプリケーション層は、前記電子装置が、サービスを含む前記目標装置に前記メッセージを送信しているか否かに応じて、TCPまたはUDP
のどちらを用いて前記メッセージを伝送する
かを判断するように構成される、請求項1~5のいずれか1項に記載の電子装置。
【請求項13】
コンピュータが実行可能な命令を有するプログラムであって、前記命令は、
電子装置がネットワーク接続された装置のファブリックに加わり、前記装置のファブリックの目標装置にメッセージを通信するよう利用されるネットワークスタックを含み、前記ネットワークスタックは、
前記メッセージにおいて送信されるべきデータを含むアプリケーションペイロードを与えるよう構成されるアプリケーション層と;
前記アプリケーションペイロードを前記メッセージの一般的なメッセージフォーマットにおいてカプセル化するよう構成されるプラットフォーム層と;
前記一般的なメッセージフォーマットは、タイプ-長さ-値(TLV)フォーマットを含み、
ユーザ・データグラム・プロトコル(UDP)または伝送制御プロトコル(TCP)のいずれかを用いて、前記メッセージを選択可能に伝送するよう構成されたトランスポート層と;
前記メッセージを、インターネットプロトコルバージョン6(IPv6)を用いて、
802.11ワイヤレスネットワーク;
802.15.4ワイヤレスネットワーク;
電力線網;
セルラーネットワーク;
イーサネットネットワーク;または
それらの任意の組合せを介して通信するよう構成されるネットワーク層とを含み;
前記アプリケーション層、前記プラットフォーム層、前記トランスポート層、前記ネットワーク層またはそれらの任意の組合せは、前記目標装置への前記メッセージの通信の態様のプロパティを、
前記メッセージのタイプ;
前記メッセージが送信されることになるネットワーク;
前記メッセージが前記ファブリックを通って移動し得る距離;
前記電子装置の電力消費挙動;
前記目標装置の電力消費挙動;
前記電子装置と前記目標装置との間において前記メッセージを通信することになる、前記装置のファブリックの介在装置の電力消費挙動;
前記目標装置はサービスを含むかどうか;または
それらの任意の組合せに少なくとも
部分的に基づいて判断するように構成され、
前記通信の態様のプロパティは、前記メッセージの通信に用いられるプロトコルのタイプを含み、
前記命令は、前記メッセージを、判断した前記通信の態様のプロパティを用いて生成するよう構成され、
前記通信の態様の前記プロパティを変動させることは、前記電子装置、前記目標装置、もしくは前記介在装置、またはそれらの任意の組合せに、
変動されるプロパティによって異なる量の電力を消費させ、前記メッセージを、前記目標装置に、より信頼性高くまたはそれほど信頼性高くなく到達させるよう構成され、
前記命令は
、前記電子装置が前記電子装置の外部の電源によって電力供給されるかどうかに応じて、
前記電子装置の節電がメッセージ通信の信頼性よりも所望されるかを判断し、
前記節電が前記信頼性よりも所望されるとの判断に応じて、前記ユーザ・データグラム・プロトコル(UDP)を用いて前記メッセージを伝送すると判断するよう構成される、プログラム。
【請求項14】
前記通信の態様の前記プロパティ
を判断することは、
前記メッセージを伝送するよう伝送制御プロトコル(TCP)を選択する判断;
前記メッセージを伝送するようユーザ・データグラム・プロトコル(UDP)を選択する判断;
より小電力のネットワークを用いて、前記メッセージを通信する判断;
より高電力のネットワークを用いて、前記メッセージを通信する判断;
前記目標装置の好ましいネットワークを、前記メッセージのIPv6パケットヘッダにおいてエンコードされた拡張固有ローカルアドレス(EULA)において示される、より高電力のネットワークとして選択する判断;
前記目標装置の好ましいネットワークを、前記メッセージの前記IPv6パケットヘッダにおいてエンコードされた前記拡張固有ローカルアドレス(EULA)において示される、より小電力のネットワークとして選択する判断;または
それらの任意の組合せを含む、請求項13に記載のプログラム。
【請求項15】
前記アプリケーション層は、前記メッセージの緊急度によって伝送制御プロトコル(TCP)またはユーザ・データグラム・プロトコル(UDP)
のどちらを用いて前記メッセージを伝送するべきであるか
を判断するように構成される、請求項13または14に記載のプログラム。
【請求項16】
前記メッセージが装置警報を通信するとき、前記メッセージは緊急メッセージを含み、前記メッセージが装置警報なしに非危険な環境状態を示すものを通信するとき、前記メッセージは非緊急メッセージを含む、請求項15に記載のプログラム。
【請求項17】
方法であって、
電子装置のメモリまたは記憶装置において、ネットワークスタックを動作させる命令を記憶することと、
前記電子装置のプロセッサを介して、前記ネットワークスタックを動作させる前記命令を実行することと、
前記電子装置のネットワークインターフェイスを介して、ネットワーク接続された装置のファブリックに加わることと、
前記ネットワークインターフェイスを介して、前記ネットワークスタックを用いて、前記装置のファブリックの目標装置にメッセージを通信することとを含み、前記ネットワークスタックは、
前記メッセージにおいて送信されるべきデータを含むアプリケーションペイロードを与えるよう構成されるアプリケーション層と;
前記アプリケーションペイロードを前記メッセージの一般的なメッセージフォーマットにおいてカプセル化するよう構成されるプラットフォーム層と;
前記一般的なメッセージフォーマットは、タイプ-長さ-値(TLV)フォーマットを含み、
ユーザ・データグラム・プロトコル(UDP)または伝送制御プロトコル(TCP)のいずれかを用いて、前記メッセージを選択可能に伝送するよう構成されたトランスポート層と;
前記メッセージを、インターネットプロトコルバージョン6(IPv6)を用いて、
802.11ワイヤレスネットワーク;
802.15.4ワイヤレスネットワーク;
電力線網;
セルラーネットワーク;
イーサネットネットワーク;または
それらの任意の組合せを介して通信するよう構成されるネットワーク層とを含み、前記方法はさらに、
前記アプリケーション層、前記プラットフォーム層、前記トランスポート層、前記ネットワーク層またはそれらの任意の組合せを介した、前記目標装置への前記メッセージの通信の態様のプロパティを、
前記メッセージのタイプ;
前記メッセージが送信されることになるネットワーク;
前記メッセージが前記ファブリックを通って移動し得る距離;
前記電子装置の電力消費挙動;
前記目標装置の電力消費挙動;
前記電子装置と前記目標装置との間において前記メッセージを通信することになる、前記装置のファブリックの介在装置の電力消費挙動;
前記目標装置はサービスを含むかどうか;または
それらの任意の組合せに少なくとも部分的に基づいて判断することを含み、
前記通信の態様のプロパティは、前記メッセージの通信に用いられるプロトコルのタイプを含み、
前記方法はさらに、前記メッセージを、判断した前記通信の態様のプロパティを用いて生成することを含み、
前記通信の態様の前記プロパティを変動させることは、前記電子装置、前記目標装置、もしくは前記介在装置、またはそれらの任意の組合せに、
変動されるプロパティよって異なる量の電力を消費させ、前記メッセージを、前記目標装置に、より信頼性高くまたはそれほど信頼性高くなく到達させるよう構成され、前記方法はさらに、
前記電子装置が前記電子装置の外部の電源によって電力供給されるかどうかに応じて、
前記電子装置の節電がメッセージ通信の信頼性よりも所望されるかを判断すること、
前記節電が前記信頼性よりも所望されるとの判断に応じて、前記ユーザ・データグラム・プロトコル(UDP)を用いて前記メッセージを伝送すると判断することを含む、方法。
【請求項18】
前記通信の態様の前記プロパティ
を判断することは、
前記メッセージを伝送するよう伝送制御プロトコル(TCP)を選択する判断;
前記メッセージを伝送するようユーザ・データグラム・プロトコル(UDP)を選択する判断;
より小電力のネットワークを用いて、前記メッセージを通信する判断;
より高電力のネットワークを用いて、前記メッセージを通信する判断;
前記目標装置の好ましいネットワークを、前記メッセージのIPv6パケットヘッダにおいてエンコードされた拡張固有ローカルアドレス(EULA)において示される、より高電力のネットワークとして選択する判断;
前記目標装置の好ましいネットワークを、前記メッセージの前記IPv6パケットヘッダにおいてエンコードされた前記拡張固有ローカルアドレス(EULA)において示される、より小電力のネットワークとして選択する判断;または
それらの任意の組合せを含む、請求項17に記載の方法。
【請求項19】
前記メッセージの緊急度に応じて伝送制御プロトコル(TCP)またはユーザ・データグラム・プロトコル(UDP)
のどちらを用いて前記メッセージを伝送するべきであるか
を判断することを含む、請求項17または18に記載の方法。
【発明の詳細な説明】
【背景技術】
【0001】
背景
本開示は、小電力またはスリーピー状態装置を含むさまざまな装置が住宅ネットワークまたは同様の環境において通信することを可能にする効率的通信に関する。
【0002】
このセクションは、この技術のさまざまな局面に関係づけられ得る技術のさまざまな局面に読み手を導くよう意図され、それらの技術を以下において記載し、および/または主張する。この議論は、本開示のさまざまな局面のよりよい理解を促すために読み手に対して背景情報を提供することにおいて役立つと考えられる。したがって、これらの述べられる内容はこの観点において読まれるべきであり、先行技術を認めるものとして読まれるべきではないことが理解されるべきである。
【0003】
ネットワーク接続された装置が住宅中に現れている。これらの装置のいくつかは、転送プロトコルを用いて、単一のネットワークタイプ(たとえばWiFi(登録商標)接続)を通してお互いと通信することが可能であることが多い。バッテリにより電力を供給されるかまたは低減された充電圧を受ける一部の装置では、より電力集中型でない接続プロトコルを用いることが望まれるかもしれない。しかしながら、一部のシナリオでは、より小電力のプロトコルに接続される装置は、より高電力のプロトコル(たとえばWiFi)に接続される装置と通信することはできないかもしれない。
【0004】
さらに、多数の電子装置が、現在、ワイヤレスネットワークに対する接続が可能である。たとえば、スマートメータ技術は、ワイヤレスネットワークを用いて、居住特性と関連付けられる電気エネルギ消費データを、モニタリング、課金情報、などのためにユーティリティ会社に通信し戻す。したがって、多数のワイヤレスネットワーキング規格が、現在、電子装置が互いと通信することを可能にするよう利用可能である。一部のスマートメータ実現例は、たとえば、インターネットプロトコルバージョン6(IPv6)を小電力ワイヤレスパーソナルエリアネットワーク(6LoWPAN)にわたって用いて、電子装置がスマートメータと通信することを可能にする。しかしながら、6LoWPANのような現在利用可能なワイヤレスネットワーキング規格は、一般的には1つ以上の実際のシナリオに対して、居所または家中に分散される電子装置をサポートするように十分には備えられていないことが一般的かもしれない。つまり、現在利用可能なワイヤレスネットワーキング規格は、1つ以上の公知の実際の制約に鑑み、安全であるが単純な、消費者に優しい態様で、ネットワークのすべての電子装置を効率的に接続しないかもしれない。さらに、1つ以上の実際のシナリオでは、現在利用可能なワイヤレスネットワーキング規格は、新たな電子装置を既存のワイヤレスネットワークにアドホックな態様で追加する効率的な方法を提供しないかもしれない。
【0005】
加えて、住宅内または住宅の周りでの使用のために電子装置のためのワイヤレスネットワーク規格を提供する際には、異なる装置がネットワークへのアクセスを得る方法を学習するよう、開いたプロトコルを提供するワイヤレスネットワーク規格を用いることが有益であろう。さらに、住宅と関連づけられ得る電子装置の数が与えられるとして、ワイヤレスネットワーク規格はインターネットプロトコルバージョン6(IPv6)通信をサポートすることができ、各装置は、独自のIPアドレスを有し、インターネット(登録商標)を介して、住宅環境におけるローカルネットワークを介してなどによりアクセスされることができてもよいことは有益であろう。さらに、ワイヤレスネットワーク規格は、最小の電力量を用いて、電子装置がワイヤレスネットワーク内で通信することを可能にすることは有用であろう。これらの特徴を考慮して、1つ以上の欠点が、オープンプロトコルを有
し、住宅内および住宅の周りで電子装置のために用いられ得る小電力のIPv6ベースのワイヤレスメッシュネットワーク規格を与えるコンテキストにおいて、各公知の現在利用可能なワイヤレスネットワーキング規格によって提示されると考えられる。たとえば、Bluetooth(登録商標)、Dust Networks(登録商標)、Z-wave(登録商標)、WiFi(登録商標)、およびZigBee(登録商標)、のようなワイヤレスネットワーク規格は、上で論じた所望の特徴の1つ以上を提供しない。
【0006】
Bluetoothは、たとえば、短い距離にわたって、短波無線伝送を介して通信するための
ワイヤレスネットワーク規格を提供する。したがって、Bluetoothのワイヤレスネットワ
ーク規格は、家中に配置される多数の電子装置の通信ネットワークをサポートしないかもしれない。さらに、Bluetoothのワイヤレスネットワーク規格はワイヤレスメッシュ通信
またはIPv6アドレスをサポートしないかもしれない。
【0007】
上に言及されたように、Dust Networksによって提供されるワイヤレスネットワーク規
格も、住宅に配置された電子装置が互いと効率的に通信することを可能にするであろう1つ以上の特徴に関して、1つ以上の欠点をもたらし得る。特に、Dust Networksのワイヤ
レスネットワーク規格は、Dust Networksのネットワーク上で動作する装置とインターフ
ェイスするよう他のものによって用いられ得るオープンプロトコルを提供しないかもしれない。その代わりに、Dust Networksは、アセンブリライン、化学工場などのような産業
環境にある装置間の通信を容易にするよう設計され得る。したがって、Dust Networksの
ワイヤレスネットワーク規格は、各装置が互いと通信し、他の装置からの命令を聞くようにしてもよい予め規定された時間窓(タイムウィンドウ)を有する信頼性のある通信ネットワークを提供することに向けられ得る。この態様では、Dust Networksのワイヤレスネ
ットワーク規格は、住宅内での使用に対して消費者電子装置で実現するのが経済的ではないかもしれない、洗練されかつ相対的に高価な無線送信機を必要とするかもしれない。
【0008】
Dust Networksのワイヤレスネットワーク規格のように、Z-waveと関連づけられるワイ
ヤレスネットワーク規格はオープンプロトコルではないかもしれない。その代わりに、Z-waveのワイヤレスネットワーク規格は特定の送受信機チップを自分の装置に埋込む認証された顧客に対してのみ利用可能であり得る。さらに、Z-waveのワイヤレスネットワーク規格はIPv6ベースの通信をサポートしないかもしれない。つまり、Z-waveのワイヤレスネットワーク規格は、Z-wave装置上において生成されたデータを、インターネットを介して送信され得るIPベースのデータに変換するようブリッジ装置を必要とするかもしれない。
【0009】
ここで、ZigBeeのワイヤレスネットワーク規格を参照して、ZigBeeは、一般に、ZigBee(登録商標)ProおよびZigBee(登録商標)IPとして公知の2つの規格を有する。さらに
、ZigBee(登録商標)Proは、ワイヤレスメッシュネットワーキングに対するサポートの
コンテキストにおいて1つ以上の欠点を有し得る。その代わりに、ZigBee(登録商標)Proは、ZigBee(登録商標)Proネットワークにおいて各装置間において通信を容易にする中央装置に少なくとも一部依存し得る。その中央装置に対する電力要件の増大に加えて、あるワイヤレストラフィックを処理または拒絶するままであり続ける装置は、それらのハウジング内においてさらなる熱を発生させ得、それは、装置によって得られる温度読取値のような一部のセンサ読取値を変えるかもしれない。そのようなセンサ読取値は、住宅内の各装置がどのように動作し得るかを判断する際に有用であり得るので、装置内において、センサ読取値を変え得る不必要な熱の生成を回避することは有益であり得る。加えて、ZigBee(登録商標)ProはIPv6通信をサポートしないかもしれない。
【0010】
ここでZigBee(登録商標)IPを参照して、ZigBee(登録商標)IPは、直接的な装置から装置への通信の文脈において1つ以上の欠点をもたらし得る。ZigBee(登録商標)IPは、
中央ルータまたは装置への装置データの中継による通信の促進に向けられる。したがって、中央ルータまたは装置は持続的な電力供給を必要とし得、したがって、装置間の通信のための小電力手段を表わさないかもしれない。さらに、ZigBee(登録商標)IPは、単一のネットワークにおいて用いられ得るノードの数において実際的な限度を有し得る(つまりネットワークにつき~20個のノード)。さらに、ZigBee(登録商標)IPは、高帯域、処理およびメモリ要件を示し得る「リップル」ルーティングプロトコル(RPL)を用い、それは、ZigBee(登録商標)IPに接続される装置ごとに追加の電力を伴うかもしれない。
【0011】
上で論じたZigBeeワイヤレスネットワーク規格のように、WiFiのワイヤレスネットワークは、小出力要件を有する装置間において通信を可能にすることにおいて1つ以上の欠点を呈し得る。たとえば、WiFiのワイヤレスネットワーク規格も、各ネットワーク接続された装置が常に電源オンされることを必要とし、さらには、中央ノードまたはハブの存在を必要とし得る。当該技術分野において公知のように、WiFiは、相対的に高帯域のデータ送信(たとえばビデオをストリーミングする、装置を同期させるなど)に対して理想的であり得る、相対的に一般的なワイヤレスネットワーク規格である。したがって、WiFi装置は、装置間のデータ送信の持続的なストリームをサポートするよう、継続的な電源または再充電可能なバッテリに典型的には結合される。さらに、WiFiのワイヤレスネットワークはワイヤレスメッシュネットワーキングをサポートしないかもしれない。それでも、WiFiは時にいくつかのより小電力プロトコルよりもよい接続性を提示し得る。
【発明の概要】
【課題を解決するための手段】
【0012】
概要
ここに開示されるある実施の形態の概要を以下に述べる。これらの局面は単に、読み手に対して、これらのある実施の形態の簡単な概要を提供するために提示されること、およびこれらの局面は本開示の範囲を限定するようには意図されないことが理解されるべきである。それどころか、本開示は、以下に述べられないかもしれないさまざまな局面を包含し得る。
【0013】
システムおよび方法は、住宅環境または同様の環境における装置のファブリックネットワークを介しての効率的な通信に対して与えられる。たとえば、電子装置は、電力および信頼性の問題のバランスをとるように通信を効率的に制御し、拡張固有ローカルアドレス(EULA)を用いるインターネットプロトコルバージョン6(IPv6)パケットヘッダの解析によって、メッセージをある好ましいネットワークに効率的に通信し、ファブリックネットワークの全体にわたって、ソフトウェア更新およびステータス報告を効率的に通信し、および/または容易かつ効率的にファブリックネットワークに加わってもよい。
【0014】
たとえば、電子装置は、ネットワークスタックを動作させる命令を記憶するメモリまたは記憶装置と;命令を実行するプロセッサと;ネットワーク接続された装置のファブリックに加わり、ネットワークスタックを用いて、装置のファブリックの目標装置にメッセージを通信するネットワークインターフェイスとを含んでもよい。ネットワークスタックは、アプリケーションペイロードに、メッセージにおいて送信されるべきデータを与えるアプリケーション層と;アプリケーションペイロードをメッセージの一般的なメッセージフォーマットにおいてカプセル化するプラットフォーム層と;ユーザ・データグラム・プロトコル(UDP)または伝送制御プロトコル(TCP)のいずれかを用いて、メッセージを選択可能に伝送するトランスポート層と;メッセージを、インターネットプロトコルバージョン6(IPv6)を用いて1つ以上のネットワークを介して通信するネットワーク層とを含んでもよい。これらのネットワークは、たとえば802.11ワイヤレスネットワーク、802.15.4ワイヤレスネットワーク、電力線網、セルラーネットワーク、および/またはイーサネット(登録商標)ネットワークを含んでもよい。さらに、アプリ
ケーション層、プラットフォーム層、トランスポート層、および/またはネットワーク層は、目標ノードへのメッセージの通信の態様のプロパティを、メッセージのタイプ、メッセージが送信されることになるネットワーク、メッセージがファブリックを通って移動し得る距離、電子装置の電力消費挙動、目標装置の電力消費挙動、および/または電子装置と目標装置との間においてメッセージを通信することになる、装置のファブリックの介在装置の電力消費挙動に少なくとも一部基いて判断してもよい。さらに、通信の態様のプロパティを変動させることは、電子装置、目標装置、および/または介在装置に、異なる量の電力を消費させ、メッセージを、目標ノードに、より信頼性高くまたはそれほど信頼性高くなく到達させてもよい。
【0015】
別の例では、有形の、非一時的なコンピュータ読取可能媒体は、住宅環境において装置のファブリックのうちの他の電子装置に通信可能に接続される第1の電子装置によって実行されるよう含んでもよい。これらの命令は、装置のファブリックの第1のネットワークをわたって第2の電子装置から第1の電子装置でインターネットプロトコルバージョン6(IPv6)メッセージを受信する命令を含んでもよい。メッセージは目標電子装置に向けられてもよい。命令は、さらに、メッセージのIPv6ヘッダにおいてエンコードされる拡張固有ローカルアドレスを識別する命令を含んでもよい。ここで、拡張固有ローカルアドレスは、第2のネットワークが、目標電子装置に達するのに、より好まれることを示してもよい。命令は、さらに、拡張固有ローカルアドレスに少なくとも一部基いて、第2のネットワークを用いて、メッセージを装置のファブリックを介して目標電子装置に向かって通信する命令を含んでもよい。
【0016】
ファブリックネットワークをわたってソフトウェア更新を転送する方法は、ファブリックネットワークにおける第1の装置からファブリックネットワークにおける第2の装置またはローカルサーバもしくは遠隔サーバにイメージクエリメッセージを送信することを含んでもよい。イメージクエリメッセージは、第1の装置に記憶されるソフトウェアおよび第1の装置の転送能力に関する情報を含んでもよい。イメージクエリ応答は第2の装置またはローカルサーバもしくは遠隔サーバから第1の装置によって受信されてもよい。イメージクエリ応答は、ソフトウェア更新が利用可能であり、第1の装置がソフトウェア更新をダウンロードすることを可能にするよう統一的資源識別子(URI)を有するダウンロード情報を含むかどうかを示してもよい。イメージクエリメッセージは、送信側装置に記憶されるソフトウェアおよび送信側装置の転送能力に関する送信側情報と更新優先度とを含んでもよい。URIを用いて、ソフトウェア更新を第1の装置において送信側装置からダウンロードしてもよい。ソフトウェアは、更新優先度およびファブリックネットワークにおけるネットワークトラフィックに少なくとも一部基いた時間にダウンロードされてもよく、ソフトウェアは、イメージクエリおよびイメージクエリ応答において示された共通の転送能力に少なくとも一部が基いた態様でダウンロードされてもよい。
【0017】
さらなる例では、有形の、非一時的なコンピュータ読取可能媒体はステータス報告フォーマットを記憶してもよい。ステータス報告フォーマットは、複数のステータス更新タイプのうちのあるステータス更新タイプを示すプロファイルフィールドと、報告されているステータスを示すステータスコード-ステータスコードは、ステータス更新タイプに少なくとも一部が基いた態様において解釈されてもよい-と、さらなるステータスが、ステータス報告フォーマットを用いて形成されたステータス報告に含まれているかどうかを示す、次のステータスフィールドとを含んでもよい。
【0018】
電子装置の別の例は、第1の電子装置が第2の電子装置を含むファブリックネットワークと対になることを可能にするよう命令を記憶するメモリと;命令を実行するプロセッサと;802.11および802.15.4論理ネットワークにアクセスするネットワークインターフェイスとを含む。命令は、第1の802.15.4論理ネットワークを介して
第2の電子装置と通信を確立する命令を含んでもよい。第2の電子装置は、ファブリックネットワークと対にされてもよく、ファブリックネットワークにおいて他の論理ネットワークを介してサービスと通信してもよい。命令は、さらに、第1の電子装置が第1の802.11論理ネットワークに加わることを可能にするために第2の電子装置を介してサービスからネットワーク構成情報を受信する命令と;第1の802.11論理ネットワークをわたって通信を確立する命令と;第1の802.11論理ネットワークを介してサービスに接続する命令と;サービスとの通信を介してファブリックネットワークと対になるよう登録する命令とを含んでもよい。
【0019】
上記の特徴のさまざまな改良が本開示のさまざまな局面との関係において用いられてもよい。さらなる特徴も、同様に、これらのさまざまな局面に組入れられ得る。これらの改良およびさらなる特徴は、個々に、または任意の組合せで用いられてもよい。たとえば、以下に論じられるさまざまな特徴は、提示される実施例のうちの1つ以上との関係において、本開示の上記の局面のうちの任意のもの内に、単独または任意の組合せで組入れられ得る。上に提示された簡潔な概要は、特許請求される主題に対する限定なしに、読み手を本開示の実施の形態のある局面および文脈に馴染ませるようにのみ意図されるものである。
【0020】
図面の簡単な説明
本開示のさまざまな局面は、以下の詳細な説明を読み、かつ図面を参照することにより、よりよく理解され得る。
【図面の簡単な説明】
【0021】
【
図1】ある実施の形態に従って、効率的ネットワーク層プロトコルを用いて、住宅環境内に配置される他の装置と通信し得る一般的な装置のブロック図を示す。
【
図2】ある実施の形態に従って、
図1の一般的な装置が効率的ネットワーク層プロトコルを介して他の装置と通信し得る住宅環境のブロック図を示す。
【
図3】ある実施の形態に従って、
図2の住宅環境において示される装置と関連づけられる例示的なワイヤレスメッシュネットワークを示す。
【
図4】ある実施の形態に従って、
図2の住宅環境に対する通信システムを特徴づける開放型システム間相互接続(OSI)モデルのブロック図である。
【
図5】ある実施の形態に従って、
図4のOSIモデルにおける効率的ネットワーク層の詳細図を示す。
【
図6】ある実施の形態に従って、ルーティング・インフォメーション・プロトコル-ネクスト・ジェネレーション(RIPng)ネットワークをルーティング機構として
図5の効率的ネットワーク層において実現するための方法のフローチャートを示す。
【
図7A】ある実施の形態に従って、
図6の方法のRIPngネットワークがどのように実現され得るかの例を示す。
【
図7B】ある実施の形態に従って、
図6の方法のRIPngネットワークがどのように実現され得るかの例を示す。
【
図7C】ある実施の形態に従って、
図6の方法のRIPngネットワークがどのように実現され得るかの例を示す。
【
図7D】ある実施の形態に従って、
図6の方法のRIPngネットワークがどのように実現され得るかの例を示す。
【
図8】ある実施の形態に従って、
図1の一般的な装置内にセキュリティ証明書を埋込むことを含む製造プロセスのブロック図を示す。
【
図9】ある実施の形態に従って、
図5の効率的ネットワーク層においてデータグラム・トランスポート・レイヤー・セキュリティ(DTLS)プロトコルを用いて、
図2の住宅環境における装置間における例示的なハンドシェイクプロトコルを示す。
【
図10】実施の形態に従って、単一の論理ネットワークトポロジを有するファブリックネットワークを示す。
【
図11】実施の形態に従って、星形ネットワークトポロジを有するファブリックネットワークを示す。
【
図12】実施の形態に従って、重なったネットワークトポロジを有するファブリックネットワークを示す。
【
図13】実施の形態に従って、1つ以上のファブリックネットワークと通信するサービスを示す。
【
図14】実施の形態に従って、ファブリックネットワークにおいて通信可能な接続状態にある2つの装置を示す。
【
図15】実施の形態に従って、ファブリックネットワークにおいて装置をアドレス指定するよう用いられてもよい固有ローカルアドレスフォーマット(ULA)を示す。
【
図16】実施の形態に従って、ハブネットワーク上で周辺装置をプロキシ化するプロセスを示す。
【
図17】実施の形態に従って、ファブリックネットワークによりデータを送信するために用いられてもよいタグ‐長さ‐値(TLV)パケットを示す。
【
図18】実施の形態に従って、ファブリックネットワークにより
図17のTLVパケットを含んでもよいデータを送信するために用いられてもよい一般的なメッセージプロトコル(GMP)を示す。
【
図19】実施の形態に従って、
図18のGMPのメッセージヘッダフィールドを示す。
【
図20】実施の形態に従って、
図18のGMPのキー識別子フィールドを示す。
【
図21】実施の形態に従って、
図18のGMPのアプリケーションペイロードフィールドを示す。
【
図22】実施の形態に従って、ファブリックネットワークにおいてステータス情報を更新するために用いられてもよいステータス報告スキーマを示す。
【
図23】実施の形態に従って、
図22のステータス報告スキーマのプロファイルフィールドを示す。
【
図24】実施の形態に従って、クライアントとサーバとの間においてソフトウェア更新を実行するために用いられてもよいプロトコルシーケンスを示す。
【
図25】実施の形態に従って、
図24のプロトコルシーケンスにおいて用いられてもよいイメージクエリフレームを示す。
【
図26】実施の形態に従って、
図25のイメージクエリフレームのフレーム制御フィールドを示す。
【
図27】実施の形態に従って、
図25のイメージクエリフレームの製品仕様フィールドを示す。
【
図28】実施の形態に従って、
図25のイメージクエリフレームのバージョン仕様フィールドを示す。
【
図29】実施の形態に従って、
図25のイメージクエリフレームのロケール仕様フィールドを示す。
【
図30】実施の形態に従って、
図25のイメージクエリフレームの被サポート完全性タイプフィールドを示す。
【
図31】実施の形態に従って、
図25のイメージクエリフレームの被サポート更新スキームフィールドを示す。
【
図32】実施の形態に従って、
図24のプロトコルシーケンスにおいて用いられてもよいイメージクエリ応答フレームを示す。
【
図33】実施の形態に従って、
図32のイメージクエリ応答フレームの統一的リソース識別子(URI)フィールドを示す。
【
図34】実施の形態に従って、
図32のイメージクエリ応答フレームの完全性仕様フィールドを示す。
【
図35】実施の形態に従って、
図32のイメージクエリ応答フレームの更新スキームフィールドを示す。
【
図36】実施の形態に従って、ファブリックネットワークにおいて装置間でデータを管理するようデータ管理プロトコルを用いるよう用いられるシーケンスを示す。
【
図37】実施の形態に従って、
図36のシーケンスにおいて用いられてもよいスナップショット要求フレームを示す。
【
図38】実施の形態に従って、
図37のスナップショット要求フレームを用いてアクセスされてもよい例示プロファイルスキーマを示す。
【
図39】実施の形態に従って、プロファイルスキーマにおいてパスを示してもよいパスのバイナリフォーマットである。
【
図40】実施の形態に従って、
図36のシーケンスにおいて用いられてもよい要求監視フレームを示す。
【
図41】実施の形態に従って、
図36のシーケンスにおいて用いられてもよい周期的な更新要求フレームを示す。
【
図42】実施の形態に従って、
図36のシーケンスにおいて用いられてもよいリフレッシュ要求フレームを示す。
【
図43】実施の形態に従って、
図36のシーケンスにおいて用いられてもよいビュー取消要求を示す。
【
図44】実施の形態に従って、
図36のシーケンスにおいて用いられてもよいビュー応答フレームを示す。
【
図45】実施の形態に従って、
図36のシーケンスにおいて用いられてもよい明示的な更新要求フレームを示す。
【
図46】実施の形態に従って、
図36のシーケンスにおいて用いられてもよいビュー更新要求フレームを示す。
【
図47】実施の形態に従って、
図36のシーケンスを用いて更新されてもよい更新項目フレームを示す。
【
図48】実施の形態に従って、
図36のシーケンスにおいて更新応答メッセージとして送信されてもよい更新応答フレームを示す。
【
図49】実施の形態に従って、大容量データ転送において、送信側と受信側との間において、通信可能な接続を示す。
【
図50】実施の形態に従って、
図49の送信側によって通信可能な接続を開始するために用いられてもよいSendInit(送信開始)メッセージを示す。
【
図51】実施の形態に従って、
図50のSendInitメッセージの転送制御フィールドを示す。
【
図52】実施の形態に従って、
図51のSendInitメッセージの範囲制御フィールドを示す。
【
図53】実施の形態に従って、
図50の送信側によって送信される
図50のSendInitメッセージによって提案される通信可能な接続を受入れるために用いられてもよいSendAccept(送信受容)メッセージを示す。
【
図54】実施の形態に従って、
図50の送信側によって送信される
図50のSendInitメッセージによって提案される通信可能な接続を拒絶するために用いられてもよいSendReject(送信拒絶)メッセージを示す。
【
図55】実施の形態に従って、
図50の受信側によって提案される通信可能な接続を受入れるために用いられてもよいReceiveAccept(受信受容)メッセージを示す。
【
図56】実施の形態に従って、拡張固有ローカルアドレス(EULA)を用いるIPv6パケットヘッダの例のブロック図である。
【
図57】実施の形態に従って、2つのネットワークを有するファブリックトポロジを介して
図56のIPv6パケットを有するIPv6パケットを通信する例のブロック図である。
【
図58】実施の形態に従って、
図56のIPv6パケットヘッダを用いて、
図57のファブリックを介してIPv6パケットを効率的に通信するための方法のフローチャートである。
【
図59】実施の形態に従って、1つ以上の信頼度因子に少なくとも一部基いて、メッセージを送信する効率的なトランスポートプロトコルを選択するための方法のフローチャートである。
【
図60】実施の形態に従って、1つの装置が他の装置上で方法を呼び出す、装置のファブリックの使用例を示す図である。
【
図61】実施の形態に従って、警報メッセージが多くの小電力のスリーピー状態装置を通して伝播される、装置のファブリックの使用例を示す図である。
【
図62】実施の形態に従って、装置のファブリック内に新たな装置を導入する方法のフローチャートである。
【
図63】実施の形態に従って、装置のファブリック内に新たな装置を導入する方法のフローチャートである。
【
図64】実施の形態に従って、装置のファブリック内に新たな装置を導入する方法のフローチャートである。
【
図65】実施の形態に従って、装置のファブリック内に新たな装置を導入する別の方法のフローチャートである。
【
図66】実施の形態に従って、装置のファブリック内に新たな装置を導入する別の方法のフローチャートである。
【
図67】実施の形態に従って、装置のファブリック内に新たな装置を導入する別の方法のフローチャートである。
【発明を実施するための形態】
【0022】
詳細な説明
本開示の1つ以上の具体的な実施の形態が以下に記載される。これらの記載される実施の形態はここに開示される技術の例示に過ぎない。加えて、これらの実施の形態の簡潔な記載を与える努力において、実際の実現例のすべての特徴は本明細書には記載されないかもしれない。任意のそのような実際の実現例の開発においては、任意のエンジニアリングまたは設計プロジェクトにあるように、1つの実現例から他の実現例に変動し得る、システム関連およびビジネス関連の制約とのコンプライアンスのような、開発者の特定のゴールを達成するように、多数の実現例に特定の判断がなされなければならないことが理解されるべきである。さらに、そのような開発努力は複雑で時間のかかるものであるかもしれないが、本開示の恩恵を有する当業者にとっては、日常的な設計、組立および製造作業であろう。
【0023】
本開示のさまざまな実施の形態の要素を紹介するにあたり、冠詞「a」「an」および「the」はそのような要素が1つ以上あることを意味するよう意図される。「備える」、「含む」、および「有する」という表現は、包含的であり、挙げられた要素以外のさらなる要素が存在し得ることを意味するよう意図される。加えて、本開示の「一実施の形態」または「ある実施の形態」に対する参照は、記載される特徴を同じく組込むさらなる実施の形態の存在を排除するよう解釈されるよう意図されるものではないことが理解されるべきである。
【0024】
ここで用いられるように、「HVAC」という用語は、暖房および冷房の両方、暖房のみ、冷房のみを与えるシステム、ならびに加湿、除湿および換気などのような他の居住者快適さおよび/またはコンディショニング機能を与えるシステムを含む。
【0025】
ここで用いられるように、「電力収集」、「電力共有」および「盗電」という語は、住宅装置に言及するときには、電力変換器から、機器負荷を介して、電力変換器から直接的に直接または共通の配線源を用いて電力を引出すことを指す。
【0026】
ここで用いられるように、「サーモスタット」という語は、構内の少なくとも一部内において温度および/または湿度のようなパラメータを調整するための装置またはシステムを意味する。「サーモスタット」という語は、暖房および/もしくは冷房システムのための制御ユニット、またはヒータもしくは空気清浄器のコンポーネント部分を含んでもよい。ここで用いられるように、「サーモスタット」という語は、さらに、一般的に、洗練され、カスタマイズされ、省エネルギのHVAC制御機能を与えながらも、同時に、視覚的に魅力的であり、威圧的でなく、外観が上品で、非常に楽しく容易に用いられるよう構成され適合された、汎用性のある感知および制御ユニット(VSCUユニット)も指し得る。
【0027】
ここで用いられるように、「ハザード検出器」という語は、火事(たとえば煙、熱、一酸化炭素)および/または他の危険な状態(たとえば極端な温度、危険なガスの蓄積など)の形跡を検出し得る任意の住宅装置を指す。
【0028】
本開示は、住宅環境において互いと通信する装置によって用いられてもよい効率的通信に関する。本開示の効率的通信は、装置および/またはサービスのファブリックが住宅環境において通信することを可能にしてもよい。実際、家で生活する消費者は、彼らの家にあるさまざまな装置のすべてが効率よく動作されるように、それらの装置の動作を調整することは有用であることを見出し得る。たとえば、サーモスタット装置を用いて、家の温度を検出し、その検出された温度に基づいて他の装置(たとえば照明)の動作を調整してもよい。サーモスタット装置は家の外の温度が日中時間に対応することを示し得る温度を検出してもよい。サーモスタット装置は、次いで、家に利用可能な日光があり得ること、およびしたがって照明を切るべきであることを、照明装置に伝えてもよい。他の例では、スマートハザード検出器は、在宅を示す環境状態を検出することができてもよい。サーモスタット装置は、これらの環境状態に対してハザード検出器に問合せしてもよく、それに従ってその動作を変動させてもよい。効率性に加えて、消費者は、一般的に、最小限の量のセットアップまたは初期化を必要とするユーザに優しい装置を好み得る。換言すれば、消費者は、一般的に、少数の初期化ステップを実行した後完全に動作可能となる装置、特に年齢または技術的熟練に関係なくほとんどどのような個人によっても実行され得るもののような装置を好み得る。
【0029】
住宅環境内において互いとの間でデータを効果的かつ効率的に通信するために、装置は、装置間で通信を管理するよう1つ以上の論理ネットワークを含むファブリックネットワークを用いてもよい。換言すれば、効率的ファブリックネットワークは、住宅内における多数の装置が1つ以上の論理ネットワークを用いて互いと通信することができるようにしてもよい。ファブリックネットワークは、たとえば、通信を管理するために効率的ネットワーク層、効率的プラットフォーム層、および/または効率的アプリケーション層を伴う効率的通信スキームによってサポートされてもよい。ファブリックネットワークは、各接続された装置が固有のローカルアドレス(ULA)を有するように、インターネットプロトコルバージョン(IPv6)通信をサポートしてもよい。いくつかの例では、IPv6通信は拡張固有ローカルアドレス(EULA)を用いてもよい。さらにさらに、各装置が家と統合することを可能にするためには、各装置が低量の電力を用いてネットワーク内において通信することが有用であり得る。つまり、装置が低い電力を用いて通信することを可能にすることによって、それらの装置は、継続的な電源に接続される(たとえばバッテリにより電源を供給される)ことなく、家の任意の場所に配置され得る。
【0030】
通信プロトコルの相対的により下位の層(たとえばネットワーク層)の上において、ファブリック効率的ネットワーク層は、住宅内の多数の装置がワイヤレスメッシュネットワークを介して互いと通信し得る通信ネットワークを確立してもよい。通信ネットワークは、各接続された装置が一意のインターネットプロトコル(IP)アドレスを有するように
、インターネットプロトコルバージョン6(IPv6)通信をサポートしてもよい。さらに、各装置が家と統合することを可能にするためには、各装置が低量の電力を用いてネットワーク内において通信することが有用であり得る。つまり、装置が低い電力を用いて通信することを可能にすることによって、それらの装置は、継続的な電源に接続されることなく、家の任意の場所に配置され得る。
【0031】
効率的ネットワーク層は、したがって、通信ネットワークの確立がほとんどユーザ入力を伴わず、装置間の通信がエネルギをほとんど伴わず、通信ネットワークそれ自体が安全であるように、データを2つ以上の装置間において転送し得る手順を確立してもよい。一実施の形態では、効率的ネットワーク層は、ルーティング・インフォメーション・プロトコル-ネクスト・ジェネレーション(RIPng)をそのルーティング機構として、およびデータグラム・トランスポート・レイヤー・セキュリティ(DTLS)プロトコルをそのセキュリティ機構として-用いるIPv6ベースの通信ネットワークであってもよい。したがって、効率的ネットワーク層は、接続された装置間において通信される情報を保護しながら、装置を家に追加するかまたは装置を家から除去するための単純な手段を提供し得る。
【0032】
通信プロトコルの相対的により上位の層(たとえばプラットフォーム層および/またはアプリケーション層)の上において、装置のファブリックを形成し維持してもよい。これらの層は、ファブリック中において、パラメトリックソフトウェア更新およびステータス報告を可能にしてもよい。これらの層は、さらに、「スリーピー状態」またはバッテリにより電力供給される装置の電力制約のような、あるネットワーク電力制約を認識し得る通信を提供してもよく、これらのファクタを考慮してメッセージを通信してもよい。
【0033】
したがって、本開示の実施の形態は、ファブリックに接続された装置が、装置にとって既知のプロトコルおよび/またはプロファイルのリストを用いて互いと通信することができるようにする1つ以上の論理ネットワークを含むファブリックネットワークのシステムおよび方法に関する。装置間の通信は、通信する装置がファブリック内においてどの論理ネットワークに接続されるかに関わらず装置が装置間における通信を理解することができる典型的なメッセージフォーマットに従ってもよい。このメッセージフォーマット内においては、受信側装置が記憶および/または処理するために、データのペイロードが含まれてもよい。フォーマットおよびペイロードのコンテンツは、(1つ以上のプロトコルを含む)プロファイルおよび/またはそのプロファイルに従って送信されているメッセージのタイプを示すペイロード内のヘッダに従って変動してもよい。
【0034】
ある実施の形態に従うと、ファブリック内における2つ以上の装置は、ステータス報告プロトコルまたはプロファイルを用いて通信してもよい。たとえば、ある実施の形態では、ステータス報告プロトコルまたはスキーマは、ファブリックに接続される装置に利用可能なコアプロファイルに含まれてもよい。ステータス報告プロトコルを用いて、装置はファブリックにおける他の装置にステータス情報を送信し、またはそれらの装置からステータス情報を要求してもよい。
【0035】
同様に、ある実施の形態では、ファブリックにおける2つ以上の装置は更新ソフトウェアプロトコルまたはプロファイルを用いて通信してもよい。いくつかの実施の形態では、更新ソフトウェアプロトコルまたはスキーマは、ファブリックに接続される装置に利用可能なコアプロファイルに含まれてもよい。更新ソフトウェアプロトコルを用いて、装置は、ファブリック内において更新の存在を要求、送信または通知してもよい。
【0036】
ある実施の形態では、ファブリックにおける2つ以上の装置はデータ管理プロトコルまたはプロファイルを用いて通信してもよい。いくつかの実施の形態では、データ管理プロ
トコルまたはスキーマは、ファブリックに接続される装置に利用可能なコアプロファイルに含まれてもよい。更新データ管理プロトコルを用いて、装置は、他の装置に記憶されるノード常駐情報を要求、閲覧または追跡してもよい。
【0037】
さらに、ある実施の形態では、ファブリックにおける2つ以上の装置は大容量データ転送プロトコルまたはプロファイルを用いてデータを転送してもよい。いくつかの実施の形態では、大容量データ転送プロトコルまたはスキーマは、ファブリックに接続される装置に利用可能なコアプロファイルに含まれてもよい。大容量データ転送プロトコルを用いて、装置は、ファブリックにおける任意の論理ネットワークを用いて大容量データを開始、送信または受信してもよい。ある実施の形態では、大容量データ転送プロトコルを用いる受信側または送信側装置は装置間で同期転送を「駆動」できてもよい。他の実施の形態では、大容量転送は非同期転送で実行されてもよい。
【0038】
ファブリック導入
導入として、
図1は、住宅環境内における他の同様の装置と通信し得る一般的な装置10の例を図示する。一実施の形態では、装置10は、1つ以上のセンサ12、ユーザインターフェイスコンポーネント14、電源16(たとえば電力接続および/またはバッテリを含む)、ネットワークインターフェイス18、プロセッサ20などを含み得る。特定のセンサ12、ユーザインターフェイスコンポーネント14および電源構成は、各装置10で同じまたは類似してもよい。しかしながら、いくつかの実施の形態では、各装置10は、装置タイプまたはモデルに基いて、特定のセンサ12、ユーザインターフェイスコンポーネント14および電源構成などを含んでもよいことが注目されるべきである。
【0039】
センサ12は、ある実施の形態では、加速度、温度、湿度、水、供給電力、近接度、外部の動き、装置の動き、音声信号、超音波信号、光信号、炎、煙、一酸化炭素、全地球測位システム(GPS)信号、無線周波数(RF)、他の電磁信号または電磁場等のようなさまざまな特性を検出してもよい。したがって、センサ12は、温度センサ、湿度センサ、ハザード関連センサまたは他の環境的センサ、加速度計、マイクロフォン、光学センサを、カメラ(たとえば、電荷結合素子もしくはビデオカメラ)、能動的もしくは受動的輻射センサ、GPSレシーバまたは無線周波数識別検出器まで、およびそれらを含んで、含んでもよい。
図1は単一のセンサを伴う実施の形態を示すが、多くの実施の形態は複数のセンサを含んでもよい。ある例では、装置10は1つ以上の一次センサおよび1つ以上の二次センサを含んでもよい。ここで、一次センサは、装置のコア動作(たとえばサーモスタットにおいて温度を検知することまたは煙検出器において煙を検知することなど)に対して中心のデータを検知してもよく、一方、二次センサは、他のタイプのデータ(たとえば動き、光または音)を検知してもよく、それをエネルギ効率目的またはスマート動作目的のために用いることができる。
【0040】
装置10における1つ以上のユーザインターフェイスコンポーネント14はユーザから入力を受取ってもよく、および/またはユーザに対して情報を提示してもよい。受取られた入力を用いて設定を判断してもよい。ある実施の形態では、ユーザインターフェイスコンポーネントは、ユーザの動きに応答する機械的コンポーネントまたは仮想コンポーネントを含んでもよい。たとえば、ユーザは、摺動するコンポーネントを(たとえば垂直トラックまたは水平トラックに沿って)機械的に移動させるか、もしくは回転可能なリングを(円形のトラックに沿って)回転させることができ、またはタッチパッドに沿ったユーザの動きを検出してもよい。そのような動きは設定の調整に対応してもよく、それは、ユーザインターフェイスコンポーネント104の絶対的な位置またはユーザインターフェイスコンポーネント104の変位に基づいて判断することができる(たとえば回転可能リングコンポーネントの10度の回転ごとに1°Fだけ設定点温度を調整することなど)。物理的な可動ユーザインターフェイスコンポーネントおよび仮想可動ユーザインターフェイス
コンポーネントは、ユーザが、明らかな連続体の一部に沿って設定することを可能にすることができる。したがって、ユーザは、(たとえばアップボタンおよびダウンボタンが用いられる場合にそうであるように)2つの別個のオプションの間で選択を行なうことに制限されなくてもよく、可能な設定値の範囲に沿って設定を迅速かつ直感的に規定することができる。たとえば、ユーザインターフェイスコンポーネントのある移動のある大きさはある設定調整のある大きさと関連づけられてもよく、ユーザは設定を大きな移動で劇的に変えたり、設定を小さな移動で微調整してもよい。
【0041】
ユーザインターフェイスコンポーネント14は、さらに、1つ以上のボタン(たとえばアップボタンおよびダウンボタン)、キーパッド、数値パッド、スイッチ、マイクロホン、および/またはカメラ(例えば、身振りを検出するために)を含んでもよい。一実施の形態では、ユーザインターフェイスコンポーネント14はクリックおよび回転環状リングコンポーネントを含んでもよく、ユーザは、(たとえば設定を調整するよう)リングを回転することによって、および/または(たとえば調整された設定を選択するかもしくはオプションを選択するよう)リングを内方向にクリックすることによって、そのコンポーネントと対話することを可能にしてもよい。別の実施の形態では、ユーザインターフェイスコンポーネント14は、カメラを含んでもよく、(たとえば装置の出力またはアラーム状態が変更されることになる旨を示すべく)身振り(ジェスチャ)を検出してもよい。いくつかの例では、装置10は1つの一次入力コンポーネントを有してもよく、それを用いて複数のタイプの設定を設定してもよい。ユーザインターフェイスコンポーネント14は、さらに、情報を、ユーザに対して、たとえば視覚ディスプレイ(たとえば薄膜トランジスタディスプレイまたは有機発光ダイオードディスプレイ)および/または音声スピーカを介して提示するよう構成されてもよい。
【0042】
電源コンポーネント16は、電力接続および/またはローカルバッテリを含んでもよい。たとえば、電力接続は、装置10を、線間電圧源のような電源に接続してもよい。いくつかの例では、AC電源を用いて、(たとえば再充電可能な)ローカルバッテリを繰返し充電し得、バッテリは、後で、AC電源が利用可能でないときに装置10に電力を供給するよう用いられてもよい。
【0043】
ネットワークインターフェイス18は装置10が装置間で通信することを可能にするコンポーネントを含んでもよい。一実施の形態では、ネットワークインターフェイス18は、効率的ネットワーク層をその開放型システム間相互接続(OSI)モデルの一部として用いて通信してもよい。一実施の形態では、効率的ネットワーク層は、以下において
図5を参照して詳細に記載されるが、装置10が、RIPngルーティング機構およびDTLSセキュリティスキームを用いて、IPv6タイプのデータまたはトラフィックをワイヤレスで通信することを可能にしてもよい。したがって、ネットワークインターフェイス18はワイヤレスカードまたは何らかの他の送受信機接続を含んでもよい。
【0044】
プロセッサ20は、さまざまな異なる装置機能のうちの1つ以上をサポートしてもよい。したがって、プロセッサ20は、ここに記載される機能の1つ以上を実行および/または実行させられるよう構成ならびにプログラミングされる1つ以上のプロセッサを含んでもよい。一実施の形態では、プロセッサ20は、ローカルメモリ(たとえばフラッシュメモリ、ハードドライブ、ランダムアクセスメモリ)に記憶されるコンピュータコードを実行する汎用プロセッサ、専用プロセッサもしくは特定用途向け集積回路、それらの組合せを含んでもよく、 および/または他のタイプのハードウェア/ファームウェア/ソフトウェア処理プラットフォームを用いてもよい。さらに、プロセッサ20は、非同期Javascript(登録商標)およびXML(AJAX)または同様のプロトコルを用いて、クラウドサーバから与えられる命令を実行するJava(登録商標)仮想マシン(JVM)を動作させることなどによって、中央サーバまたはクラウドベースのシステムによっ
て遠隔で実行または司られるアルゴリズムのローカル化されたバージョンまたは対応物として実現されてもよい。例として、プロセッサ20は、ある場所(たとえば家屋または部屋)がある特定の人物によって占有されるかもしくは(たとえば1つ以上のしきい値に関して)ある特定数の人々によって占有されるかどうかまで、ならびにそれを含んで、その場所がいつ占有されるかを検出してもよい。一実施の形態では、この検出は、たとえば、マイクロフォン信号を解析すること、(たとえば装置の前における)ユーザの移動を検出すること、扉もしくはガレージ扉の開閉を検出すること、ワイヤレス信号を検出すること、受信された信号のIPアドレスを検出すること、またはある時間窓内で1つ以上の装置の動作を検出することなどによって生じ得る。さらに、プロセッサ20は、特定の居住者または物体を識別するよう、画像認識技術を含んでもよい。
【0045】
ある実施の形態では、プロセッサ20は、さらに、高消費電力プロセッサおよび低消費電力プロセッサを含んでもよい。高消費電力プロセッサは、ユーザインターフェイスコンポーネント14などを動作させるような、計算集中型動作を実行してもよい。低消費電力プロセッサは、逆に、センサ12からの危険または温度を検出するなどのような、より複雑でないプロセスを管理してもよい。一実施の形態では、低消費電力プロセッサは、計算集中型プロセスのために高消費電力プロセッサを起動するかまたは初期化してもよい。
【0046】
いくつかの例では、プロセッサ20は、望ましい設定を予測、および/またはそれらの設定を実現してもよい。たとえば、存在検出に基づいて、プロセッサ20は、たとえば、家もしくはある特定の部屋に誰もいないときに電力を節約するよう、またはユーザの好み(たとえば一般的な住宅での好みもしくはユーザに特定の好み)に従って、装置設定を調整してもよい。別の例として、特定の人物、動物または物体(たとえば子供、ペットまたは紛失した物体)の検出に基づいて、プロセッサ20は、その人物、動物または物体がどこにあるかの音声インジケータもしくは視覚インジケータを起動してもよく、または認識されない人物がある条件下(たとえば夜もしくは照明が消えているときに)検出される場合にアラームもしくはセキュリティ特徴を起動させてもよい。
【0047】
ある例では、装置は、第1の装置によって検出されるイベントが第2の装置の動作に影響を与えるように、互いと対話してもよい。たとえば、第1の装置は、(たとえばガレージにおいて動きを検出すること、ガレージにおいて照明における変化を検出すること、またはガレージ扉が開かれたことを検出することによって)ユーザがガレージに入ってきたことを検出し得る。第1の装置はこの情報を第2の装置に効率的ネットワーク層を介して送信し、第2の装置は、たとえば、家屋温度設定、照明設定、音楽設定、および/またはセキュリティアラーム設定を調整し得る。別の例として、第1の装置は(たとえば動きまたは突然の光パターンの変化を検出することによって)ユーザが玄関に接近するのを検出し得る。第1の装置は、(たとえばドアベルの音のような)一般的な音声もしくは視覚信号を出力させ、または(たとえば訪問者の存在を、ユーザが占有している部屋内において知らせるよう)場所に特化した音声もしくは視覚信号を出力させてもよい。
【0048】
例として、装置10はNest(登録商標)学習サーモスタットのようなサーモスタットを含んでもよい。ここで、サーモスタットは、温度センサ、湿度センサなどのようなセンサ12を含んでもよく、サーモスタットは、そのサーモスタットが配置される建物内における現在の環境状態を判断してもよい。サーモスタットのための電源コンポーネント16は、サーモスタットが継続的な電源の近くに配置されることを考えることなく、建物内の任意の場所に配置され得るように、ローカルバッテリであってもよい。サーモスタットはローカルバッテリを用いて電力を供給され得るので、サーモスタットは、バッテリがめったに取替えられないように、そのエネルギ使用を最小限にし得る。
【0049】
一実施の形態では、サーモスタットは、回転可能なリングがその上にユーザインターフ
ェイスコンポーネント14として配置される円形のトラックを含んでもよい。したがって、サーモスタットが暖房、換気、空調(HVAC)ユニットなどを制御することによって建物の温度を制御するように、ユーザは、回転可能なリングを用いて、サーモスタットと対話するかまたはサーモスタットをプログラミングしてもよい。ある例では、サーモスタットは、そのプログラミングに基づいて、建物に人がいないかもしれないときを判断してもよい。たとえば、HVACユニットを延長された時間期間の間電源オフにされるよう保持するようにサーモスタットがプログラミングされる場合には、サーモスタットは、建物にはその時間期間の間人がいないことになる、と判断してもよい。ここで、サーモスタットは、建物に人がいないと判断したときには照明スイッチまたは他の電子装置をオフにするようプログラミングされてもよい。したがって、サーモスタットはネットワークインターフェイス18を用いて照明スイッチ装置と通信して、建物に人がいないと判断されたときに照明スイッチ装置に信号を送るようにしてもよい。この態様で、サーモスタットは、建物のエネルギ使用を効率的に管理し得る。
【0050】
前述のことを考慮して、
図2は、
図1の装置10が効率的ネットワーク層を介して他の装置と通信してもよい住宅環境30のブロック図を示す。示される住宅環境30は、家屋、オフィスビルディング、ガレージ、移動住宅などの構造物32を含んでもよい。アパート、コンドミニアムおよびオフィス空間などのような全体構造32を含まない住宅環境にも装置を統合することができることが十分に理解される。さらに、住宅環境30は、実際の構造物32の外の装置を制御し、および/またはそれに接続されてもよい。実際、住宅環境30におけるいくつかの装置は、物理的に構造物32内にある必要が全くない。たとえば、プールヒータ34または潅漑システム36を制御する装置は、構造物32の外部に位置してもよい。
【0051】
示される構造物32は、互いから壁40を介して少なくとも部分的に分離されるある数の部屋38を含む。壁40は内壁または外壁を含み得る。各部屋38は、さらに、床42および天井44を含み得る。装置は、壁40、床42または天井44上に取付けられるか、それ(ら)と統合されるか、および/またはそれ(ら)によって支持され得る。
【0052】
住宅環境30は、さまざまな有用な住宅目的のうちの任意のものを与えるよう、互いと、および/またはクラウドベースのサーバシステムと途切れ目なく統合し得るインテリジェントな、マルチ検知の、ネットワーク接続された装置を含む、複数の装置を含んでもよい。住宅環境30に示される装置の1つ、2つ以上、または各々は、1つ以上のセンサ12、ユーザインターフェイス14、電源16、ネットワークインターフェイス18、プロセッサ20などを含んでもよい。
【0053】
例示的装置10は、Nest Labs IncによるNest(登録商標)学習サーモスタット-
第1世代T100577またはNest(登録商標)学習サーモスタット-第2世代T200577のような、ネットワーク接続されたサーモスタット46を含んでもよい。サーモスタット46は、大気における環境特性(たとえば温度および/または湿度)を検出し、暖房、換気および空調(HVAC)システム48を制御してもよい。他の例示的装置10は、Nest(登録商標)によるハザード検出ユニットなどのようなハザード検出ユニット50を含んでもよい。ハザード検出ユニット50は、家屋環境30における危険な物質および/または危険な状態(たとえば煙、炎または一酸化炭素)の存在を検出してもよい。加えて、エントリウェイインターフェイス装置52は、「スマートドアベル」とも称され得、ある場所への人の接近もしくはある場所からの人の退去を検出し、可聴機能を制御し、音声手段もしくは視覚手段を介して人の接近もしくは退去を知らせ、またはセキュリティシステムにおける設定を制御して(たとえばセキュリティシステムを起動または停止させる)ことが可能である。
【0054】
ある実施の形態では、装置10は、照明スイッチ54を含んでもよく、それは、周囲の照明状態を検出し、部屋占有状態を検出し、ならびに1つ以上の照明の出力および/または薄暗い状態を制御してもよい。いくつかの例では、照明スイッチ54は、天井ファンなどのファンの出力状態または速度を制御してもよい。
【0055】
加えて、壁プラグインターフェイス56は、部屋または構内の占有を検出し、(たとえば家に誰もいない場合には電力がプラグに供給されないように)1つ以上の壁プラグに対する電力の供給を制御してもよい。住宅環境30内の装置10は、さらに、冷蔵庫、ストーブおよび/またはオーブン、テレビ、洗濯機、乾燥機、照明(構造物32の内部および/または外部)、ステレオ、インターコムシステム、ガレージ扉開閉器、床ファン、天井ファン、全家屋ファン、壁空調装置、プールヒータ34、潅漑システム36、セキュリティシステムなどのような機器58を含んでもよい。
図2の説明は、特定の装置に関連付けられる特定のセンサおよび機能を識別し得るが、(本明細書を通して記載されるもののような)さまざまなセンサおよび機能のうちの任意のものを装置10内に統合してもよいことが理解される。
【0056】
処理および検知能力を含むことに加えて、上記の例示的装置の各々は、任意の他の装置、および世界中の任意の場所でネットワーク接続される任意のクラウドサーバまたは任意の他の装置とのデータ通信および情報共有が可能であってもよい。1つの実施の形態では、装置10は、
図5を参照して以下に論じられる効率的ネットワーク層を介して通信を送受してもよい。1つの実施の形態では、効率的ネットワーク層は装置10が互いとワイヤレスメッシュネットワークを介して通信できるようにしてもよい。したがって、ある装置はワイヤレスリピータとして働いてもよく、および/または住宅環境において互いに直接接続(つまり1つのホップ)されなくてもよい装置間においてブリッジとして機能してもよい。
【0057】
1つの実施の形態では、ワイヤレスルータ60は、さらに、住宅環境30においてワイヤレスメッシュネットワークを介して装置10と通信してもよい。次いで、各装置10がインターネット62を介して中央サーバまたはクラウドコンピューティングシステム64と通信するように、ワイヤレスルータ60はインターネット62と通信してもよい。中央サーバまたはクラウドコンピューティングシステム64は、特定の装置10と関連付けられる製造業者、サポートエンティティまたはサービスプロバイダと関連付けられてもよい。したがって、一実施の形態では、ユーザは、電話またはインターネット接続されたコンピュータなどのような何らかの他の通信手段を用いずに、装置それ自体を用いてカスタマーサポートと連絡をとってもよい。さらに、ソフトウエア更新を、中央サーバまたはクラウドコンピューティングシステム64から装置に(例えば、利用可能なとき、購入されたとき、またはルーチン間隔で)自動的に送ることができる。
【0058】
ネットワーク接続性により、1つ以上の装置10は、さらに、たとえユーザが装置の近くにいなくても、ユーザがその装置と対話することを可能してもよい。たとえば、ユーザは、コンピュータ(たとえばデスクトップコンピュータ、ラップトップコンピュータもしくはタブレット)または他の携帯電子装置(たとえばスマートフォン)66を用いて装置と通信してもよい。ウェブページまたはアプリケーションはユーザから通信を受け、受信された通信に基いて装置10を制御してもよい。さらに、ウェブページまたはアプリケーションは、装置の動作についての情報をユーザに呈示してもよい。たとえば、ユーザは、装置のための現在の設定点温度を見て、インターネット62に接続され得るコンピュータを用いて、それを調整することができる。この例では、サーモスタット46は効率的ネットワーク層を用いて形成されたワイヤレスメッシュネットワークを介して現在の設定点温度閲覧要求を受けてもよい。
【0059】
ある実施の形態では、住宅環境30は、さらに、壁プラグインターフェイス56によって、粗くではあるが(ON/OFF)、制御され得る、古い従来の洗濯機/乾燥機、冷蔵庫などのような、さまざまな、通信を行なわない、旧来の機器68を含んでもよい。住宅環境30は、さらに、ハザード検出ユニット50もしくは照明スイッチ54によって与えられるIR(赤外線)信号によって制御され得る、IR制御される壁空調機または他のIR制御される装置のような、さまざまな、部分的に通信を行なう旧来の機器70を含んでもよい。
【0060】
上で言及されたように、上記の例示的な装置10の各々は、データが各装置10に通信されるように、ワイヤレスメッシュネットワークを確立してもよい。
図2の例示的な装置を考慮して、
図3は、上に記載される例示的装置のいくつかの間において通信を容易にするよう用いられてもよい例示的なワイヤレスメッシュネットワーク80を示す。
図3に示されるように、サーモスタット46は、プラグインターフェイス56への直接的なワイヤレス接続を有してもよく、プラグインターフェイス56は、ハザード検出ユニット50および照明スイッチ54にワイヤレスで接続されてもよい。同じ態様で、照明スイッチ54は機器58および携帯電子装置66に無線で接続されてもよい。機器58は単にプールヒータ34に接続されてもよく、携帯電子装置66は単に灌漑システム36に接続されてもよい。灌漑システム36はエントリウェイインターフェイス装置52へのワイヤレス接続を有してもよい。
図3のワイヤレスメッシュネットワーク80における各装置は、ワイヤレスメッシュネットワーク80内におけるノードに対応してもよい。一実施の形態では、効率的ネットワーク層は、データがノード間において最小数のホップを介して宛先ノードに安全に転送されるように、RIPngプロトコルおよびDTLSプロトコルを用いて各ノードがデータを送信することを規定してもよい。
【0061】
一般的に、効率的ネットワーク層は、
図4に示されるように開放型システム間相互接続(OSI)モデル90の一部であってもよい。OSIモデル90は、抽象化層に関する通信システムの機能を示す。つまり、OSIモデルは、ネットワーキングフレームワーク、または装置間の通信がどのように実現され得るかを規定してもよい。一実施の形態では、OSIモデルは6つの層、つまり物理層92、データリンク層94、ネットワーク層96、トランスポート層98、プラットフォーム層100、およびアプリケーション層102を含んでもよい。一般に、OSIモデル90における各層は、その上の層に従ってもよく、その下の層に従われてもよい。少なくともいくつかの実施の形態では、より上位の層はより下位の層において用いられる技術に寛容であってもよい。たとえば、ある実施の形態では、プラットフォーム層100はネットワーク層96において用いられるネットワークタイプに寛容であってもよい。
【0062】
このことを考慮して、物理層92は、互いと通信し得る装置のためのハードウェア仕様を与えてもよい。したがって、物理層92は、どのように装置が互いと接続し、どのように通信リソースがそれらの装置間で共有され得るかを管理することをどのように支援するかなどを確立してもよい。
【0063】
データリンク層94は、どのようにしてデータが装置間において転送され得るかを規定してもよい。一般に、データリンク層94は、送信されているデータパケットが伝送プロトコルの一部としてビットにエンコードおよびデコードされ得る態様を与えてもよい。
【0064】
ネットワーク層96は、宛先ノードに転送されているデータがどのようにルーティングされるかを規定してもよい。ネットワーク層96は、さらに、転送されているデータの完全性を維持し得るセキュリティプロトコルを提供してもよい。
【0065】
トランスポート層98は、ソースノードから宛先ノードへのデータのトランスペアレン
トな転送を規定してもよい。トランスポート層98は、さらに、トランスペアレントなデータの転送がどのようにして信頼性のあるままであるかを制御してもよい。したがって、トランスポート層98を用いて、宛先ノードに転送されるよう意図されるデータパケットが実際に宛先ノードに到達したことを検証してもよい。トランスポート層98において用いられてもよい例示的なプロトコルは、伝送制御プロトコル(TCP)およびユーザ・データグラム・プロトコル(UDP)を含んでもよい。
【0066】
プラットフォーム層100は、トランスポート層98内において規定されるプロトコルに従って装置間の接続を確立してもよい。プラットフォーム層100は、さらに、データパケットを、アプリケーション層102が用い得る形式に変換してもよい。アプリケーション層102は、ユーザと直接インターフェイスし得るソフトウェアアプリケーションをサポートしてもよい。したがって、アプリケーション層102は、ソフトウェアアプリケーションによって規定されるプロトコルを実現してもよい。たとえば、ソフトウェアアプリケーションは、ファイル転送、電子メールなどのサービスを与えてもよい。
【0067】
効率的ネットワーク層
ここで
図5を参照して、一実施の形態では、ネットワーク層96およびトランスポート層98は、ある態様で構成されて、効率的な小電力ワイヤレスパーソナルネットワーク(ELoWPAN)110を形成してもよい。一実施の形態では、ELoWPAN110はIEEE802.15.4ネットワークに基づいてもよく、それは低速のワイヤレスパーソナルエリアネットワーク(LR-WPAN)と対応してもよい。ELoWPAN110は、ネットワーク層96が、インターネットプロトコルバージョン6(IPv6)に基づいた通信プロトコルを用いて、住宅環境30において装置10間でデータをルーティングし得ることを規定してもよい。したがって、各装置10は、それ自体を、インターネット、住宅環境30の周りのローカルネットワークなどの上で識別するよう用いられる独自のアドレスを各装置10に与え得る128ビットのIPv6アドレスを含んでもよい。
【0068】
一実施の形態では、ネットワーク層96は、ルーティング・インフォメーション・プロトコル-ネクスト・ジェネレーション(RIPng)を用いて、装置間でデータをルーティングし得ることを規定してもよい。RIPngは、ソースノードと宛先ノードとの間におけるホップ数に基づいてワイヤレスメッシュネットワークを介してデータをルーティングするルーティングプロトコルである。つまり、RIPngは、データがどのようにルーティングされるかを判断する際に最小のホップ数を用いる、ソースノードから宛先ノードへのルートを判断してもよい。ワイヤレスメッシュネットワークを介するデータ転送をサポートすることに加えて、RIPngは、IPv6ネットワーキングトラフィックをサポートすることができる。したがって、各装置10は、データをルーティングする際に、独自のIPv6アドレスを用いてそれ自体を識別し、独自のIPv6アドレスを用いて宛先ノードを識別してもよい。RIPngがどのようにしてデータをノード間において送信するかに関するさらなる詳細は、以下において
図6を参照して記載される。
【0069】
上で述べたように、ネットワーク層96は、さらに、転送されているデータの完全性を管理し得るセキュリティプロトコルを提供してもよい。ここでは、効率的ネットワーク層は、データグラム・トランスポート・レイヤー・セキュリティ(DTLS)プロトコルを用いて、装置間で転送されるデータを保護してもよい。一般的に、トランスポートレイヤセキュリティ(TLS)プロトコルは、一般的には、インターネットを介するデータ転送を保護するよう用いられる。しかしながら、TLSプロトコルが効果的であるためには、TLSプロトコルは、伝送制御プロトコル(TCP)のような信頼性のあるトランスポートチャネルを用いてデータを伝送してもよい。DTLSは、ユーザ・データグラム・プロトコル(UDP)のようなより信頼性の低いトランスポートチャネルをサポートしながら、転送されるデータに対して同様のセキュリティレベルを与える。DTLSプロトコルに
関するさらなる詳細は、以下において
図8および
図9を参照して記載される。
【0070】
図5に示されるネットワーク層96は、ここにおいては、上記の効率的ネットワーク層として特徴づけられる。つまり、効率的ネットワーク層は、RIPngを用いてIPv6データをルーティングし、DTLSプロトコルを用いて、ルーティングされたデータを保護する。効率的ネットワーク層はDTLSプロトコルを用いて装置間のデータ転送を保護するので、トランスポート層98は、データのためにTCPおよびUDP転送スキームをサポートしてもよい。
【0071】
ここで
図6を参照して、
図6は、RIPngを用いて
図3のワイヤレスメッシュネットワーク80において各装置10ごとにルーティングテーブルを判断するために用いられてもよい方法120のフローチャートを示す。方法120は、ワイヤレスメッシュネットワーク80における各ノードがどのようにしてお互いに接続され得るかを示すルーティングテーブルを各装置10が生成するように、住宅環境30内において各装置10によって実行されてもよい。したがって、各装置10は、データをどのようにして宛先ノードにルーティングするかを独立して判断してもよい。一実施の形態では、装置10のプロセッサ20は、ネットワークインターフェイス18を用いて方法120を実行してもよい。したがって、装置10は、センサ12と関連づけられるかまたはプロセッサ18によって判断されるデータを、住宅環境30内において他の装置10にネットワークインターフェイス18を介して送ってもよい。
【0072】
方法120についての以下の議論は、方法120のさまざまなブロックを明確に示すよう、
図7A~
図7Dを参照して記載される。このことを考慮して、ならびに
図6および
図7Aの両方を参照して、ブロック122において、装置10は、要求側装置10に対して直接的(つまり0ホップ)であってもよい任意の他の装置に要求132を送ってもよい。要求132は、それぞれの装置10からのルーティング情報のすべてに対する要求を含む。たとえば、
図7Aを参照して、ノード1の装置10はノード2の装置10に対して、ノード2のメモリに含まれるルートのすべて(つまりN2のルート)を送るよう要求132を送ってもよい。
【0073】
ブロック124で、要求側装置10は、それぞれの装置10から、それぞれの装置10のそれぞれのメモリに含まれるルートのすべてを含み得るメッセージを受取ってもよい。ルートは、ワイヤレスメッシュネットワーク80における各ノードがどのように互いに接続され得るかを規定してもよいルーティングテーブルに整理されてもよい。つまり、ルーティングテーブルは、データがソースノードから宛先ノードへのように、どの中間ノードにデータが転送されてもよいかを規定してもよい。上記の例および
図7Bを再び参照して、N2のルートに対するノード1の要求に応答して、ブロック124において、ノード2は、ノード1に対して、ノード2のメモリまたはストレージに含まれるルートのすべて(N2のルート144)を送ってもよい。一実施の形態では、ワイヤレスメッシュネットワーク80の各ノードは要求132をその近隣のノードに
図7Aに示されるように送ってもよい。応答して、各ノードは、次いで、そのルートをその近隣のノードに
図7Bに示されるように送ってもよい。たとえば、
図7Bは、N1のルート142、N2のルート144、N3のルート146、N4のルート148、N5のルート150、N6のルート152、N7のルート154、N8のルート156、およびN9のルート158で示されるように、どのようにして各ノードがそのルートデータを各近隣のノードに送るかを示す。
【0074】
まず、各ノードは、各ノードが直接的な接続(つまり0ホップ)を有し得るノードを知っていてもよい。たとえば、まず、ノード2は、単に、それはノード1、ノード3、およびノード4に直接接続されることを知っているだけでもよい。しかしながら、N1のルート142、N3のルート146、およびN4のルート148を受取った後、ノード2のプ
ロセッサ20は、N1のルート142、N3のルート146、およびN4のルート148とともに含まれる情報のすべてを含むルーティングテーブルを構築してもよい。したがって、次にノード2がそのルートまたはルーティングテーブル(つまりN2のルート144)に対する要求を受取るときには、ノード2は、N1のルート142、N2のルート144、N3のルート146、およびN4のルート148を含むルーティングテーブルを送ってもよい。
【0075】
このことを考慮して、および
図6を再び参照して、ブロック126では、要求側装置10は、近隣の装置から受取られるルーティング情報を含むように、そのローカルのルーティングテーブルを更新してもよい。ある実施の形態では、ワイヤレスメッシュネットワーク80における各ノードがどのように互いに接続され得るかを特徴づける更新されたルーティングテーブルを各装置10が含むように、各装置10は方法120を周期的に実行してもよい。上記されたように、方法20が実行されるたびごとに、各装置10は、近隣の装置10がそのルーティングテーブルをその近隣の装置10から受取られる情報で更新した場合には、その近隣の装置10からさらなる情報を受取ってもよい。その結果、各装置10は、ワイヤレスメッシュネットワーク80における各ノードがどのように互いに接続され得るかを理解してもよい。
【0076】
図7Cは、たとえば、方法120を用いてノード1における装置10によって判断されたかもしれないルーティングテーブル172を示す。この例では、ルーティングテーブル172は、宛先ノードとしてのワイヤレスメッシュネットワーク80における各ノード、ノード1と各宛先ノードとの間における中間ノード、およびノード1と宛先ノードとの間におけるホップ数を規定してもよい。ホップ数は、宛先ノードに送られているデータが宛先ノードに達する前に中間ノードに転送され得る回数に対応する。データをある特定の宛先ノードに送る際、RIPngルーティングスキームは、最小数のホップを伴うルートを選択してもよい。たとえば、ノード1がデータをノード9に送ろうとする場合には、RIPngルーティングスキームは、5つのホップを含むノード2、4、6、7および8を介してデータを経路づけることとは対照的に、4つのホップを含むノード2、4、5および8を介してデータをルーティングするであろう。
【0077】
RIPngルーティングスキームを用いることによって、各装置10は、データがどのようにして宛先ノードにルーティングされるべきであるかを独立して判断してもよい。6LoWPAN装置において用いられる「リップル」ルーティングプロトコル(RPL)のような従来のルーティングスキームは、逆に、データを中央ノードを介してルーティングし得るが、中央ノードは、ワイヤレスメッシュネットワークの構造を知る唯一のノードであり得る。より具体的には、RPLプロトコルはワイヤレスメッシュネットワークを有向非巡回グラフ(DAG)に従って形成し得るが、それは階層として構造化され得る。この階層の一番上に位置されるのは、ボーダールータを含み得、それは要求を下位レベルノードに周期的に同報通信して、ノードの接続の各々ごとにランクを判断し得る。本質的には、データがソースノードから宛先ノードに転送されるときに、データはノードの階層を上って転送され、次いで、宛先ノードに下って戻り得る。この態様で、階層においてより上位に位置するノードは階層において下位に位置するノードよりも頻繁にデータをルーティングし得る。さらに、RPLシステムのボーダールータは、さらに、より頻繁に動作し得、なぜならば、それはデータが階層を介してどのようにルーティングされるかを制御するからである。従来のRPLシステムでは、ここに教示されるRIPngシステムとは対照的に、いくつかのノードは、ソースノードおよび宛先ノードに対するその位置ゆえではなく、単に階層内におけるその位置ゆえに、より頻繁にデータをルーティングし得る。RPLシステムの下でより頻繁にデータをルーティングするこれらのノードは、より多くのエネルギを消費し得、したがって、小電力を用いて動作する住宅環境内30における装置10で実現するには好適ではないかもしれない。さらに、上記したように、RPLシステム
のボーダールータまたは任意の他の上位レベルノードがサーモスタット46に対応する場合には、増大したデータルーティング動作は、サーモスタット46内で生成される熱を増大させ得る。その結果、サーモスタット46の温度読取値は住宅環境30の温度を不正確に表わすかもしれない。他の装置10はサーモスタット46の温度読取値に基づいて実行するかもしれず、サーモスタット46はその温度読取値に基づいてさまざまな装置10にコマンドを送るかもしれないので、サーモスタット46の温度読取値が正確であることを確実にすることは有益であり得る。
【0078】
どの装置10も不相応な回数量でデータをルーティングしないことを確実にすることに加えて、RIPngルーティングスキームを用いることにより、新たな装置10が、ユーザの最小の努力で、ワイヤレスメッシュネットワークに追加されてもよい。たとえば、
図7Dは、新たなノード10がワイヤレスメッシュネットワーク80に追加されるのを示す。ある実施の形態では、一旦ノード10がワイヤレスメッシュネットワーク80に(たとえばノード4を介して)接続を確立すると、ノード10に対応する装置10は、上記の方法120を実行して、データがどのようにしてワイヤレスメッシュネットワーク80において各ノードにルーティングされてもよいかを判断してもよい。ワイヤレスメッシュネットワーク80における各ノードが方法120を既に複数回実行している場合には、ノード10の装置10は、ノード4の装置10からワイヤレスメッシュネットワーク80の全ルーティング構造を受取ってもよい。同じ態様で、装置10はワイヤレスメッシュネットワーク80から取除かれてもよく、各ノードは方法120を再び実行することによって比較的容易にそのルーティングテーブルを更新してもよい。
【0079】
RIPngルーティングスキームを用いてルーティングスキームを確立したのち、ELoWPAN110はDTLSプロトコルを用いて、住宅環境30において各装置10間におけるデータ通信を保護してもよい。上記のように、DTLSプロトコルをTLSプロトコルの代りに用いることによって、ELoWPAN110は、トランスポート層98がTCPおよびUDPを介してデータを送信することを可能にしてもよい。UDPは、概して、TCPよりも信頼性が低いかもしれないが、UDPデータ転送は、専用の伝送チャネルまたはデータパスが使用前に設定されることなく、単純な通信スキームを用いる。したがって、ワイヤレスメッシュネットワーク80に追加される新たな装置10は、UDPデータ転送を用いて、ワイヤレスメッシュネットワークにおいて他の装置10により迅速に効果的に通信してもよい。さらに、UDPデータ転送は、一般に、データを送るかまたは転送する装置10によって用いられるエネルギがより少なく、なぜならば、配信の保証がないからである。したがって、装置10は、UDPデータ転送を用いて重要でないデータ(たとえば部屋における人の存在)を送り、それによって、装置10内においてエネルギを節約してもよい。しかしながら、重要なデータ(たとえば煙警報)はTCPデータ転送を介して送ることにより、適切な関係者がそのデータを受取ることを保証してもよい。反復するために、DTLSセキュリティスキームをELoWPAN110と用いることは、UDPおよびTCPデータ転送を促進するのを助け得る。
【0080】
前述のことを考慮して、ELoWPAN110はDTLSプロトコルを用いて、装置10間において通信されるデータを保護してもよい。一実施の形態では、DTLSプロトコルは、ハンドシェイクプロトコルを用いてデータ転送を保護してもよい。一般に、ハンドシェイクプロトコルは、各装置10によって与えられてもよいセキュリティ証明書を用いて、各通信している装置を認証してもよい。
図8はセキュリティ証明書がどのようにして装置10内に埋込まれ得るかを示す製造プロセス190の例を示す。
【0081】
図8を参照して、委託された装置10の製造業者192は、製造業者が各製造される装置に対して用いてもよい多数のセキュリティ証明書を提供されてもよい。したがって、住宅環境30において用いられワイヤレスメッシュネットワーク80に接続されてもよい装
置10を製造しながら、委託された製造業者192は証明書194を製造プロセス190の間に装置10内に埋込んでもよい。つまり、証明書194は装置10の製造中に装置10のハードウェア内に埋込まれてもよい。証明書194は、パブリックキー、プライベートキー、またはワイヤレスメッシュネットワーク80内において異なる通信する装置を認証するのに用いられてもよい他の暗号データを含んでもよい。その結果、一旦ユーザが装置10を受取ると、ユーザは、装置10を初期化したり、装置10を中央のセキュリティノードなどに登録することなく、装置10をワイヤレスメッシュネットワーク80内に統合してもよい。
【0082】
6LoWPAN装置において用いられるProtocol for Carrying Authentication for Network Access (PANA)(ネットワークアクセスのために認証を担持するためのプロトコル)のような従来のデータ通信セキュリティプロトコルにおいては、各装置10はそれ自体を特定のノード(つまり認証エージェント)で認証してもよい。したがって、データが任意の2つの装置間において転送される前に、各装置10はそれ自体を認証エージェントノードで認証してもよい。認証エージェントノードは、次いで、認証の結果を、認証エージェントノードと同じ位置にあってもよいエンフォースメントポイントノードに伝えてもよい。エンフォースメントポイントノードは、次いで、認証が有効である場合には、2つの装置10間にデータ通信リンクを確立してもよい。さらに、PANAでは、各装置10は、互いと、エンフォースメントポイントノードを介して通信してもよく、エンフォースメントポイントノードは各装置10に対する認証が有効である旨を検証してもよい。
【0083】
したがって、PANAではなく、DTLSプロトコルを用いてノード間のデータ転送を保護することによって、効率的ネットワーク層は、認証エージェントノード、エンフォースメントポイントノード、またはその両方を過度に用いることを回避してもよい。つまり、効率的ネットワーク層を用いるどのノードも、ワイヤレスメッシュネットワークにおけるノード間における各データ転送ごとに認証データを処理していなくてもよい。その結果、効率的ネットワーク層を用いるノードは、PANAプロトコルシステムにおける認証エージェントノードまたはエンフォースメントポイントノードと比較して、より多くのエネルギを節約し得る。
【0084】
このことを考慮して、
図9は、装置10間において、互いの間でデータを転送する際に用いられてもよい、例示的なハンドシェイクプロトコル200を示す。
図9に示されるように、ノード1における装置10はノード2における装置10にメッセージ202を送ってもよい。メッセージ202は、暗号スーツ、ハッシュおよび圧縮アルゴリズム、ならびに乱数を含んでもよいハローメッセージであってもよい。ノード2における装置10は、次いで、メッセージ204で応答してもよく、それは、ノード2における装置10がノード1における装置10からメッセージ202を受取ったことを検証してもよい。
【0085】
ノード1とノード2との間における接続を確立した後、ノード1における装置は、再び、メッセージ202をノード2における装置10に送ってもよい。ノード2における装置10は、次いで、メッセージ208で応答してもよく、それは、ノード2からのハローメッセージと、ノード2からの証明書194と、ノード2からのキー交換と、ノード1からの証明書要求とを含んでもよい。メッセージ208におけるハローメッセージは、暗号スーツと、ハッシュおよび圧縮アルゴリズムと、乱数とを含んでもよい。証明書194は、
図8を参照して上で論じられたように、委託された製造業者192によって装置10内に埋込まれるセキュリティ証明書であってもよい。キー交換は、パブリックキー、プライベートキー、または2つのノード間において通信チャネルを確立するために秘密キーを判断するよう用いられてもよい他の暗号情報を含んでもよい。一実施の形態では、キー交換は、それぞれのノードに位置する対応の装置10の証明書194に記憶されてもよい。
【0086】
メッセージ208に応答して、ノード1における装置10は、メッセージ210を送ってもよく、それは、ノード1からの証明書194と、ノード1からのキー交換と、ノード2の証明書検証と、ノード1からの変更暗号スペック(change Cipher spec)等を含んでもよい。一実施の形態では、ノード1における装置10は、ノード2の証明書194とノード1からのキー交換とを用いてノード2の証明書194を検証してもよい。つまり、ノード1における装置10は、ノード2の証明書194とノード1からのキー交換とに基づいて、ノード2から受取られる証明書194が有効である旨を検証してもよい。ノード2からの証明書194が有効である場合には、ノード1における装置10は変更暗号スペックメッセージをノード2における装置10に送って、2つのノード間における通信チャネルが安全である旨を告知してもよい。
【0087】
同様に、メッセージ210を受取ると、ノード2における装置10はノード1の証明書194とノード2からのキー交換とを用いてノード1の証明書194を検証してもよい。つまり、ノード2における装置10は、ノード1の証明書194とノード2からのキー交換とに基づいて、ノード1から受取られる証明書194が有効である旨を検証してもよい。ノード1からの証明書194が有効である場合には、ノード2における装置10も、変更暗号スペックメッセージをノード1における装置10に送って、2つのノード間の通信チャネルが安全である旨を告知してもよい。
【0088】
通信チャネルが安全である旨を確立した後、ノード1における装置10はグループに関するネットワークキー214をノード2における装置10に送ってもよい。グループに関するネットワークキー214はELoWPAN110に関連づけられてもよい。この態様で、新たな装置がELoWPAN110に加わると、ELoWPAN110内で通信することを先に認証された装置は新たな装置にELoWPAN110へのアクセスを与えてもよい。つまり、ELoWPAN110内において通信するよう先に認証された装置はグループに関するネットワークキーを新たな装置に与え、それによって、新たな装置がELoWPAN110において他の装置と通信することができるようにしてもよい。たとえば、グループに関するネットワークキー214を用いて、適切に認証されかつグループに関するネットワークキー214を先に与えられていた他の装置と通信してもよい。一実施の形態では、一旦変更暗号スペックメッセージがノード1における装置10とノード2における装置10との間で交換されると、モデル番号、装置能力などのような識別情報が装置間で通信されてもよい。しかしながら、ノード2における装置10がグループに関するネットワークキー214を受取った後、装置10上に配置されるセンサからのデータ、装置10によって実行されるデータ解析などのようなさらなる情報が装置間で通信されてもよい。
【0089】
製造プロセス中に装置10内にセキュリティ証明書を埋込むことによって、装置10は、装置10のためのセキュリティまたは認証プロセスを確立することにユーザを巻込まなくてもよい。さらに、装置10は、中央認証エージェントノードとは対照的なハンドシェイクプロトコルに基づいてデータがノード間において安全に転送されることを確実にし得るので、ワイヤレスメッシュネットワーク80におけるデータ転送の安全性は、安全性のために1つのノードに依存しなくてもよい。その代わりに、効率的ネットワーク層は、あるノードが利用可能でなくなったときであってもデータがノード間で安全に転送され得ることを確実にし得る。したがって、効率的ネットワーク層はセキュリティ問題に関してはるかにより脆弱でなく、なぜならば、それはデータメッセージを保護するために1つのノードに依存しないからである。
【0090】
効率的プラットフォーム層および/またはアプリケーション層
上記のELowPAN110および/または任意の他の好適なIPv6論理ネットワークを用いて、効率的プラットフォーム層および/またはアプリケーション層を用いて住宅
環境または同様の環境において装置のファブリックを生成してもよい。装置のファブリックは多数の概してローカルの装置が通信して、データおよび情報を共有し、互い上で方法を呼び出し、ソフトウェア更新をネットワークを通してパラメータを介して与え、概して、メッセージを効率的な電力意識的な態様において通信することを可能にしてもよい。
【0091】
ファブリック装置相互接続
上で論じられたように、ファブリックは、IPv6プロトコルのような1つ以上の好適な通信プロトコルを用いて実現されてもよい。実際、ファブリックは、ファブリックを実現するよう用いられる基底の技術(たとえばネットワークタイプまたは通信プロトコル)に対して部分的または完全に寛容であってもよい。1つ以上の通信プロトコル内においては、ファブリックは、無線または有線接続を用いて電子装置を通信可能に接続するよう用いられる1つ以上のネットワークタイプを用いて実現されてもよい。たとえば、ファブリックのある実施の形態は、イーサネット、WiFi、802.15.4, ZigBee(登録商標), ISA100.11a, WirelessHART, MiWi
TM,電力線網、および/または他の好適なネットワークタイプ
を含んでもよい。ファブリック内においては、装置(たとえばノード)は、情報のパケットをファブリックにおける他の装置(たとえばノード)と、直接、またはIPルータとして振舞う、インテリジェントサーモスタットのような、仲介ノードを介して交換することができる。これらのノードは、製造業者装置(たとえばサーモスタットおよび煙検出器)および/または消費者装置(たとえば電話、タブレット、コンピュータなど)を含んでもよい。加えて、いくつかの装置は、「常にオン」であり、電気的接続を用いて継続的に電力を供給されてもよい。他の装置は、サーモスタットまたはドアベル電力接続などのような、低減された/間欠的な電力接続を用いて、部分的に低減された電力使用形態(たとえば中程度のデューティサイクル)を有してもよい。最後に、いくつかの装置は、短いデューティサイクルを有し、バッテリ電力のみで動作してもよい。換言すれば、ある実施の形態では、ファブリックは、接続タイプおよび/または所望の電力使用形態に従って1つ以上のサブネットワークに接続されてもよいヘテロジニアスな装置を含んでもよい。
図10~
図12は、ファブリックにおいて1つ以上のサブネットワークを介して電子装置を接続するよう用いられてもよい3つの実施の形態を示す。
【0092】
A.単一ネットワークトポロジ
図10は、単一のネットワークトポロジを有するファブリック1000の実施の形態を示す。示されるように、ファブリック1000は単一の論理ネットワーク1002を含む。ネットワーク1002は、イーサネット、WiFi、802.15.4、電力線網、および/またはIPv6プロトコルにおける他の好適なネットワークタイプを含み得る。実際、ネットワーク1002がWiFiまたはイーサネットネットワークを含むいくつかの実施の形態では、ネットワーク1002は、リンク層において橋渡しされる複数のWiFiおよび/またはイーサネットセグメントにわたってもよい。
【0093】
ネットワーク1002は、1つ以上のノード1004、1006、1008、1010、1012、1014および1016を含み、それらは総称的に1004~1016と称される。示されるネットワーク1002は7つのノードを含むが、ネットワーク1002のある実施の形態は、ネットワーク1002を用いて相互接続される1つ以上のノードを含んでもよい。さらに、ネットワーク1002がWiFiネットワークである場合には、ノード1004~1016の各々は、ノード1016(たとえばWiFiルータ)を用いて相互接続されてもよく、および/またはWiFi Direct(つまりWiFi P2P)を用いて他のノードと
対にされてもよい。
【0094】
B.星形ネットワークトポロジ
図11は、星形ネットワークトポロジを有するファブリック1018としての、ファブリック1000の代替的実施の形態を示す。ファブリック1018は、2つの周辺ネット
ワーク1022と1024とを併せるハブネットワーク1020を含む。ハブネットワーク1020は、WiFi/イーサネットネットワークまたは電力線網などのような、住宅ネットワークを含んでもよい。周辺ネットワーク1022および1024は、ハブネットワーク1020とは異なるタイプの異なるさらなるネットワーク接続タイプであってもよい。たとえば、ある実施の形態では、ハブネットワーク1020はWiFi/イーサネットネットワークであってもよく、周辺ネットワーク1022は802.15.4ネットワークを含んでもよく、周辺ネットワーク1024は電力線網、ZigBeeRネットワーク, ISA100.11aネットワ
ーク, WirelessHARTネットワーク,またはMiWi
TMネットワークを含んでもよい。さらに、
ファブリック1018の示される実施の形態は3つのネットワークを含むが、ファブリック1018のある実施の形態は、2つ、3つ、4つ、5つまたはそれより多いネットワークなどのような任意の数のネットワークを含んでもよい。実際、ファブリック1018のある実施の形態は、同じタイプの複数の周辺ネットワークを含む。
【0095】
示されるファブリック1018は14個のノードを含み、各々は個々に参照番号1024~1052によりそれぞれ示されるが、ファブリック1018は任意の数のノードを含んでもよいことが理解されるべきである。各ネットワーク1020、1022、または1024内における通信は、直接装置間において、および/またはWiFi/イーサネットネットワークにおけるノード1042のようなアクセスポイントを介して生じてもよい。周辺ネットワーク1022と1024との間の通信は、ネットワーク間ルーティングノードを用いて、ハブネットワーク1020を通過してもよい。たとえば、示される実施の形態では、ノード1034および1036は、第1のネットワーク接続タイプ(たとえば802.15.4)を用いて周辺ネットワーク1022に接続され、第2のネットワーク接続タイプ(たとえばWiFi)を用いてハブネットワーク1020に接続され、一方、ノード1044は、第2のネットワーク接続タイプを用いてハブネットワーク1020に接続され、第3のネットワーク接続タイプ(たとえば電力線)を用いて周辺ネットワーク1024に接続される。たとえば、ノード1026からノード1052に送信されるメッセージは、ノード1052への通過途中において、ノード1028、1030、1032、1036、1042、1044、1048および1050を通過してもよい。
【0096】
C.重なったネットワークトポロジ
図12は、重なったネットワークトポロジを有するファブリック1054としての、ファブリック1000の代替的実施の形態を示す。ファブリック1054はネットワーク1056および1058を含む。示されるように、ノード1062、1064、1066、1068、1070および1072の各々はネットワークの各々に接続されてもよい。他の実施の形態では、ノード1072は、エンドポイントではなく、イーサネット/WiFiネットワークに対するアクセスポイントを含んでもよく、どちらがイーサネット/WiFiネットワークでなくても、ネットワーク1056またはネットワーク1058のいずれか上になくてもよい。したがって、ノード1062からノード1068への通信は、ネットワーク1056、ネットワーク1058またはそれらの何らかの組合せを通過してもよい。示される実施の形態では、各ノードは、任意の所望のネットワークを用いて、任意のネットワークを介して任意の他のノードと通信することができる。したがって、
図11の星形ネットワークトポロジとは異なり、重なったネットワークトポロジは、ネットワーク間ルーティングを用いることなく、任意のネットワークを介して直接ノード間において通信してもよい。
【0097】
D.サービスに対するファブリックネットワーク接続
住宅内における装置間の通信に加えて、ファブリック(たとえばファブリック1000)は、ファブリックにおける他の装置の物理的近くに、またはそのような装置から物理的に遠くに位置してもよいサービスを含んでもよい。ファブリックは、これらのサービスに、1つ以上のサービスエンドポイントを介して接続する。
図13は、ファブリック107
6、1078および1080と通信するサービス1074の実施の形態を示す。サービス1074は、ファブリック1076、1078、および/または1080内において装置によって用いられてもよいさまざまなサービスを含んでもよい。たとえば、ある実施の形態では、サービス1074は、装置に対して時刻を供給する時刻サービス、さまざまな気象データ(たとえば外部温度、日没、風情報、天気予報など)を提供する気象サービス、各装置をpingするエコーサービス、データ管理サービス、装置管理サービス、および/または他の好適なサービスであってもよい。示されるように、サービス1074は、関係のあるデータを記憶/にアクセスし、ファブリック1076のようなファブリックにおいてサービスエンドポイント1084を介して1つ以上のエンドポイント1086に情報を渡すサーバ1082(たとえばウェブサーバ)を含んでもよい。示される実施の形態は単一のサーバ1082を伴う3つのファブリックを含むに過ぎないが、サービス1074は、任意の数のファブリックに接続してもよく、サーバ1082に加えてサーバを含んでもよく、および/またはさらなるサービスに対する接続を含んでもよいことが理解されるべきである。
【0098】
ある実施の形態では、サービス1074は、さらに、電話、ケーブルおよび/またはコンピュータのような消費者装置1088に接続してもよい。消費者装置1088は、ファブリック1076のようなファブリック、インターネット接続、および/または何らかの他の好適な接続方法を介してサービス1074に接続するよう用いられてもよい。消費者装置1088は、ファブリックにおける1つ以上のエンドポイント(たとえば電子装置)から、直接そのファブリックを介してか、またはサービス1074を介してデータにアクセスするよう用いられてもよい。換言すれば、サービス1074を用いて、消費者装置1088は、ファブリックにおける装置に対して、そのファブリックから遠隔でアクセスするか、またはそのような装置を管理するよう用いられてもよい。
【0099】
E.ファブリックにおける装置間における通信
上で論じたように、各電子装置またはノードは、ファブリックトポロジおよびネットワーク接続タイプによって、ファブリック内の任意の他のノードと、直接的または間接的に通信してもよい。加えて、いくつかの装置(たとえば遠隔装置)は、サービスを介して通信して、ファブリックにおける他の装置と通信してもよい。
図14は、2つの装置1092と1094との間における通信1090の実施の形態を示す。通信1090は、上に記載されるように、1つ以上のネットワークに、直接的に、またはさらなる装置および/もしくはサービスを介して間接的にわたってもよい。加えて、通信1090は、1つ以上のトランスポートプロトコルを用いて、IPv6のような適切な通信プロトコルを介して生じてもよい。たとえば、いくつかの実施の形態では、通信1090は、伝送制御プロトコル(TCP)および/またはユーザ・データグラム・プロトコル(UDP)を用いることを含んでもよい。ある実施の形態では、装置1092は、無接続プロトコル(たとえばUDP)を用いて、第1の信号1096を装置1094に送信してもよい。ある実施の形態では、装置1092は接続指向型プロトコル(たとえばTCP)を用いて装置1094と通信してもよい。示される通信1090は双方向通信として示されるが、いくつかの実施の形態では、通信1090は一方向同報通信であってもよい。
【0100】
i.固有のローカルアドレス
上で論じられたように、ファブリック内において送信されノードによって受信されるデータは、その通信に関する所望の目標によって、そのノードを通して他のノードに方向変更されるかまたは渡されてもよい。いくつかの実施の形態では、データの送信はすべての装置に対して同報通信されるよう意図されてもよい。そのような実施の形態では、データは、データが先へと他のノードに渡されるべきであるかを判断するようさらなる処理なしに再送信されてもよい。しかしながら、いくつかのデータは具体的なエンドポイントに向けられてもよい。アドレス指定されたメッセージが所望のエンドポイントに送信されるこ
とを可能にするために、ノードは識別情報を割当てられてもよい。
【0101】
各ノードは、1つが各ネットワークインターフェイスに割当てられるリンクローカルアドレス(LLA)の組を割当てられてもよい。これらのLLAを用いて、同じネットワーク上の他の装置と通信してもよい。加えて、LLAは、IPv6近隣探索プロトコルのようなさまざまな通信手順に対して用いられてもよい。LLAに加えて、各ノードは固有のローカルアドレス(ULA)を割当てられてもよい。いくつかの実施の形態では、これは拡張固有ローカルアドレス(EULA)と呼ばれ得、なぜならば、それはデバイスのファブリックに関する情報を、ファブリックを通してデバイスに到達する好ましいネットワークに関する情報と並んで含んでいるからである。
【0102】
図15は、ファブリックにおける各ノードをアドレス指定するよう用いられてもよい固有のローカルアドレス(ULA)1098の実施の形態を示す。ある実施の形態では、ULA1098は、グローバルID1100とサブネットID1102とインターフェイスID1104とに分割される128ビットを含むIPv6アドレスフォーマット(書式)としてフォーマット(書式設定)されてもよい。グローバルID1100は40ビットを含み、サブネットID1102は16ビットを含む。グローバルID1100およびサブネットID1102は、ともになって、ファブリックに対するファブリックID1103を形成する。
【0103】
ファブリックID1103は、ファブリックを識別するよう用いられる一意の64ビットの識別子である。ファブリックID1103は、擬似乱数アルゴリズムを用いて、関連づけられるファブリックの形成で生成されてもよい。たとえば、擬似乱数アルゴリズムは、1)現在の時刻を64ビットのNTPフォーマットで得てもよく、2)装置に対するインターフェイスID1104を得てもよく、3)時刻をインターフェイスID1104と連結してキーを形成してもよく、4)SHA-1ダイジェストをそのキーの上で計算して、結果として160ビットをもたらしてもよく、5)最下位の40ビットをグローバルID1100として用いてもよく、および6)ULAを連結し、最下位ビットを1にセットして、ファブリックID1103を形成してもよい。ある実施の形態では、一旦ファブリックID1103がファブリックとともに形成されると、ファブリックID1103はそのファブリックが解消されるまで残る。
【0104】
グローバルID1100は、ノードが属するファブリックを識別する。サブネットID1102はファブリック内の論理ネットワークを識別する。サブネットIDF3は、ファブリックに対する各新たな論理ネットワークの追加で、1で単調に開始することを割当てられてもよい。たとえば、WiFiネットワークは0x01の16進値で識別されてもよく、後で接続される802.15.4ネットワークは、0x02の16進値で識別されてもよく、ファブリックに対する各新たなネットワークの接続で、増分的に継続し続けてもよい。
【0105】
最後に、ULA1098は、64ビットを含むインターフェイスID1104を含んでもよい。インターフェイスID1104は、IEEE EUI-64規格に従って、グローバルに一意の64ビット識別子を用いて割当てられてもよい。たとえば、IEEE802ネットワークインターフェイスを伴う装置は、装置の「一次インターフェイス」のためにバーンド・インのMACアドレスを用いて、インターフェイスID1104を導出してもよい。いくつかの実施の形態では、どのインターフェイスが一次インターフェイスであるかの指定は任意に判断されてもよい。他の実施の形態では、あるインターフェイスタイプ(たとえばWiFi)が、存在する場合には、一次インターフェイスとしてみなされてもよい。装置の一次インターフェイスに対するMACアドレスが48ビットであり、64ビットでない場合には、48ビットのMACアドレスは、カプセル化(たとえば組織的に一意の識別子カプセル化)を介して、EUI-64値に変換されてもよい。消費者装置(たと
えば電話またはコンピュータ)においては、インターフェイスID1104は消費者装置のローカルオペレーティングシステムによって割当てられてもよい。
【0106】
ii.論理ネットワーク間において送信をルーティングする
星形ネットワークトポロジに関して上で論じられたように、ネットワーク間ルーティングは、論理ネットワーク間を渡る2つの装置間における通信において生じてもよい。いくつかの実施の形態では、ネットワーク間ルーティングはサブネットID1102に基づく。各ネットワーク間接続ノード(たとえば
図11のノード1034)は、ハブネットワーク1020上のルーティングノードのリスト(たとえば
図11のノードB14)、およびそれらのそれぞれの取付けられた周辺ネットワーク(たとえば
図11の周辺ネットワーク1024)を維持してもよい。ルーティングノードそれ自体以外のノードにアドレス指定されたパケットが到着すると、宛先アドレス(たとえば
図11のノード1052に対するアドレス)がネットワークプレフィックスのリストと比較され、所望のネットワーク(たとえば周辺ネットワーク1024)に取付けられるルーティングノード(たとえばノード1044)が選択される。パケットは、次いで、その選択されたルーティングノードに転送される。複数のノード(たとえば1034および1036)が同じ周辺ネットワークに取付けられる場合には、ルーティングノードは交互する態様で選択される。
【0107】
加えて、ネットワーク間ルーティングノードは、近隣探索プロトコル(NDP)ルータ情報提供メッセージをハブネットワーク上において定期的に送信して、消費者装置に対してハブネットワークの存在についての注意を喚起し、消費者装置がサブネットプレフィックスを得ることができるようにしてもよい。ルータ情報提供は、ファブリックにおけるルーティング情報において支援するよう1つ以上のルート情報オプションを含んでもよい。たとえば、これらのルート情報オプションは、消費者装置に対して、周辺ネットワークの存在、およびどのようにしてパケットを周辺装置にルーティングするかを知らせてもよい。
【0108】
ルート情報オプションに加えて、またはそれらに代わって、ルーティングノードは、プロキシとして振舞って、
図16に示されるプロセス1105のように、消費者装置と周辺ネットワークにおける装置との間において通信を与えてもよい。示されるように、プロセス1105は、各周辺ネットワーク装置に対するハブネットワーク上の仮想アドレスの割当が、その周辺ネットワーク上における装置についてサブネットID1102をインターフェイスID1104と組合せることによって行なうことを含む(ブロック1106)。仮想アドレスを用いてプロキシ化するために、ルーティングノードは、ファブリックにおける、そのインターフェイスの1つを介して直接到達可能なすべての周辺ノードのリストを含む(ブロック1108)。ルーティングノードは、ハブネットワーク上において、周辺ノードのリンクアドレスを、その仮想アドレスを用いて要求する近隣請求メッセージに対するリスニングを行なう(ブロック1110)。そのようなメッセージを受信すると、ルーティングノードは、ある時間期間のあと、その仮想アドレスをそれのハブインターフェイスに割当てることを試みる(ブロック1112)。割当の一部として、ルーティングノードは、2つ以上のルーティングノードによる仮想アドレスのプロキシ化を阻止するように、二重アドレス検出を実行する。割当のあと、ルーティングノードは、近隣請求メッセージに応答し、パケットを受信する(ブロック1114)。パケットを受信すると、ルーティングノードは、宛先アドレスを周辺ノードの実アドレスに書換え(ブロック1116)、メッセージを適切なインターフェイスに転送する(ブロック1118)。
【0109】
iii.消費者装置のファブリックへの接続
ファブリックに加わるために、消費者装置は、その消費者装置が加わりたいファブリックに既にあるノードのアドレスを探索してもよい。加えて、消費者装置が、ある延長された時間期間の間、ファブリックから切断されている場合、ファブリックトポロジ/レイア
ウトが変更している場合には、ネットワーク上においてノードを再探索する必要があってもよい。探索/再探索において支援するために、ハブネットワーク上のファブリック装置は、mDNSを介して、ファブリックの存在を情報提供しアドレスを消費者装置に与えるドメイン名システム-サービス探索(DNS-SD)を公開してもよい。
【0110】
ファブリックにおいて送信されるデータ
ファブリックの形成およびノードに対するアドレス形成のあと、データがファブリックを通して送信されてもよい。ファブリックを通して渡されるデータは、すべてのメッセージに共通の、および/またはそのファブリックにおいて特定のタイプの会話に共通のフォーマットで構成されてもよい。いくつかの実施の形態では、メッセージフォーマットは、以下に論じられるTLV直列化フォーマットを用いて、JavaScriptオブジェクト表記法(JSON)に対する1対1マッピングを可能にしてもよい。加えて、以下のデータフレームは特定のサイズを含むとして記載されるが、それらのデータフレームにおけるデータフィールドの長さは他の好適なビット長に変動されてもよい旨が注記されるべきである。
【0111】
A.セキュリティ
転送されるよう意図されるデータとともに、ファブリックは、データを、暗号化、メッセージ完全性チェック、デジタル署名などのような、さらなるセキュリティ手段とともに転送してもよい。ある実施の形態では、装置に対してサポートされるセキュリティのレベルは、装置の物理的セキュリティおよび/または装置の能力に従って変動してもよい。ある実施の形態では、ファブリックにおいてノード間において送信されるメッセージは、カウンタモード(AES-CTR)において128ビットのキーで動作する高度暗号化標準(AES)ブロック暗号を用いて暗号化されてもよい。以下に論じられるように、各メッセージは32ビットのメッセージidを含む。このメッセージidは、送信側ノードidと組合されて、AES-CTRアルゴリズムに対するノンスを形成してもよい。32ビットカウンタは、40億個のメッセージが暗号化され各ノードによって送信されたのちに、新たなキーが交渉されることを可能にする。
【0112】
いくつかの実施の形態では、ファブリックは、各暗号化されたメッセージに含まれてもよい、HMAC-SHA-1のような、メッセージ認証コードを用いて、メッセージ完全性を保証してもよい。いくつかの実施の形態では、メッセージ認証コードは、暗号化キーと1対1で対にされる160ビットのメッセージ完全性キーを用いて生成されてもよい。加えて、各ノードは、入来メッセージのメッセージidを、ノード単位で維持される最近受信されたidのリストと照合して、メッセージの再生を阻止してもよい。
【0113】
B.タグ‐長さ‐値(TLV)フォーマット化
電力消費を低減するためには、ファブリックにより送信されるデータの少なくとも一部をそのようにコンパクトに送信する一方で、データコンテナが、データの直列化内において理解されるデータの次の位置にスキップすることによって認識または理解されないデータをスキップすることに対応するデータを柔軟性を持って表わすことができることが望ましい。ある実施の形態では、タグ‐長さ‐値(TLV)フォーマット化を用いて、データをコンパクトに、かつ柔軟性を持ってエンコード/デコードしてもよい。送信されるデータの少なくとも一部をTLVで記憶することによって、データは、以下において表7を参照して論じられるように、低エンコード/デコードおよびメモリオーバヘッドで、コンパクトに、かつ柔軟性を持って記憶/送信されてもよい。ある実施の形態では、TLVは、あるデータに対しては、柔軟性のある、拡張可能なデータとして用いられてもよいが、拡張可能でないデータの他の部分は、理解される標準プロトコルデータ単位(PDU)で記憶および送信されてもよい。
【0114】
TLVフォーマットでフォーマットされるデータは、プリミティブタイプおよびコンテ
ナタイプなどのような、さまざまなタイプのTLV要素としてエンコードされてもよい。プリミティブタイプは、整数または文字列のような、あるフォーマットにおけるデータ値を含む。たとえば、TLVフォーマットは、1、2、3、4または8バイトの符号有り/符号無し整数、UTF-8文字列、バイト文字列、単精度/倍精度浮動数(たとえばIEEE754-1985フォーマット)、ブーリアン、ヌル、および他の好適なデータフォーマットタイプをエンコードしてもよい。コンテナタイプは要素の集まりを含み、それらは、次いで、コンテナタイプまたはプリミティブタイプとして下位分類される。コンテナタイプは、ディクショナリ、アレイ、パス、またはメンバーとして既知の、TLV要素をグループ化するための他の好適なタイプのような、さまざまなカテゴリに分類されてもよい。ディクショナリは、そのディクショナリ内において明確な定義および一意のタグを各々が有するメンバーの集まりである。アレイは、暗示される定義を伴うかまたは明確な定義を伴わない、順序づけられたメンバーの集まりである。パスは、TLV要素のツリーをどのように横断するかを記載した、順序づけられたメンバーの集まりである。
【0115】
図11に示されるように、TLVパケット1120の実施の形態は3つのデータフィールド:タグフィールド1122と長さフィールド1124と値フィールド1126とを含む。示されるフィールド1122、1124および1126はサイズがおおよそ等価として示されているが、各フィールドのサイズは可変であってもよく、互いに対してサイズが変動してもよい。他の実施の形態では、TLVパケット1120は、さらに、タグフィールド1122の前に制御バイトを含んでもよい。
【0116】
制御バイトを有する実施の形態では、制御バイトは要素タイプフィールドとタグ制御フィールドとに下位分割されてもよい。いくつかの実施の形態では、要素タイプフィールドは制御バイトの下位5ビットを含み、タグ制御フィールドは上位3ビットを占める。要素タイプフィールドは、TLV要素のタイプと、どのように長さフィールド1124および値フィールド1126がエンコードされるかを示す。ある実施の形態では、要素タイプフィールドは、さらに、TLVについてブーリアン値および/またはヌル値をエンコードする。たとえば、要素タイプフィールドの列挙の実施例が以下において表1に与えられる。
【0117】
【0118】
タグ制御フィールドは、(ゼロ長タグを含む)TLV要素に割当てられるタグフィールド1122におけるタグのある形式を示す。タグ制御フィールド値の例が以下に表2において与えられる。
【0119】
【0120】
換言すれば、制御バイトを有する実施の形態では、制御バイトはタグの長さを示してもよい。
【0121】
ある実施の形態では、タグフィールド1122は、8ビット、16ビット、32ビット、または64ビットなどのような、0~8バイトを含んでもよい。いくつかの実施の形態では、タグフィールドのタグはプロファイル特定タグまたは文脈特定タグとして分類されてもよい。プロファイル特定タグは、以下に論じられるように、ベンダId、プロファイルId、および/またはタグ番号を用いて、要素をグローバルに識別する。文脈特定タグは、含むディクショナリ要素の文脈内でTLV要素を識別し、1バイトのタグ番号を含んでもよい。文脈特定タグはそれらのコンテナの文脈において定義されるので、1つの文脈特定タグは、異なるコンテナ内に含まれるときには、異なる解釈を有し得る。いくつかの実施の形態では、文脈は、さらに、ネスト化されたコンテナから導出されてもよい。
【0122】
制御バイトを有する実施の形態では、タグ長はタグ制御フィールドにおいてエンコードされ、タグフィールド1122は可能な3つのフィールド:ベンダIdフィールド、プロファイルIdフィールド、およびタグ番号フィールドを含む。十分に適格とされる形式では、エンコードされたタグフィールド1122はすべての3つのフィールドを含み、タグ番号フィールドは、タグ制御フィールドによって決められる16ビットまたは32ビットを含む。暗黙的形式では、タグはタグ番号のみを含み、ベンダIdおよびプロファイル番号はTLV要素のプロトコル文脈から推測される。コアプロファイル形式は、以下に論じられるように、プロファイル特定タグを含む。文脈特定タグは、タグ番号を搬送する1つのバイトとしてエンコードされる。匿名要素はゼロ長タグフィールド1122を有する。
【0123】
制御バイトを伴わないいくつかの実施の形態では、2つのビットがタグフィールド1122の長さを含んでもよく、2つのビットが長さフィールド1124の長さを含んでもよく、4つのビットが値フィールド1126に記憶される情報のタイプを示してもよい。タグフィールドに対する上位8ビットに対する考えられ得るエンコーディングの一例が以下に表3において示される。
【0124】
【0125】
表3に示されるように、タグフィールド1122の上位8ビットを用いて、タグフィールド1122、長さフィールド1124および値フィールド1126についての情報をエンコードしてもよく、タグフィールド1122を用いてタグフィールド1122および長さフィールド1124に対して長さを判断してもよい。タグフィールド1122における残りのビットは、ユーザ配分および/またはユーザ割当てされるタグ値に対して利用可能にされてもよい。
【0126】
長さフィールド1124は、表3に示されるようにタグフィールド1122によって、または表2に示されるように要素フィールドによって示されるように、8ビット、16ビ
ット、32ビットまたは64ビットを含んでもよい。さらに、長さフィールド1124は、値フィールド1126においてエンコードされるものの長さを表わす、符号無し整数を含んでもよい。ある実施の形態では、長さは、TLV要素を送信する装置によって選択されてもよい。値フィールド1126は、デコードされるべきペイロードデータを含むが、値フィールド1126の解釈はタグ長フィールドおよび/または制御バイトに依存してもよい。たとえば、8ビットタグを含む制御バイトを伴わないTLVパケットが、以下において説明のために表4に示される。
【0127】
【0128】
表4に示されるように、1行目は、タグフィールド1122および長さフィールド1124が各々8ビットの長さを有することを示す。加えて、タグフィールド1122は、タグタイプが1行目に対するものであり、コンテナであることを示す(たとえばTLVパケット)。第2行から第6行に対するタグフィールド1124は、TLVパケットにおける各エントリが、各々8ビットからなるタグフィールド1122と長さフィールド1124とを有することを示す。加えて、タグフィールド1124は、TLVパケットにおける各エントリが、32ビットの浮動小数点を含む値フィールド1126を有することを示す。値フィールド1126における各エントリは、対応するタグフィールド1122および長さフィールド1124情報を用いてデコードされてもよい浮動数に対応する。この例に示されるように、値フィールド1126における各エントリは華氏における温度に対応する。理解できるように、上記のようにデータをTLVパケットに格納することによって、データは、ファブリックにおいて異なる装置によって用いられ得るように、さまざまな長さおよび情報に対して柔軟性のあるままでコンパクトに転送され得る。さらに、ある実施の形態では、マルチバイト整数フィールドは、リトルエンディアン順序またはビッグエンディアン順序で送信されてもよい。
【0129】
送信側/受信側装置フォーマット(たとえばJSON)によって用いられてもよい順序プロトコル(たとえばリトルエンディアン)を用いてTLVパケットを送信することによって、ノード間で転送されるデータは、ノードの少なくとも1つによって用いられる順序プロトコル(たとえばリトルエンディアン)で送信されてもよい。たとえば、1つ以上のノードがARMまたはix86プロセッサを含む場合には、ノード間の伝送を、リトルエンディアンバイト順序づけを用いて伝送することにより、バイト再順序づけの使用を低減してもよい。バイト再順序づけを含むことを低減することによって、TLVフォーマットは、伝送の両端でバイト再順序づけを用いる伝送よりも少ない電力を用いて装置が通信することを可能にする。さらに、TLVフォーマット化は、JSON+拡張可能マークアップ言語(XML)のような、他のデータ格納技術間における1対1翻訳を与えるよう指定されてもよい。一例として、TLVフォーマットを用いて以下のXMLプロパティリストを表現してもよい。
【0130】
【0131】
一例として、上記のプロパティリストは、以下の表5に従って(制御バイトなしで)上記のTLVフォーマットのタグにおいて表現されてもよい。
【0132】
【0133】
同様に、表6は、例示のXMLプロパティリストに対するリテラルタグ、長さ、および値
表現の一例を示す。
【0134】
【0135】
TLVフォーマットは、さらにXMLとも列挙されてもよいプロパティの参照を可能にするが、より小さい格納サイズとでも同様である。たとえば、表7は、XMLプロパティリスト、対応するバイナリプロパティリスト、およびTLVフォーマットのデータサイズの比較を示す。
【0136】
【0137】
データを転送するのに用いられるデータの量を低減することによって、TLVフォーマットは、ファブリック1000が、限られた電力のために短いデューティサイクルを有する装置(たとえばバッテリ供給される装置)に対してデータを転送することおよび/またはそのような装置からデータを転送することを可能にする。換言すれば、TLVフォーマットは、送信されるべきデータのコンパクト性を増大させながら送信の柔軟性を可能にする。
【0138】
C.一般的なメッセージプロトコル
さまざまなサイズを有する特定のエントリを送信することに加えて、データは、ファブリック内において、TLVフォーマット化を組込んでもよい一般的なメッセージプロトコルを用いて送信されてもよい。一般的なメッセージプロトコル(GMP)1128の実施の形態が
図18に示される。ある実施の形態では、一般的なメッセージプロトコル(GMP)1128は、ファブリック内においてデータを送信するよう用いられてもよい。GMP1128は、データを無接続プロトコル(たとえばUDP)および/または接続指向型プロトコル(たとえばTCP)を介してデータを送信するよう用いられてもよい。したがって、GMP1128は、1つのプロトコルにおいて用いられる情報に柔軟に対応する一方で、他のプロトコルが用いられるときにはそのような情報を無視してもよい。さらに、GMP1226は、ある特定の送信においては用いられないフィールドの省略を可能にしてもよい。1つ以上のGMP1226転送から省略されてもよいデータは、一般的には、データ単位の周辺の曖昧な境界を用いて示される。いくつかの実施の形態では、複数バイト整数フィールドをリトルエンディアン順序またはビッグエンディアン順序で送信してもよい。
【0139】
i.パケット長
いくつかの実施の形態では、GMP1128はパケット長フィールド1130を含んでもよい。いくつかの実施の形態では、パケット長フィールド1130は2バイトを含む。パケット長フィールド1130におけるある値は、パケット長フィールド1130それ自体を除く、メッセージの全体の長さをバイトで示す符号無し整数に対応する。パケット長フィールド1130は、GMP1128がTCP接続を介して送信されるときに存在してもよいが、GMP1128がUDP接続を介して送信されるときには、メッセージ長は、パケット長フィールド1130を除く基底のUDPパケットのペイロード長と等しくても
よい。
【0140】
ii.メッセージヘッダ
GMP1128は、さらに、GMP1128がTCPまたはUDP接続を用いて送信されるかどうかに関わらず、メッセージヘッダ1132を含んでもよい。いくつかの実施の形態では、メッセージヘッダ1132は、
図19に示されるフォーマットで配される2バイトのデータを含む。
図19に示されるように、メッセージヘッダ1132はバージョンフィールド1156を含む。バージョンフィールド1156は、メッセージをエンコードするよう用いられるGMP1128のバージョンに対応する。したがって、GMP1128が更新されると、GMP1128の新たなバージョンが形成されるが、ファブリックにおける各装置は、装置にとって既知のGMP1128の任意のバージョンでデータパケットを受信することができてもよい。バージョンフィールド1156に加えて、メッセージヘッダ1132はSフラグフィールド1158とDフラグ1160とを含んでもよい。Sフラグ1158は、(以下に論じられる)ソースノードIdフィールドが送信されるパケットに含まれるかどうかを示す単一のビットである。同様に、Dフラグ1160は、(以下に論じられる)宛先ノードIdフィールドが送信されるパケットに含まれるかどうかを示す単一のビットである。
【0141】
メッセージヘッダ1132は、さらに、暗号化タイプフィールド1162を含む。暗号化タイプフィールド1162は、存在する場合にはどのタイプの暗号化/完全性チェックがメッセージに適用されるかを指定する4つのビットを含む。たとえば、0x0はどのよう
な暗号化またはメッセージ完全性チェックも含まれないことを示してもよく、十進の0x1
はHMAC-SHA-1メッセージ完全性チェックを伴うAES-128-CTR暗号化が含まれることを示してもよい。
【0142】
最後に、メッセージヘッダ1132は、さらに、署名タイプフィールド1164を含む。署名タイプフィールド1164は、もしある場合には、どのタイプのデジタル署名がメッセージに適用されるかを指定する4つのビットを含む。たとえば、0x0はどのようなデ
ジタル署名もメッセージには含まれないことを示してもよく、0x1は、Prime256v1楕円曲
線パラメータを伴う楕円曲線デジタル署名アルゴリズム(ECDSA)がメッセージに含まれることを示してもよい。
【0143】
iii.メッセージId
図18に戻って、GMP1128は、さらに、メッセージIdフィールド1134を含み、それは、送信されるメッセージがTCPまたはUDPを用いて送信されるかどうかに関わらず、メッセージに含まれてもよい。メッセージIdフィールド1134は、メッセージを送信側ノードの視点から一意に識別する符号無し整数値に対応する4つのバイトを含む。いくつかの実施の形態では、ノードは、それらが送信する各メッセージに対して、2
32個のメッセージに到達したあとは0に戻る、増大するメッセージId1134の値を割当てもよい。
【0144】
iv.ソースノードId
ある実施の形態では、GMP1128は、さらに、8つのバイトを含むソースノードIdフィールド1136を含んでもよい。上で論じられたように、ソースノードIdフィールド1136は、メッセージヘッダ1132における単一ビットのSフラグ1158が1にセットされるときにメッセージに存在してもよい。いくつかの実施の形態では、ソースノードIdフィールド1136は、ULA1098のインターフェイスID1104または全ULA1098を含んでもよい。いくつかの実施の形態では、ソースノードIdフィールド1136のバイトは、インデックス値昇順(たとえばEUI[0] 次いでEUI[1] 次いでEUI[2] 次いでEUI[3],など)で送信されてもよい。
【0145】
v.宛先ノードId
GMP1128は、8つのバイトを含む宛先ノードIdフィールド1138を含んでもよい。宛先ノードIdフィールド1138は、ソースノードIdフィールド1136と同様であるが、宛先ノードIdフィールド1138はメッセージに対する宛先ノードに対応する。宛先ノードIdフィールド1138は、メッセージヘッダ1132における単一ビットのDフラグ1160が1にセットされるときにメッセージに存在してもよい。さらに、ソースノードIdフィールド1136と同様に、いくつかの実施の形態では、宛先ノードIdフィールド1138のバイトはインデックス値昇順(たとえばEUI[0] 次いでEUI[1] 次いでEUI[2] 次いでEUI[3],など)で送信されてもよい。
【0146】
vi.キーId
ある実施の形態では、GMP1128はキーIdフィールド1140を含んでもよい。ある実施の形態では、キーIdフィールド1140は2つのバイトを含む。キーIdフィールド1140はメッセージを暗号化するのに用いられる暗号化/メッセージ完全性キーを識別する符号無し整数値を含む。キーIdフィールド1140の存在は、メッセージヘッダ1132の暗号化タイプフィールド1162の値によって判断されてもよい。たとえば、いくつかの実施の形態では、メッセージヘッダ1132の暗号化タイプフィールド1162に対する値が0x00であるときには、キーIdフィールド1140はメッセージから省略されてもよい。
【0147】
キーIdフィールド1140の実施の形態が
図20に提示される。示される実施の形態では、キーIdフィールド1140はキータイプフィールド1166とキー番号フィールド1168とを含む。いくつかの実施の形態では、キータイプフィールド1166は4つのビットを含む。キータイプフィールド1166は、メッセージを暗号化するのに用いられる暗号化/メッセージ完全性のタイプを識別する符号無し整数値に対応する。たとえば、いくつかの実施の形態では、キータイプフィールド1166が0x0である場合には、フ
ァブリックキーはファブリックにおけるノードのすべてまたはほとんどによって共有される。しかしながら、キータイプフィールド1166が0x1である場合には、ファブリック
キーはファブリックにおいてノードの対によって共有される。
【0148】
キーIdフィールド1140は、さらに、キー番号フィールド1168を含み、それは、共有されるキーであるかまたはファブリックキーの、利用可能なキーの組からメッセージを暗号化するのに用いられる特定のキーを識別する符号無し整数値に対応する12個のビットを含む。
【0149】
vii.ペイロード長
いくつかの実施の形態では、GMP1128はペイロード長フィールド1142を含んでもよい。ペイロード長フィールド1142は、存在するときには、2つのバイトを含んでもよい。ペイロード長フィールド1142は、アプリケーションペイロードフィールドのサイズをバイトで示す符号無し整数値に対応する。ペイロード長フィールド1142は、以下においてパディングフィールドとの関連において記載される、メッセージパディングを用いるアルゴリズムを用いてメッセージが暗号化されるときに存在してもよい。
【0150】
viii.初期化ベクトル
いくつかの実施の形態では、GMP1128は、さらに、初期化ベクトル(IV)フィールド1144を含んでもよい。IVフィールド1144は、存在するときには、可変数のバイトのデータを含む。IVフィールド1144は、メッセージを暗号化するのに用いられる暗号のIV値を含む。IVフィールド1144は、IVを用いるアルゴリズムでメッセージが暗号化されるときに用いられてもよい。IVフィールド1144の長さは、メ
ッセージを暗号化するのに用いられる暗号化のタイプによって導出されてもよい。
【0151】
ix.アプリケーションペイロード
GMP1128はアプリケーションペイロードフィールド1146を含む。アプリケーションペイロードフィールド1146は可変数のバイトを含む。アプリケーションペイロードフィールド1146はメッセージにおいて搬送されるアプリケーションデータを含む。アプリケーションペイロードフィールド1146の長さは、存在する場合にはペイロード長フィールド1142から判断されてもよい。ペイロード長フィールド1142が存在しない場合には、アプリケーションペイロードフィールド1146の長さは、すべての他のフィールドの長さをメッセージの全長から減算することによって、および/またはアプリケーションペイロード1146内に含まれるデータ値(たとえばTLV)から判断されてもよい。
【0152】
アプリケーションペイロードフィールド1146の実施の形態が
図21に示される。アプリケーションペイロードフィールド1146はAPバージョンフィールド1170を含む。いくつかの実施の形態では、APバージョンフィールド1170は、どのバージョンのファブリックソフトウェアが送信側装置によってサポートされるかを示す8つのビットを含む。アプリケーションペイロードフィールド1146は、さらに、メッセージタイプフィールド1172を含む。メッセージタイプフィールド1172は、プロファイル内において送信されているメッセージのタイプを示すメッセージオペレーションコードに対応する8つのビットを含んでもよい。たとえば、あるソフトウェア更新プロファイルにおいては、0x00は、送信されているメッセージがイメージ告知であることを示してもよい。アプリケーションペイロードフィールド1146は、さらに、トランザクションに対して送信側ノードに対して一意である交換識別子に対応する16個のビットを含む交換Idフィールド1174を含む。
【0153】
加えて、アプリケーションペイロードフィールド1146はプロファイルIdフィールド1176を含む。プロファイルId1176は、どのようなタイプの通信がメッセージにおいて生ずるかを示すよう用いられる「ディスカッションのテーマ」を示す。プロファイルId1176は、装置が通信することができてもよい1つ以上のプロファイルに対応してもよい。たとえば、プロファイルId1176は、メッセージが、コアプロファイル、ソフトウェア更新プロファイル、ステータス更新プロファイル、データ管理プロファイル、環境および快適さプロファイル、セキュリティプロファイル、安全性プロファイル、および/または他の好適なプロファイルタイプに関係する旨を示してもよい。ファブリック上における各装置は、装置に関連性がありかつ装置が「ディスカッションに参加」できるプロファイルのリストを含んでもよい。たとえば、ファブリックにおける多くの装置は、コアプロファイル、ソフトウェア更新プロファイル、ステータス更新プロファイル、およびデータ管理プロファイルを含んでもよいが、いくつかの装置のみが環境および快適さプロファイルを含むであろう。APバージョンフィールド1170、メッセージタイプフィールド1172、交換Idフィールド、プロファイルIdフィールド1176、およびプロファイル特定ヘッダフィールド1176は、存在する場合には、組合せにおいて、「アプリケーションヘッダ」と称されてもよい。
【0154】
いくつかの実施の形態では、プロファイルIdフィールド1176を介するプロファイルIdの指示は、プロファイルに対して送信されるデータに対するスキーマを与えるよう十分な情報を提供してもよい。しかしながら、いくつかの実施の形態では、さらなる情報を用いて、アプリケーションペイロードフィールド1146をデコードするためのさらなるガイダンスを判断してもよい。そのような実施の形態では、アプリケーションペイロードフィールド1146はプロファイル特定ヘッダフィールド1178を含んでもよい。いくつかのプロファイルはプロファイル特定ヘッダフィールド1178を用いなくてもよく
、それによって、アプリケーションペイロードフィールド1146がプロファイル特定ヘッダフィールド1178を省略することを可能にしてもよい。プロファイルIdフィールド1176および/またはプロファイル特定ヘッダフィールド1178からのスキーマの判断で、データをアプリケーションペイロードサブフィールド1180においてエンコード/デコードしてもよい。アプリケーションペイロードサブフィールド1180は、装置間、および/または受信側装置/サービスによって記憶、再同報通信、および/または作用されるサービス間において送信されるべきコアアプリケーションデータを含む。
【0155】
x.メッセージ完全性チェック
図18に戻って、いくつかの実施の形態では、GMP1128は、さらに、メッセージ完全性チェック(MIC)フィールド1148を含んでもよい。MICフィールド1148は、存在するときには、メッセージのためにMICを含む可変長のバイトのデータを含む。フィールドの長さおよびバイト順序は使用における完全性チェックアルゴリズムに依存する。たとえば、メッセージがHMAC-SHA-1を用いてメッセージ完全性についてチェックされる場合には、MICフィールド1148は20個のバイトをビッグエンディアン順序で含む。さらに、MICフィールド1148の存在は、メッセージヘッダ1132の暗号化タイプフィールド1162が0x0以外の任意の値を含むかどうかによって判
断されてもよい。
【0156】
xi.パディング
GMP1128は、さらに、パディングフィールド1150を含んでもよい。パディングフィールド1150は、存在するときには、暗号化されたメッセージの部分が暗号化ブロックサイズによって均等に割切れるようにするようメッセージに付加される暗号パディングを表わすバイトのシーケンスを含む。パディングフィールド1150の存在は、メッセージヘッダ1132における暗号化タイプフィールド1162によって示される暗号化アルゴリズムのタイプ(たとえば暗号ブロック連鎖モードにおけるブロック暗号)が暗号パディングを用いるかどうかによって判断されてもよい。
【0157】
xii.暗号化
アプリケーションペイロードフィールド1146、MICフィールド1148、およびパディングフィールド1150は、ともになって、暗号化ブロック1152を形成する。暗号化ブロック1152は、メッセージヘッダ1132における暗号化タイプフィールド1162が0x0以外の任意の値であるときに暗号化されるメッセージの部分を含む。
【0158】
xiii.メッセージ署名
GMP1128は、さらに、メッセージ署名フィールド1154を含んでもよい。メッセージ署名フィールド1154は、存在するときには、メッセージの暗号署名を含む可変長のバイトのシーケンスを含む。メッセージ署名フィールドの長さおよびコンテンツは、使用における署名アルゴリズムのタイプに従って判断されてもよく、メッセージヘッダ1132の署名タイプフィールド1164によって示されてもよい。たとえば、Prime256v1楕円曲線パラメータを用いるECDSAが使用におけるアルゴリズムである場合には、メッセージ署名フィールド1154は、リトルエンディアン順序でエンコードされる2つの32ビット整数を含んでもよい。
【0159】
iv.プロファイルおよびプロトコル
上で論じられたように、1つ以上の情報のスキーマが、メッセージに対する所望の一般的なディスカッションタイプで選択されてもよい。プロファイルは1つ以上のスキーマからなってもよい。たとえば、1つのプロファイルがアプリケーションペイロード1146のプロファイルIdフィールド1176に示されるときには、1組の情報のスキーマを用いてアプリケーションペイロードサブフィールド1180においてデータをエンコード/
デコードしてもよい。しかしながら、異なるプロファイルがアプリケーションペイロード1146のプロファイルIdフィールド1176に示されるときには、異なるスキーマの組を用いてアプリケーションペイロードサブフィールド1180におけるデータをエンコード/デコードしてもよい。
【0160】
加えて、ある実施の形態では、各装置は、プロファイルを処理するよう用いられる方法の組を含んでもよい。たとえば、コアプロファイルは以下のプロファイル:GetProfiles,
GetSchema, GetSchemas, GetProperty, GetProperties, SetProperty, SetProperties, RemoveProperty, RemoveProperties, RequestEcho, NotifyPropertyChanged, および/またはNotifyPropertiesChanged(プロファイル獲得、スキーマ獲得、複数のスキーマ獲得
、プロパティ獲得、複数のプロパティ獲得、プロパティ設定、複数のプロパティ設定、プロパティ除去、複数のプロパティ除去、エコー要求、プロパティ変更通知、および/または複数のプロパティ変更通知)を含んでもよい。GetProfiles方法は問合せされるノード
によってサポートされるプロファイルのアレイを返してもよい。GetSchemaおよびGetSchemas方法は、それぞれ、特定のプロファイルについて1つまたはすべてのスキーマを返し
てもよい。GetPropertyおよびGetPropertiesは、それぞれ、あるプロファイルスキーマに関してある値またはすべての値の対を返してもよい。SetPropertyおよびSetPropertiesは、それぞれ、あるプロファイルスキーマについて、単一の値または複数の値をセットしてもよい。RemovePropertyおよびRemovePropertiesは、それぞれ、あるプロファイルスキーマから単一の値または複数の値を除去するよう試みてもよい。RequestEchoは、ある指定
されるノードに対して、そのノードが修正されない状態で返す任意のデータペイロードを送信してもよい。NotifyPropertyChangedおよびNotifyPropertiesChangedは、それぞれ、単一/複数の値の対があるプロファイルスキーマに対して変更された場合に通知を発行してもよい。
【0161】
プロファイルおよびスキーマを理解することを助けるために、プロファイルおよびスキーマの非排他的リストを以下に説明の目的で与える。
【0162】
A.ステータス報告
ステータス報告スキーマは、
図22においてステータス報告フレーム1182として提示される。ステータス報告スキーマは、別のプロファイルであってもよく、または1つ以上のプロファイルに含まれてもよい(たとえばコアプロファイル)。ある実施の形態では、ステータス報告フレーム1182は、プロファイルフィールド1184、ステータスコードフィールド1186、次のステータスフィールド1188を含み、追加のステータス情報フィールド1190を含んでもよい。
【0163】
i.プロファイルフィールド
いくつかの実施の形態では、プロファイルフィールド1184は、現在のステータス報告における情報が解釈されることになるプロファイルを定義する4つのバイトのデータを含む。プロファイルフィールド1184の実施の形態が、
図23において、2つのサブフィールドで示される。示される実施の形態では、プロファイルフィールド1184はプロファイルIdサブフィールド1192を含み、それは、ステータスコードフィールド1186の値が定義されるプロファイルに対するベンダ特定識別子に対応する16個のビットを含む。プロファイルフィールド1184は、さらに、ベンダIdサブフィールド1194を含み、それは、プロファイルIdサブフィールド1192において識別されるプロファイルを与えるベンダを識別する16個のビットを含む。
【0164】
ii.ステータスコード
ある実施の形態では、ステータスコードフィールド1186は、報告されているステータスをエンコードする16個のビットを含む。ステータスコードフィールド1186にお
ける値は、プロファイルフィールド1184において与えられるベンダIdサブフィールド1192およびプロファイルIdサブフィールド1194においてエンコードされる値との関係において解釈される。加えて、ある実施の形態では、ステータスコード空間を、以下において表8に示されるように4つのグループに分割してもよい。
【0165】
【0166】
表8は、各特定のプロファイルIdごとに別々に割当てられ用いられる、用いられてもよい一般的なステータスコード範囲を識別するが、いくつかの実施の形態では、いくつかのステータスコードはプロファイルの各々に共通であってもよい。たとえば、これらのプロファイルは、0x00000000のような共通のプロファイル(たとえばコアプロファイル)識別子を用いて識別されてもよい。
【0167】
iii.次のステータス
いくつかの実施の形態では、次のステータスコードフィールド1188は8つのビットを含んでもよい。次のステータスコードフィールド1188は、現在報告されるステータスのあとに後続のステータス情報があるかどうかを示してもよい。後続のステータス情報が含まれることになる場合には、次のステータスコードフィールド1188は、どのようなタイプのステータス情報が含まれることになるかを示す。いくつかの実施の形態では、次のステータスコードフィールド1188は常に含まれ得、それによって、おそらくはメッセージのサイズを増大させ得る。しかしながら、ステータス情報をともに連鎖させる機会を与えることによって、送信されるデータの全体的な低減に対する可能性が低減され得る。次のステータスフィールド1186が0x00である場合には、どのような後続のステータス情報フィールド1190も含まれない。しかしながら、非ゼロの値は、データが含まれてもよいことを示してもよく、データが含まれる形式(たとえばTLVパケットにおける)を示してもよい。
【0168】
iv.追加のステータス情報
次のステータスコードフィールド1188が非ゼロであるときには、追加のステータス情報フィールド1190がメッセージに含まれる。存在する場合には、ステータス項目フィールドは、先行するステータスタイプフィールドの値によって判断されてもよい形式(
たとえばTLVフォーマット)でステータスを含んでもよい。
【0169】
B.ソフトウェア更新
ソフトウェア更新プロファイルまたはプロトコルは、スキーマの組、およびクライアントがダウンロードまたはインストールしてもよいソフトウェアの存在についての情報にクライアントが気づかされるかまたはそのような情報を求めることを可能にするクライアント/サーバプロトコルである。ソフトウェア更新プロトコルを用いて、ソフトウェアイメージを、プロファイルクライアントに対して、クライアントに既知のフォーマットで与えてもよい。あとのソフトウェアイメージの処理は、包括的、装置特定、またはベンダ特定であってもよく、ソフトウェア更新プロトコルおよび装置によって判断されてもよい。
【0170】
i.アプリケーションペイロードに対する一般的なアプリケーションヘッダ
適切に認識および処理されるために、ソフトウェア更新プロファイルフレームは、GMP1128のアプリケーションペイロードフィールド1146内において識別されてもよい。いくつかの実施の形態では、すべてのソフトウェア更新プロファイルフレームは、0x0000000Cのような共通のプロファイルId1176を用いてもよい。加えて、ソフトウェア更新プロファイルフレームは、追加の情報を示すメッセージタイプフィールド1172を含んでもよく、以下の表9および送信されるメッセージのタイプに従って選択されてもよい。
【0171】
【0172】
加えて、以下に記載されるように、ソフトウェア更新シーケンスを、サーバが更新をイメージ告知として送信すること、またはクライアントが更新をイメージクエリとして受信することによって開始してもよい。いずれの実施の形態においても、開始イベントからの交換Id1174を、ソフトウェア更新との関連において用いられるすべてのメッセージに対して用いる。
【0173】
ii.プロトコルシーケンス
図24は、ソフトウェア更新クライアント1198とソフトウェア更新サーバ1200との間におけるソフトウェア更新に対するプロトコルシーケンス1196の実施の形態を示す。ある実施の形態では、ファブリックにおける任意の装置はソフトウェア更新クライアント1198またはソフトウェア更新サーバ1200であってもよい。プロトコルシーケンス1196のある実施の形態は、破線で示されるもののような、一部のソフトウェア更新送信においては省略されてもよいさらなるステップを含んでもよい。
【0174】
1.サービス探索
いくつかの実施の形態では、プロトコルシーケンス1196は、ソフトウェア更新プロ
ファイルサーバが更新の存在を告知することで始まる。しかしながら、示される実施の形態のような他の実施の形態では、プロトコルシーケンス1196は、上に論じられるように、サービス探索1202で始まってもよい。
【0175】
2.イメージ告知
いくつかの実施の形態では、イメージ告知メッセージ1204はソフトウェア更新サーバ1200によってマルチキャストまたはユニキャストされてもよい。イメージ告知メッセージ1204は、ファブリックにおける装置に対して、サーバ1200は提供すべきソフトウェア更新を有する旨を知らせる。更新がクライアント1198に適用可能である場合には、イメージ告知メッセージ1204の受信で、ソフトウェア更新クライアント1198はイメージクエリメッセージ1206で応答する。ある実施の形態では、イメージ告知メッセージ1204はプロトコルシーケンス1196に含まれなくてもよい。その代わりに、そのような実施の形態では、ソフトウェア更新クライアント1198は、ポーリングスケジュールを用いて、イメージクエリメッセージ1206をいつ送信すべきかを判断してもよい。
【0176】
3.イメージクエリ
ある実施の形態では、イメージクエリメッセージ1206は、上で論じられたように、ソフトウェア更新クライアント1198から、イメージ告知メッセージ1204に応答するか、またはポーリングスケジュールに従って、ユニキャストされてもよい。イメージクエリメッセージ1206は、クライアント1198からのそれ自体についての情報を含む。イメージクエリメッセージ1206のフレームの実施の形態が
図25に示される。
図25に示されるように、イメージクエリメッセージ1206のある実施の形態は、フレーム制御フィールド1218と、製品仕様フィールド1220と、ベンダ特定データフィールド1222と、バージョン仕様フィールド1224と、ロケール仕様フィールド1226と、被サポート完全性タイプフィールド1228と、被サポート更新スキームフィールド1230とを含んでもよい。
【0177】
a.フレーム制御
フレーム制御フィールド1218は、1バイトを含み、イメージクエリメッセージ1204についてのさまざまな情報を示す。フレーム制御フィールド1218の一例を
図26に示す。示されるように、フレーム制御フィールド1218は3つのサブフィールド:ベンダ特定フラグ1232とロケール仕様フラグ1234と予約済フィールドS3とを含んでもよい。ベンダ特定フラグ1232は、ベンダ特定データフィールド1222がメッセージイメージクエリメッセージに含まれるかどうかを示す。たとえば、ベンダ特定フラグ1232が0であるとき、いかなるベンダ特定データフィールド1222もイメージクエリメッセージには存在しなくてもよいが、ベンダ特定フラグ1232が1であるときには、ベンダ特定データフィールド1222はイメージクエリメッセージに存在してもよい。同様に、ロケール仕様フラグ1234における1値は、ロケール仕様フィールド1226がイメージクエリメッセージに存在することを示し、0値は、ロケール仕様フィールド1226がイメージクエリメッセージに存在しないことを示す。
【0178】
b.製品仕様
製品仕様フィールド1220は6バイトフィールドである。製品仕様フィールド1220の実施の形態が
図27に示される。示されるように、製品仕様フィールド1220は、3つのサブフィールド:ベンダIdフィールド1236と製品Idフィールド1238と、製品リビジョンフィールド1240とを含んでもよい。ベンダIdフィールド1236は、ソフトウェア更新クライアント1198に対するベンダを示す16個のビットを含む。製品Idフィールド1238は、イメージクエリメッセージ1206をソフトウェア更新クライアント1198として送信している装置製品を示す16個のビットを含む。製品
リビジョンフィールド1240は、ソフトウェア更新クライアント1198のリビジョン属性を示す16個のビットを含む。
【0179】
c.ベンダ特定データ
ベンダ特定データフィールド1222は、イメージクエリメッセージ1206に存在するときには、可変数のバイトの長さを有する。ベンダ特定データフィールド1222の存在は、フレーム制御フィールド1218のベンダ特定フラグ1232から判断されてもよい。存在するときには、ベンダ特定データフィールド1222は、上に記載されたように、ソフトウェア更新クライアント1198についてのベンダ特定情報をTLVフォーマットでエンコードする。
【0180】
d.バージョン仕様
バージョン仕様フィールド1224の実施の形態を
図28に示す。バージョン仕様フィールド1224は、2つのサブフィールド:バージョン長フィールド1242とバージョン文字列フィールド1244とに下位分割される可変数のバイトを含む。バージョン長フィールド1242は、バージョン文字列フィールド1244の長さを示す8つのビットを含む。バージョン文字列フィールド1244は、長さが可変であり、バージョン長フィールド1242によって決められる。いくつかの実施の形態では、バージョン文字列フィールド1244は、長さにおいて255個のUTF-8文字を用いて上限を設けられてもよい。バージョン文字列フィールド1244においてエンコードされる値は、ソフトウェア更新クライアント1198に対するソフトウェアバージョン属性を示す。
【0181】
e.ロケール仕様
ある実施の形態では、ロケール仕様フィールド1226は、フレーム制御1218のロケール仕様フラグ1234が1であるときにイメージクエリメッセージ1206に含まれてもよい。ロケール仕様フィールド1226の実施の形態を
図29に示す。ロケール仕様フィールド1226の示される実施の形態は、2つのサブフィールド:ロケール文字列長フィールド1246とロケール文字列フィールド1248とに分割される可変数のバイトを含む。ロケール文字列長フィールド1246は、ロケール文字列フィールド1248の長さを示す8つのビットを含む。ロケール仕様フィールド1226のロケール文字列フィールド1248は、長さが可変であってもよく、ポータブルオペレーティングシステムインターフェイス(POSIX(ポジックス))ロケールコードに基づいてローカル記述をエンコードするUTF-8文字の文字列を含んでもよい。POSIXロケールコードに対する標準フォーマットは、[language[_territory][.codeset][@modifier]]である。た
とえば、オーストラリア英語に対するPOSIX表現はen_AU.UTF8である。
【0182】
f.被サポート完全性タイプ
完全性タイプフィールド1228の実施の形態が
図30に示される。被サポート完全性タイプフィールド1228は、2つのサブフィールド:タイプリスト長フィールド1250と完全性タイプリストフィールド1252とに分割される2バイトから4バイトのデータを含む。タイプリスト長フィールド1250は、完全性タイプリストフィールド1252のバイトにおける長さを示す8つのビットを含む。完全性タイプリストフィールド1252は、ソフトウェア更新クライアント1198のソフトウェア更新完全性タイプ属性の値を示す。いくつかの実施の形態では、完全性タイプは以下の表10から導出されてもよい。
【0183】
【0184】
完全性タイプリストフィールド1252は、表10からの少なくとも1つの要素または含まれない他のさらなる値を含んでもよい。
【0185】
g.被サポート更新スキーム
被サポートスキームフィールド1230の実施の形態を
図31に示す。被サポートスキームフィールド1230は、2つのサブフィールド:スキームリスト長フィールド1254と更新スキームリストフィールド1256とに分割される可変数のバイトを含む。スキームリスト長フィールド1254は、更新スキームリストフィールドの長さをバイトで示す8つのビットを含む。被サポート更新スキームフィールド1222の更新スキームリストフィールド1256は、長さが可変であり、スキームリスト長フィールド1254によって決められる。更新スキームリストフィールド1256は、ソフトウェア更新クライアント1198のソフトウェア更新プロファイルの更新スキーム属性を表現する。例示の値の実施の形態が以下の表11に示される。
【0186】
【0187】
イメージクエリメッセージ1206を受信すると、ソフトウェア更新サーバ1200は、送信された情報を用いて、ソフトウェア更新サーバ1200がソフトウェア更新クライアント1198に対する更新を有するかどうか、およびその更新をどのようにしてソフトウェア更新クライアント1198に送達するのが一番よいかを判断する。
【0188】
4.イメージクエリ応答
図24に戻って、ソフトウェア更新サーバ1200がイメージクエリメッセージ1206をソフトウェア更新クライアント1198から受信したのち、ソフトウェア更新サーバ1200はイメージクエリ応答1208で応答する。イメージクエリ応答1208は、更新イメージがなぜソフトウェア更新クライアント1198にとって利用可能でないかを詳
述する情報、またはソフトウェア更新クライアント1198が利用可能なイメージ更新をダウンロードおよびインストールすることができるようにその更新についての情報を含む。
【0189】
イメージクエリ応答1208のフレームの実施の形態を
図32に示す。示されるように、イメージクエリ応答1208は5つの可能なサブフィールド:クエリステータスフィールド1258と統一的リソース識別子(URI)フィールド1260と完全性仕様フィールド1262と更新スキームフィールド1264と更新オプションフィールド1266とを含む。
【0190】
a.クエリステータス
クエリステータスフィールド1258は、可変数のバイトを含み、上においてステータス報告に関して論じられたように、ステータス報告フォーマット化データを含む。たとえば、クエリステータスフィールド1258は、以下の表12に示されるもののような、イメージクエリ応答ステータスコードを含んでもよい。
【0191】
【0192】
b.URI
URIフィールド1260は可変数のバイトを含む。URIフィールド1260の存在はクエリステータスフィールド1258によって判断されてもよい。クエリステータスフィールド1258によって、更新が利用可能である旨が示される場合には、URIフィールド1260が含まれてもよい。URIフィールド1260の実施の形態を
図33に示す。URIフィールド1260は、2つのサブフィールド:URI長フィールド1268とURI文字列フィールド1270とを含む。URI長フィールド1268は、URI文字列フィールド1270の長さをUTF-8文字で示す16個のビットを含む。URI文字列フィールド1270は、ソフトウェア更新クライアント1198が、ソフトウェアイメージ更新が存在するときにはそれを見つけ出し、ダウンロードし、およびインストールできるように、提示されているソフトウェアイメージ更新のURI属性を示す。
【0193】
c.完全性仕様
完全性仕様フィールド1262は、長さが可変であってもよく、更新がソフトウェア更新サーバ1198からソフトウェア更新クライアント1198に利用可能である旨をクエリステータスフィールド1258が示すときに存在してもよい。完全性仕様フィールド1262の実施の形態を
図34に示す。示されるように、完全性仕様フィールド1262は
2つのサブフィールド:完全性タイプフィールド1272と完全性値フィールド1274とを含む。完全性タイプフィールド1272は、ソフトウェアイメージ更新に対する完全性タイプ属性を示す8つのビットを含み、上記の表10に示されるものと同様のリストを用いて事前設定されてもよい。完全性値フィールド1274は、イメージ更新メッセージが送信中に完全性を維持したことを検証するよう用いられる完全性値を含む。
【0194】
d.更新スキーム
更新スキームフィールド1264は、8つのビットを含み、更新がソフトウェア更新サーバ1198からソフトウェア更新クライアント1198に利用可能である旨をクエリステータスフィールド1258が示すときに存在する。存在する場合には、更新スキームフィールド1264は、ソフトウェア更新サーバ1198に提示されているソフトウェア更新イメージに対するスキーム属性を示す。
【0195】
e.更新オプション
更新オプションフィールド1266は、8つのビットを含み、更新がソフトウェア更新サーバ1198からソフトウェア更新クライアント1198に利用可能である旨をクエリステータスフィールド1258が示すときに存在する。更新オプションフィールド1266は
図35に示されるように下位分割されてもよい。示されるように、更新オプションフィールド1266は4つのサブフィールド:更新優先度フィールド1276と更新条件フィールド1278と報告ステータスフラグ1280と予約済フィールド1282とを含む。いくつかの実施の形態では、更新優先度フィールド1276は2つのビットを含む。更新優先度フィールド1276は、更新の優先度属性を示し、以下の表13に示されるもののような値を用いて判断されてもよい。
【0196】
【0197】
更新条件フィールド1278は、いつ更新すべきか、または更新するかどうかを判断すべく、条件的ファクタを判断するのに用いられてもよい3つのビットを含む。たとえば、更新条件フィールド1278における値は以下の表14を用いてデコードされてもよい。
【0198】
【0199】
報告ステータスフラグ1280は、ソフトウェア更新クライアント1198がダウンロード通知メッセージ1210で応答すべきかどうかを示す1つのビットである。報告ステータスフラグ1280が1にセットされる場合には、ソフトウェア更新サーバ1198は、ソフトウェア更新がソフトウェア更新クライアント1200によってダウンロードされたあとにダウンロード通知メッセージ1210が送信されることを要求している。
【0200】
イメージクエリ応答1208が、更新が利用可能であることを示す場合には、ソフトウェア更新クライアント1198は、イメージクエリ応答1208において示される時間に、イメージクエリ応答1208に含まれる情報を用いて、その更新をダウンロードする(1210)。
【0201】
5.ダウンロード通知
更新ダウンロード1210が成功裏に完了したかまたは失敗して報告ステータスフラグ1280が1になったあと、ソフトウェア更新クライアント1198はダウンロード通知メッセージ1212で応答してもよい。ダウンロード通知メッセージ1212は、上で論じられたステータス報告フォーマットに従ってフォーマットされてもよい。ダウンロード通知メッセージ1212において用いられるステータスコードの一例を以下の表15に示す。
【0202】
【0203】
上に記載されるステータス報告に加えて、ダウンロード通知メッセージ1208は、ダウンロードおよび/またはダウンロードの失敗に関連してもよいさらなるステータス情報を含んでもよい。
【0204】
6.通知応答
ソフトウェア更新サーバ1200は、ダウンロード通知メッセージ1212または更新通知メッセージ1216に応答して通知応答メッセージ1214で応答してもよい。通知応答メッセージ1214は、上に記載されるように、ステータス報告フォーマットを含んでもよい。たとえば、通知応答メッセージ1214は以下の表16に列挙されるステータスコードを含んでもよい。
【0205】
【0206】
上記のステータス報告に加えて、通知応答メッセージ1214は、ソフトウェア更新をダウンロード、更新、および/またはダウンロード/更新の失敗に関係してもよいさらなるステータス情報を含んでもよい。
【0207】
7.更新通知
更新が成功裏に完了するかまたは失敗して報告ステータスフラグ1280値が1になったあと、ソフトウェア更新クライアント1198は更新通知メッセージ1216で応答してもよい。更新通知メッセージ1216は上に記載されるステータス報告フォーマットを用いてもよい。たとえば、更新通知メッセージ1216は、以下の表17において列挙されるステータスコードを含んでもよい。
【0208】
【0209】
上記のステータス報告に加えて、更新通知メッセージ1216は、更新および/または更新の失敗に関係してもよいさらなるステータス情報を含んでもよい。
【0210】
C.データ管理プロトコル
データ管理は、ファブリック内におけるさまざまな電子装置において用いられる共通のプロファイル(たとえばコアプロファイル)に含まれてもよく、または別個のプロファイルとして指定されてもよい。いずれの状況においても、装置管理プロトコル(DMP)を用いて、ノードがノード常駐情報をブラウジング、共有および/または更新してもよい。DMPにおいて用いられるシーケンス1284が
図36に示される。シーケンス1284は、被閲覧側ノード1288の常駐データを閲覧および/または変更するよう要求する閲覧側ノード1286を示す。加えて、閲覧側ノード1286は、スナップショット要求、閲覧がある時間期間にわたって持続する旨の監視要求、または他の好適な閲覧タイプなどのような、いくつかの閲覧オプションのうちの1つを用いて、常駐データを閲覧することを要求してもよい。各メッセージは、
図21を参照して記載されるアプリケーションペイロード1146に対するフォーマットに従う。たとえば、各メッセージは、0x235A0000のような、データ管理プロファイルおよび/または関係のあるコアプロファイルに対応するプロファイルId1176を含む。各メッセージは、さらに、メッセージタイプ1172を含む。メッセージタイプ1172は、ビューに対する閲覧タイプのような、会話に関係するさまざまなファクタを判断するのに用いられてもよい。たとえば、いくつかの実施の形態では、メッセージタイプフィールド1172は以下の表18に従ってエンコード/デコードされてもよい。
【0211】
【0212】
i.ビュー要求
ビュー要求メッセージ1290は、上で論じられたように、ノード常駐データを閲覧するよう要求するが、要求のタイプはメッセージタイプフィールド1172によって判断されてもよい。したがって、各要求タイプは異なるビュー要求フレームを含んでもよい。
【0213】
1.スナップショット要求
スナップショット要求は、閲覧側ノード1286が今後の更新を要求することなく被閲覧側ノード1288上のノード常駐データに対する即時ビューを所望するときに閲覧側ノード1286によって送信されてもよい。スナップショット要求フレーム1292の実施の形態を
図37に示す。
【0214】
図37に示されるように、スナップショット要求フレーム1292は、長さが可変であってもよく、3つのフィールド:ビューハンドルフィールド1294とパス長リストフィールド1296とパスリストフィールド1298とを含んでもよい。ビューハンドルフィールド1294は、要求されたビューを識別するよう「ハンドル」を与える2つのビットを含んでもよい。いくつかの実施の形態では、ビューハンドルフィールド1294は、16ビットの乱数または16ビットのシーケンス番号を、要求が形成されるときに閲覧側ノード1286上で実行される一意性チェックとともに用いて、事前設定される。パスリスト長フィールド1296は、パスリストフィールド1298の長さを示す2つのバイトを含む。パスリストフィールド1298は、長さが可変であり、パスリスト長フィールド1296の値によって示される。パスリストフィールド1298の値はノードに対するスキーマパスを示す。
【0215】
スキーマパスは、ノードに常駐するスキーマの一部であるデータ項目またはコンテナに対する簡潔な記述である。たとえば、
図38は、プロファイルスキーマ1300の一例を与える。示されるプロファイルスキーマ1300においては、データ項目1302へのパスがバイナリフォーマットで“Foo:bicycle:mountain”(Foo:自転車:マウンテン)と
書かれてもよい。パスのバイナリフォーマットは、
図39に示されるように、プロファイルバイナリフォーマット1304として表現されてもよい。プロファイルバイナリフォーマット1304は、2つのサブフィールド:プロファイル識別子フィールド1306とTLVデータフィールド1308とを含む。プロファイル識別子フィールド1306は、どのプロファイルが参照されているか(たとえばFooプロファイル)を識別する。TLVデ
ータフィールド1308パス情報。先に論じられたように、TLVデータは、同封されたデータについての情報を含むタグフィールドを含む。
図38のFooプロファイルを指すよ
う用いられるタグフィールド値は表19にリスト化された値と同様であってもよい。
【0216】
【0217】
表19および
図38のFooプロファイルを用いて、パス“Foo:bicycle:mountain”を表わ
すTLVフォーマットにおけるバイナリ文字列が、以下の表20に示されるように表現されてもよい。
【表20】
【0218】
閲覧側ノード1286が、プロファイルスキーマ(たとえば
図39のFooプロファイルス
キーマ)に定義される全データを受信することを所望する場合には、ビュー要求メッセージ1290は、「ニル」項目(たとえば0x0D00 TLおよびコンテナを指す空の長さを要求
してもよい。
【0219】
2.監視要求
閲覧側ノード1286がスナップショット以上のものを所望する場合には、閲覧側ノード1286は監視要求を要求してもよい。監視要求は、被閲覧側ノード1288における当該のデータに変更がなされるときに被閲覧側ノード1288に対して更新を送信するよう求めて、閲覧側ノード1286がそのデータの同期されたリストを保持できるようにする。監視要求フレームは、
図37のスナップショット要求とは異なるフォーマットを有してもよい。監視要求フレーム1310の実施の形態が
図40に示される。監視要求フレーム1310は4つのフィールド:ビューハンドルフィールド1312とパスリスト長フィールド1314とパスリストフィールド1316と変更カウントフィールド1318とを含む。ビューハンドルフィールド1312、パスリスト長フィールド1314、およびパスリストフィールドは、それぞれ、
図37のスナップショット要求のビューハンドルフィールド1294、パスリスト長フィールド1296、およびパスリストフィールド129
8と同様にフォーマットされてもよい。さらなるフィールドの変更カウントフィールド1318は、更新が閲覧側ノード1286に送信される要求されたデータの変更数のしきい値を示す。いくつかの実施の形態では、変更カウントフィールド1318の値が0である場合には、被閲覧側ノード1288は、更新をいつ送信するべきかを被送信側ノード1288自身で判断してもよい。変更カウントフィールド1318の値が0でない場合には、変更の数がその値と等しくなった後、更新が閲覧側ノード1286に送信される。
【0220】
3.周期的更新要求
第3のタイプのビューが、さらに、閲覧側ノード1286によって要求されてもよい。この第3のタイプのビューは周期的更新と称される。周期的更新はスナップショットビューを周期的更新と並んで含む。理解され得るように、周期的更新要求はスナップショット要求と同様であってもよいが、さらなる情報が更新期間を決める。たとえば、周期的更新要求フレーム1320の実施の形態が
図41に示される。周期的更新要求フレーム1320は4つのフィールド:ビューハンドルフィールド1322とパスリスト長フィールド1324とパスリストフィールド1326と更新期間フィールド1328とを含む。ビューハンドルフィールド1322とパスリスト長フィールド1324とパスリストフィールド1326とはスナップショット要求フレーム1292におけるそれらの対応のフィールドと同様にフォーマットされてもよい。更新期間フィールド1328は、長さが4つのバイトであり、関連する時間単位(たとえば秒)で更新間において経過する時間期間に対応する値を含む。
【0221】
4.リフレッシュ要求
閲覧側ノード1286が更新されたスナップショットを受信することを所望する場合には、閲覧側ノード1286は、ビュー要求メッセージ1290を、
図42に示されるリフレッシュ要求フレーム1330の形式で送信してもよい。リフレッシュ要求フレーム1330は、本質的には、リフレッシュ要求フレーム1330におけるビューハンドル値を用いて、被閲覧側ノード1228が前の要求として認識することができる前のスナップショット要求から、スナップショットビューハンドルフィールド(たとえばビューハンドルフィールド1294)を再送信する。
【0222】
5.ビュー取消要求
閲覧側ノード1286が進行中のビュー(たとえば周期的更新または監視ビュー)を取消すよう所望するときには、閲覧側ノード1286は、ビュー要求メッセージ1290を、
図43に示されるようなビュー取消要求フレーム1332の形式で送信してもよい。ビュー取消要求フレーム1332は、本質的に、リフレッシュ要求フレーム1330におけるビューハンドル値を用いて、現在の周期的更新または監視ビューを取消すために、被閲覧側ノード1288が前の要求として認識できる前の要求からの前の周期的更新または監視ビュー(たとえばビューハンドルフィールド1310または1322)からビューハンドルフィールドを再送信する。
【0223】
ii.ビュー応答
図36に戻って、被閲覧側ノード1288がビュー要求メッセージ1290を受信した後、被閲覧側ノード1288はビュー応答メッセージ1334で応答する。ビュー応答メッセージフレーム1336の一例が
図44に示される。ビュー応答メッセージフレーム1336は3つのフィールド:ビューハンドルフィールド1338とビュー要求ステータスフィールド1240とデータ項目リスト1242とを含む。ビューハンドルフィールド1338は、上において参照されるビューハンドルフィールド1338のうちの任意のものと同様にフォーマットされてもよい。加えて、ビューハンドルフィールド1338は、ビュー応答メッセージ1334が応答しているビュー要求メッセージ1290からのそれぞれのビューハンドルフィールドと一致する値を含む。ビュー要求ステータスフィールド1
340は、ビュー要求のステータスを示す可変長フィールドであり、上で論じられたステータス更新フォーマットに従ってフォーマットされてもよい。データ項目リストフィールド1342は、ビュー要求が成功した旨をビュー要求ステータスフィールド1340が示すときに存在する可変長フィールドである。存在する場合には、データ項目リストフィールド1342は、ビュー要求メッセージ1290のパスリストに対応する要求されるデータの順序づけられたリストを含む。さらに、データ項目リストフィールド1342におけるデータは、上で論じられるように、TLVフォーマットでエンコードされてもよい。
【0224】
iii.更新要求
上で論じられたように、いくつかの実施の形態では、被閲覧側ノード1288は閲覧側ノード1286に更新を送信してもよい。これらの更新は更新要求メッセージ1344として送信されてもよい。更新要求メッセージ1344は、更新要求のタイプによって、指定されたフォーマットを含んでもよい。たとえば、更新要求は、明示的な更新要求であるか、またはメッセージId1172によって識別されてもよいビュー更新要求フィールドであってもよい。
【0225】
1.明示的更新要求
明示的更新要求は、任意の時間において、ファブリック1000における他のノードからの情報を所望する結果として送信されてもよい。明示的更新要求は、
図45に示される更新要求フレーム1346でフォーマットされてもよい。示される更新要求フレーム1346は4つのフィールド:更新ハンドルフィールド1348とパスリスト長フィールド1350とパスリストフィールド1352とデータ項目リストフィールド1354とを含む。
【0226】
更新ハンドルフィールド1348は、乱数または連続数、および更新要求またはその要求に対する応答を識別する一意性チェックで事前設定されてもよい。パスリスト長フィールド1350は、パスリストフィールド1352の長さを示す2つのバイトを含む。パスリストフィールド1352は、上記のように、パスのシーケンスを示す可変長フィールドである。データ項目リストフィールド1354はデータ項目リストフィールド1242と同様にフォーマットされてもよい。
【0227】
2.ビュー更新要求
ビュー更新要求メッセージは、以前に別のノードのスキーマに対するビューを要求したノード、またはそれ自身のデータに対するビューを別のノードに代わって確立したノードによって送信されてもよい。ビュー更新要求フレーム1356の実施の形態が
図46に示される。ビュー更新要求フレーム1356は4つのフィールド:更新ハンドルフィールド1358とビューハンドルフィールド1360と更新項目リスト長フィールド1362と更新項目リストフィールド1364とを含む。更新ハンドルフィールド1358は、更新ハンドルフィールド1348に関して上で論じられたフォーマットを用いて構成されてもよい。ビューハンドルフィールド1360は、同じビューハンドルを有する関係のあるビュー要求メッセージ1290によって形成されるビューを識別する2つのバイトを含む。更新項目リスト長フィールド1362は、2つのバイトを含み、更新項目リストフィールド1364に含まれる更新項目の数を示す。
【0228】
更新項目リストフィールド1364は、可変数のバイトを含み、更新された値を構成するデータ項目をリスト化する。各更新された項目リストは複数の更新項目を含んでもよい。個々の更新項目は、
図47に示される更新項目フレーム1366に従ってフォーマットされる。各更新項目フレーム1366は3つのサブフィールド:項目インデックスフィールド1368と項目タイムスタンプフィールド1370とデータ項目フィールド1372とを含む。項目インデックスフィールド1368は、更新が要求されているビューと、デ
ータ項目フィールド1372に対するそのビューのパスリストにおけるインデックスとを示す2つのバイトを含む。
【0229】
項目タイムスタンプフィールド1370は、4つのバイトを含み、変更から通信されている更新がなされるまでの経過時間を(たとえば秒で)示す。2つ以上の変更がデータ項目に対してなされた場合には、項目タイムスタンプフィールド1370は最も最近の変更または最も早い変更を示してもよい。データ項目フィールド1372は、更新された情報として受信されることになるTLVフォーマットでエンコードされた可変長フィールドである。
【0230】
iv.更新応答
更新が受信された後、ノード(たとえば閲覧側ノード1286)は更新応答メッセージ1374を送信してもよい。更新応答メッセージ1374は、
図48に示される更新応答フレーム1376を用いてエンコードされてもよい。更新応答フレーム1376は2つのフィールド:更新ハンドルフィールド1378と更新要求ステータスフィールド1380とを含む。更新ハンドルフィールド1378は、更新応答メッセージ1374が応答している更新要求メッセージ1344の更新ハンドルフィールドの値に対応する。更新要求ステータスフィールド1380は、上で論じられたステータス報告フォーマットに従って更新のステータスを報告する。加えて、DMPを用いるプロファイル(たとえばコアプロファイルまたはデータ管理プロファイル)は、以下の表21に列挙されるもののようなプロファイル特定コードを含んでもよい。
【0231】
【0232】
D.大容量転送
いくつかの実施の形態では、大容量データファイル(たとえばセンサデータ、ログ、または更新イメージ)をファブリック1000におけるノード/サービス間で転送することが望ましくあり得る。大容量データの転送を可能にするために、別のファイルまたはプロトコルを1つ以上のプロファイルに組込んで、ノード/ノードにおけるサービスに利用可能にされてもよい。大容量データ転送プロトコルは、データファイルを、データの集まりとして、メタデータアタッチメントとともにモデル化してもよい。ある実施の形態では、データは不透明であってもよいが、メタデータを用いて、要求されたファイル転送に進んでもよいかを判断してもよい。
【0233】
大容量転送に関与する装置は、一般的に、大容量転送通信およびイベント形成に従って分割されてもよい。
図49に示されるように、大容量転送における各通信1400は、送信側1402を含み、それは、大容量データ1404を受信するノード/サービスである受信側1406に大容量データ1404を送信するノード/サービスである。いくつかの実施の形態では、受信側は、ステータス情報1408を送信側1402に送信して、大容量転送のステータスを示してもよい。加えて、大容量転送イベントは、送信側1402(たとえばアップロード)または受信側1406(たとえばダウンロード)のどちらかが開始側として開始されてもよい。開始側に応答するノード/サービスは、大容量データ転送
において応答側と称されてもよい。
【0234】
大容量データ転送は同期モードまたは非同期のいずれかを用いて生じてもよい。データが転送されるモードは、大容量データが送信される基底プロトコル(たとえばUDPまたはTCP)などのようなさまざまなファクタを用いて判断されてもよい。無接続プロトコル(たとえばUDP)においては、大容量データは同期モードを用いて転送されてもよく、それは、ノード/サービスの1つ(「ドライバ」)が、転送が進行する速度を制御することを可能にする。ある実施の形態では、同期モード大容量データ転送における各メッセージの後、大容量データ転送において次のメッセージを送信する前に、肯定応答が送信されてもよい。ドライバは送信側1402または受信側1406であってもよい。いくつかの実施の形態では、ドライバは、オンライン状態とオフライン状態との間をトグルして、オンライン状態にあるときには転送を進めるようメッセージを送信してもよい。接続指向型プロトコル(たとえばTCP)を用いての大容量データ転送においては、大容量データは、連続するメッセージを送信する前の肯定応答または単一のドライバを用いない非同期モードを用いて転送されてもよい。
【0235】
大容量データ転送が同期モードまたは非同期モードを用いて実行されるかどうかに関わらず、メッセージのタイプは、アプリケーションペイロード1146におけるメッセージタイプ1172を用いて、アプリケーションペイロードにおけるプロファイルId1176に従って判断されてもよい。表22は、プロファイルId1176における大容量データ転送プロファイル値と関連して用いられてもよいメッセージタイプの一例を含む。
【0236】
【0237】
i.SendInit(送信開始)
SendInit(送信開始)メッセージ1420の実施の形態を
図50に示す。SendInitメッセージ1420は7つのフィールド:転送制御フィールド1422と範囲制御フィールド1424とファイル指示子長フィールド1426と提案される最大ブロックサイズフィールド1428と開始オフセットフィールド1430と長さフィールド1432とファイル指示子フィールド1434とを含んでもよい。
【0238】
転送制御フィールド1422は、
図51に示されるバイトのデータを含む。転送制御フ
ィールドは少なくとも4つのフィールド:非同期フラグ1450とRドライブフラグ1452とSドライブフラグ1454とバージョンフィールド1456とを含む。非同期フラグ1450は、提案される転送が同期モードまたは非同期モードを用いて実行されてもよいかどうかを示す。Rドライブフラグ1452およびSドライブフラグ1454は、各々、それぞれ、受信側1402または送信側1408が同期モード転送を駆動する状態で、受信側1406がデータを転送する能力があるかどうかを示す。
【0239】
範囲制御フィールド1424は、
図52に示される範囲制御フィールド1424のようなバイトのデータを含む。示される実施の形態では、範囲制御フィールド1424は少なくとも3つのフィールド:BigExtentフラグ1470と開始オフセットフラグ1472と
有限長フラグ1474とを含む。有限長フラグ1474は転送が有限長を有するかどうかを示す。有限長フラグ1474は、長さフィールド1432がSendInitメッセージ1420に存在するかどうかを示し、BigExtentフラグ1470は長さフィールド1432に対
するサイズを示す。たとえば、いくつかの実施の形態では、BigExtentフラグ1470に
おける1の値は長さフィールド1432が8バイトであることを示す。そうでない場合には、長さフィールド1432は、存在する場合には、4バイトである。転送が有限長を有する場合には、開始オフセットフラグ1472は、開始オフセットがあるかどうかを示す。開始オフセットがある場合には、BigExtentフラグ1470は開始オフセットフィール
ド1430に対する長さを示す。たとえば、いくつかの実施の形態では、BigExtentフラ
グ1470における1の値は、開始オフセットフィールド1430が8バイトであることを示す。そうでない場合には、開始オフセットフィールド1430は、存在する場合には4バイトである。
【0240】
図50に戻って、ファイル指示子長フィールド1426は、ファイル指示子フィールド1434の長さを示す2つのバイトを含む。ファイル指示子フィールド1434は、ファイル指示子長フィールド1426に依存する可変長フィールドである。最大ブロックサイズフィールド1428は、単一の転送において転送されてもよいブロックの最大サイズを提案する。
【0241】
開始オフセットフィールド1430は、存在するときには、BigExtentフラグ1470
によって示される長さを有する。開始オフセットフィールド1430の値は、送信側1402が転送を開始してもよい転送されるべきファイル内の位置を示し、大きなファイル転送が複数の大容量転送セッションにセグメント化されることを本質的に可能にする。
【0242】
長さフィールド1432は、存在するときには、転送されるべきファイルが有限長を有する旨を有限長フィールド1474が示す場合には、そのファイルの長さを示す。いくつかの実施の形態では、その長さが達成される前に受信側1402が最終のブロックを受信する場合には、受信側は、以下に論じられるように、転送は失敗したと考え、エラーを報告してもよい。
【0243】
ファイル指示子フィールド1434は、送信されるべきデータを識別するよう送信側1402によって選択される可変長識別子である。いくつかの実施の形態では、送信側1402および受信側1406は、送信前にファイルに対する識別子を交渉してもよい。他の実施の形態では、受信側1406は、メタデータをファイル指示子フィールド1434とともに用いて、転送を受入れるべきかどうか、およびそのデータを処理すべきかどうかを判断してもよい。ファイル指示子フィールド1434の長さはファイル指示子長フィールド1426から判断されてもよい。いくつかの実施の形態では、SendInitメッセージ1420は、さらに、TLVフォーマットでエンコードされる可変長のメタデータフィールド1480を含んでもよい。メタデータフィールド1480は、開始側が、転送されるべきファイルについてのアプリケーション特定情報のようなさらなる情報を送信することを可
能にする。いくつかの実施の形態では、メタデータフィールド1480を用いて、大容量データ転送前にファイル指示子フィールド1434と交渉することを回避してもよい。
【0244】
ii.SendAccept(送信受入)
送信受入メッセージは、転送のために選択された転送モードを示すよう応答側から送信される。SendAcceptメッセージ1500の実施の形態を
図53に示す。SendAcceptメッセージ1500は、SendInitメッセージ1420の転送制御フィールド1422と同様の転送制御フィールド1502を含む。しかしながら、いくつかの実施の形態では、Rドライブフラグ1452またはSドライブフラグ1454のみが転送制御フィールド1502において非ゼロの値を有して、送信側1402または受信側1406を同期モード転送のドライバとして識別してもよい。SendAcceptメッセージ1500は、さらに、転送に対する最大ブロックサイズを示す最大ブロックサイズフィールド1504を含む。ブロックサイズフィールド1504はSendInitメッセージ1420の最大ブロックフィールド1428の値と等しくてもよいが、最大ブロックサイズフィールド1504の値は最大ブロックフィールド1428において提案される値より小さくてもよい。最後に、SendAcceptメッセージ1500は、受信側1506が転送について送信側1402に渡してもよい情報を示すメタデータフィールド1506を含んでもよい。
【0245】
iii.SendReject(送信拒絶)
受信側1206がSendInitメッセージの後に転送を拒絶するときには、受信側1206はSendReject(送信拒絶)メッセージを送信して、1つ以上の問題が送信側1202と受信側1206との間における大容量データ転送に関して存在することを示してもよい。送信拒絶メッセージは、上に記載され
図54に示されるステータス報告フォーマットに従ってフォーマットされてもよい。送信拒絶フレーム1520は、転送を拒絶する理由を示す2つのバイトを含むステータスコードフィールド1522を含んでもよい。ステータスコードフィールド1522は、下の表23に示されるように列挙されるものと同様の値を用いてデコードされてもよい。
【0246】
【0247】
いくつかの実施の形態では、送信拒絶メッセージ1520は次のステータスフィールド1524を含んでもよい。次のステータスフィールド1524は、存在するときには、ステータス報告フレームの次のステータスフィールド1188に関して上で論じられたようにフォーマットされエンコードされてもよい。ある実施の形態では、送信拒絶メッセージ1
520はさらなる情報フィールド1526を含んでもよい。さらなる情報フィールド1526は、存在するときには、さらなるステータスについての情報を格納し、上で論じられたTLVフォーマットを用いてエンコードされてもよい。
【0248】
iv.ReceiveInit(受信開始)
ReceiveInit(受信開始)メッセージは、開始側としての受信側1206によって送信
されてもよい。ReceiveInitメッセージは、
図50に示されるSendInitメッセージ148
0と同様にフォーマットおよびエンコードされてもよいが、BigExtentフィールド147
0は、受信側1206が処理することができる最大ファイルサイズを指定する最大長フィールドとして称されてもよい。
【0249】
v.ReceiveAccept(受信受入)
送信側1202がReceiveInitメッセージを受信すると、送信側1202はReceiveAccept(受信受入)メッセージで応答してもよい。ReceiveAcceptメッセージは、
図55に示
されるReceiveAcceptメッセージ1540としてフォーマットおよびエンコードされても
よい。ReceiveAcceptメッセージ1540は4つのフィールド:転送制御フィールド15
42と範囲制御フィールド1544と最大ブロックサイズフィールド1546と、ときとして長さフィールド1548とを含んでもよい。ReceiveAcceptメッセージ1540は、
図53のSendAcceptメッセージ1502と同様にフォーマットされてもよいが、第2のバイトは範囲制御フィールド1544を示す。さらに、範囲制御フィールド1544は、
図52の範囲制御フィールド1424に関して上で論じられた同じ方法を用いてフォーマットおよびエンコードされてもよい。
【0250】
vi.ReceiveReject(受信拒絶)
送信側1202が、受信側1206にファイルを転送することで問題に遭遇する場合には、送信側1202は、両方とも上で論じられた、ステータス報告フォーマットを用いてSendRejectメッセージ48と同様にフォーマットおよびエンコードされるReceiveReject
(受信拒絶)メッセージを送信してもよい。しかしながら、ステータスコードフィールド1522は、以下に表24に示されるように列挙されるものと同様の値を用いてエンコード/デコードされてもよい。
【0251】
【0252】
vii.BlockQuery(ブロッククエリ)
BlockQueryメッセージは、次のブロックのデータを要求するよう駆動側受信側1202によって同期モード大容量データ転送において送信されてもよい。BlockQueryは、明示的
でない肯定応答が送信された場合には前のデータのブロックの受信を暗示的に肯定応答する。非同期転送を用いる実施の形態では、BlockQueryメッセージは伝送プロセスから省略されてもよい。
【0253】
viii.Block(ブロック)
大容量データ転送において送信されるデータのブロックは、0より大きく、かつ送信側1202および受信側1206によって同意された最大ブロックサイズ未満の、任意の長さを含んでもよい。
【0254】
ix.BlockEOF(ファイルの終わりブロック)
データ転送における最終のブロックはファイルの終わりブロック(BlockEOF)として提示されてもよい。BlockEOFは0と最大ブロックサイズとの間の長さを有してもよい。受信側1206が、予め交渉されたファイルサイズ(たとえば長さフィールド1432)と実際に転送されたデータの量との間に相違を見出す場合には、受信側1206は、以下に論じられるように、失敗を示すError(エラー)メッセージを送信してもよい。
【0255】
x.Ack(肯定応答)
送信側1202が同期モード転送を駆動している場合には、送信側1202は、Block
の送信後と次のBlockの送信前との間に肯定応答(Ack)を受信するまで待機してもよい。受信側が同期モード転送を駆動している場合には、受信側1206は、明示的AckまたはBlockQueryのいずれかを送信して、前のブロックの受信を肯定応答してもよい。さらに、
非同期モード大容量転送においては、Ackメッセージは伝送プロセスから全く省略されて
もよい。
【0256】
xi.AckEOF(ファイルの終わりの肯定応答)
ファイルの終わりの肯定応答(AckEOF)は、同期モードまたは非同期モードにおいて送信される大容量転送において送信されてもよい。AckEOFを用いて、受信側1206は、転送におけるすべてのデータが受信されたことを示し、大容量データ転送セッションの終わりを信号送信する。
【0257】
xii.Error
通信におけるある問題の発生で、送信側1202または受信側1206は、エラーメッセージを送信して、大容量データ転送セッションを早く終わらせてもよい。エラーメッセージは、上で論じられたステータス報告フォーマットに従ってフォーマットおよびエンコードされてもよい。たとえば、エラーメッセージは、
図54のSendRejectフレーム1520と同様にフォーマットされてもよい。しかしながら、ステータスコードは、値が以下の表25に列挙されるものを含む、および/またはそれらと同様である状態で、エンコード/デコードされてもよい。
【0258】
【0259】
上に記載される具体的な実施の形態は例示によって示されたものであり、これらの実施の形態はさまざまな修正および代替形式が可能であり得ることが理解されるべきである。さらに、特許請求の範囲は開示される特定の形式に限定されるよう意図されるものではなく、本開示の精神および範囲内に入るすべての修正物、均等物および代替物を包含することが理解されるべきである。
【0260】
―効率的通信使用例および電力認識―
上で論じられた効率的IPv6 802.15.4ネットワークプロトコルおよび/または効率的プラットフォームプロトコルは、住宅環境において電力効率的な動作を可能にしてもよい。以下に論じられるように、一例においては、そのような通信は、ある特定の好まれるネットワークを横断してIPv6パケットを通信することを含んでもよい。加えて、または代替的に、メッセージを伝送するのに用いられるタイプのトランスポートプロトコル-TCPまたはUDP-のような、通信の態様のプロパティも選択可能であってもよい。たとえば、節電量はより少ないが、より大きな信頼性を与えるためには、TCPが選択されてもよく、一方、信頼性はより低いが、より大きな節電量を与えるためには、UDPが選択されてもよい。
【0261】
―IPv6パケットヘッダフィールドを用いるスマート通信―
上に示されるように、IPv6パケットヘッダにおいて利用可能なフィールドは、本開示のシステムにおいては、メッセージを受信するよう目標化されるファブリック1000の目標ノードに関する情報を搬送するよう用いられてもよい。たとえば、
図56に示されるように、ある特定のノードに目標を定められたIPv6パケットのパケットヘッダ1600は、MACフィールド1602とサブネットフィールド1604とファブリックIDフィールド1606とを含んでもよい。MACフィールド1602は、拡張固有識別子を表現すると通常は理解される64ビットの領域を満たしてもよい(EUI-64)。MACフィールド1602は、目標ノードのMACアドレスを示すものを含んでもよい。サブネットフィールド1604およびファブリックIDフィールド1606は、まとめて、拡張固有ローカルアドレス(EULA)を表現してもよい。これらのフィールドのEULAでは、ファブリックIDフィールド1606は、IPv6パケットが送信されることになる特定のファブリック1000を示してもよく、一方、サブネットフィールド1604は、目標ノードが好ましくはメッセージを受信するファブリック1000内における好まれるネットワークを識別してもよい。
図56の例では、サブネットフィールド1604は、目標ノードが好ましくはある特定のWiFiネットワークを介してメッセージを受信してもよいことを示す。ファブリックIDフィールド1606およびサブネットフィールド1604によって形成されるEULAは、IPv6パケットが全体的に1つ以上の接続されたファブリックおよび/またはそれらのファブリックに従うサービス内において送信されているときに用いられてもよいことが理解されるべきである。IPv6パケットがファブリック1000のノードから外部のIPv6インターネットアドレスに送信されることになるときには、異なる(たとえばより従来的な)IPv6パケットヘッダ構造が用いられてもよい。
【0262】
サブネットフィールド1604およびファブリックIDフィールド1606のEULA情報を用いて、IPv6パケットをファブリック1000を介して目標ノードに向かって効率的に通信することができる。
図57に示される例では、メッセージが、
図11を参照して上に論じられたネットワークトポロジを介して送信される。ここでは、ノード1026が送信側ノードであり、ノード1036が目標ノードである。ノード1026は802.15.4ネットワーク1022上で動作し、一方、目標ノード1036は802.15.4ネットワーク1022およびWiFiネットワーク1020の両方上において動作する。目標ノード1036の好まれるネットワークは、
図57の例においては、WiFiネ
ットワーク1020であるよう表現される。したがって、送信側ノード1026から目標ノード1036にメッセージを送信するよう用いられるIPv6パケットは、一般的には、
図56のIPv6パケット1600に示される特性を有してもよい。
【0263】
さまざまなノード1026、1028、1030、1034および1042が、
図57において、メッセージを送信側ノード1026から目標ノード1036に通信するよう示される。メッセージが送信されるネットワークが1つだけあるときには、そのメッセージはそのネットワークを介して通信されてもよい。これは、
図57の例においてはノード1026、1028および1030の場合である。メッセージがノード1034のような2つ以上のネットワーク上において動作するノードに到達する場合には、そのノードは、サブネットフィールド1604を用いて、どのネットワークを用いるかを判断して、メッセージをさらに目標ノード1036に向かって通信してもよい。
【0264】
図58のフローチャート1650は、パケットヘッダ1600のサブネットフィールド1604を用いてIPv6パケットを目標ノードに向かって通信するための方法の一例を示す。この方法では、2つのネットワーク上で動作するノード(たとえばノード1034であり、それはWiFiネットワーク1020および802.15.4ネットワーク1022の両方上で動作する)がIPv6パケットを受信してもよい(ブロック1652)。ノードは、IPv6パケットヘッダ1600のサブネットフィールド1604を解析して、どのネットワークがIPv6パケットを目標ノードに転送するのに用いるのに最も適切なネットワークであるかを判断してもよい。サブネットフィールド1604は、たとえば、メッセージが目標ノード(たとえばノード1036)によってWiFiネットワーク1020上において受信されることになる旨を示してもよい。受信側ノード(たとえばノード1034)は、次いで、IPv6パケットを、目標ノード(たとえばノード1036)に向かって、サブネットフィールド1604によって示されるネットワーク(たとえばWiFiネットワーク1020)を渡って通信してもよい(ブロック1654)。
【0265】
いくつかの例では、IPv6パケットが受信されたネットワークは、サブネットフィールド1604によって示されるネットワークと異なっていてもよい。
図57では、たとえば、ノード1034はメッセージを802.15.4ネットワーク1022を介して受信する。しかしながら、サブネットフィールド1604が、WiFiネットワーク1020がIPv6パケットを送信するのに用いられるのに好まれるネットワークである旨を示す場合には、ノード1034は、IPv6パケットを代わりにWiFiネットワーク1020を介して通信してもよい。このようにして、サブネットフィールド1604は、目標ノードが、メッセージを受信する好まれるネットワークを有することを可能にしてもよい。
図57の例では、目標ノード1036は、802.15.4ネットワーク1022よりもWiFiネットワーク1020を渡ってより速やかに、またはより信頼性をもって通信し得る常にオンの電子装置であってもよい。他の例では、目標ノード1036は、802.15.4ネットワーク1022を介してメッセージを受信するのによりよく供されるであろう、バッテリにより電力を供給されるスリーピー状態の装置であってもよい。そのような例では、目標ノード1036はWiFiネットワーク1020を介してメッセージを受信し得るが、サブネットフィールド1604によって示され得るように802.15.4ネットワーク1022を介してメッセージを受信することによって、目標ノード1036は電力を節約し得る。したがって、IPv6パケットヘッダ1600のEULA(たとえばファブリックIDフィールド1606およびサブネットフィールド1604)を用いてファブリックを介して効率的なメッセージ転送を促進してもよい。
【0266】
―所望されるメッセージの信頼度に基づく、トランスポートプロトコルまたは好まれる目標ネットワークの選択―
IPv6パケットを送信するよう用いられるトランスポートプロトコル(たとえばTC
PまたはUDP)および/または好まれる目標ノードネットワークの賢明な選択は、さらに、効率的なネットワークの使用にも至り得る。実際、TCPはUDPよりも信頼性があるが、TCPの信頼性は、メッセージを送信する際のハンドシェイキングおよび肯定応答の使用から生じ、それらの多くはUDPにはない。しかしながら、TCPのさらなる信頼性は、消費される電力に関して、メッセージを送信するコストを増大させ得る。実際、TCPのハンドシェイキングおよび肯定応答のため、電力におけるさらなるコストがある。加えて、TCPを用いることは、落ちたパケットが確認されるように受信されるまで再送信させられることになり、落ちたパケットを被るすべての装置においてさらなる電力を消費することになる。
【0267】
したがって、信頼性が電力効率性よりも好まれる理由がなければ、UDPによってメッセージを送信することが望ましいかもしれない。たとえば、
図59のフローチャート1670に示されるように、ファブリック1000上における装置の1つがメッセージを生成してもよい(ブロック1672)。装置は、所望されるメッセージの信頼度に関する1つ以上の信頼度因子を考慮してもよい(ブロック1674)。このような1つ以上の信頼度因子の考慮は、装置上で動作するOSIスタック90のアプリケーション層102またはプラットフォーム層100において生じてもよい。いずれの場合においても、装置が考慮してもよい信頼度因子は、(1)ブロック1672において生成されるメッセージのタイプ、(2)メッセージが送信されるネットワークのタイプ、(3)メッセージがファブリックを通って移動し得る距離、(4)目標ノードおよび/もしくは目標ノードにメッセージを通信するよう用いられる伝送ノードの電力感度、ならびに/または(5)目標ノード(たとえば装置であるかまたはサービスであるか)を含んでもよい。いくつかの実施の形態では、たった1つの因子が考慮されてもよい。さらに、ここで論じられる信頼度因子のリストは網羅的であるよう意図されるものではなく、メッセージを送信する際に信頼性または節電がより望ましくあり得るかどうかを判断するための例を与えるよう意図されるものである。
【0268】
トランスポートプロトコルの所望の信頼性に影響し得る第1の因子は、送信されることになるメッセージのタイプである。メッセージが、危険が検出された旨を示すメッセージのような警報メッセージであるときには、非常に高い信頼性が所望され得る。しかしながら、メッセージがセンサデータまたはある装置ステータスデータを表現するときには、高い信頼性は節電よりも価値が低いかもしれない。
【0269】
トランスポートプロトコルの所望の信頼性に影響を与え得る第2の因子は、メッセージが送信されることになるネットワークのタイプである。メッセージがたとえば主に802.15.4ネットワークを横断することになる場合には、それは、節電が信頼性よりも恩恵があり得ることを暗示し得る。しかしながらメッセージが主に、または全体的にWiFiネットワークを横断することになる場合には、それは、節電はそれほど価値はなく、信頼性がより価値があり得ることを暗示し得る。
【0270】
トランスポートプロトコルの所望の信頼性に影響し得る第3の因子は、メッセージが目標ノードに到達するのにファブリック1000を介して移動し得る距離である。この距離は、たとえば、目標ノードに到達する「ホップ」の数、目標ノードに到達するのに横断され得る異なるタイプのネットワークの数、および/またはネットワークを通る実際の距離を表現し得る。
【0271】
トランスポートプロトコルの所望の信頼性に影響し得る第4の因子は、メッセージを目標ノードに通信するのに用いられてもよい装置の電力感度である。そのような装置のすべてもしくは実質的にすべてが常にオンであるかまたは外部の電源から供給を受けるときには、より高い信頼性が節電よりも好ましくあり得る。これらの装置の1つまたは多くが、
小電力、スリーピー状態、および/またはバッテリにより電力を供給される装置である場合には、メッセージが特に緊急でない場合には、節電がより好まれ得る。
【0272】
トランスポートプロトコルの所望の信頼性に影響し得る第5の因子は、メッセージの目標エンドノードのタイプである。一例では、目標エンドノードがサービスであるときには、ローカルであれ遠隔であれ、より高い信頼性が所望され得る。したがって、この場合では、TCPがUDPよりも好まれ得る。別の例では、より高い信頼性が好まれ得るのは、目標エンドノードが遠隔サービスであるときであるが、目標エンドノードがローカルサービスであるときには、より低い信頼性およびより大きな節電が求められてもよい。他の例では、サービスのタイプが考慮されてもよい。つまり、いくつかのサービスについては、信頼性のほうが節電よりも好まれ得、一方、他のサービスについては、節電が信頼性よりも好まれ得る。ほんの一例を挙げると、気象情報を与えるよう用いられるサービスと通信するためには、節電と比較して、比較的より低い信頼性が所望され得る。他方、ソフトウェア更新を提供するよう用いられるサービスと通信するためには、より高い信頼性が節電よりも好まれ得る。
【0273】
装置はこれらの因子の1つ以上を任意の好適な態様で考慮してもよい。一例では、これらの因子は重みを割当てられてもよく、信頼性判断はそれらの因子の総重みづけに基づいてもよい。他の例では、ある因子は他の因子よりも高い優先度を有してもよい。そのような例では、緊急メッセージは節電よりも大きな所望の信頼性を有するよう常に考慮されてもよく、一方、非緊急メッセージに対する信頼性の所望度は他の因子に依存してもよい。したがって、節電が信頼性よりも所望されるときには(判断ブロック1676)、装置はメッセージをUDPを介して送信して(ブロック1678)、より低い信頼性にも関わらず電力を節約してもよい。より大きな信頼性が節電よりも所望される場合には(判断ブロック1676)、装置は、より大きな電力消費にも関わらず増大された信頼性を有するよう、TCPを介してメッセージを送信してもよい(ブロック1680)。
【0274】
上記の方法はTCPまたはUDPを用いてメッセージを送信することの選択に関して論じられたが、本通信システムは、通信態様の任意の数のプロパティを効率的に調整して、所望の信頼性を電力消費と均衡させてもよい。たとえば、いくつかの実施の形態では、より高い信頼性が所望されるときには、より高出力のネットワーク(たとえばWiFi)が好まれてもよく、一方、より低い信頼性およびより大きな節電が所望される場合には、より小電力のネットワーク(たとえば802.15.4)が好まれてもよい。送信側ノードは、たとえば、IPv6パケットヘッダ1600のサブネットフィールド1604に注記すべき異なる好まれるネットワークを選択し、それによって、可能であるときには、メッセージをその選択されたネットワークを通して通信させてもよい。
【0275】
―さらなる使用例―
上で論じられた接続された装置のファブリック1000はさまざまな態様で用いられてもよい。一例は、1つの装置を用いて他の装置上で方法を呼出すことを伴ってもよい。別の例は、ハザード警報のようなメッセージをファブリックのさまざまな装置を渡って伝搬させることを伴ってもよい。これらの使用例は例示を与えるよう意図されるものであって、網羅的であるよう意図されるものではないことが理解されるべきである。
【0276】
1つの装置から他の装置上に方法を呼出す
1つの場合では、ファブリック1000の1つの領域における装置が、別の、互換性のある装置上において特定の方法を呼出してもよい。一例が
図60のダイヤグラム1700に表われる。ダイヤグラム1700は、第1の装置1702と第2の装置1704との間における対話を、ディレクトリ装置(DDS)1706によって仲介されるように示す。ディレクトリ装置(DDS)1706は、第1の装置1702および第2の装置1704
を含むファブリック上のさまざまな装置に対してDDSサービス同報通信1708を発してもよい。応答して、ディレクトリ装置(DDS)1706は、ファブリック1000のさまざまな装置がサポートするすべての方法および/またはプロファイルのリストを受信してもよい。
【0277】
第1の装置1702のような、ファブリックの装置のうちの1つが方法(
図60において方法nとして示される)を実行することを所望する場合には、第1の装置1702はディレクトリ装置(DDS)1706に対して対応のクエリメッセージ1710で問合せしてもよい(たとえばGetProperty(supports-n)(プロパティ獲得(サポート-n))。デ
ィレクトリ装置(DDS)1706は、そのようなプロパティをサポートする装置で返答してもよく-ここでは、第2の装置1704が所望の方法をサポートする旨を示すメッセージ1712で返答する。ここで、この情報を所有して、第1の装置1702は、第2の装置1704へのメッセージ1714において方法を呼出してもよい。第2の装置1704は、次いで、適切な応答で返答1716を発してもよい。
【0278】
第1の装置1702によって第2の装置1704上で呼出される方法は、住宅ネットワークにとって有用であり得る多数の方法のうちの任意のものであってもよい。一例では、第1の装置1702は第2の装置1704からの環境的センサデータを要求してもよい。環境的センサデータは、動き、温度、湿度などを示してもよい。環境的センサデータは、第1の装置1702によって用いられて、たとえば、セキュリティに関して在宅を判断するか、または家の周りで現在見いだされるさまざまな温度を判断してもよい。別の例では、第1の装置1702は、第2の装置1704からのユーザインターフェイス入力情報を要求してもよい。たとえば、第1の装置1702は、在宅者の最近の所望の快適さ設定に関する情報を確認すべく、最近のサーモスタット温度設定点を示すものを要求してもよい。
【0279】
―ファブリックのさまざまな装置にメッセージを伝送する―
いくつかの状況では、メッセージをファブリックの複数の装置に伝搬することが望ましいかもしれない。たとえば、
図61のダイヤグラム1720に示されるように、いくつかの装置1722、1724、1726および1728を用いてハザード警報メッセージを伝搬してもよい。実際、ハザード警報メッセージは、さまざまな装置1722、1724、1726および1728の1つ以上が小電力の「スリーピー状態」の装置であっても、伝搬されてもよい。
図61の例では、装置1722はガレージにおけるハザード検出器(たとえば煙検出器)であり、装置1724はダイニングルームにおけるハザード検出器(たとえば煙検出器)であり、装置1726は玄関におけるスマートドアベルであり、装置1728は廊下におけるサーモスタットである。
【0280】
ダイヤグラム1720の動作はイベント1730(たとえば炎)がガレージ装置1722によって検出されると開始する。ガレージ装置1722はネットワーク起動メッセージ1732をダイニングルーム装置1724に伝搬し、それは、したがって返答1734を発してもよい。ダイニングルーム装置1724は、そのスリーピー状態から、起動状態の、常時オン状態に、一時的に起動してもよい。ダイニングルーム装置1724は、さらに、ネットワーク起動メッセージ1736を玄関装置1726に伝搬してもよく、それは、同様に、返答1738を行なう一方で、別のネットワーク起動メッセージ1740を玄関装置1728に伝搬してもよい。
【0281】
ファブリックの装置を起動させて、ガレージ装置1722は、イベント1730に関連づけられる警報1744を出力してもよく、警報通知メッセージ1746をダイニングルーム装置1724に発してもよい。警報通知メッセージ1746は、特に、イベントのタイプおよび発信装置(たとえばガレージで生じたイベント)を示してもよい。ダイニング
ルーム装置1724は、対応する警報1748を出力し、警報通知メッセージを玄関装置1726に転送してもよく、それはそれ自体で警報1752を出力し始めてもよい。玄関装置1726は警報通知メッセージを廊下装置1728に転送してもよい。
【0282】
廊下装置1728はインターフェイスメッセージ1756を表示して、ユーザが警報に応答できるようにしてもよい。一方で、メッセージはファブリックを渡って伝送され続けてもよい。これらは、さらなるネットワーク起動および返答メッセージ1758、1760、1762、1764および1766と、さらなる警報通知メッセージ1768、1770および1772とを含む。ユーザがユーザフィードバック1774を廊下装置1728において与えて、(たとえば警報が誤りであるかまたは危険でない状態によるものであるという理解のもとで)警報を消音するよう要求する場合には、廊下装置1728は、警報消音メッセージ1776を送信することによって応答してもよく、それはファブリック1000を渡って装置のすべてに伝送されてもよい。警報消音メッセージ1776は玄関装置1726に達してもよく、それはその警報1778を消音して、さらなる警報消音メッセージ1780をダイニングルーム装置1724に発してもよい。応答して、ダイニングルーム装置1724はその警報1782を消音し、さらなる警報消音メッセージをガレージ装置1722に発してもよく、それは次いで、その警報1786を消音してもよい。
【0283】
装置1726、1724および1722にそれらの警報を消音させたのち、廊下装置1728は、装置1726、1724および1722を、再び、スリーピー状態の小電力状態に入らせてもよい。具体的には、廊下装置1728はネットワークスリープメッセージ1790を玄関装置1726に発し、それは、ネットワークスリープメッセージ1792をダイニングルーム装置1724に発した後にスリーピー状態に入ってもよい。ダイニングルーム装置1724は、対応して、ネットワークスリープメッセージ1794をガレージ装置1722に発した後にスリーピー状態に入ってもよい。ネットワークスリープメッセージ1794を受信すると、ガレージ装置1722は小電力のスリーピー状態に入ってもよい。
【0284】
―ファブリックに加わる(加入する)かまたはファブリックを形成する―
上で論じられたプロトコルを用いて、住宅ネットワークまたは同様の環境において装置のファブリック1000に加わるかまたはそれを形成することができる。たとえば、
図62~
図64は、新たな装置が(たとえばインターネットを介して)サービスに接続される既存のファブリック1000の別の装置を介してファブリック1000に加わる第1の方法に関する。
図65~
図67は、いずれの装置が別のサービスに接続されるか否かに関わらず、新たな装置が、別の装置とのピア・ツー・ピア接続を介して既存のファブリック1000に加わるかまたは新たなファブリック1000を形成する第2の方法に関する。以下の例は、ネイティブディスプレイとのユーザインターフェイスを有さないかもしれず、したがって、第三者クライアント装置(たとえば携帯電話またはタブレットコンピュータ)からの支援を必要とし得る新たな装置でファブリック1000に加わることに関する。新たな装置がネイティブディスプレイとのユーザインターフェイスを含むもののような、他の実施の形態では、以下において、第三者クライアント装置において実行されるとして記載されるアクティビティが、代わりに、その新たな装置上において生じてもよい。
【0285】
サービスに対するインターネット接続を用いてファブリックに加わるかまたはファブリックを形成する
まず
図62~
図64に示されるフローチャート1800を参照して、ユーザは、装置が販売された箱を開封し(ブロック1802)、アプリケーションを第三者クライアント装置(たとえば携帯電話またはタブレットコンピュータ)にインストールする命令を得る(ブロック1804)ことによって、新たな装置をファブリック1000に加わらせてもよい。アプリケーションはクライアント装置にインストールされてもよく(ブロック180
6)、ユーザは、ファブリック1000に関係づけられるサービスアカウントにログインしてもよく、そこで、ユーザは、新たな装置が加わることになる特定のファブリック1000を選択してもよい(ブロック1808)。たとえば、ユーザは、Nest(登録商標)アプリケーションをインストールしてもよく、Nest(登録商標)Weave
TMファブリックと関
連づけられるNest(登録商標)サービスアカウントにログインしてもよい。クライアント装置上のアプリケーションは、ファブリック1000のサービス構成と関連づけられる情報を得てもよい(ブロック1810)。ファブリック1000のサービス構成と関連づけられる情報は、たとえば以下を含んでもよい:
・サービスノード識別情報(たとえばEUI-64またはEULA);
・サービスに対するトラストアンカとして供されてもよい証明書の組(たとえばファブリック認証トークン);
・ユーザのアカウントに関連づけられるグローバルに一意のアカウント識別情報;
・サービスに対するエントリポイントを識別するドメイン名システム(DNS)ホスト名;および/または
・ユーザのアカウントと対になるよう新たな装置によって用いられてもよい不透明なアカウントペア形成トークン。
【0286】
ユーザは、さらに、クライアント装置上のアプリケーションを介して、新たな装置をファブリック1000に追加することを選択してもよい(ブロック1812)。ユーザと関連づけられる既存のファブリック1000が現在存在するかどうか、または任意の他の好適な基準に基づいて(判断ブロック1814)、アプリケーションは、新たなファブリック1000を形成する(ブロック1816)か、または新たな装置を既存のファブリック1000に追加する(ブロック1818)ことを選んでもよい。
【0287】
アプリケーションが、新たな装置を既存のファブリック1000に追加することを選択する場合には(ブロック1818)、アプリケーションは、ネットワークの装置が起動状態にあって、スリーピー状態にはないかどうかを判断し(判断ブロック1820)、起動状態にない場合には装置を起動させてもよい(ブロック1822)。ユーザは、たとえば、ボタンを押すことによって、加入プロセスにおいて用いるようネットワークの特定の既存の装置を選択してもよい(ブロック1824)。既存の装置は、ファブリック加入情報を、クライアント装置上のアプリケーションに提供してもよい(ブロック1826)。たとえば、クライアント装置上のアプリケーションは、ファブリック1000認証トークンを用いて、既存の装置と安全なセッションを確立してもよい。アプリケーションは要求(たとえばGetNetworkConfiguration(ネットワーク構成獲得)および/またはGetFabricConfiguration(ファブリック構成獲得))を用いて、既存の装置からネットワーク構成情
報および/またはファブリック1000構成情報を得てもよい。アプリケーションはこの情報を後で用いるために保存してもよい。アプリケーションはこの情報を後で用いるために保存してもよい。
【0288】
アプリケーションは、さらに、ユーザに対して新たな装置を起動するよう命令してもよく(ブロック1828)、それは、たとえば、新たな装置上のボタンを押すことによってでもよい(ブロック1830)。方法は、さらに、ブロック(A)1832に進み、それは
図63に続く。ここで、クライアント装置上のアプリケーションは既存の装置に対して新たな装置に接続するよう命令してもよい(ブロック1834)。たとえば、アプリケーションは、ファブリック認証トークンを用いて既存の装置への新たな安全なセッションを確立してもよく、この新たなセッションを介して要求(たとえばConnectOtherDevice(他の装置を接続))を既存の装置に送信してもよい。一方で、新たな装置は、既存の装置と加入する目的で特定の802.15.4「加入ネットワーク」を設定していてもよい。したがって、ブロック1834の要求は、アプリケーションが既存の装置に対して新たな装置に802.15.4ネットワーク接続(たとえば新たな装置によって形成される802
.15.4加入ネットワーク)を介して接続することを望む旨を指定してもよい。既存の装置は、次いで、近くの802.15.4ネットワークのスキャンを実行して、新たな装置によって形成されるネットワークを探してもよい。見つかると、既存の装置は既存のファブリックを出て、新たな802.15.4加入ネットワークに加わり、ランデブーアドレス(既存の装置のソフトウェアもしくはファームウェアまたはクライアント装置のアプリケーションによって予め指定されていてもよい)に接続するよう試みることによって、802.15.4加入ネットワークを探査してもよい。一旦新たな装置への接続が確立されると、既存の装置は、クライアント装置上のアプリケーションからの新たな装置への接続に対する要求(たとえばConnectOtherDevice)に対して、成功の返答で応答してもよい。この時点から先は、アプリケーションから新たな装置に与えられるメッセージは、プロキシによって、既存の装置を通して、802.15.4加入ネットワークを介して、実行されてもよい。つまり、新たな装置は既存の装置に802.15.4加入ネットワークを介して接続されてもよく、既存の装置はサービスノードにWiFi(および/またはインターネット接続)を介して接続されてもよく、クライアント装置上のアプリケーションはサービスに接続されてもよい。このようにして、アプリケーションは新たな装置に既存のファブリックを通して接続してもよく、既存の装置は1つのWiFi接続および1つの802.15.4接続を用いるだけでもよい(それによって、既存の装置において、ネットワークタイプごとに複数の受信機および送信機を用いることを回避することを低減し、それは装置コストおよび電力消費を低減し得る)。
【0289】
代替的に、新たなファブリック1000が形成されるときには、クライアント装置上のアプリケーションは、WiFi接続を用いて新たな装置に直接接続してもよい。したがって、クライアント装置上のアプリケーションはユーザに対してWiFi接続に切換えるよう命令してもよい(ブロック1836)。ユーザは、WiFiネットワークをそれらのクライアント装置上で切換えて、新たな装置とのピア・ツー・ピアWiFi接続を確立してもよい(ブロック1838)。たとえば、新たな装置は、それを、その背部上の一意のWiFiSSID名と関連づけられてもよい。クライアント装置上のアプリケーションは、(たとえばサービスからの構成情報によってアプリケーションに与えられるか、またはアプリケーションにエンコードされる)予め定められたランデブーアドレスに接続することを繰返し試みることによって、新たな装置を探査してもよい。
【0290】
これらの接続のいずれかが確立された状態で、クライアント装置上のアプリケーションは、新たな装置を検出し、新たな装置によって与えられる連続番号を表示してもよい(ブロック1840)。このとき、アプリケーションは、さらに、新たな装置が、その上に、新たな装置を認証を介して妥当性を確認され、ファブリックに加わる適切な許可を有するとして識別する、あるセキュリティ特徴をインストールされたことの妥当性を確認してもよい。これらのセキュリティ特徴は、上に論じられたDTLSセキュリティ証明書と同じであってもよく、またはそれに加えてでもよい。
【0291】
いずれかの接続を用いて、ユーザは、クライアント装置上のアプリケーションが、ユーザに対して、新たな装置と関連づけられる(たとえば新たな装置上または新たな装置とともに提供されるカード上に印刷される)QRコード(登録商標)または他のコードを走査するよう命令するときに、認証手順を容易にしてもよい(ブロック1842)。ユーザは、コードを走査またはタイプすることによって、コードをアプリケーションに入力してもよい(ブロック1844)。このコード情報は新たな装置に与えられてもよく、新たな装置はそのコードを用いて、アプリケーションが、その新たな装置を所有するユーザによって認証を介して用いられていることを確認してもよい。新たな装置は、たとえば、組込みチェックデジットを用いてコードの妥当性を確認してもよい。新たな装置は、コードが不正確に入力されたときを、対応の返答で示してもよい。アプリケーションは、Weave PASEプロトコルを含む任意の好適なプロトコルを用いての新たな装置との安全なセッションの
確立を、供給されるペア形成コードをパスワードとして用いながら行なってもよい(ブロック1848)。新たな装置に対する安全な接続を確立すると、クライアント装置上のアプリケーションは新たな装置上においてフェールセーフ体制を装備するよう要求を発行してもよい(たとえばArmConfigurationFailsafe(構成フェールセーフ装備))(ブロック1850)。フェールセーフ体制を装備することによって、加入プロセスが何らかのタイムアウト値までに完了しない場合には、新たな装置はある元の構成に戻ってもよい。アプリケーションは、さらに、新たな装置が別の既存のファブリック1000に属するかどうかを好適な要求(たとえばGetFabricState(ファブリック状態獲得))を発行することによって判断してもよい(判断ブロック1852)。そうである場合には、アプリケーションは、別の要求(たとえばLeaveFabric(ファブリック退去))を発行することによって
、新たな装置に対して他の既存のファブリック1000から退去するよう命令してもよい(ブロック1854)。
【0292】
新たな装置が既存の装置とともに新たなファブリック1000を形成することになる場合では(判断ブロック1856)、アプリケーションは、新たな装置に対して、(たとえばEnumerateVisibleNetworks(可視のネットワークを列挙する)要求を介して)新たな装置に可視のWiFiネットワークのリストを列挙するよう命令してもよい(ブロック1858)。アプリケーションからの命令で(ブロック1860)、ユーザは、次いで、これらのネットワーク間から選択を行なってもよく、または新たな装置が加わることになるWiFiネットワークを入力してもよい(ブロック1862)。ユーザは、さらに、WiFiネットワークに加わるよう適切なパスワードを入力してもよい(ブロック1864)。方法は、さらに、ブロック(B)1866に続き、それは
図64に続く。アプリケーションはWiFiネットワーク構成情報を新たな装置に(たとえばAddNetwork(ネットワーク追加)要求を介して)送信してもよく(ブロック1868)、アプリケーションは、インターネット上のサービスに到達しようと試みることによって(たとえばTestNetwork(ネ
ットワークテスト)要求を介して)接続をテストするよう新たな装置に命令してもよい(ブロック1870)。アプリケーションは、ネットワーク接続が確認中であることをユーザに示してもよく(ブロック1872)、新たな装置は、その後、アプリケーションに対するその接続を確認してもよい(ブロック1874)。
【0293】
新たな装置が今やインターネットにWiFi接続を介して接続された状態で、新たなファブリック1000が形成されつつある場合には(ブロック1876)、アプリケーションはユーザに対してファブリック1000(たとえばユーザの住宅)WiFi接続に戻るよう命令してもよい(ブロック1878)。ユーザは、クライアント装置によって用いられているWiFiネットワークを、ファブリック1000によって用いられるWiFi接続に変更してもよい(ブロック1880)。
【0294】
新たなファブリック1000を形成しようと、または既存のファブリックに加わろうと、アプリケーションは新たな装置に対しこの時点でそうするように命令してもよい(ブロック1882)。つまり、アプリケーションは新たな装置に対して新たなファブリック1000を(たとえばCreateFabrick(ファブリック形成)要求を介して)形成するよう命
令してもよく、または新たな装置に対して既存のファブリック1000に(たとえばJoinExistingFabric(既存のファブリックに加わる)要求を介して)加わるよう命令してもよい。既存のファブリックに加わる場合には、アプリケーションは新たな装置に既存の装置を(たとえば新たな装置へのRegisterNewFabricMember(新たなファブリックメンバーを
登録する)要求を介して)知らせてもよい。いずれの場合においても、アプリケーションは、サービス構成情報(たとえばWeaveTM Service Configuration(WeaveTMサービス構成)情報)を含む要求(たとえばRegisterService(サービス登録)要求)を送信すること
によってサービス(たとえばNest(登録商標)サービス)と通信するよう、新たな装置を構成してもよい。
【0295】
サービス構成情報を用いて、新たな装置はサービスに登録してもよい(ブロック1884)。たとえば、新たな装置は、サービス構成情報からのサービスノードIDおよびDNS名を用いてサービスに接続してもよい。新たな装置は、新たな装置にインストールされた証明書およびプライベートキーを用いてサービスに登録してもよい。新たな装置は、ファブリック1000に関連づけられるサービスアカウント識別情報およびサービス構成情報から得られるアカウントペア形成トークンを含むメッセージ(たとえばPairDeviceToAccount(装置をアカウントと対にする)メッセージ)をサービスに送信してもよい。この
情報を用いて、サービスはアカウントペア形成トークンの妥当性を確認してもよく、新たな装置をファブリックと関連づけられるユーザのサービスアカウントと関連づけてもよい。この時点で、新たな装置は、サービスによって、ファブリック1000の一部を形成するよう理解されてもよく、ユーザがサービスにログインするときには関連づけられる装置として現れてもよい。サービスは、新たな装置からのメッセージ(たとえばPairDeviceToAccountメッセージ)に応答してもよく、それのアカウントペア形成トークンのそれのコ
ピーを破壊してもよく、以前にアプリケーションに送信されたメッセージ(たとえばRegisterService要求)に応答してもよい。
【0296】
応答して、新たな装置が既存のファブリック1000に加わることまたは新たなファブリックを最終決定するために、アプリケーションは、新たな装置に対応のメッセージ(たとえばDisarmConfigurationFailsafe(構成フェールセーフ装備解除)要求)を送信する
ことによって、フェールセーフ加入機構を取消してもよい(ブロック1886)。新たな装置は、その後、この要求を受信して、構成フェールセーフを装備解除してもよい(ブロック1888)。新たな装置と既存の装置とのペア形成は、新たなファブリック1000においてであれ既存のファブリック1000においてであれ、ここで完了状態と考えられてもよい。クライアント装置上のアプリケーションは、したがって、ユーザがその中から選択してもよいさらなるセットアップ設定に対するユーザ命令を提供してもよい(ブロック1890)(ブロック1892)。これらは、たとえば、さらなる装置を対にし続けることまたはセットアップを出ることを含んでもよい。
【0297】
インターネットでのWiFi接続なしにファブリックに加わるかまたはそれを形成する
新たな装置は、サービスまたはインターネットへのWiFi接続に対するアクセスを必ずしも有することなくファブリック1000に加わるかまたはそれを形成してもよい。たとえば、
図65~
図67に示されるように、そのような接続は(たとえば単に802.15.4ネットワーク接続を渡って)サービスによる促進なしに他のネットワーク接続を用いて形成されてもよい。このセクションは、新たな装置を装置対装置ファブリックにおいて加えるプロセス中に生じてもよい動作およびイベントを記載する。ここで用いられるとおりでは、「装置対装置ファブリック」は1つのネットワークインターフェイスを介して(たとえば802.15.4インターフェイスのみを介して)接続される2つ以上のファブリック1000装置のネットワークである。装置対装置ファブリック1000における装置は必ずしもWiFiネットワークに接続されず、したがって、(
図62~
図64にあるように)クライアント装置上で動作しているアプリケーション(たとえばウェブまたはモバイル)またはインターネット上のサービス(たとえばNest(登録商標)サービス)に対して話しかけなくてもよい。
【0298】
いくつかの場合では、装置対装置ファブリックは、ユーザが短い時間期間の間に2つの装置上のボタンを押し得るという点においてのみユーザの関与を伴い、WiFiファブリックよりも形成が容易であり得る。
図65~
図67に記載される装置対装置加入プロセスは、2つの独立した装置を用いる新たな装置対装置ファブリック1000の形成、および新たな独立した装置が既存の装置対装置ファブリックに加わることの両方をサポートしてもよい。装置対装置加入は、さらに、装置を既存の装置対装置ファブリック1000から
除去し、それを別の装置対装置ファブリックに加えるよう用いることもできる。後者のシナリオは、ユーザが適切に供されなかった使用済の装置をその古い装置対装置ファブリックから獲得するときに特に有用となり得る。
【0299】
装置対装置加入プロセスは、いくつかの実施の形態では、新たな装置を既存のWiFiファブリック1000に加えるよう用いられなくてもよいことが注記される。これに対して、ユーザは、上述の
図62~
図64を参照して論じられたWiFi加入プロセスに従ってもよい。さらに、装置対装置加入プロセスは、既にWiFiファブリック1000のメンバーである装置を装置対装置ファブリックに加えるよう用いられなくてもよい。したがって、ユーザが適切に供されなかった使用済の装置をその元のWiFiファブリックから獲得する場合においては、ユーザは、装置上で工場リセットを実行した後に装置対装置ファブリック1000加入プロセスに進んでもよい。
【0300】
装置対装置加入プロセスは、
図65のフローチャート1900に示されるように、加えられるべき2つの装置のうちの第1の装置(たとえば装置1)が起動されるときに開始してもよい(ブロック1902)。たとえば、第1の装置の販売箱における命令に基づいて、ユーザは第1の装置上のボタンを押してもよい。ここで、ユーザが装置を既存のファブリックに追加する場合には、ユーザは追加されるべき装置上のボタンを押すよう命令されてもよい。ユーザが2つの独立した装置から新たなファブリック1000を形成している場合には、ユーザはどちらかの装置を第1の装置として選択してもよい。さらに、第1の装置がWiFiファブリックのメンバーである場合には、第1の装置はいかなるさらなるアクションも取らなくてもよく、加入手順は停止する。第1の装置がWiFiファブリックのメンバーである場合には、第1の装置は、WiFiファブリック1000との関連づけを解除された後に、(たとえば工場リセットを介して)装置対装置ネットワークに加わってもよい。
【0301】
既存のWiFiファブリックのメンバーでないときには、第1の装置(たとえば装置1)は、ブロック1902にあるように起動されたときに、ある初期化手順を開始してもよい。たとえば、装置1は時間とともに増分するカウンタを起動してもよい(たとえば1秒に複数回)。適切である場合には、このカウンタは、後で、2つの装置のうちのどの装置がファブリックを確立することにおいて優先権を有するかを判断するために用いられる。装置1は、さらに、802.15.4ワイヤレスネットワークを形成してもよく、それは802.15.4加入ネットワークと呼ばれてもよい(ブロック1904)。この802.15.4加入ネットワークは、一般的に一意の、保護されないネットワークであってもよい。たとえば、802.15.4加入ネットワークは、以下の情報:(a)ネットワークを加入ネットワークとして識別する文字列、(b)第1の装置のノードid、および(c)装置がファブリックの一部であるかどうかを示すフラグを含む一般的に一意のELoWPAN110ネットワーク名を用いてもよい。加入ネットワークが確立されると、装置1は、
さらに、加入ネットワークにおいて、それ自体に2つのIPv6アドレスを割当ててもよい(ブロック1906)。これらは、たとえば、(a)ランデブープレフィックスと称されてもよい識別的プレフィックスおよび装置のMACアドレスから導出されるインターフェイス識別子を伴うIPv6 ULAまたはEULA、ならびに(b)ランデブーアドレスと称されてもよい、ランデブープレフィックスおよび1のインターフェイス識別子を伴うIPv6 ULAまたはEULAを含んでもよい。
【0302】
装置1は、次いで、別の装置によって形成される802.15.4ネットワークに対して継続的に走査を行なってもよい(ブロック1908)。実際、ブロック1902~1908の動作と並行して、またはそれらの後に、第2の装置(装置2)は上記の動作をそれ自体で実行してもよい(ブロック1910)。装置1または装置2のどちらかが他方の加入ネットワークを検出してもよい(ブロック1912)。先に他方を検出する装置-装置
1または装置2-のある特性によって、装置は(たとえば
図66に示されるように)開始側装置プロセスまたは(
図67に示されるように)応答側装置プロセスを実行してもよい。つまり、装置の1つが他方の加入ネットワークを発見すると、装置はその加入ネットワーク名に含まれる情報をそれ自体の情報と比較し、以下の処理を行なってもよい:(a)装置が独立した装置であり他方の装置がファブリックのメンバーである場合には、装置は、
図66の開始側装置プロセスに示される処理を実行してもよく;または(b)装置がファブリック1000のメンバーであり他方の装置が独立した装置である場合には、装置は
図67の応答側装置プロセスに示される処理を実行してもよい。いずれの装置もファブリックのメンバーでない場合、または両方の装置がファブリックのメンバーである場合には、他方の装置の加入ネットワークを検出した装置が、(a)そのノードidを他方の装置のノードidと比較してもよく、(b)その装置のノードidが他方の装置のノードid未満である場合には、装置は
図66の開始側装置プロセスに示される処理を実行してもよい。いずれの装置もファブリックのメンバーでない場合、または両方の装置がファブリックのメンバーである場合には、他方の装置の加入ネットワークを検出した装置が、(a)自装置のノードidを他方の装置のノードidと比較し、(b)自装置のノードidが他方の装置のノードidより大きい場合には、
図67の応答側装置プロセスによって示される処理を実行してもよい。
【0303】
図66の開始側装置プロセスを実行する装置は、上記のように、装置1または装置2のいずれであってもよい。したがって、
図66の開始側装置プロセスを実行する装置は、ここでは「開始側装置」と称することにする。同様に、
図67の応答側装置プロセスを実行する装置は開始側装置として動作しない装置であり得、上記のように装置1または装置2のいずれであってもよい。したがって、
図67の応答側装置プロセスを実行する装置はここでは「応答側装置」と称することにする。
【0304】
フローチャート1920において見られるように、
図66の開始側装置プロセスは、開始側装置がその加入ネットワークを終了させ、応答側装置によって形成される加入ネットワークに接続するときに開始してもよい(ブロック1922)。開始側装置は、それ自体に対して、ランデブープレフィックスおよびそれのMACアドレスから導き出されるインターフェイス識別子を伴うIPv6 ULAまたはEULAを割当ててもよい(ブロック1924)。開始側装置はSolicit Joining(加入請求)メッセージを応答側装置に対し
てそのランデブーアドレスで送信してもよい。開始側装置からのSolicit Joiningメッセ
ージは以下の情報:(a)装置および起動したときに起動されるカウンタの値にセットされる数値的識別値、および(b)装置が既にファブリックのメンバーであるかどうかを示すフラグを含んでもよい。開始側装置は、次いで、応答側装置からの応答メッセージを待ってもよく、Join Existing Fabric(既存のファブリックに加わる)要求またはSolicit Joining要求を受信する(ブロック1928)。
【0305】
開始側装置がJoin Existing Fabric要求を受信する場合には、開始側装置は、適切である場合には、それの現在のファブリックを出てもよく、それ自体を独立した装置として再初期化してもよく、Join Existing Fabric要求における情報を用いて、それ自体を応答側装置と既存のファブリック1000の一部にしてもよい(ブロック1930)。開始側装置はJoin Existing Fabric応答を応答側装置に送信して、それが現在は既存のファブリック1000のメンバーである旨を示してもよい(ブロック1932)。
【0306】
開始側装置がSolicit Joining要求を受信する場合には、開始側装置は、それが独立し
た装置であるかまたは既存のファブリックのメンバーであるかによって、異なる態様で応答してもよいが、いずれの場合においても、ファブリック1000情報をJoin Existing Fabric要求で送信してもよい(ブロック1934)。たとえば、開始側装置が独立した装置である場合には、開始側装置は、新たなファブリックidおよび対応のファブリックセ
キュリティ情報を生成することによって新たなファブリック1000を形成してもよく、それ自体を新たなファブリックの一部にしてもよく、Join Existing Fabric要求を応答側装置に送信してもよい。Join Existing Fabric要求は新たなファブリックに対する情報を含んでもよい。そうでない場合、装置がファブリックのメンバーである場合には、装置は、開始側装置がメンバーである既存のファブリック1000の情報を含むJoin Existing Fabric要求を応答側装置に送信してもよい。開始側装置は、次いで、応答側装置が開始側装置のファブリック1000に加わるときには、応答側装置からのJoin Existing Fabric応答を待ち、それを受信してもよい。
【0307】
図67の応答側装置プロセスは、応答側装置が開始側装置との関係において振舞ってもよい態様を記載する。
図67の応答側装置プロセスはフローチャート1950によって記載される。フローチャート1950は、応答側装置が開始側装置からSolicit Joiningメ
ッセージを受信したときに開始する(ブロック1952)。
【0308】
応答側装置が独立した装置であって、既存のファブリック1000にない場合には(判断ブロック1954)、応答側装置は、新たなファブリックidおよび対応のファブリックセキュリティ情報を生成することによって新たなファブリック1000を形成してもよい(ブロック1956)。応答側装置はそれ自体を新たなファブリック1000の一部としてもよい(ブロック1958)。応答側装置は、次いで、応答側装置の新たなファブリックに対する情報を含むJoin Existing Fabric要求を開始側装置に送信してもよい(ブロック1960)。応答側装置は開始側装置からのJoin Existing Fabric応答を待ってもよい。
【0309】
そうでない場合には、Solicit Joiningメッセージの受信で(ブロック1952)、応
答側装置が既存のファブリック1000にある場合には(判断ブロック1954)、応答側装置は異なる挙動を採用してもよい。具体的には、応答側装置がファブリックにある場合には、応答側装置はSolicit Joiningメッセージを調べてもよい(ブロック1962)
。応答側装置は、Solicit Joiningにおける識別値(開始側装置のカウンタ値)および「
ファブリックのメンバーである」フラグを調べてもよい。
【0310】
そうでない場合、Solicit Joiningメッセージが、開始側装置がファブリック1000
のメンバーでない旨を示す場合、または識別値が、応答側装置が起動したときに応答側装置によって起動されるカウンタ以上である場合には(判断ブロック1964)、応答側装置は、応答側装置のファブリック1000に対する情報を含むJoin Existing Fabric要求を開始側装置に送信してもよい(ブロック1974)。応答側装置は開始側装置からJoin
Existing Fabric応答を待ってもよい。
【0311】
Solicit Joiningメッセージが、開始側装置がファブリック1000のメンバーである
旨を示す場合、または識別値が、応答側装置が起動したときに応答側装置によって起動されるカウンタ未満である場合には(判断ブロック1964)、応答側装置はそれの現在のファブリック1000を出て、それ自体を独立した装置として再初期化してもよい(ブロック1966)。応答側装置は、さらに、Solicit Joiningメッセージを開始側装置に送
信してもよく(ブロック1968)、開始側装置からのJoin Existing Fabric要求を待ってもよい。開始側装置からのJoin Existing Fabric要求を受信すると(ブロック1970)、応答側装置は、Join Existing Fabric要求における情報を用いて、それ自体を新たなファブリック1000の一部にしてもよい(ブロック1972)。応答側装置は、さらに、Join Existing Fabric応答を送信して、それが今では開始側装置の既存のファブリック1000のメンバーである旨を示してもよい。
【0312】
上に記載される具体的な実施の形態は例示によって示されたものであり、これらの実施
の形態はさまざまな修正および代替形式が可能であり得ることが理解されるべきである。さらに、特許請求の範囲は開示される特定の形式に限定されるよう意図されるものではなく、本開示の精神および範囲内に入るすべての修正物、均等物および代替物を包含することが理解されるべきである。