(57)【要約】ユーティリティノードデバイスのソフトウェアおよび／またはファームウェアは、異なるタイプのソフトウェアおよび／またはファームウェアに関連する複数の更新アイテムを含む更新パッケージを利用することによって更新されてもよい。ユーティリティノードデバイスは、デバイスに現在インストールされているソフトウェアおよび／またはファームウェアのタイプに基づいて、複数の更新アイテムのうちの１または複数を選択的にインストールしてもよい。異なるタイプのソフトウェアおよび／またはファームウェアは、ソフトウェアおよび／もしくはファームウェアの異なるバージョン、ならびに／または異なるタイプのハードウェアに関係してもよい。一部の例では、更新パッケージの更新アイテムは、ソフトウェアおよび／またはファームウェアの異なるバージョンの間の差を含む差分ファイルを備える。ユーティリティノードデバイスは、スマートユーティリティメータ、センサ、制御デバイス、トランス、スイッチ、または中継機などを含んでもよい。
2016507806.tif 000002
【特許請求の範囲】
【請求項１】
特定の実行可能命令によって構成された、ユーティリティノードネットワークのユーティリティノードの制御下で、
前記ユーティリティノード上に記憶された異なるタイプのソフトウェアおよび／またはファームウェアを更新するための複数の更新アイテムを備える更新パッケージを受信するステップと、
前記ユーティリティノードに適用するための前記複数の更新アイテムのうちの１または複数を識別するステップと、
前記複数の更新アイテムのうちの１または複数の他の更新アイテムを適用することを抑制しながら、前記１または複数の識別された更新アイテムを前記ユーティリティノードに適用することによって、前記ユーティリティノードの前記ソフトウェアおよび／またはファームウェアを更新するステップと
を備えたことを特徴とする方法。
【請求項２】
前記ユーティリティノードの前記異なるタイプの前記ソフトウェアおよび／またはファームウェアは、前記ソフトウェアおよび／またはファームウェアの異なるバージョンに関連し、
前記ユーティリティノードに適用するための前記複数の更新アイテムのうちの前記１または複数は、前記ユーティリティノード上に現在インストールされている前記ソフトウェアおよび／またはファームウェアのバージョンに少なくとも部分的に基づいて識別される
ことを特徴とする請求項１に記載の方法。
【請求項３】
前記ユーティリティノードの前記異なるタイプの前記ソフトウェアおよび／またはファームウェアは、異なるタイプのハードウェアに関連し、
前記ユーティリティノードに適用するための前記複数の更新アイテムのうちの前記１または複数は、前記ユーティリティノードのハードウェアのタイプに少なくとも部分的に基づいて識別される
ことを特徴とする請求項１に記載の方法。
【請求項４】
前記更新パッケージの前記複数の更新アイテムのうちの少なくとも１つは、前記ユーティリティノードの前記ソフトウェアおよび／またはファームウェアの２つのバージョンの間の差を含む差分ファイルを備えていることを特徴とする請求項１に記載の方法。
【請求項５】
前記更新パッケージは、前記複数の更新アイテムを記述するパッケージ記述データと共に受信され、前記パッケージ記述データは、前記複数の更新アイテムのうちの１つが適用されることになるデバイスのタイプ、前記複数の更新アイテムのうちの１つのバージョン、または前記複数の更新アイテムのうちの１つが適用される前に適用されることになる必須要件更新アイテムのうちの少なくとも１つを識別することを特徴とする請求項１に記載の方法。
【請求項６】
前記ユーティリティノードに適用するための前記複数の更新アイテムのうちの前記１または複数は、前記パッケージ記述データに少なくとも部分的に基づいて識別されることを特徴とする請求項５に記載の方法。
【請求項７】
前記ユーティリティノードの前記ソフトウェアおよび／またはファームウェアを更新する前に、前記１または複数の識別された更新アイテムのうちの特定の更新アイテムに関連する１または複数の検証チェックを実行するステップと、
前記１または複数の検証チェックの準拠のレベルを判定するステップと
をさらに備え、
前記ユーティリティノードの前記ソフトウェアおよび／またはファームウェアは、前記１または複数の検証チェックの準拠の前記レベルに少なくとも部分的に基づいて更新されることを特徴とする請求項１に記載の方法。
【請求項８】
前記１または複数の検証チェックは、前記ユーティリティノードのデバイスタイプが前記特定の更新アイテムのデバイスタイプと一致することをチェックすること、または必須要件更新アイテムが前記ユーティリティノードに適用されていることをチェックすることのうちの少なくとも１つを備えていることを特徴とする請求項７に記載の方法。
【請求項９】
前記ユーティリティノードが更新されている間、前記ユーティリティノードネットワークにおける別のユーティリティノードから消費データを収集するステップをさらに備えたことを特徴とする請求項１に記載の方法。
【請求項１０】
ユーティリティノードであって、
無線接続上で、ユーティリティノードネットワークの別のユーティリティノードと通信するように構成された無線機と、
前記無線機に通信可能に結合されたメモリと
を備え、前記メモリは、
前記ユーティリティノードネットワークの前記別のユーティリティノードから消費データを収集するように構成された計測モジュールと、
請求項１に記載の方法を実行することによって、前記ユーティリティノードの前記ソフトウェアおよび／またはファームウェアを更新するように構成された更新モジュールと
を記憶していることを特徴とするユーティリティノード。
【請求項１１】
特定の実行可能命令によって構成された、ユーティリティノードネットワークのヘッドエンドデバイスの制御下で、
異なるタイプのユーティリティノードソフトウェアおよび／またはユーティリティノードファームウェアを更新するための複数の更新アイテムを含む更新パッケージを受信するステップと、
更新するための前記ユーティリティノードネットワークの１または複数のユーティリティノードを識別するステップと、
前記複数の更新アイテムの中から、前記１または複数の識別されたユーティリティノードを更新することに適用可能な、１または複数の更新アイテムを含むように、前記更新パッケージを再パッケージ化するステップと、
前記再パッケージ化された更新パッケージが前記１または複数の識別されたユーティリティノードに送信されるようにするステップと
を備えたことを特徴とする方法。
【請求項１２】
前記更新パッケージの前記複数の更新アイテムのうちの少なくとも１つは、前記１または複数の識別されたユーティリティノードのユーティリティノードファームウェアを更新するためのファームウェア更新データを備えていることを特徴とする請求項１１に記載の方法。
【請求項１３】
前記更新パッケージの前記複数の更新アイテムのうちの少なくとも１つは、前記ユーティリティノードソフトウェアおよび／または前記ユーティリティノードファームウェアの２つのバージョンの間の差を含む差分ファイルを備えていることを特徴とする請求項１１に記載の方法。
【請求項１４】
前記再パッケージ化された更新パッケージが前記１または複数の識別されたノードに送信されるようにした後、アクティブ化メッセージが前記１または複数の識別されたノードに送信されるようにして、前記再パッケージ化された更新パッケージに含まれる前記１または複数の更新アイテムを適用することによって、前記ユーティリティノードソフトウェアおよび／または前記ユーティリティノードファームウェアを更新するように前記１または複数の識別されたノードに指示するステップをさらに備えたことを特徴とする請求項１１に記載の方法。
【請求項１５】
前記１または複数の識別されたユーティリティノードを更新することに関連する情報を識別するステップであって、前記情報は、前記１もしくは複数の識別されたユーティリティノード上に現在インストールされている前記ユーティリティノードソフトウェアおよび／もしくは前記ユーティリティノードファームウェアのバージョン、前記１もしくは複数の識別されたユーティリティノードのデバイスタイプ、または前記１もしくは複数の識別されたユーティリティノードが更新されることになる前記ソフトウェアおよび／またはファームウェアの最終バージョンのうちの少なくとも１つを識別する、ステップをさらに備え、
前記更新パッケージは、前記１または複数の識別されたユーティリティノードを更新することに関連する前記情報に少なくとも部分的に基づいて、再パッケージ化される
ことを特徴とする請求項１１に記載の方法。
【請求項１６】
前記更新パッケージは、前記複数の更新アイテムを記述するパッケージ記述データに少なくとも部分的に基づいて再パッケージ化され、前記パッケージ記述データは、前記複数の更新アイテムのうちの１つが適用されることになるデバイスのタイプ、前記複数の更新アイテムのうちの１つのバージョン、または前記複数の更新アイテムのうちの１つが適用される前に適用されることになる必須要件更新アイテムのうちの少なくとも１つを識別することを特徴とする請求項１１に記載の方法。
【請求項１７】
１または複数のユーティリティノードを識別するステップは、
複数のユーティリティノードアイコンがユーザへ表示されるようにするステップであって、前記複数のユーティリティノードアイコンはそれぞれ、前記ユーティリティノードネットワークの複数のユーティリティノードを表す、ステップと、
前記複数のユーティリティノードアイコンのうちの１または複数の選択を受信するステップと、
前記選択に少なくとも部分的に基づいて、前記複数のユーティリティノードのうちから１または複数のユーティリティノードを識別するステップと
を備えていることを特徴とする請求項１１に記載の方法。
【請求項１８】
コンピュータ可読命令を記憶した１または複数のコンピュータ可読記憶媒体であって、前記コンピュータ可読命令は、実行されるとき、
ユーティリティノードの異なるタイプのソフトウェアおよび／またはファームウェアを更新するための複数の更新アイテムを含む更新パッケージを取得することと、
前記ユーティリティノード上にインストールするための前記複数の更新アイテムのうちの１または複数を識別することと、
前記１または複数の識別された更新アイテムをインストールすることによって、前記ユーティリティノードの前記ソフトウェアおよび／またはファームウェアが更新されるようにすることと
を備えた動作を実行するように１または複数のプロセッサに指示することを特徴とする１または複数のコンピュータ可読記憶媒体。
【請求項１９】
前記ユーティリティノードの前記異なるタイプのソフトウェアおよび／またはファームウェアは、前記ソフトウェアおよび／もしくはファームウェアの異なるバージョン、または異なるタイプのハードウェアのうちの少なくとも１つに関連することを特徴とする請求項１８に記載の１または複数のコンピュータ可読記憶媒体。
【請求項２０】
前記動作は、前記ユーティリティノード、または前記ユーティリティノードが位置するユーティリティネットワークのヘッドエンドデバイスのうちの少なくとも１つによって実行されることを特徴とする請求項１８に記載の１または複数のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、参照により本明細書に組み込まれている、２０１２年１２月１７日に出願された米国特許出願第１３／７１７，３９５号の優先権を主張する。
【背景技術】
【０００２】
スマートユーティリティメータ、制御デバイス、センサなどのユーティリティノードデバイスに関するソフトウェアおよび／またはファームウェアを更新することは、現在のところ、複雑で時間がかかる。たとえば、デバイスおよび／または異なるタイプのデバイス上にインストールされたソフトウェアまたはファームウェアのバージョンが異なることに起因して、デバイスは、新たなバージョンのソフトウェアまたはファームウェアにアップグレードするのに異なる更新ファイルを必要とすることがある。加えて、更新ファイルは比較的大きく、ユーティリティノードデバイスに無線で送信されるので、アップグレードプロセスは、更新ファイルをデバイスに送信することと、デバイスにおいて更新を実行することとの両方に相当の量の時間を必要とする。したがって、効率的な方法でユーティリティノードデバイスのソフトウェアおよびファームウェアをアップグレードする必要性が高まっている。
【発明の概要】
【０００３】
発明を実施するための形態は、添付図面を参照して示される。図面中、参照番号の最も左の桁は、参照番号が最初に現れる図を識別する。異なる図における同一の参照番号の使用は、類似または同一の項目または要素を示す。
【図面の簡単な説明】
【０００４】
【図１】ユーティリティノードデバイスのソフトウェアおよび／またはファームウェアを更新するために使用可能な例示的なアーキテクチャを示す図である。
【図２】図１のアーキテクチャのヘッドエンド（head-end）サービスの例示的なデバイスのさらなる詳細を示す概略図である。
【図３】図１のアーキテクチャの例示的なユーティリティノードデバイスのさらなる詳細を示す概略図である。
【図４】更新パッケージを再パッケージ化し、更新パッケージまたは再パッケージ化されたパッケージがユーティリティノードに送信されるようにするための例示的なプロセスを示す図である。
【図５】ユーティリティノードデバイスのソフトウェア／ファームウェアを更新するための例示的なプロセスを示す図である。
【図６】マルチシステムセット構成を利用することによって、ユーティリティノードデバイスのシステムセットを更新するための例示的なプロセスを示す図である。
【図７】更新パッケージを１または複数のユーティリティノードに配置するための例示的なユーザインタフェースを示す図である。
【図８】ユーティリティノードの例示的なメモリ構造を示す図である。
【発明を実施するための形態】
【０００５】
上記に論じられたように、スマートユーティリティメータ、制御デバイス、センサなどのユーティリティノードデバイスに関するソフトウェアおよび／またはファームウェアを更新するための現在の技術は、複雑で時間がかかる。
【０００６】
この開示は、一部では、異なるタイプのソフトウェア／ファームウェアに関連する更新アイテムを含む更新パッケージを利用することによって、ユーティリティノードデバイスに関するソフトウェア／ファームウェアを更新するための技術を説明する。特定の実装形態では、ユーティリティノードデバイスは、更新パッケージを受信し、デバイス上に現在インストールされているソフトウェア／ファームウェアのタイプに基づいて、複数の更新アイテムのうちの１または複数を選択的にインストールしてもよい。異なるタイプのソフトウェア／ファームウェアは、ソフトウェア／ファームウェアの異なるバージョン（たとえば、バージョン１および２）、ならびに／または異なるタイプのハードウェア（たとえば、ユーティリティノードのメインメモリ、通信ハードウェアなど）に関連してもよい。たとえば、ドライバのバージョン３に関連する更新パッケージの一部をインストールすることによって、ドライバのバージョン３にアップグレードしつつ、ドライバのバージョン２を含むユーティリティノードデバイスは、ドライバのバージョン１に関連する更新パッケージの別の部分を無視してもよい。別の例では、ユーティリティノードは、オペレーティングシステムに関連する更新パッケージの一部をインストールすることによって、メインメモリに記憶されたオペレーティングシステムを更新しつつ、メインメモリの外部に記憶されたモデムモジュールに関連する更新パッケージの別の部分を無視してもよい。一部の例では、これによって、異なるデバイスが異なるタイプのソフトウェア／ファームウェアで動作している場合などに、単一の更新パッケージが、異なる更新または更新の一部を必要とすることがある複数の異なるデバイスに、たとえば、ブロードキャストされ、または提供されることを可能にする。
【０００７】
一部の実施形態では、更新パッケージの複数の更新アイテムは、異なるタイプのソフトウェア／ファームウェア間の差を含む差分ファイル（delta file）を備えてもよい。たとえば、バージョン１〜３を含むドライバに対する更新パッケージは、バージョン１とバージョン２との間の差を含む差分ファイル、ならびにバージョン２とバージョン３との間の差を含む別の差分ファイルを含んでもよい。これによって、更新アイテムがソフトウェア／ファームウェアのバージョン全体より小さいと仮定して、ユーティリティノードデバイスが更新を比較的迅速にインストールすることを可能にする。さらに、比較的小さい差分ファイルによって、更新パッケージが時間的に効率的な方法で無線接続を介して送信されることを可能にする。
【０００８】
この開示はまた、一部では、マルチシステムセット構成を利用することによって、ユーティリティノードデバイスのシステムセットを更新するための技術を説明する。特定の実装形態では、ユーティリティノードデバイスは、概して「アクティブ」状態（たとえば稼動状態）で動作する１つのシステムセットを有する複数のシステムセットを含んでもよい。複数のシステムセットは、概して「アクティブ」システムセットとして動作するように構成された第１のシステムセットと、第１のシステムセットがアクティブまたは稼動状態にあるときにアイドル状態（たとえば非稼動）にある１または複数の「アイドル」システムセットとを含んでもよい。一例では、１または複数のアイドルシステムセットは、第１のシステムセットがアクティブであるときにアイドルであるが、第１のシステムセットが非稼動またはアイドル状態であるときにアクティブにされるように構成される、第２のシステムセットを含んでもよい。複数のシステムセットはまた、概してアイドルであるが、第１のシステムセットおよび第２のシステムセットが非稼動であるときにアクティブにされるように構成される、第３のシステムセット（たとえば「フェイルセーフ」システムセット）を含んでもよい。一部の例では、第３のシステムセットは、修正されないままの（たとえば変更不能な）工場でインストール（factory installed）されたセットを含んでもよい。他の実施形態では、追加のシステムセットが使用されてもよい。システムセットは、カーネルおよびルートファイルシステムを含むオペレーティングシステムを備えてもよい。
【０００９】
ユーティリティノードデバイス上のシステムセットの更新の間、アイドルシステムセットが、より新しいバージョンのシステムセットで更新されてよく、一方で、アクティブシステムセットが稼動状態のままであってもよい（たとえば、通常のユーティリティノード機能を実行する）。アイドルシステムセットは、指定されたバージョンに到達（たとえば、最新のバージョンのシステムセット）まで、バージョンごとに更新されてもよい。一部の例では、アイドルシステムセットは、異なるバージョンのシステムセットの間の差を含む差分ファイルから更新される。アイドルシステムセットを更新し、アクティブシステムセットをその現在の状態のままにすることによって、ユーティリティノードデバイスは、更新プロセスの間、デバイスの動作を維持することができる（たとえば、計測データを収集することを継続し、ネットワークトラフィックを中継することを継続するなど）。
【００１０】
アイドルシステムセットが更新された後、ユーティリティノードデバイスは、アイドルシステムセットを有効にし、１または複数のシステムチェックを実行して、新たにアクティブにされたシステムセット（前はアイドルシステムセット）が適切に動作しているかどうかを判定してもよい。新たにアクティブにされたシステムセットが適切に動作していない場合には、ユーティリティノードデバイスは、前にアクティブにされたシステムセットに戻ってよい。その後、アクティブシステムセットが適切に動作しない場合、ユーティリティノードデバイスは、フェイルセーフシステムセットを有効にしてもよい。複数のシステムセットを利用することによって、ユーティリティノードデバイスは、システムセットの１または複数が非稼動になる場合でさえも、デバイスの動作を維持することができる。
【００１１】
本明細書で使用されるとき、「システムセット」は、概して、ユーティリティノードを動作させるためのソフトウェア、ファームウェア、および／またはデータを含んでもよい。システムセットは、（i）ユーティリティノードのハードウェアリソースを管理するカーネル、ならびに／または（ii）ユーティリティノード機能性およびデータストレージ（たとえば、アプリケーション、ライブラリ、スクリプト、データベースデータなど）を実行するファイルなどの、ユーティリティノードを動作させるためのデータを含むルートファイルシステムを含む、オペレーティングシステムを備えてもよい。
【００１２】
本明細書では、更新技術は、スマートユーティリティメータ、センサ、制御デバイス、トランス、スイッチ、または中継機など種々のコンピューティングデバイスのいずれかとして実装されるユーティリティノードデバイスのコンテキストで説明される。概して、ユーティリティノードデバイスは、ノードがノードからノードへと情報を中継する「メッシュ」ネットワーク、ノードが指定されたノードに情報を送信する「スター」ネットワーク、ノードが、経路をたどるモバイルもしくはハンドヘルド読取りデバイスによって収集されることになる情報をブロードキャストもしくは「バブルアップ（bubble up）」して、メータを読み取る「モバイル」もしくは「ハンドヘルド」ネットワーク、および／または他のネットワークなどの、通信ネットワークにおいて構成される。本明細書では、更新技術は、ユーティリティネットワークにおいて構成されるユーティリティノードデバイスのコンテキストで論じられるが、これらの技術は、代替的または追加的に、他のタイプのコンピューティングデバイスおよび／またはネットワークに適用可能であってもよい。
【００１３】
この簡潔な導入は、読者の便宜のために提供され、特許請求の範囲や一連の節を限定することを意図されない。さらに、下記に詳細に説明される技術は、いくつかの方法およびいくつかのコンテキストにおいて実装されてよい。１つの例示的な実装形態およびコンテキストが、より詳細に下記に説明されるように以下の図面を参照して提供される。しかしながら、以下の実装形態およびコンテキストは多くのうちの１つにすぎないことは理解されたい。
【００１４】
＜例示的なアーキテクチャ＞
図１は、ソフトウェア／またファームウェア更新技術が実装されてもよい例示的なアーキテクチャ１００を示す。アーキテクチャ１００は、複数のノード１０２Ａ、１０２Ｂ、１０２Ｃ、１０２Ｄ、…１０２Ｎ（総称して、ノード１０２）を含み、それぞれが、それぞれのノードのソフトウェア／ファームウェア（たとえば、オペレーティングシステム、システムセットなど）を更新するように構成される。一例では、ノード１０２のソフトウェア／ファームウェアは、更新パッケージを受信し、異なるタイプのソフトウェア／ファームウェアに関連するパッケージの個別更新アイテムを適用することによって更新されてもよい。たとえば、更新パッケージがシステムセットに対する更新アイテムを含むとき、ノード１０２は、以下にさらに詳細に論じられるように、更新アイテムをアイドルシステムセットに適用してもよい。
【００１５】
概して、更新パッケージは、ノード１０２の任意のタイプのソフトウェア／ファームウェアを更新するための更新アイテムを含んでもよい。たとえば、パッケージは、低レベルの起動バイナリデータ（たとえばＵブート（u-boot））、中レベルのカーネルデータ、高レベルのオペレーティングシステムデータ（カーネルデータおよびルートファイルシステムデータを含んでもよい）、外部デバイス（たとえば、モノシリックデータ）、モジュール、アプリケーション、およびデバイスドライバに対するバイナリデータなどを更新するためのアイテムを含んでもよい。
【００１６】
図１に示されるように、ノード１０２は、より大きなユーティリティ通信ネットワークの一部であってもよい自律ルーティングエリア（ＡＲＡ）などのユーティリティノードネットワーク１０４を形成してもよい。ユーティリティノードネットワーク１０４は、たとえば、広域ネットワーク（ＷＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、近隣エリアネットワーク（ＮＡＮ）、またはパーソナルエリアネットワーク（ＰＡＮ）などを含んでもよい。ノード１０２は、直接通信経路（たとえば無線接続）を介して互いに通信可能に結合されてもよい。各直接通信経路は、ノードがデータを送信および／または受信することが可能な複数のチャネルを表してもよい。複数のチャネルの各々は、複数のチャネルの他の周波数範囲と同一のまたは異なってもよい周波数範囲によって定義されてもよい。一部の例では、複数のチャネルは、無線周波数（ＲＦ）チャネルを含んでもよい。
【００１７】
ノード１０２の各々は、種々のコンピューティングデバイス、たとえば、スマートユーティリティメータ（たとえば、電気、ガス、および／もしくは水量メータ）、制御デバイス、センサ（たとえば、温度センサ、測候所、周波数センサなど）、トランス、ルータ、サーバ、中継機（たとえばセルラ中継機）、スイッチ、バルブ、上記の組み合わせ、または、通信ネットワークに結合可能であり、データを送信および／もしくは受信することが可能な任意のデバイスなどのいずれかとして実装されてもよい。一部の事例では、ノード１０２は、異なるタイプのノード（たとえば、スマートメータ、セルラ中継機、センサなど）、異なる世代またはモデルのノード、ならびに／または、異なるチャネル上で送信し、かつ異なる変調技術、データレート、プロトコル、信号強度、および／もしくは電力レベルを使用することが可能なノードを含んでもよい。これらの事例では、アーキテクチャ１００は、ノードの異種ネットワークを表してもよい。
【００１８】
図１の例では、ノード１０２は、インターネットなどのバックホールネットワーク１１０を介して、ヘッドエンドサービス１０６および／またはパッケージ作成サービス１０８と通信するように構成される。ノード１０２は、バックホールネットワーク１１０へのユーティリティノードネットワーク１０４の接続ポイントとしての役割を果たすエッジデバイス（たとえば、セルラ中継機、セルラルータ、エッジルータ、ＤＯＤＡＧルートなど）を介して、ヘッドエンドサービス１０６と通信してもよい。一部の例では、ユーティリティノードネットワーク１０４は、ノード１０２がデータ収集装置と直接通信する「固定」または「スターネットワーク」として、または、ノード１０２がエッジデバイスと直接または１もしくは複数の介在（intervening）上流デバイスを介して通信する「メッシュネットワーク」として構成されてもよい。図１のアーキテクチャは、スターネットワークまたはメッシュネットワークを総称的に表してもよい。
【００１９】
パッケージ作成サービス１０８は、ソフトウェア／ファームウェアをアップグレードするためのノード１０２で使用されるべき更新パッケージ１１２を作成してもよい。一部の例では、サービス１０８はヘッドエンドサービス１０６に関連付けられるが、他の例では、サービス１０８はサードパーティを含んでもよい。パッケージ１１２は、ノード１０２上にすでにインストールされたソフトウェア／ファームウェアをアップグレードするため、および／またはノード１０２に新たなソフトウェア／ファームウェアを追加するための１または複数の更新アイテムを含んでもよい。一部の例では、更新アイテムは、ユーティリティノードソフトウェア／ファームウェアの１または複数のバージョンを更新するように構成される。例として、パッケージ１１２は、ユーティリティノードのオペレーティングシステムをバージョン２からバージョン３にアップグレードするための更新アイテム（たとえばファイルイメージ）、およびオペレーティングシステムをバージョン３からバージョン４にアップグレードするための別の更新アイテムを含んでもよい。
【００２０】
一部の例では、更新パッケージ１１２の更新アイテムは、連続したバージョンのソフトウェア／ファームウェアなどの、異なるバージョンのソフトウェア／ファームウェアの間の差を含む差分ファイルを備えてもよい。ここでは、特定のバージョンのソフトウェア／ファームウェアは、更新アイテムによって表されてもよい。差分ファイルは、フルバージョンのソフトウェア／ファームウェアと比較してサイズが比較的小さくてもよい。例示として、オペレーティングシステムのバージョン３が、新たなモジュールを含むが、オペレーティングシステムのバージョン２と同一である場合、更新パッケージ１１２は、新たなモジュールのみを含む差分ファイルを含んでもよい。異なるバージョンのソフトウェア／ファームウェアをパッケージ１１２に含め、および／またはパッケージ１１２内で、差分ファイルで異なるバージョンを表すことによって、ノード１０２は、複数のモノリシック更新パッケージを利用した前の更新プロセスと比較して、比較的小さい量のデータで更新されてもよい。さらに、一部の例では、ノード１０２は、適用／インストールする更新アイテムを判定するためのロジックで構成されてもよいので、同一の更新パッケージが、異なるように構成された複数のノードにブロードキャストまたは提供されてもよい。
【００２１】
パッケージ作成サービス１０８はまた、更新パッケージ１１２のコンテンツを記述するパッケージ記述データ（ＰＤＤ：package description data）１１４を生成してもよい。ＰＤＤ１１４は、データ１１４が新たにリリースされたソフトウェア／ファームウェア（たとえば、ソフトウェア／ファームウェアの新たなバージョン）に関連付けられていることを示す「リリースマニフェスト（release manifest）」と称されてもよい。ＰＤＤ１１４は、ヘッドエンドサービス１０６および／またはノード１０２が、更新パッケージ１１２のコンテンツを識別すること、およびインストール／適用する更新アイテムを判定することなどを支援するために利用されてもよい。例として、ＰＤＤ１１４は、以下を含んでもよい。
−  更新アイテムが適用されることになるソフトウェア、ファームウェア、および／またはハードウェアリソースを識別する情報。この情報は、置き換えられることになるファイルの名前または他の識別する情報を含んでもよい。
−  更新アイテムが適用されてもよいデバイスのタイプを識別する情報。たとえば、パッケージ１１２が、多相ノード上にドライバをインストールするための更新アイテム、および単相ノード上の同一のドライバをインストールするための別の更新アイテムを含む場合、ＰＤＤ１１４は、どの更新アイテムがどのタイプのノードに適用可能であるかを示してもよい。デバイスのタイプは、概して、デバイスのハードウェア、ソフトウェア、および／またはファームウェア機能性に基づいてよい。たとえば、デバイスのタイプは、デバイスが、スマートメータ、セルラ中継機、ルータ、センサ、および多相または単相デバイスなどであるかによって判定されてもよい。一例では、デバイスのタイプは、ソフトウェア／ファームウェア内のデバイスの認識された「クラス」に基づいている。
−  更新アイテムのタイプを識別する情報。たとえば、ＰＤＤ１１４は、特定の更新アイテムがドライバをバージョン２からバージョン３へ更新するために利用されてもよいことを示してもよい。別の例では、ＰＤＤ１１４は、更新アイテムが、特定のハードウェア対象タイプ（たとえば、メインメモリ、モデムなど）に関連するソフトウェア／ファームウェアを更新することに関連することを示してもよい。
−  別の更新アイテムが適用される前に適用されるべき必須要件（prerequisite）更新アイテムを識別する情報。たとえば、ＰＤＤ１１４は、別の関連するドライバがインストールされる前に、特定のドライバがインストールされる必要があることを示してもよい。特定のドライバがインストールされていない場合、ノードは、関連するドライバのインストールに進む前に、特定のドライバをインストールすることを要求されてもよい。別の例では、ＰＤＤ１１４は、ドライバをインストールする前に、ノードが必要とするオペレーティングシステムの特定のバージョンを示してもよい。
−  １または複数の更新アイテムを適用するために満たされることになる検証基準。たとえば、検証基準は、ユーティリティノードに関連付けられたハードウェア／ファームウェア／ソフトウェアのバージョンをチェックすること、更新されることになるハードウェア／ファームウェア／ソフトウェアがユーティリティノード上に存在するかをチェックすること、イメージシステムリソース（たとえば、ディスクスペース、バッテリ状態など）を検査すること、ユーティリティノード上の既存の機能性構成を検査すること（たとえば、特定の機能性が有効にされたかを検査すること）、および消費データ値を検査すること、などを含んでもよい。検証基準は、ハッシュ値などの検証データを含んでもよい。
−  更新アイテムを識別する一意の更新アイテム識別子。
−  更新アイテムが適用されることになるハードウェア範囲を識別する情報。たとえば、情報は、拡張されているメモリに１つの更新アイテムが適用可能であり、その拡張されていない状態にあるメモリに別の更新アイテムが適用可能であることを示してもよい。これによって、拡張されたメモリを有するユーティリティノードおよび拡張されたメモリを有しないユーティリティノードに使用されることになる２つの更新アイテムを含む単一の更新パッケージが可能になる。
−  インストール経路を識別する情報。インストール経路は、どの更新アイテムがインストールされる必要があるか、および／またはどの順序でインストールされる必要があるかを示してもよい。
【００２２】
図１に示されるように、更新パッケージ１１２および／またはＰＤＤ１１４は、ヘッドエンドサービス１０６に送信されて、ユーティリティノードネットワーク１０４のノード１０２に配布されてもよい。一部の例では、更新パッケージ１１２およびＰＤＤ１１４は、パッケージ１１２を効率的に利用することができるように共に維持される。
【００２３】
ヘッドエンドサービス１０６は、配布用に更新パッケージ１１２を作成し、および／または更新パッケージがノード１０２に配布されるための処理を実行してもよい。一部の例では、ヘッドエンドサービス１０６は、ユーティリティの中央局を表してもよく、および／またはユーティリティの中央局に関連付けられてもよい。追加的または代替的に、サービス１０６は、ノード１０２から受信されたデータの処理、分析、記憶、および／または管理を実行する、集中化されたメータデータ管理システムを含んでもよい。
【００２４】
ヘッドエンドデバイス１０６は、パッケージ１１２を再パッケージ化して再パッケージ化されたパッケージ１１８を形成するように構成された、サーバ、パーソナルコンピュータ、ラップトップコンピュータなどの、１または複数のコンピューティングデバイス１１６を含んでもよい。再パッケージ化されたパッケージ１１８は、ノード１０２の特定のグループを更新することに適用可能なパッケージ１１２の更新アイテムを選択することによって作成されてもよい。たとえば、ノード１０２Ａ〜１０２Ｃがオペレーティングシステムのバージョン３に更新されるよう識別され、ノード１０２Ａ〜１０２Ｃがバージョン１および２をすでに含んでいる場合、サービス１０６は、オペレーティングシステムをバージョン２からバージョン３へ更新するための更新アイテムを選択し、オペレーティングシステムをバージョン１からバージョン２へ更新するための更新アイテムを除外してもよい。
【００２５】
図１に示されるように、ヘッドエンドサービス１０６はまた、更新パッケージ１１２および／または再パッケージ化されたパッケージ１１８を配置するためのインタフェース１２２を提供するインタフェースデバイス１２０を含んでもよい。インタフェース１２２はインタフェース１２０によって提供されるものとして示されているが、一部の例では、インタフェース１２２の機能性の全部または一部が、デバイス１１６によって提供されてもよい。インタフェース１２２は、更新されることになるノード１０２の１もしくは複数、更新されることになるノード１０２の１もしくは複数のタイプ（たとえば、電気メータ、水量メータ、ガスメータ、ゲートウェイデバイスなど）、ノード１０２の１もしくは複数上で更新されることになるソフトウェア／ファームウェア、および／またはノード１０２を更新することに関連する他の情報を、ユーザ１２４が選択することを可能にしてもよい。例示的なインタフェース１２２のさらなる詳細は、図７を参照して以下で説明される。
【００２６】
インタフェース１２２または別個の処理を通じて、更新するユーティリティノードネットワーク１０４のノードを識別した後、サービス１０６は、再パッケージ化されたパッケージ１１８および／またはパッケージ１１２を、識別されたノードに配布してもよい。一例では、サービス１０６は、再パッケージ化されたパッケージ１１８および／またはパッケージ１１２を、ノード１０２の１または複数に配布するためにネットワーク１１０のエッジデバイスに送信する。図１の例では、再パッケージ化されたパッケージ１１８が配布されるものとして示されているが、他の例では、パッケージ１１２が再パッケージ化されることなく配布されてもよい。
【００２７】
図１の例は、単一の場所におけるヘッドエンドサービス１０６を示しているが、一部の例では、サービス１０６は複数の場所の間で分散されてもよく、および／または完全に除去されてもよい（たとえば、高度に非集中化された分散コンピューティングプラットフォームの場合）。
【００２８】
ノード１０２Ａは、ユーティリティノードネットワーク１０４のノード１０２の１または複数を表してもよい。上述したように、ノード１０２Ａは、そのソフトウェア／ファームウェア（たとえばシステムセットなど）を更新するように構成されてもよい。図１の例では、ノード１０２Ａは、再パッケージ化されたパッケージ１１８およびＰＤＤ１１４を、ヘッドエンドサービス１０６から直接的に、または１もしくは複数の上流ノード（たとえば、サービス１０６により近いノード）を通じてヘッドエンドサービス１０６から間接的に受信する。一部の例では、パッケージ１１８および／またはＰＤＤ１１４は、たとえば、ネットワーク１０４の輻輳、および／またはネットワーク１０４の送信容量／要件に基づいて、ユーティリティノードネットワーク１０４上の複数の送信を通じて受信される。いずれにせよ、再パッケージ化されたパッケージ１１８およびＰＤＤ１１４は、アクティブ化メッセージが受信され、または別のイベントが発生するまで、ノード１０２Ａに記憶されてもよい。
【００２９】
再パッケージ化されたパッケージ１１８がソフトウェア／ファームウェアを更新するためにノード１０２Ａでアクティブ化されるとき、ノード１０２Ａは、ノード１０２Ａに適用するためのパッケージ１１８の１または複数の更新アイテムを判定してもよい。たとえば、ノード１０２Ａは、ノード１０２Ａ上にインストールされたソフトウェア／ファームウェアの現在のバージョン、およびソフトウェア／ファームウェアを現在のバージョンからより新しいバージョンへ更新することに適用可能な更新アイテムを識別してもよい。次いで、ノード１０２Ａは、ソフトウェア／ファームウェアの特定のバージョンに達するまで、バージョンごとに１または複数の判定された更新アイテムを適用／インストールしてもよい。上述したように、一部の例では、更新アイテムは、ソフトウェア／ファームウェアのバージョンの間の差を含む差分ファイルを備えてよい。
【００３０】
一部の実施形態では、パッケージ１１８は、ノード１０２Ａのシステムセット１２６を更新することに関連する１または複数の更新アイテムを含んでもよい。ここでは、アクティブシステムセットが稼動したままの間（たとえば、通常の動作を実行）、ノード１０２Ａが、１または複数の更新アイテムをアイドルシステムセットに適用／インストールしてもよい。図１に示されるように、システムセットの差分ファイルなどの更新アイテム１２８が、アイドルシステムセットに適用され、アクティブシステムセットおよびフェイルセーフシステムセットが変更されないようにしてもよい。これらの更新技術のさらなる詳細は以下で説明される。
【００３１】
＜例示的なヘッドエンドサービス＞
図２は、図１におけるヘッドエンドサービス１０６の例示的なデバイス１１６のさらなる詳細を示す概略図である。１または複数のデバイス１１６は、１または複数のプロセッサ２０２、メモリ２０４、および１または複数のネットワークインタフェース２０６を備えてもよい。メモリ２０４は、１または複数のプロセッサ２０２に通信可能に結合されてよく、１または複数のモジュールとして構成されるソフトウェア機能性を含んでもよい。
【００３２】
本明細書で使用されるように、用語「モジュール」は、説明を目的にソフトウェアの例示的な分割を表すことを意図され、任意のタイプの要件、要求される方法、方式、または必要な編成を表すことも意図されない。したがって、種々の「モジュール」が説明されるが、それらの機能性および／または類似の機能性は、異なるように構成されてもよい（たとえば、より少数のモジュールに組み合わされ、より多数のモジュールに分けられるなど）。さらに、本明細書では、いくつかの機能およびモジュールが、プロセッサ上で実行可能なソフトウェアおよび／またはファームウェアによって実装されるものとして説明されているが、他の実施形態では、モジュールのいずれかまたは全部が、説明された機能を実行するようにハードウェアによって（たとえば、ＡＳＩＣ、専用プロセシングユニットなどとして）全体的または部分的に実装されてもよい。
【００３３】
図２に示されるように、メモリ２０４は、更新パッケージを再パッケージ化するように構成された再パッケージ化モジュール２０８を含む。たとえば、モジュール２０８は、パッケージ記述データを利用して、ノードの特定のグループをアップグレードすることに適用可能な更新パッケージの更新アイテムを識別してもよい。次いで、識別された更新アイテムは、再パッケージ化されたパッケージに含まれてもよい。一部の例では、パッケージ記述データは、再パッケージ化されたパッケージに含まれた更新アイテムに基づいて修正されてもよい。
【００３４】
メモリ２０４はまた、ノード１０２において更新をスケジューリングし、ノード１０２にアクティブ化メッセージを送信するように構成されたパッケージアクティブ化モジュール２１０を含んでもよい。モジュール２１０によって、更新パッケージがノード１０２に送信された後の数時間、数日、または数週間などの特定の時間で、ヘッドエンドサービス１０６がノード１０２において更新パッケージをアクティブ化することが可能になる。更新パッケージをアクティブ化するために、モジュール２１０は、アクティブ化メッセージが特定のノードまたはノードのグループに送信されるようにして、すでに受信されている更新パッケージの更新アイテムを適用することによってソフトウェア／ファームウェアを更新するように特定のノードまたはノードのグループに指示してもよい。
【００３５】
さらに、メモリ２０４は、ノード１０２の１または複数と通信するための通信モジュール２１２を含んでもよい。一部の例では、モジュール２１２は、メッセージを送信し、および／またはバックホールネットワーク１１０を介してユーティリティノードネットワーク１０４のエッジデバイスからメッセージを受信してもよい。
【００３６】
図２に示されるように、メモリ２０４はまた、１または複数の更新パッケージ（たとえば、パッケージ作成サービス１０８から受信されたパッケージ）を記憶するためのパッケージデータストア２１４を含んでもよい。一部の例では、更新パッケージは単一のコンテンツとして記憶されるが、他の例では、更新パッケージは、別々に記憶される個々の更新アイテムとして構文解析（parsed）／抽出される。一例では、個々に記憶された更新アイテムは、再パッケージ化されて（たとえば、インタフェース１２２の使用を通じて）、ノード１０２へ配布するための更新パッケージを形成してもよい。メモリ２０４はまた、１または複数の再パッケージ化されたパッケージを記憶するための再パッケージ化パッケージデータストア２１６を記憶してもよい。
【００３７】
＜例示的なユーティリティノードデバイス＞
図３は、図１における例示的なノード１０２Ａのさらなる詳細を示す概略図である。上述したように、ノード１０２Ａは、例１００におけるノード１０２の各々を表す。ノード１０２Ａは、無線機３０２およびプロセシングユニット３０４を含んでもよい。無線機３０２は、複数のチャネル／周波数の１または複数を介してＲＦ信号を送信および／または受信するように構成されたＲＦ送受信機を備えてよい。無線機３０２はまた、複数の異なる変調技術、データレート、プロトコル、信号強度、および／または電力レベルを使用して通信をするように構成されてもよい。図３の例では、無線機は、ＲＦフロントエンド３０８とベースバンドプロセッサ３１０とに結合されたアンテナ３０６を含む。ＲＦフロントエンド３０８は、送信および／または受信機能を提供してもよい。ＲＦフロントエンド３０８は、アンテナによって提供され、およびノード１０２の１または複数から取得される信号を、同調および／または減衰させるなどの機能性を提供する高周波アナログおよび／またはハードウェアコンポーネントを含んでもよい。ＲＦフロントエンド３０８は、信号をベースバンドプロセッサ３１０に提供してもよい。
【００３８】
一例では、ベースバンドプロセッサ３１０の全部または一部が、ソフトウェア（ＳＷ）定義無線機（software defined radio）として構成されてもよい。一実装形態では、ベースバンドプロセッサ３０１は、周波数および／またはチャネル選択機能性を無線機３０２に提供する。たとえば、ＳＷ定義無線機は、プロセッサもしくは特定用途向き集積回路（ＡＳＩＣ）または他の組み込まれたコンピューティングデバイスにより実行されるソフトウェアで実装された、ミキサ、フィルタ、増幅器、変調器および／または復調器、検出器などを含んでもよい。ＳＷ定義無線機は、プロセッサ３１２、およびメモリ３１４で定義および／または記憶されたソフトウェアを利用してもよい。あるいは、無線機３０２は、少なくとも部分的にアナログコンポーネントを使用して実装されてもよい。
【００３９】
プロセシングユニット３０４は、メモリ３１４に通信可能に結合された１または複数のプロセッサ３１２を含んでもよい。メモリ３１４は、図８を参照して以下でさらに詳細に説明される、アクティブシステムセット、アイドルシステムセット、およびフェイルセーフシステムセットを含むシステムセット１２６を記憶するように構成されてもよい。メモリ３１４はまた、更新モジュール３１６、計測モジュール３１８、およびパッケージデータストア３２０を記憶してもよい。一部の例では、更新モジュール３１６および／または計測モジュール３１８は、システムセット１２６の１または複数の一部である。
【００４０】
更新モジュール３１６は、ノード１０２Ａのソフトウェア／ファームウェアを更新するように構成されてもよい。この機能性を実装するために、更新モジュール３１６は、アイテム識別モジュール３２２、検証モジュール３２４、および転送モジュール３２６を含んでもよい。アイテム識別モジュール３２２は、更新パッケージを処理して、ノード１０２Ａ上のソフトウェア／ファームウェアを更新することに適用可能な更新パッケージの１または複数の更新アイテムを識別（たとえば判定）してもよい。１または複数のアイテムは、更新パッケージのコンテンツ、ノード１０２Ａ上にインストールされたソフトウェア／ファームウェアの特定のバージョン、ノード１０２Ａのタイプ、および／または他の情報を記述するパッケージ記述データに基づいて識別されてもよい。たとえば、ノード１０２Ａがドライバのバージョン１を含み、およびドライバがバージョン３に更新されることになる場合、モジュール３２２は、バージョン２および３に関連する更新パッケージの更新アイテムを識別してもよい。代わりに、ノード１０２Ａがドライバのバージョン１をまだインストールしていない場合、バージョン１〜３が更新の間に適用されるものと識別されてもよい。
【００４１】
検証モジュール３２４は、１または複数の更新アイテムを更新することに関連する１または複数の条件を検証するように構成されてもよい。たとえば、モジュール３２４は、１または複数の検証チェックを実行して、ノード１０２Ａのデバイスタイプが特定の更新アイテムのデバイスタイプと一致することをチェックし、必須要件更新アイテムがノード１０２Ａに適用されていることをチェックし、ノード１０２Ａが二次電源（たとえばバッテリ）上で動作していないことをチェックし、またはノード１０２Ａの他の機能、データ、もしくは構成をチェックしてもよい。
【００４２】
１または複数の検証チェックを実行すると、検証モジュール３２４は、１または複数のチェックに準拠したレベルを判定し、準拠のレベルに基づいて更新を進めてもよい。たとえば、準拠のレベルが比較的低い（たとえば、チェックの半分が満たされない）場合、モジュール３２４は、更新が実行されることを防止してもよい。準拠のレベルが比較的高い（たとえば、チェックの半分以上が満たされる）場合、モジュール３２４は更新を進めてもよい。一例では、準拠のレベルは、レベル１：第１の閾値数より少ない検証チェックが失敗し（更新アイテムの適用を継続する）、レベル２：第１の閾値数より多いが第２の閾値数より少ない検証チェックが失敗し（次の更新アイテムに移り、現在の更新アイテムを適用しない）、レベル３：第２の閾値数より多い検証チェックが失敗する（更新プロセス全体を停止する）、ことを含む３つのレベルの重大度の１つを含む。一部の例では、ＰＤＤ１１４は、どのように準拠のレベルが判定されるかを指定し、および／または１または複数の更新アイテムの適用を進めるのに必要とされる適合のレベルを指定してもよい。１または複数の検証チェックを実行することによって、モジュール３２４は、ノード１０２Ａ上にすでにインストールされたソフトウェア／ファームウェアのバージョンに関連する更新アイテムなどの、適用可能でない更新アイテムを適用／インストールすることを回避してもよい。
【００４３】
転送モジュール３２６は、更新アイテムをノード１０２Ａに転送するための異なるプロセスを実行するように構成されてもよい。転送プロセスは、更新アイテムのタイプ（たとえば、更新アイテムが適用可能なソフトウェア／ファームウェアのタイプ）に基づいてもよい。一部の例では、ノード１０２Ａ上の異なるタイプの更新アイテムを適用／インストールするための異なるプロセスが存在してもよい。したがって、転送モジュール３２６は、そのようなプロセスを実行するように構成されてもよい。例示として、モジュール３２６は、ノード１０２Ａのドライバに関連する更新アイテムをインストールするための第１のセットの技術を利用してよく、また、ノード１０２Ａのシステムセットに関連する更新アイテムをインストールするための第２のセットの技術を利用してもよい。
【００４４】
更新アイテムがノード１０２Ａのシステムセットに関連するときの例において、更新モジュール３１６は、アイドルシステムセット（たとえば、「アイドル」または「非稼動」状態にあるシステムセット）に更新アイテムを適用／インストールしてもよい。アイドルシステムセットは、アクティブシステムセットが通常動作を維持している（たとえば、消費データを収集し、他のノードと通信するなど）ときに更新されてもよい。アイドルシステムセットが更新された後、モジュール３１６によって、アイドルシステムセットがノード１０２Ａの動作を引き継ぎ、「アクティブ」システムセットになることが可能になる。次いで、１または複数のシステムチェックが実行されて、前のアイドルシステムセット（今はアクティブである）が適切に動作しているかどうかを判定してもよい。アイドルシステムセットが適切に動作していない場合には、ユーティリティノードデバイスは前のアクティブシステムセットに戻ってよい。その後、アクティブシステムセットが適切に動作しない場合、ユーティリティノードによって、フェイルセーフシステムセットがノード１０２Ａの動作を引き継ぐことが可能になる。そうすることにより、ノード１０２Ａは、１または複数のシステムセットが失敗するときの例であっても、動作を維持することができる。
【００４５】
計測モジュール３１８は、１または複数のリソース（たとえば、電気、水、天然ガスなど）の消費データを収集するように構成されてもよい。消費データは、たとえば、電気消費データ、水消費データ、および／または天然ガス消費データを含んでもよい。消費データは、ノード１０２Ａ、別のノード（たとえば、ノード１０２Ｂ、１０２Ｃなど）、またはこれらの組み合わせにおいて生成されたデータを含んでもよい。収集された消費データは、スターネットワークの場合、データ収集装置に送信されてもよく、または、メッシュネットワークの場合、ヘッドエンドサービス１０６もしくは別の宛先への最終的伝搬のために１もしくは複数の他のノード１０２に送信されてもよい。一部の例では、ノード１０２Ａのソフトウェア／ファームウェアが更新されている間、消費データがノード１０２Ａにおいて収集される。
【００４６】
メモリ３１４（ならびにメモリ２０４および本明細書に説明されるすべての他のメモリ）は、コンピュータ可読媒体を含んでよく、ランダムアクセスメモリ（ＲＡＭ）などの揮発性メモリ、および／またはリードオンリメモリ（ＲＯＭ）もしくはフラッシュＲＡＭなどの不揮発性メモリの形式をとってもよい。コンピュータ可読媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、またはコンピューティングデバイスの１または複数のプロセッサによって実行される他のデータなどの情報の記憶のために任意の方法または技術で実装された揮発性および不揮発性の着脱可能および着脱不能な媒体を含む。コンピュータ可読媒体の例は、相変化メモリ（ＰＲＡＭ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、他のタイプのランダムアクセスメモリ（ＲＡＭ）、リードオンリメモリ（ＲＯＭ）、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ）、フラッシュメモリ、もしくは他のメモリ技術、コンパクトディスクＲＯＭ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、もしくは他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、もしくは他の磁気ストレージデバイス、またはコンピューティングデバイスによるアクセスのために情報を記憶するように使用することができる任意の他の非伝送媒体を含むが、これらに限定されない。本明細書で定義される場合、コンピュータ可読媒体は、変調されたデータ信号および搬送波などの通信媒体を含まない。
【００４７】
＜例示的なプロセス＞
図４〜図６は、本明細書に説明される技術を採用するための例示的なプロセス４００、５００、および６００を示す。例示を簡単にするため、プロセス４００、５００、および６００は、図１のアーキテクチャ１００で実行されるものとして説明される。たとえば、プロセス４００の個々の動作の１または複数は、ヘッドエンドサービス１０６（たとえばデバイス１１６）によって実行されてもよく、プロセス５００および６００はノード１０２Ａによって実行されてもよい。しかしながら、プロセス４００、５００、および６００は、他のアーキテクチャにおいて、および／または他のデバイスを使用して実行されてもよい。さらに、アーキテクチャ１００は他のプロセスを実行するために使用されてもよい。
【００４８】
プロセス４００、５００、および６００（ならびに本明細書に説明される各プロセス）は、論理フローグラフとして示され、それらの各動作は、ハードウェア、ソフトウェア、またはこれらの組み合わせで実装することができる一連の動作を表す。ソフトウェアのコンテキストでは、動作は、１または複数のプロセッサによって実行されたときに記載された動作を実行する１または複数のコンピュータ可読記憶媒体に記憶されたコンピュータ実行可能命令を表す。概して、コンピュータ実行可能命令は、特定の機能を実行し、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、およびデータ構造などを含む。動作が説明される順序は、限定として解釈されることを意図されず、任意の数の説明される動作が、プロセスを実装するために任意の順序および／または並列に組み合わされてもよい。さらに、任意の数の個々の動作が省略されてもよい。
【００４９】
図４は、更新パッケージを再パッケージ化し、更新パッケージまたは再パッケージ化されたパッケージがユーティリティノードに送信されるようにするための例示的なプロセス４００を示す。
【００５０】
４０２で、ヘッドエンドサービス１０６は、パッケージ作成サービス１０８から更新パッケージ１１２を受信してもよい（たとえば取得してもよい）。更新パッケージ１１２は、異なるタイプのユーティリティノードソフトウェア／ファームウェアを更新するための複数の更新アイテムを含んでもよい。一部の例では、複数の更新アイテムが、ユーティリティノードソフトウェア／ファームウェアの２以上のバージョンの間の差をそれぞれが含む差分ファイルを備える。４０２で、パッケージ記述データ（ＰＤＤ）１１４がまた、パッケージ１１２と共にまたは別個に受信されてもよい。
【００５１】
４０４で、ヘッドエンドサービス１０６は、更新する１もしくは複数のユーティリティノード、および／または１もしくは複数のユーティリティノードを更新することに関連する情報を識別してもよい。情報は、１もしくは複数のユーティリティノード上に現在インストールされているユーティリティノードソフトウェアおよび／もしくはファームウェアのバージョン、１もしくは複数のユーティリティノードのデバイスタイプ、１もしくは複数のユーティリティノードのハードウェア、ならびに／または１もしくは複数のユーティリティノードが更新されることになるユーティリティノードソフトウェア／ファームウェアの最終バージョン（end-version）を含んでもよい。一部の例では、インタフェース１２２は、１もしくは複数のユーティリティノードをユーザが選択することを可能にし、および／または１もしくは複数のユーティリティノードを更新することに関連する情報をユーザが提供することを可能にするために、ユーザに表示されてもよい。
【００５２】
４０６で、ヘッドエンドサービス１０６は、更新パッケージ１１２を再パッケージ化して、再パッケージ化されたパッケージ１１８を形成してもよい。パッケージ１１８は、デバイス上にすでにインストールされたソフトウェア／ファームウェアのバージョンに適用可能な、および／またはデバイスのハードウェアに適用可能な１または複数の更新アイテムなどの、１または複数の識別されたユーティリティノードを更新することに適用可能な１または複数の更新アイテムを含んでもよい。再パッケージ化は、ＰＤＤ１１４、および／または１もしくは複数の識別されたユーティリティノードを更新することに関連する４０４で受信された情報（たとえば、ノード上にインストールされた現在のバージョン、デバイスタイプ、ハードウェア、最終バージョンなど）に基づいてもよい。例示として、特定のタイプのユーティリティノード（たとえば、多相、単相など）が更新されるように選択されている場合、サービス１０６は、ＰＤＤ１１４を参照して、特定のタイプのユーティリティノードに対して設計された更新アイテムを識別してもよい。識別された更新アイテムは、再パッケージ化されたパッケージ１１８に含まれてもよい。一部の例では、ＰＤＤ１１４は、再パッケージ化されたパッケージ１１８に含まれた更新アイテムに基づいて修正されてもよい。動作４０６はプロセス４００に含まれるものとして示されているが、一部の例では、動作４０６は省略されてもよい。
【００５３】
４０８で、ヘッドエンドサービス１０６によって、再パッケージ化されたパッケージ１１８および／または更新パッケージ１１２が４０４で識別された１または複数のノードに送信されるようにしてもよい。パッケージ１１２および／または１１８は、ＰＤＤ１１４と共に送信されて、ノードがパッケージ１１２および／または１１８のコンテンツを識別することを可能にしてもよい。パッケージ１１２および／または１１８は、ユーティリティノードネットワークの接続ポイントの役割をするエッジ（たとえば、セルラ中継機、セルラルータ、エッジルータ、ＤＯＤＡＧルートなど）を通じて、１または複数のノードに送信されてもよい。図４の例で示されるように、パッケージ１１８、パッケージ１１２、および／またはＰＤＤ１１４は、ノード１０２Ａに送信されてもよい。
【００５４】
４１０で、ヘッドエンドサービス１０６は、パッケージ１１２および／または１１８を受信した１または複数のノードがユーティリティノードソフトウェア／ファームウェアを更新するようにさせてもよい。ここで、サービス１０６は、パッケージ１１２および／または１１８に含まれる１または複数の更新アイテムを適用／インストールすることによって、ユーティリティノードソフトウェア／ファームウェアを更新するように１または複数のノードに指示する、アクティブ化メッセージを１または複数のノードに送信してもよい。
【００５５】
図５は、ユーティリティノードデバイスのソフトウェア／ファームウェアを更新するための例示的なプロセス５００を示す。５０２で、ノード１０２Ａは、ヘッドエンドサービス１０６から、更新パッケージ１１２および／または再パッケージ化されたパッケージ１１８を受信（たとえば取得）してもよい。パッケージ１１２および／または１１８は、ＰＤＤ１１４と共に受信されてもよい。パッケージ１１２および／または１１８は、異なるタイプのユーティリティノードソフトウェア／ファームウェアを更新するための複数の更新アイテム（たとえば、ファームウェア／ソフトウェア更新データ）を含んでもよい。更新アイテムは、連続した（sequential）バージョンなどのユーティリティノードソフトウェア／ファームウェアの２以上のバージョンの間の差を含む差分ファイルを備えてもよい。
【００５６】
５０４で、ノード１０２Ａは、ヘッドエンドサービス１０６からアクティブ化メッセージ４１２を受信してもよい。メッセージ４１２は、サービス１０６から直接、および／またはネットワークの１もしくは複数の他の上流ノードを介して受信されてもよい。メッセージ１１４は、パッケージ１１２および／または１１８をアクティブ化するように、すなわち、パッケージ１１２および／または１１８の１または複数の更新アイテムを適用／インストールすることによってユーティリティノードソフトウェア／ファームウェアを更新するように、ノード１０２Ａに指示してもよい。
【００５７】
５０６で、ノード１０２Ａは、システムセット、オペレーティングシステム、モジュール、およびドライバなどのデータなどのノード１０２Ａのデータをアーカイブしてもよい。たとえば、ノード１０２Ａは、アクティブシステムセットのイメージを記憶してよく、それにより、ユーティリティノードソフトウェア／ファームウェアを更新しているときにエラーが発生した場合に、ノード１０２Ａがこのシステムセットに戻ることができる。追加的または代替的に、ノード１０２Ａは、複数のシステムセットに共通するバックアップデータを記憶してもよい。データは、ノード１０２Ａに関連付けられたデータストア５０８に記憶されてもよい。
【００５８】
５１０で、ノード１０２Ａは、ノード１０２上に適用／インストールするための、パッケージ１１２および／または１１８に含まれる複数の更新アイテムの１または複数を識別してもよい。識別は、ノード１０２Ａ上に現在インストールされているユーティリティノードソフトウェア／ファームウェアのバージョンに基づいてもよい。すなわち、ノード１０２Ａは、どの更新アイテムがユーティリティノードソフトウェア／ファームウェアの現在のバージョンを更新することに適用可能であるかを識別してもよい。代替的または追加的に、識別は、ノード１０２Ａのハードウェアのタイプ、またはノード１０２Ａに関連付けられたハードウェアのタイプに基づいてもよい。一例では、ノード１０２Ａは、ＰＤＤ１１４を参照して、ユーティリティノードソフトウェア／ファームウェアを更新することに適用可能な更新アイテムを識別してもよい。図５に示されるように、ノード１０２Ａは、ノード１０２Ａ上に適用されることになる１または複数の更新アイテム５１２を識別している。
【００５９】
５１４で、ノード１０２Ａは、１または複数の検証チェック５１６を実行して、１または複数の更新アイテム５１２がノード１０２Ａに適用されてもよいことを検査してもよい。１または複数の検証チェック５１６は、ノード１０２Ａのデバイスタイプが、適用されることになる更新アイテムのデバイスタイプと一致することをチェックすること、必須要件更新アイテムがノード１０２Ａに適用されていることをチェックすること、ノード１０２Ａが二次電源（たとえばバッテリ）で動作していないことをチェックすること、またはノード１０２Ａの任意の他の機能、データ、もしくは構成をチェックすることを含んでもよい。１または複数の検証チェック５１６に基づいて、ノード１０２Ａは、１または複数の検証チェック５１６での準拠のレベルを決定してもよい。たとえば、１または複数の検証チェック５１６の閾値数が満たされる場合、準拠のレベルを比較的高くすることができ、閾値数が満たされない場合、準拠のレベルを比較的低くすることができる。
【００６０】
５１８で、ノード１０２Ａは、１または複数の更新アイテム５１２をノード１０２Ａに適用／インストールしてもよい。これによって、１または複数の更新アイテム５１２に関連付けられたソフトウェア／ファームウェアが、たとえば、ソフトウェア／ファームウェアのより新たなバージョンへ更新されることが可能になる。一部の例では、ノード１０２Ａは、適用されることになると識別されなかったパッケージ１１２および／または１１８の他の更新アイテムを適用／インストールすることを抑制（refrain）してもよい。さらに、一部の例では、１または複数の検証チェック５１６の準拠のレベルが特定の閾値より高い場合、１または複数の更新アイテムのみが適用されてもよい。たとえば、１または複数の更新アイテム５１２の更新アイテムがノード１０２Ａに対するシステムセット更新に関連しているとき、プロセス５００は、以下で詳細に論じられるプロセス６００に進んでもよい。
【００６１】
一部の例では、５１８で更新アイテムがノード１０２Ａに適用されているとき、特定の転送プロセスが、更新アイテムに関連付けられたノード１０２Ａ上のソフトウェア／ファームウェアを更新するために使用されてもよい。すなわち、特定の転送プロセスは、更新アイテムがどのようにノード１０２Ａに実際に転送されるかを説明してもよい。特定のプロセスは、たとえば、第三者が特定の方式でソフトウェア／ファームウェアを更新することが可能となるように、第三者によって構成されてもよい。
【００６２】
図６は、マルチシステムセット構成を利用することによって、ユーティリティノードデバイスのシステムセットを更新するための例示的なプロセス６００を示す。一部の例では、プロセス６００はプロセス５００の動作５１８で実行されてもよく、他の例では、プロセス６００はプロセス５００と独立して実行されてもよい。上述したように、一例では、更新アイテムがシステムセットイメージを含む場合など、ノード１０２Ａ上に適用／インストールされることになる更新アイテムが、システムセット更新に関連しているときに、プロセス６００が実行されてもよい。
【００６３】
上述したように、ノード１０２Ａは、ノード１０２Ａの動作を維持するための異なるシステムセットを含んでもよい。概して、任意の所与の時間で、単一のシステムセットのみが動作中（たとえば「アクティブ」）であってもよい。異なるシステムセットは、概して「アクティブ」システムセットとして動作するように構成された第１のシステムセット、第１のシステムセットが非稼動または「アイドル」状態であるときに動作するように構成された第２のシステムセット（たとえば「アイドル」システムセット）、ならびに第１のシステムセットおよび第２のシステムセットが非稼動であるときに動作するように構成された第３のシステムセット（たとえば「フェイルセーフ」システムセット）を含んでもよい。一部の例では、第３のシステムセットは、ノード１０２Ａ上で修正されないままの工場インストールされた（factory installed）セットを含んでもよい。したがって、第３のシステムセットは、第１のシステムセットおよび第２のシステムセットが適切に動作していない場合に、ノード１０２Ａが動作することを可能にする永続的なシステムセットであってもよい。システムセットは概して、カーネルおよびルートファイルシステムを含んでもよい。
【００６４】
６０２で、ノード１０２Ａは、ノード１０２Ａのシステムセットを更新する準備をしてもよい。たとえば、ノード１０２Ａは、システムセットに関連する更新アイテムによって更新されるようにアイドルシステムセットを準備してもよい。これは、アイドルシステムセットを空（clear out）にすること、および／またはアクティブシステムセットをアイドルシステムセットにコピーすることを含んでもよい。そうすることにより、アイドルシステムセットバージョンより新しいバージョンとすることができるアクティブシステムセットの現在のバージョンで、アイドルシステムセットが更新されてもよい。
【００６５】
６０４で、ノード１０２Ａは、更新パッケージの少なくとも一部をアイドルシステムセットに適用／インストールすることによって、ノード１０２Ａのアイドルシステムセットを更新してもよい。アクティブシステムセットがノード１０２Ａの動作を管理している（たとえば、通常の処理を実行している）ときに、アイドルシステムセットが更新されてもよい。異なるシステムセットバージョンに関連する更新アイテムを更新パッケージが含むときの例では、アイドルシステムセットの現在のバージョンに適用可能な１または複数の更新アイテムを適用することによって、アイドルシステムセットが更新されてもよい。例示として、アイドルシステムセット（たとえば、アクティブシステムセットからアイドルシステムセット内にコピーされたセット）がバージョン２を含み、更新パッケージがシステムセットのバージョン１〜３を含む場合は、バージョン３に対する更新アイテムが、アイドルシステムセットに適用されてもよい。更新アイテムは、順次的な方式で、バージョンごとに適用されてもよい（たとえば、より早期のバージョンから開始し、最新のバージョンに移行する）。一部の例では、更新アイテムは、システムセットバージョンの間の差をそれぞれが含む差分ファイルを備える。
【００６６】
６０６で、ノード１０２Ａによって、アイドルシステムセットがノード１０２Ａの動作を管理することが可能になる。すなわち、アイドルシステムセットが「アクティブ」状態に設定されてよく、アクティブシステムセットが「アイドル」状態に設定されてもよい。アイドルシステムセットはノード１０２Ａをアイドルシステムセットへ再構成および／または再ブートすることによって有効にされてもよい。
【００６７】
６０８で、ノード１０２Ａ（前にアイドルのシステムセットで現在動作している（now operating with the previously idle system set））は、前のアイドルシステムセットの動作が、１または複数の稼動基準を満たすかどうかを判定してもよく、たとえば、カーネルおよびオペレーティングシステムファイルが互換性を有し、システムレベルアプリケーションが相互に、および／または外部デバイスと通信することができ、データベースデータが破損していない、要求されるファイルおよび適正なバージョンがインストールされてかつ準拠していることを判定するなどしてもよい。１または複数の稼動基準が満たされるとき、６１０で、ノード１０２Ａは、更新されたアイドルシステムセットを利用してもよい。すなわち、ノード１０２Ａは、「アクティブ」状態にあるアイドルシステムセットで動作してもよい。代わりに、６０８で、１または複数の稼動基準が満たされないとき、プロセス６００は６１２に進んでもよい。
【００６８】
６１２で、ノード１０２Ａは、ノード１０２Ａを、前にアクティブなシステムセット（previously active system set）へ再構成および／または再ブートすることによって、前にアクティブなシステムセットを有効にしてもよい。ここで、ノード１０２Ａは、前のシステムセットに「ロールバック」くまたは「戻って」もよい。前のシステムセットに戻る際に、前にアクティブなシステムセットに関連してアーカイブされた任意のデータ（たとえば、図５の５０６でアーカイブされたデータ）が復元されてもよい。これは、複数のシステムセットに共通するデータを復元することを含んでもよい。
【００６９】
前にアクティブなシステムセットに戻った後、６１４で、ノード１０２Ａは、アクティブシステムセットの動作が１または複数の稼動基準を満たすかどうかを判定してもよい。１または複数の稼動基準が満たされるとき、６１６で、ノード１０２Ａは、前にアクティブなシステムセットを利用してもよい。すなわち、ノード１０２Ａは、「アクティブ」状態にある前にアクティブなシステムセットで動作してもよい。あるいは、６１４で１または複数の稼動基準が満たされないとき、６１８で、プロセス６００は、フェイルセーフシステムセット（たとえば永続的システムセット）を有効にしてもよい。フェイルセーフシステムセットは、ノード１０２Ａが構築または構成された工場でインストールされてもよい。一部の例では、ノード１０２Ａは、前のシステムが６１２で有効にされたか否か、および／またはフェイルセーフシステムセットが６１８で有効にされたか否かをヘッドエンドサービス１０６に報告してもよい。異なるシステムセットを利用することによって、ノード１０２Ａは、１または複数のシステムセットが失敗した場合でも、ノード１０２Ａの動作を維持してもよい。
【００７０】
＜例示的なユーザインタフェース＞
図７は、更新パッケージを１または複数のユーティリティノードに配置するための例示的なユーザインタフェース７００を示す。一例では、インタフェース７００は、図１のインタフェース１２２を表す。したがって、インタフェース７００は、ヘッドエンドサービス１０６に関連付けられたユーザが更新パッケージを配布することを可能にするために使用可能であってもよい。しかしながら、他の実施形態では、インタフェース７００は他のユーザに表示されてもよい。インタフェース７００は、ウェブ環境、およびクライアントアプリケーションなどのインターネットを通じてアクセスされてもよい。
【００７１】
インタフェース７００は、近隣、都市などの地図のような、１または複数のユーティリティノードが位置する地理的領域を表示するための、地図領域７０２を含んでもよい。地図領域７０２は、ユーザがユーティリティノードを選択することを可能にするために選択可能であってもよい。図７の例では、地図領域７０２内の実線は道路を表すが、他の例では、線は、ユーティリティ配管（utility lines）（たとえば、水管、電気／ガス配管など）または他の特徴を表してもよい。
【００７２】
示されるように、インタフェース７００は、異なるタイプのユーティリティノードを異なるアイコンで表してもよい。たとえば、アイコン７０４は、データ収集装置に関連付けられてもよく、アイコン７０６は、水量メータに関連付けられてもよく、アイコン７０８は、ガスメータに関連付けられてもよく、アイコン７１０は、電気メータに関連付けられてもよい。インタフェース７００は、ユーティリティノードの一般的機能性に基づいてアイコン７０４〜７１０を提示するが、インタフェース７００は、代替的または追加的に、ユーティリティノードに関連付けられた任意のタイプの情報に基づいてアイコンを提示してもよい。
【００７３】
インタフェース７００は、ユーティリティネットワークのノードを更新するための異なる情報をユーザが選択することを可能にするためのドロップダウンメニュー７１２〜７１６を含んでもよい。ドロップダウンメニュー７１２を通じて、ユーザは、同一のデバイスタイプ（たとえば、スマートメータ、セルラ中継機、ルータ、センサ、および多相または単相デバイスなど）に関連付けられたノードなどのユーティリティノードのグループを選択してもよい。ドロップダウンメニュー７１４を通じて、ユーザは、ユーティリティノード上で更新されることになるソフトウェア／ファームウェアを選択してもよく、ドロップダウンメニュー７１６を通じて、ユーザは、ユーティリティノードが更新されることになる最終バージョンを選択してもよい。一例では、ドロップダウンメニュー７１６によって、ユーザがソフトウェア／ファームウェアの最新の利用可能なバージョンを選択することが可能になる。インタフェース７００はまた、たとえば、ドロップダウンメニュー７１２〜７１６で情報を提供した後に、更新プロセスを開始するためのボタン７１８を含んでもよい。
【００７４】
インタフェース７００の一例では、マップ領域７０２が、ユーティリティネットワークのユーティリティノードを表す複数のアイコンを表示してもよい。ユーザがインタフェース７００と対話するとき、インタフェース７００は、更新するための１または複数のユーティリティノードを識別するユーザからの選択を受信してもよい。たとえば、ユーザは、領域７２０（たとえば、点線の長方形で囲まれた領域）内に位置するアイコンを選択してもよい。次いで、インタフェース７００、または図１のデバイス１２０および／もしくは１１６などのインタフェース７００に関連付けられたデバイスが、アイコンに関連付けられた１または複数のユーティリティノードを識別してもよい。ユーザはまた、更新を構成するためにドロップダウンメニュー７１２〜７１６を通じて情報を提供してもよい。たとえば、ドロップダウンメニュー７１６を通じて、ユーザは、領域７２０に関連付けられたユーティリティノードが更新されることになるソフトウェア／ファームウェアの最終バージョンを選択してもよい。その後、ユーザは、ボタン７１８を選択することによって更新を開始してもよい。入力情報に基づいて、インタフェース７００に関連付けられたバックエンド機能性が、識別されたユーティリティノードを選択された最終バージョンへ更新することに適用可能な更新アイテムを選択してもよい。
【００７５】
＜ユーティリティノードの例示的なメモリ構造＞
図８は、ユーティリティノードの例示的なメモリ構造８００を示す。特に、メモリ構造８００は、異なるタイプのデータを記憶する複数のパーティションを含む。たとえば、メモリ構造８００は、システムセット８０２のカーネルのためのパーティション、システムセット８０２のルートファイルシステムのためのパーティション、システムセット８０４のカーネルのためのパーティション、システムセット８０４のルートファイルシステムのためのパーティション、フェイルシステムセット８０６のカーネルおよびルートファイルシステムのためのパーティション、ジャーナル８０８のためのパーティション、ならびに共通データ８１０のためのパーティションを含む。ジャーナルパーティション８０８は、どのシステムセットがユーティリティノードを動作させることになるかを示すためのデータを含んでもよい。すなわち、システムセット８０２〜８０６のいずれかが「アクティブ」状態で動作し、およびシステムセット８０２〜８０６のいずれかが「アイドル」状態で動作していることになるかである。共通パーティション８１０は、システムセット８０２〜８０６にわたって共有されるデータを含んでもよい。システムセットパーティション８０２および８０４は修正されてもよいのに対し、フェイルセーフシステムセットパーティション８０６は、修正されるように設計されていない永続的システムセットであってもよい。
【００７６】
メモリ構造８００の使用の一例では、システムセットパーティション８０２は「アクティブ」状態にあってよく、これは、システムセットパーティション８０２がユーティリティノードを動作させるために使用されていることを意味する。一方で、システムセットパーティション８０４およびフェイルセーフシステムセットパーティション８０６は、「アイドル」状態（たとえば非アクティブ）であってもよい。この構成では、システムセットへの更新が要求されたとき、システムセットパーティション８０２がユーティリティノードの動作を維持しながら、システムセット８０４が更新されてもよい。更新の後、システムセットパーティション８０４は、ユーティリティノードの動作を引き継ぐことが可能にされてもよく、システムセットパーティション８０２は、「アイドル」状態に設定されてもよい。システムセットパーティション８０４が非稼動である場合、システムセットパーティション８０２が再アクティブ化されてもよい。その後、システムセットパーティション８０２が非稼動である場合、フェイルセーフシステムセットパーティション８０６がアクティブ化されてもよい。
【００７７】
一部の例では、フェイルセーフシステムセットパーティション８０６は、任意のタイプのエラーがユーティリティノード上で発生したときにアクティブ化されるように構成されてもよい。たとえば、フェイルセーフシステムセットパーティション８０６は、データがシステムセットパーティション８０２および８０４で破損したとき（たとえば、ウィルスまたは他の有害なデータの場合において）、システムセットパーティション８０２および８０４がブートすることができないとき、データベースデータまたは他のファイルが破損したとき、ハードウェア通信が失敗したとき、ファイルが紛失しているとき、システムセット構成が１または複数の基準を満たさないときなどに、有効にされてもよい。そのように、フェイルセーフシステムセットパーティション８０６は、概して、システムセットパーティション８０２および８０４で何らかの問題が発生した場合に、第２のバックアップとして動作してもよい。
【００７８】
＜結論＞
構造的特徴および／または方法論的動作に特有の言葉で実施形態が説明されているが、本開示が説明された特有の特徴または動作に必ずしも限定されないことは理解されよう。むしろ、特有の特徴および動作は、実施形態を実装する例示的な形態として本明細書で開示される。
【図２】
2016507806.tif 000003
【図３】
2016507806.tif 000004
【図５】
2016507806.tif 000005
【図６】
2016507806.tif 000006
【図１】
2016507806.tif 000007
【図４】
2016507806.tif 000008
【図７】
2016507806.tif 000009
【図８】
2016507806.tif 000010
【手続補正書】
【提出日】平成27年8月14日(2015.8.14)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ユーティリティノードであって、
無線接続上で、ユーティリティノードネットワークの別のユーティリティノードと通信するように構成された無線機と、
前記無線機に通信可能に結合されたメモリと
を備え、前記メモリは、
前記ユーティリティノードネットワークの前記別のユーティリティノードから消費データを収集するように構成された計測モジュールと、
前記ユーティリティノード上に記憶された異なるバージョンのソフトウェアおよび／またはファームウェアを更新するための複数の更新アイテムを備える更新パッケージを受信し、
前記ユーティリティノード上に現在インストールされている前記ソフトウェアおよび／またはファームウェアのバージョンに少なくとも部分的に基づいて、前記ユーティリティノードに適用するための前記複数の更新アイテムのうちの１または複数を識別し、ならびに、
前記複数の更新アイテムのうちの１または複数の他の更新アイテムを適用することを抑制しながら、前記１または複数の識別された更新アイテムを前記ユーティリティノードに適用することによって、前記ユーティリティノードの前記ソフトウェアおよび／またはファームウェアを更新する
ように構成された更新モジュールと
を記憶するように構成されていることを特徴とするユーティリティノード。
【請求項２】
前記更新パッケージの前記複数の更新アイテムのうちの少なくとも１つは、前記ユーティリティノードの前記ソフトウェアおよび／またはファームウェアの２つのバージョンの間の差を含む差分ファイルを備えていることを特徴とする請求項１に記載のユーティリティノード。
【請求項３】
前記更新パッケージは、前記複数の更新アイテムを記述するパッケージ記述データと共に受信され、前記パッケージ記述データは、前記複数の更新アイテムのうちの１つが適用されることになるデバイスのタイプ、前記複数の更新アイテムのうちの１つのバージョン、または前記複数の更新アイテムのうちの１つが適用される前に適用されることになる必須要件更新アイテムのうちの少なくとも１つを識別することを特徴とする請求項１に記載のユーティリティノード。
【請求項４】
前記更新モジュールは、前記パッケージ記述データに少なくとも部分的に基づいて、前記ユーティリティノードに適用するための前記複数の更新アイテムのうちの前記１または複数を識別するようにさらに構成されていることを特徴とする請求項３に記載のユーティリティノード。
【請求項５】
前記更新モジュールは、
前記ユーティリティノードの前記ソフトウェアおよび／またはファームウェアを更新する前に、前記１または複数の識別された更新アイテムのうちの特定の更新アイテムに関連する１または複数の検証チェックを実行し、
前記１または複数の検証チェックの準拠のレベルを判定し、ならびに、
前記１または複数の検証チェックの前記準拠のレベルに少なくとも部分的に基づいて、前記ユーティリティノードの前記ソフトウェアおよび／またはファームウェアを更新する
ようにさらに構成されていることを特徴とする請求項１に記載のユーティリティノード。
【請求項６】
前記１または複数の検証チェックは、前記ユーティリティノードのデバイスタイプが前記特定の更新アイテムのデバイスタイプと一致することをチェックすること、または必須要件更新アイテムが前記ユーティリティノードに適用されていることをチェックすることのうちの少なくとも１つを備えていることを特徴とする請求項５に記載のユーティリティノード。
【請求項７】
前記計測モジュールは、前記ユーティリティノードが更新されている間、前記ユーティリティノードネットワークのその他のユーティリティノードから消費データを収集するようにさらに構成されていることを特徴とする請求項１に記載のユーティリティノード。
【請求項８】
ユーティリティノードネットワークのヘッドエンドデバイスによって、異なるバージョンのユーティリティノードソフトウェアおよび／またはユーティリティノードファームウェアを更新するための複数の更新アイテムを含む更新パッケージを受信するステップと、
前記ヘッドエンドデバイスによって、更新するための前記ユーティリティノードネットワークの１または複数のユーティリティノードを識別するステップと、
前記ヘッドエンドデバイスによって、前記複数の更新アイテムの中から、前記１または複数の識別されたユーティリティノードを更新することに適用可能な、１または複数の更新アイテムを含むように、前記更新パッケージを再パッケージ化するステップと、
前記再パッケージ化された更新パッケージが、前記１または複数の識別されたユーティリティノードに送信されるようにするステップと
を備えたことを特徴とする方法。
【請求項９】
前記再パッケージ化された更新パッケージが前記１または複数の識別されたノードに送信されるようにした後、アクティブ化メッセージが前記１または複数の識別されたノードに送信されるようにして、前記再パッケージ化された更新パッケージに含まれる前記１または複数の更新アイテムを適用することによって、前記ユーティリティノードソフトウェアおよび／または前記ユーティリティノードファームウェアを更新するように前記１または複数の識別されたノードに指示するステップをさらに備えたことを特徴とする請求項８に記載の方法。
【請求項１０】
前記１または複数の識別されたユーティリティノードを更新することに関連する情報を識別するステップであって、前記情報は、前記１もしくは複数の識別されたユーティリティノード上に現在インストールされている前記ユーティリティノードソフトウェアおよび／もしくは前記ユーティリティノードファームウェアのバージョン、前記１もしくは複数の識別されたユーティリティノードのデバイスタイプ、または前記１もしくは複数の識別されたユーティリティノードが更新されることになる前記ソフトウェアおよび／またはファームウェアの最終バージョンのうちの少なくとも１つを識別する、ステップをさらに備え、
前記更新パッケージは、前記１または複数の識別されたユーティリティノードを更新することに関連する前記情報に少なくとも部分的に基づいて、再パッケージ化される
ことを特徴とする請求項８に記載の方法。
【国際調査報告】
2016507806.tif 000011
2016507806.tif 000012
2016507806.tif 000013
2016507806.tif 000014