以下に、本願の開示するイベント処理方法、イベント収集方法、イベント処理プログラム、イベント収集プログラム及び情報処理装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
[システム構成]
まず、本実施例に係るセンサネットワークシステムのシステム構成について説明する。図1は、実施例1に係るセンサネットワークシステムのシステム構成を示す図である。図1に示すセンサネットワークシステム1は、センサノード210によってセンシングされたセンシングデータをイベントとして収集し、収集したイベントに応じて各種のサービスを提供するものである。
図1に示すように、センサネットワークシステム1には、サーバノード110と、センサノード210X及び210Yと、GW(gateway)ノード310と、機器10A,10B,10C及び10Dとが収容される。この図1の例では、ある家に収容されたセンサノード210X及び210Yと、GWノード310と、機器10A,10B,10C及び10Dとからサーバノード110へイベントデータが収集される場合を想定する。なお、以下では、センサノード210X及び210Yを区別なく総称する場合に「センサノード210」と記載する場合がある。また、機器10A,10B,10C及び10Dを区別なく総称する場合に「機器10」と記載する場合がある。
サーバノード110とGWノード310との間は、ネットワーク5を介して通信可能に接続される。かかるネットワーク5の一例としては、有線または無線を問わず、インターネット、LAN(Local Area Network)やVPN(Virtual Private Network)などの通信網が挙げられる。また、GWノード310とセンサノード210との間、センサノード210Xと機器10A,10Bとの間、センサノード210Yと機器10C,10Dとの間は、それぞれ通信可能に接続される。なお、センサネットワークシステム1に収容されるGWノード310、センサノード210及び機器10の数は図示の例に限定されるものではなく、任意の数のGWノード310、センサノード210及び機器10を収容する場合に適用することができる。以下では、ルートノードであるサーバノード110以外のセンサノード210やGWノード310のことを「下位ノード」と総称する場合がある。また、センサノード210、GWノード310及びサーバノード110のことを単に「ノード」と総称する場合がある。
サーバノード110は、センサネットワークのルートノードとして機能し、イベントに応じて各種のサービスを提供するサーバ装置である。例えば、サーバノード110は、センサノード210やGWノード310から受信したイベントを加工する加工処理を実行するモジュールを自装置よりも下位に位置するノードに配備することによってイベントを分散処理させる。かかるモジュールには、サービス提供用のアプリケーションによって実行されるサービス提供処理のトリガーとなるイベントのフィルタリング処理や集約処理が組み込まれる。
センサノード210は、センサ付きの通信端末である。センサノード210の一例としては、パーソナルコンピュータやその周辺機器、AV(Audio Visual)機器、スマートフォンや携帯電話機、PHS(Personal Handyphone System)などの携帯端末、家電製品などの各種の機器が挙げられる。また、センサノード210に搭載されるセンサの一例としては、電力を計測する電力センサ、温度を計測する温度センサ、湿度を計測する湿度センサなどが挙げられる。なお、ここでは、センサノード210に搭載されるセンサの例として機器10において消費された電力を計測する電力センサを例示するが、これに限定されるものではない。例えば、センサノード210には、GPS(Global Positioning System)センサ、加速度センサやジャイロセンサなどの任意のセンサを搭載できる。
例えば、センサノード210は、機器10において消費された電力をイベントとして収集する。そして、収集したイベントを自装置よりも上位に位置するノードに送信する。また、例えば、センサノード210は、収集したイベントの加工処理を実行するモジュールが自装置に配備されている場合には、収集したイベントの加工処理を実行し、加工処理により生成されたイベントを自装置よりも上位に位置するノードに送信する。
GWノード310は、サーバノード110とセンサノード210との間の通信を中継するゲートウェイである。センサノード210の一例としては、ある家に設置されたホームゲートウェイが挙げられる。
例えば、GWノード310は、自装置よりも下位に位置する他のGWノード310又はセンサノード210からイベントを受信し、受信したイベントを自装置よりも上位に位置するノードに送信する。また、例えば、GWノード310は、受信したイベントの加工処理を実行するモジュールが自装置に配備されている場合には、受信したイベントの加工処理を実行し、加工処理により生成されたイベントを自装置よりも上位に位置するノードに送信する。
一態様としては、センサノード210Xに、機器10Aの電力イベントと機器10Bの電力イベントとの平均値を計算するモジュール「平均電力計算」が配備されている場合を想定する。さらに、センサノード210Yに、機器10Cの電力イベントと機器10Dの電力イベントとの平均値を計算するモジュール「平均電力計算」が配備される場合を想定する。さらに、GWノード310に、モジュール「電力平均計算」によって集計された集計結果に機器10Aの電力イベント又は機器10Bの電力イベントを追加して計算する追加集計用モジュール「電力平均追加計算」が配備されている場合を想定する。
この場合、例えば、機器10Bの電力は、センサノード210Xによって電力イベントとして収集される。そして、機器10Aからの電力イベントとともにモジュール「平均電力計算」によって集計処理され、平均電力イベントとしてGWノード310へ送信され、さらにはサーバノード110へ収集される。つまり、機器10Bにおいて発生した電力イベントの収集経路は、「センサノード210X→GWノード310→サーバノード110」である。
ここで、収集経路が変更され、機器10Bにおいて発生した電力イベントがセンサノード210Yによって収集された場合を想定する。この場合、機器10Bの電力イベントを除いて集計された平均電力イベントをGWノード310が受信している場合に、機器10Bの電力イベントが受信されると、追加集計用モジュール「電力平均追加計算」によって追加して集計処理される。なお、この追加集計用モジュールが配備されるノードは、GWノード310に限定されるものではなく、サーバノード110やセンサノード210にも配備されうる。
このため、本実施例に係るノードは、イベントの収集経路に変更が生じた場合や、本来の収集経路とは異なるセンサノードでイベントが採取された場合においても、イベントを加工処理することができる。
[サーバノードの構成]
次に、本実施例に係るサーバノードの機能的構成について説明する。図2は、実施例1に係るサーバノードの機能的構成を示すブロック図である。なお、サーバノード110は、図2に示す機能部以外にも既知のサーバ装置が有する各種の機能部、例えば各種の入力デバイスや音声出力デバイスなどの機能を有するものとする。
図2に示すように、サーバノード110は、モジュール登録部111と、モジュール記憶部111Aと、モジュール定義記憶部111Bと、トポロジ取得部112と、トポロジ記憶部112Aとを有する。さらに、サーバノード110は、イベント受信部113と、イベント記憶部114と、モジュール実行部115と、発生イベント登録部116と、発生イベント情報記憶部116Aとを有する。さらに、サーバノード110は、配備先情報記憶部117Aと、配備先決定部117と、モジュール送信部118とを有する。
モジュール登録部111は、モジュールを登録する処理部である。例えば、モジュール登録部111は、モジュールの開発者によって各種のサービス提供処理のトリガーとなるイベントをフィルタリングまたは集約するようにプログラミングされたモジュールのアップロードを受け付ける。モジュール登録部111は、サーバノード110にアップロードされたモジュールを後述のモジュール記憶部111Aに登録する。モジュール登録部111は、アップロードされたモジュールに関する定義を開発者が使用する端末装置を介して受け付け、受け付けたモジュールに関する定義を後述のモジュール定義記憶部111Bに登録する。
モジュール記憶部111Aは、モジュールを記憶する記憶部である。例えば、モジュール記憶部111Aは、モジュールがアップロードされた場合に、モジュール登録部111によってモジュールが登録される。また、例えば、モジュール記憶部111Aは、センサノード210やGWノード310などの下位ノードにモジュールを配備する場合に、後述のモジュール送信部118によって参照される。
例えば、モジュール記憶部111Aは、モジュールIDとバイナリコードが対応付けられたデータを記憶する。ここで言う「モジュールID」は、モジュールを識別するための識別子を指す。例えば、C言語でプログラミングされたモジュールには関数名を付与したり、Java(登録商標)言語でプログラミングされたモジュールにはクラス名を付与したりするなど、開発に使用されたプログラム言語に応じて識別子を付与することができる。また、「バイナリコード」は、モジュール本体となるコンパイル済みのバイナリデータを指す。
図3は、モジュール記憶部に記憶される情報の構成例を示す図である。図3の例では、モジュールID「平均電力計算」及び「家庭内電力総計」とそのバイナリコードとが対応付けられた例を示している。このうち、「平均電力計算」は、所定期間の消費電力の平均を計算するモジュールのクラス名を指し、「家庭内電力総計」は、所定期間の消費電力の総和を計算するモジュールのクラス名を指す。これらモジュール「平均電力計算」及び「家庭内電力総計」が下位ノードに配備された場合には、下位ノードからサーバノード110に送信されるイベントが集約されることになる。
なお、図3の例では、モジュールのバイナリコードを記憶する場合を例示したが、必ずしもバイナリ形式でモジュールを記憶する必要はなく、バイナリ形式以外のデータを記憶することとしてもかまわない。例えば、モジュールがスクリプト言語である場合には、スクリプトが記述されたテキストデータを記憶することとしてもよい。また、コンパイル前のソースコードを記憶することとしてもかまわない。この場合には、モジュールがセンサノード210等の下位ノードに配備される段階でコンパイルするか、あるいは配備先の下位ノードでコンパイルさせることとすればよい。
モジュール定義記憶部111Bは、モジュールに関する定義を記憶する記憶部である。例えば、モジュール定義記憶部111Bは、モジュールとともにモジュールに関する定義がアップロードされた場合に、モジュール登録部111によってモジュールの定義が登録される。また、例えば、モジュール定義記憶部111Bは、モジュールの配備先を決定するために、後述の配備先決定部117によって参照される。
例えば、モジュール定義記憶部111Bは、モジュールID、入力イベント型、出力イベント型、集約属性名、集計種別及び追加集計用モジュールIDが対応付けられたデータを記憶する。ここで言う「入力イベント型」とは、モジュールによって実行される処理の入力となるイベントの型を指す。また、「出力イベント型」とは、モジュールによって実行された処理の出力となるイベントの型を指す。また、「集約属性名」とは、複数のノードを集約する枠組みである集約属性の名称を指す。また、「集計種別」とは、モジュールによって実行される処理の種別を指す。また、「追加集計用モジュールID」とは、モジュールによって実行された処理に含まれていないセンサ情報又はイベント情報を、その処理の出力結果に追加して集計する処理を実行するモジュールの識別子を指す。
図4は、モジュール定義記憶部に記憶される情報の構成例を示す図である。図4に示すモジュール「平均電力計算」の例では、電力イベントが入力されて平均電力イベントが出力されることを示す。この「平均電力計算」の場合には、1度の処理で複数の電力イベントが入力され、同一のセンサノード210によってセンシングされた機器10の消費電力が対象となるので、集約属性名として機器IDが付与されている。この機器IDは、機器を識別するための識別子を指す。また、この「平均電力計算」の場合には、集計種別が「平均値計算」であるので、追加集計用モジュール「平均電力追加計算」が実行される場合には、次の追加集計処理が実行される。つまり、「平均電力追加計算」では、平均電力計算の出力イベント型である「平均電力」の値と、集約された入力イベント型の個数とが乗算され、乗算値に未処理のイベント情報の値が加算される。そして、「平均電力追加計算」では、その加算値を、集約された入力イベント型の個数と未処理のイベント情報の個数とが加算された値で除算される。また、図4に示すモジュール「家庭内電力総計」の例では、集計種別が「総和計算」であるので、追加集計用モジュール「家庭内電力追加総計」が実行される場合には、次の追加集計処理が実行される。つまり、「家庭内電力追加総計」では、家庭内電力総計の出力イベント型である「電力総計」の値と、未処理のイベント情報の値とが加算される。なお、追加集計処理は、モジュールによって実行される加工処理の一例である。また、追加集計処理を実行するモジュールを「追加集計用モジュール」とも称する。
トポロジ取得部112は、センサネットワークの接続形態、いわゆるトポロジを取得する処理部である。例えば、トポロジ取得部112は、センサネットワークに収容されたセンサノード210やGWノード310を含む下位ノードから、当該下位ノードがどの上位ノードに接続されているかを表すノード間の接続情報を取得する。その上で、トポロジ取得部112は、下位ノードから取得したノード間の接続情報を後述のトポロジ記憶部112Aに登録する。なお、以下では、下位ノードがUPnP(Universal Plug and Play)プロトコル等を用いて上位ノードを自動認識することによって検出した接続情報を取得する場合を想定するが、サーバノード110が下位ノードとの接続状況を認識することとしてもよい。
トポロジ記憶部112Aは、センサネットワークのトポロジを記憶する記憶部である。例えば、トポロジ記憶部112Aは、下位ノードからノード間の接続情報が取得された場合に、トポロジ取得部112によってノード間の接続情報がトポロジとして登録される。また、例えば、トポロジ記憶部112Aは、モジュールの配備先を決定するために、後述の配備先決定部117によって参照される。
例えば、トポロジ記憶部112Aは、下位ノードID及び上位ノードIDが対応付けられたデータを記憶する。ここで言う「下位ノードID」は、下位ノードを識別するための識別子を指す。また、「上位ノードID」は、下位ノードに接続される上位ノードを識別するための識別子を指す。
図5は、トポロジ記憶部112Aに記憶される情報の構成例を示す図である。図5に示す例では、図1に示したセンサノード210Xが電力センサXであり、センサノード210Yが電力センサYである場合を想定している。また、図5に示す例では、電力センサX及び電力センサYの上位ノードがホームGWであるGWノード310であり、ホームGWの上位ノードがクラウドであるサーバノード110であることを示す。
イベント受信部113は、イベントを受信する処理部である。例えば、イベント受信部113は、センサノード210やGWノード310などの下位ノードからイベントを受信すると、当該イベントを後述のイベント記憶部114に格納する。このとき、イベント受信部113は、下位ノードから受信したイベントを後述の発生イベント登録部116にも出力する。なお、イベント受信部113では、必ずしもセンサノード210によってセンシングされた未加工のイベントが受信されるとは限らず、下位ノードに配備されたモジュールによって加工処理が実行されることにより、加工済みのイベントが受信される場合もある。
イベント記憶部114は、イベントを記憶する記憶部である。このイベント記憶部114は、イベントの発生をトリガーとしてサービスを提供するサービス提供用のアプリケーションに参照させるために設けられる。
例えば、イベント記憶部114は、下位ノードからイベントが受信された場合に、イベント受信部113によってイベントが登録される。また、例えば、イベント記憶部114は、モジュールによってイベントが処理された場合に、後述のモジュール実行部115によって処理実行後のイベントが登録される。
例えば、イベント記憶部114は、イベント型、イベント発生時刻及びイベント属性が対応付けられたデータを記憶する。ここで言う「イベント型」は、イベントの種類を識別するための識別子を指す。また、「イベント発生時刻」は、イベントが発生した時刻、すなわちセンサノード210によってセンシングされた時刻を指す。また、「イベント属性」とは、イベントの性質や由来を指し、例えば、イベントとして採取されるセンシングデータ又はそれが加工処理されたデータの種類、イベントが発生した発生ノードや発生ノードを含む複数のノードを集約する集約属性などの属性データの集合を指す。なお、以下では、イベント属性に含まれる各属性データが属性名と属性値のペアを含んで構成される場合を想定して説明を行う。
図6は、イベント記憶部114に記憶される情報の構成例を示す図である。図6に示す1番目のレコードは、2011年7月13日の12時00分00秒に電力センサXによって機器Aの電力値=xxが計測されたというイベントを示す。図6に示す2番目のレコードは、2011年7月13日の12時00分00秒に電力センサXによって機器Bの電力値=xxが計測されたというイベントを示す。図6に示す3番目のレコードは、2011年7月13日の12時00分00秒に電力センサYによって機器Cの電力値=xxが計測されたというイベントを示す。図6に示す4番目のレコードは、2011年7月13日の12時00分00秒に電力センサYによって機器Dの電力値=xxが計測されたというイベントを示す。なお、機器Aは機器10Aの機器IDを指し、機器Bは機器10Bの機器IDを指し、機器Cは機器10Cの機器IDを指し、機器Dは機器10Dの機器IDを指すものとする。
このように、イベント記憶部114に記憶されたイベントは、サービス提供用のアプリケーションによってサービス提供処理を実行するトリガーとして参照される。なお、図6の例では、センサノード210によってセンシングされた未加工のイベントを例示したが、モジュールが下位ノードに配備された場合には、モジュールによって加工処理がなされた新たなイベントも格納されることになる。
モジュール実行部115は、サーバノード110に配備されたモジュールの実行制御を行う処理部である。例えば、モジュール実行部115は、イベント受信部113によってイベントが受信された場合に、受信されたイベントを入力イベント型とするモジュールがサーバノード110に配備されているか否かを判定する。このとき、モジュール実行部115は、モジュールがサーバノード110に配備されている場合には、当該モジュールを実行することによってイベントの加工処理を実行する。モジュール実行部115は、モジュールによって加工処理が実行されたデータを新たなイベントとしてイベント記憶部114に格納する。
発生イベント登録部116は、センサノード210やGWノード310などの下位ノードで発生した発生イベントを登録する処理部である。例えば、発生イベント登録部116は、イベント受信部113によってイベントが受信された場合に、受信されたイベントが発生イベントとして後述の発生イベント情報記憶部116Aに既に登録されているか否かを判定する。このとき、発生イベント登録部116は、発生イベントとして未だ登録されていない場合には、下位ノードから受信したイベントを後述の発生イベント情報記憶部116Aに登録する。
発生イベント情報記憶部116Aは、発生イベントに関する情報を記憶する記憶部である。この発生イベント情報記憶部116Aは、センサノード210又はGWノード310などの下位ノードでどのようなイベントが発生しているのかを管理するために設けられる。
例えば、発生イベント情報記憶部116Aは、下位ノードからイベントが受信された場合に、発生イベント登録部116によって発生イベントが登録される。また、例えば、発生イベント情報記憶部116Aは、モジュールの配備先を決定するために、後述の配備先決定部117によって参照される。
例えば、発生イベント情報記憶部116Aは、発生ノードID、発生イベント型及び発生イベント属性が対応付けられたデータを記憶する。ここで言う「発生ノードID」は、発生ノードを識別するための識別子を指す。また、「発生イベント型」は、発生イベントの種類を識別するための識別子を指す。また、「発生イベント属性」は、発生ノードのイベント属性を指す。
図7は、発生イベント情報記憶部116Aに記憶される情報の構成例を示す図である。図7に示す1番目のレコードは、電力センサXにより機器Aで消費された電力が計測されるというイベントが発生していることを示す。また、図7に示す2番目のレコードは、電力センサXにより機器Bで消費された電力が計測されるというイベントが発生していることを示す。また、図7に示す3番目のレコードは、電力センサYにより機器Cで消費された電力が計測されるというイベントが発生していることを示す。また、図7に示す4番目のレコードは、電力センサYにより機器Dで消費された電力が計測されるというイベントが発生していることを示す。なお、図7の例では、発生イベントとしてセンサノード210によってセンシングされた未加工のイベントを例示したが、モジュールが下位ノードに配備された場合には、モジュールによって加工処理がなされた新たなイベントも発生イベントとして格納される。
配備先情報記憶部117Aは、モジュールの配備先に関する情報を記憶する記憶部である。例えば、配備先情報記憶部117Aは、センサネットワークのトポロジに変化があった場合に、後述の配備先決定部117によってアクセスされる。
例えば、配備先情報記憶部117Aは、モジュールID、入力イベント型、集約属性名、発生イベント属性、発生ノードID及び配備先ノードIDが対応付けられたデータを記憶する。ここで言う「配備先ノードID」は、モジュールが配備されるセンサノード210、後述のGWノード310またはサーバノード110を識別するための識別子を指す。
図8は、配備先情報記憶部117Aに記憶される情報の構成例を示す図である。この図8の例では、センサネットワークのトポロジに変化が検出されて後述の配備先決定部117によるモジュールの配備先の決定が開始された段階のテーブル例を図示している。すなわち、図8に示すように、全カラムのうちモジュールID、入力イベント型及び集約属性名がモジュール定義記憶部111Bから複写された段階のテーブル例が図示されている。以降の配備先ノードIDを始めとする残りのカラムが埋められる遷移については、図9や図11などを用いて後述する。
配備先決定部117は、モジュールの配備先を決定する処理部である。例えば、配備先決定部117は、トポロジ記憶部112Aが更新された場合、すなわちセンサネットワークのトポロジに変化があった場合に、モジュールを配備するモジュール配備処理を実行する。また、例えば、配備先決定部117は、モジュール配備処理によってモジュールが配備された場合に、配備されたモジュールに対応する追加集計用モジュールを配備する追加集計配備処理を実行する。以下では、(1)モジュール配備処理、(2)モジュール配備処理の具体例、(3)追加集計配備処理及び(4)追加集計配備処理の具体例を、それぞれ説明する。
(1)モジュール配備処理
まず、モジュール配備処理について説明する。なお、このモジュール配備処理によって配備されるモジュールには、追加集計用モジュールが含まれないものとする。
配備先決定部117は、モジュール定義記憶部111Bに記憶されたモジュールの定義のうちモジュールID、入力イベント型及び集約属性名のカラムデータを配備先情報記憶部117Aの該当カラムに書き込む。このとき、配備先情報記憶部117Aは、図8に示すように、発生イベント属性、発生ノードID及び配備先ノードIDのカラムがブランクの状態となる。
続いて、配備先決定部117は、発生イベント情報記憶部116Aに記憶された発生ノードIDのうち、発生イベント型が未配備のモジュールの入力イベント型に含まれる発生ノードIDを抽出する。さらに、配備先決定部117は、前述のように抽出した発生ノードID間で未配備のモジュールに定義された集約属性の属性名と同一の集約属性に属する属性値が同一であるノードを抽出する。その後、配備先決定部117は、抽出結果として得られた発生ノードID及び発生ノードIDに対応付けられた発生イベント属性を配備先情報記憶部117Aに書き込む。
このとき、配備先決定部117は、発生ノードIDが配備先情報記憶部117Aに複数登録された場合には、次のような処理を実行する。すなわち、配備先決定部117は、トポロジ記憶部112Aに記憶された上位ノードIDのうち各発生ノードIDに対応するセンサノード210又は後述のGWノード310が下位ノードとして全て収容され、かつ最も下位ノード側であるノードIDを抽出する。そして、配備先決定部117は、前述のように抽出したノードIDを配備先ノードIDのカラムに登録する。
また、配備先決定部117は、発生ノードIDが配備先情報記憶部117Aに1つ登録された場合には、モジュールを配備するノードに選択の余地がないので、先に抽出結果として得られた発生ノードIDを配備先ノードIDのカラムに登録する。
このようにして配備先情報記憶部117Aに配備先ノードIDが登録されると、モジュール記憶部111Aに記憶されたモジュールが後述のモジュール送信部118によって配備先ノードIDに対応するノードへ送信される。
その後、配備先決定部117は、モジュールの配備によって下位ノードから新たに取得される発生イベントが発生イベント情報記憶部116Aに更新されるまで待機してから、未配備のモジュールがなくなるまでモジュールの配備を繰り返し実行する。
なお、発生ノードIDが配備先情報記憶部117Aに1つも登録されなかった場合には、下位ノードから通知される発生イベントが発生イベント情報記憶部116Aに登録し切れていない可能性がある。この場合には、配備先決定部117は、発生イベント情報記憶部116Aが更新されるまで待機してからモジュールの配備を繰り返し実行する。
(2)モジュール配備処理の具体例
次に、図9〜図12を用いて、モジュール配備処理の具体例について説明する。図9は、図8に示した配備先情報記憶部117Aからの配備状況の遷移を示す図である。図10は、図7に示した発生イベント情報記憶部116Aからのイベント発生状況の遷移を示す図である。図11は、図9に示した配備先情報記憶部117Aからの配備状況の遷移を示す図である。図12は、図10に示した発生イベント情報記憶部116Aからのイベント発生状況の遷移を示す図である。
モジュールの配備が開始されると、図7に示した発生イベント情報記憶部116Aと図8に示した配備先情報記憶部117Aとの間で発生イベント型及び入力イベント型のカラムが配備先決定部117によって比較される。このとき、モジュール「平均電力計算」の入力イベント型と発生ノードID「電力センサX」及び発生ノードID「電力センサY」の発生イベント型が「電力」で一致する。よって、モジュール「平均電力計算」に関し、発生ノードID「電力センサX」及び「電力センサY」が配備先決定部117によって発生イベント情報記憶部116Aから抽出される。
さらに、未配備のモジュール「平均電力計算」に定義された集約属性と、発生ノードID「電力センサX」及び「電力センサY」に対応付けられた発生イベント属性とが配備先決定部117によって比較される。
このモジュール「平均電力計算」は、イベントの集約処理を実行するモジュールである。このように、イベントが集約処理される場合には、モジュールに集約属性名は定義されるが、平均値の計算では同一の下位ノードが集約処理の対象となる結果、モジュールIDと発生ノードIDが一対一に対応することになる。このため、発生ノードID間でモジュールに定義された集約属性の属性名と同一の集約属性に属する属性値が同一であるノードは抽出されるが、発生ノードIDが複数抽出されることはない。よって、図9に示すように、イベントが発生している発生ノードである「電力センサX」及び「電力センサY」がモジュール「平均電力計算」の配備先と決定される。
このように、図9に示したモジュール「平均電力計算」が電力センサX及び電力センサYにそれぞれ配備される。これによって、電力センサX及び電力センサYによって電力イベントが加工処理された平均電力イベントが新たにサーバノード110へ通知される。それゆえ、図10に示す網掛け部分のように、発生イベント登録部116によって発生イベント型「平均電力」の発生イベントが発生イベント情報記憶部116Aへ登録される。
図10に示す発生イベントが発生イベント情報記憶部116Aに新たに追加されると、配備先決定部117によって次のような処理が実行される。すなわち、図10に示す発生イベント情報記憶部116Aのレコードのうち発生イベント型と、図9に示す配備先情報記憶部117Aに記憶された配備先情報のうち未配備であるモジュールの入力イベント型とのカラムが配備先決定部117によって比較される。
このとき、モジュール「家庭内電力総計」の入力イベント型と発生ノードID「電力センサX」及び発生ノードID「電力センサY」の発生イベント型とが「平均電力」で一致する。よって、モジュール「家庭内電力総計」に関し、発生ノードID「電力センサX」及び「電力センサY」の2つの発生ノードが配備先決定部117によって抽出される。すなわち、図11に示す網掛け部分のように、モジュール「家庭内電力総計」に発生ノードID「電力センサX」及び「電力センサY」とその発生イベント属性とが配備先情報記憶部117Aの該当カラムに書き込まれる。
かかるモジュール「家庭内電力総計」は、発生ノードID「電力センサX」及び「電力センサY」の2つの発生ノードが存在する。このため、図5に示したトポロジ記憶部112Aに記憶された上位ノードIDのうち発生ノードID「電力センサX」及び「電力センサY」の両方の発生ノードが下位ノードとして全て収容され、かつ最も下位ノード側であるノードIDを抽出する。図5の例で言えば、発生ノードID「電力センサX」及び「電力センサY」の発生ノードは、いずれもホームGWであるGWノード310に接続されている。このため、図11に示すように、モジュール「家庭内電力総計」の配備先ノードIDのカラムには「ホームGW」が格納される。これによって、モジュール「家庭内電力総計」がGWノード310に配備されることになる。
このように、図11に示したモジュール「家庭内電力総計」がホームGWに配備されると、ホームGWであるGWノード310によって平均電力イベントが加工処理される。それゆえ、図12に示す網掛け部分のように、発生ノードIDが「ホームGW」となった発生イベント型「電力総計」の発生イベントが発生イベント情報記憶部116Aへ登録される。
(3)追加集計配備処理
次に、追加集計配備処理について説明する。配備先決定部117は、センサネットワーク内の各ノードに追加集計用モジュールを配備する。例えば、配備先決定部117は、追加集計配備テーブルを用いて、追加集計用モジュールを配備する。この追加集計配備テーブルは、追加集計用モジュールを配備するために、配備先決定部117によって保持されるテーブルである。
例えば、追加集計配備テーブルには、ノードID、深さ、配備モジュール及び追加集計用モジュールが対応付けられたデータが記憶される。ここで言う「ノードID」は、センサネットワークに収容されるサーバノード110、センサノード210又はGWノード310を識別するための識別子を指す。また、「深さ」は、ルートノードであるサーバノード110の深さを「1」とした場合に、ルートノードから各ノードまでに接続されるノード数に応じて増加する値を指す。また、「配備モジュール」は、モジュール配備処理によって配備されるモジュールに関する情報を指す。ここでは、配備モジュールには、モジュールID、入力イベント型及び発生イベント属性が対応付けられている。また、「追加集計用モジュール」は、追加集計配備処理によって配備される追加集計用モジュールに関する情報を指す。ここでは、追加集計用モジュールには、モジュールID、入力イベント型及び発生イベント属性が対応付けられている。
図13は、追加集計配備テーブルに格納される情報の構成例を示す図である。この図13の例では、モジュール配備処理によりモジュールが配備された段階のテーブル例を図示している。すなわち、図13に示すように、全カラムのうち配備モジュールのモジュールID、入力イベント型及び発生イベント属性が図11の配備先情報記憶部117Aから複写された段階のテーブル例が図示されている。以降の追加集計用モジュールに関するカラムが埋められる遷移については、図14〜図17などを用いて後述する。
配備先決定部117は、センサネットワーク内のノードをトポロジ記憶部112Aから抽出し、抽出したノードIDを追加集計配備テーブルに書き込む。このとき、配備先決定部117は、トポロジ記憶部112Aに記憶されたノード間の接続情報に基づいて、ノードの深さを追加集計配備テーブルに書き込む。
続いて、配備先決定部117は、各ノードに配備されたモジュールのモジュールID、入力イベント型及び発生イベント属性を配備先情報記憶部117Aから抽出する。そして、配備先決定部117は、抽出結果として得られたモジュールID、入力イベント型及び発生イベント属性を、追加集計配備テーブルのノードIDに対応付けて、配備モジュールの該当カラムにそれぞれ書き込む。このとき、追加集計配備テーブルは、図13に示すように、追加集計用モジュールのモジュールID、入力イベント型及び発生イベント属性のカラムがブランクの状態となる。
配備先決定部117は、モジュール定義記憶部111Bを参照し、処理対象となるノードに配備された配備モジュールに対応する追加集計用モジュールを特定する。そして、配備先決定部117は、トポロジ記憶部112Aを参照し、処理対象ノードの上位ノードを特定し、特定した上位ノードの追加集計用モジュールに、特定した追加集計用モジュールのモジュールIDを書き込む。このとき、処理対象ノードに対応する追加集計用モジュールのモジュールIDが書き込まれている場合には、配備先決定部117は、当該モジュールIDを処理対象ノードの上位ノードの追加集計用モジュールのモジュールIDに書き込む。なお、各ノードに同一モジュールが複数配備されることはないので、配備先決定部117は、特定した追加集計用モジュールのモジュールIDが書き込まれている場合には、モジュールIDを重複して書き込むことはない。
続いて、配備先決定部117は、処理対象ノードの配備モジュールの入力イベント型及び発生イベント属性を、上位ノードの追加集計用モジュールの入力イベント型及び発生イベント属性に書き込む。これによって、配備モジュールに対応する追加集計用モジュールが、モジュールの配備先ノードの上位ノードに配備されることとなる。このように、配備先決定部117は、配備モジュールに対応する追加集計用モジュールを下位ノードから上位ノードへ順に配備していくことにより、センサネットワーク内の各ノードに追加集計用モジュールを配備する。
(4)追加集計配備処理の具体例
次に、図13〜図18を用いて、追加集計配備処理の具体例について説明する。図14は、図13に示した追加集計配備テーブルからの配備状況の遷移を示す図である。図15は、図14に示した追加集計配備テーブルからの配備状況の遷移を示す図である。図16は、図15に示した追加集計配備テーブルからの配備状況の遷移を示す図である。図17は、図16に示した追加集計配備テーブルからの配備状況の遷移を示す図である。図18は、図11に示した配備先情報記憶部からの配備状況の遷移を示す図である。
モジュール配備処理によってノードにモジュールが配備されると、配備先決定部117によってセンサネットワーク1内のノードである電力センサX、電力センサY、ホームGW及びクラウドが図5のトポロジ記憶部112Aから抽出される。そして、図13に示すように、抽出結果である電力センサX、電力センサY、ホームGW及びクラウドが追加集計配備テーブルのノードIDに格納される。
さらに、トポロジ記憶部112Aに記憶されたノード間の接続情報に基づいて、センサネットワーク1内の各ノードの深さが追加集計配備テーブルに格納される。図13に示した例では、センサネットワーク1内の全ノードの上位ノードである「クラウド」の深さが「1」となる。そして、「クラウド」の下位ノードである「GWノード」の深さが「2」となり、「GWノード」の下位ノードである「電力センサX」及び「電力センサY」の深さがそれぞれ「3」となる。
ここで、センサネットワーク1のうち深さが最も深いノードの1つは、深さ「3」の「電力センサX」である。この「電力センサX」に配備されたモジュール「平均電力計算」に対応する追加集計用モジュールは、モジュール定義記憶部111Bから「平均電力追加計算」と特定される。そして、「電力センサX」の上位ノードは、トポロジ記憶部112Aに記憶された接続情報によると、「ホームGW」である。それゆえ、図14に示す網掛け部分のように、「ホームGW」の追加集計用モジュールとして「平均電力追加計算」が配備先決定部117によって格納される。このとき、「電力センサX」の配備モジュールに対応する入力イベント型「電力」及び発生イベント属性「機器ID=機器A,機器B」が、「ホームGW」の追加集計用モジュールに対応する入力イベント型及び発生イベント属性に格納される。
また、「電力センサX」と同じく深さ「3」の「電力センサY」についても、モジュール「平均電力計算」が配備されているので、対応する追加集計用モジュール「平均電力追加計算」と特定される。そして、この「電力センサY」の上位ノードは「ホームGW」であるが、「ホームGW」の追加集計用モジュールのモジュールIDは既に格納されている。このため、図15に示す網掛け部分のように、「電力センサY」の配備モジュールに対応する発生イベント属性「機器ID=機器C,機器D」が、「ホームGW」の追加集計用モジュールに対応する発生イベント属性にさらに格納される。
このように、深さ「3」のノードに配備されたモジュールに対応する追加集計用モジュールに関する情報が書き込まれると、深さ「2」のノードである「ホームGW」に配備されたモジュールについて処理を行う。「ホームGW」にはモジュール「家庭内電力総計」が配備されているので、対応する追加集計用モジュール「家庭内電力追加総計」と特定される。そして、「ホームGW」の上位ノードは「クラウド」である。それゆえ、図16に示す網掛け部分のように、「クラウド」の追加集計用モジュールとして「家庭内電力追加総計」が配備先決定部117によって格納される。このとき、「ホームGW」の配備モジュールに対応する入力イベント型「平均電力」及び発生イベント属性「機器ID=機器A,機器B,機器C,機器D」が、「クラウド」の追加集計用モジュールに対応する入力イベント型及び発生イベント属性に格納される。
また、「ホームGW」には、追加集計用モジュールとして「平均電力追加計算」が格納されている。これは、「ホームGW」に追加集計用モジュール「平均電力追加計算」が配備されることを示すので、図17に示す網掛け部分のように、この「平均電力追加計算」についても「クラウド」の追加集計用モジュールとして書き込まれる。このとき、「ホームGW」の追加集計用モジュールに対応する入力イベント型「電力」及び発生イベント属性「機器ID=機器A,機器B,機器C,機器D」が、「クラウド」の追加集計用モジュールに対応する入力イベント型及び発生イベント属性に格納される。
このように、深さ「2」のノードに配備されたモジュールに対応する追加集計用モジュールに関する情報が格納されると、追加集計配備テーブルに格納された追加集計用モジュールのモジュールIDが特定される。そして、図18に示す網掛け部分のように、特定されたモジュールIDが配備されたノードを配備先ノードIDとして、配備先決定部117によって配備先情報記憶部117Aに登録される。
これによって、追加集計用モジュール「平均電力追加計算」が「ホームGW」であるGWノード310及び「クラウド」であるサーバノード110にそれぞれ配備されることとなる。また、追加集計用モジュール「家庭内電力追加総計」が「クラウド」であるサーバノード110に配備されることとなる。
図2の説明に戻る。モジュール送信部118は、センサノード210またはGWノード310などの下位ノードにモジュールを送信する処理部である。例えば、モジュール送信部118は、配備先決定部117によって配備先ノードIDが配備先情報記憶部117Aに登録されると、モジュール記憶部111Aに記憶されたモジュールを配備先ノードIDに対応するノードへ送信する。また、例えば、モジュール送信部118は、下位ノードに配備されるモジュールの設定情報を下位ノードへ送信する。
なお、モジュール登録部111、トポロジ取得部112、イベント受信部113、モジュール実行部115、発生イベント登録部116、配備先決定部117及びモジュール送信部118には、各種の集積回路や電子回路を採用できる。例えば、集積回路としては、ASIC(Application Specific Integrated Circuit)が挙げられる。また、電子回路としては、CPU(Central Processing Unit)やMPU(Micro Processing Unit)などが挙げられる。
また、上記のモジュール記憶部111A、モジュール定義記憶部111B、トポロジ記憶部112A、イベント記憶部114、発生イベント情報記憶部116A及び配備先情報記憶部117Aなどの記憶部には、半導体メモリ素子や記憶装置を採用できる。例えば、半導体メモリ素子としては、VRAM(Video Random Access Memory)、RAM(Random Access Memory)、ROM(Read Only Memory)やフラッシュメモリ(flash memory)などが挙げられる。また、記憶装置としては、ハードディスク、光ディスクなどの記憶装置が挙げられる。
[GWノードの構成]
次に、本実施例に係るGWノードの機能的構成について説明する。図19は、実施例1に係るGWノード310の機能的構成を示すブロック図である。図19に示すGWノード310は、イベント受信部311と、モジュール受信部312と、モジュール設定受信部313と、モジュール設定記憶部313Aとを有する。また、GWノード310は、モジュール選択部314と、モジュール実行部315と、イベント一時記憶部315Aと、イベント送信部316と、トポロジ検出部317と、トポロジ送信部318とを有する。
イベント受信部311は、イベントを受信する処理部である。例えば、イベント受信部311は、下位ノードであるセンサノード210や他のGWノード310からイベントを受信する。
モジュール受信部312は、サーバノード110からモジュールを受信する処理部である。このモジュール受信部312によって受信されたモジュールは、モジュールの実行制御を行うモジュール実行部315に出力される。
モジュール設定受信部313は、モジュールの設定情報を受信する処理部である。例えば、モジュール設定受信部313は、自装置に配備されるモジュールの設定情報をサーバノード110から受信する。モジュール設定受信部313は、受信したモジュールの設定情報を後述のモジュール設定記憶部313Aに登録する。
モジュール設定記憶部313Aは、自装置に配備されるモジュールの設定情報を記憶する記憶部である。例えば、モジュール設定記憶部313Aは、サーバノード110からモジュールの設定情報が受信された場合にモジュール設定受信部313によってモジュールの設定情報が登録される。また、例えば、モジュール設定記憶部313Aは、受信されたイベントを加工処理するモジュールを選択するために、後述のモジュール選択部314によって参照される。
例えば、モジュール設定記憶部313Aは、モジュールID、入力イベント型及び発生イベント属性が対応付けられたデータを記憶する。図20は、モジュール設定記憶部313Aに記憶される情報の構成例を示す図である。図20に示すモジュール「平均電力追加計算」の例では、機器A〜機器Dのいずれかからの電力イベントが受信されると、そのイベントを自装置に配備された追加計算用モジュール「平均電力追加計算」に通知されることを示す。また、図20に示すモジュール「家庭内電力総計」の例では、機器A〜機器Dのいずれかからの平均電力イベントが受信されると、そのイベントを自装置に配備された追加計算用モジュール「家庭内電力総計」に通知されることを示す。
モジュール選択部314は、受信されたイベントの加工処理を行うモジュールを選択する処理部である。例えば、モジュール選択部314は、イベント受信部311によってイベントが受信されると、受信されたイベントを加工処理するモジュールが自装置に配備されているか否かを判定する。例えば、モジュール選択部314は、モジュール設定記憶部313Aを参照し、受信されたイベントを入力イベントとし、発生イベント属性が一致するモジュールがあるか否かを判定する。モジュールが配備されている場合には、モジュール選択部314は、該当するモジュールに受信されたイベントを通知する。例えば、図20に示す例では、機器Aからの電力イベントが受信されると、モジュール選択部314は、その電力イベントを追加計算用モジュール「平均電力追加計算」に通知する。一方、モジュールが配備されていない場合には、モジュール選択部314は、受信されたイベントをイベント送信部316へ出力する。
イベント一時記憶部315Aは、イベントを一時記憶する記憶部である。例えば、イベント一時記憶部315Aは、同一の集計処理の処理対象となるイベントのうち一部のイベントが残りのイベントよりも先に受信される場合に、後に受信されるイベントを待ち合わせるために、先に受信されたイベントを一時記憶する。例えば、イベント一時記憶部315Aは、後述のモジュール実行部315によってイベントが格納される。また、例えば、イベント一時記憶部315Aは、一時記憶したイベントに対応するイベントが受信された場合に、モジュール実行部315によって一時記憶したイベントが取り出される。一態様としては、イベント一時記憶部315Aは、先に受信されたイベントが後に受信されるイベントを待ち合わせるための待ち合わせキューとして実現される。
例えば、イベント一時記憶部315Aは、イベント型、発生イベント属性、対象時間、待機イベント内容及び追加集計用モジュールが対応付けられたデータを一時記憶する。ここでいう「対象時間」は、一時記憶されているイベントが表している対象の時間を指し、例えば、当該イベントの発生時刻や集計時刻に対応する。また、「待機イベント内容」は、一時記憶されているイベントの属性を指す。
図21は、イベント一時記憶部315Aに一時記憶される情報の構成例を示す図である。図21に示すイベント型「電力」の例では、9時15分に機器Aから発生した電力イベントが待機イベントとして一時記憶されていることを示す。このイベント型「電力」の例では、対象時間「9:15」に機器ID「機器A」から発生した電力イベントによって追加集計用モジュール「平均電力追加計算」が実行された場合に、モジュール実行部315によって取り出されることを示す。また、図21に示すイベント型「平均電力」の例では、9時25分〜30分に機器Bから発生した電力の平均電力イベントが待機イベントとして一時記憶されていることを示す。このイベント型「平均電力」の例では、対象時間「9:25〜9:30」に機器ID「機器B」から発生した平均電力イベントによって追加集計用モジュール「電力総計追加計算」が実行された場合に、モジュール実行部315によって取り出されることを示す。
モジュール実行部315は、GWノード310に配備されたモジュールの実行制御を行う処理部である。例えば、モジュール実行部315は、モジュール選択部314によってイベントがモジュールに通知された場合には、当該モジュールを実行することによってイベントの加工処理を実行する。一態様としては、モジュール実行部315は、入力イベントを格納する入力キューを有しており、モジュール選択部314によって通知されたイベントは入力キューに格納される。そして、モジュール実行部315は、入力キューの先頭に格納されたイベントを取り出して、取り出したイベントの加工処理を実行する。その後、モジュール実行部315は、モジュールによって加工処理が実行されたデータを新たなイベントとしてイベント送信部316へ出力する。
例えば、モジュール実行部315は、モジュール選択部314によってイベントがモジュール「家庭内電力総計」に通知された場合には、「家庭内電力総計」を実行することによってイベントの集計処理を実行する。また、例えば、モジュール実行部315は、モジュール選択部314によってイベントが追加計算用モジュール「平均電力追加計算」に通知された場合には、「平均電力追加計算」を実行することによってイベントの追加集計処理を実行する。
以下において、モジュール実行部315によってイベントの追加集計用モジュールが実行される場合について説明する。一例としては、モジュール実行部315は、モジュール選択部314によってイベントが追加集計用モジュールに通知された場合には、当該モジュールを実行することによってイベントの追加集計処理を実行する。この場合、モジュール実行部315は、通知されたイベントのイベント型、発生イベント属性及び対象時間に対応するイベントが、イベント一時記憶部315Aに一時記憶されているか否かを判定する。一時記憶されている場合には、モジュール実行部315は、当該イベントをイベント一時記憶部315Aから取り出す。図21に示す例では、対象時間「9:15」に機器ID「機器A」から発生した電力イベントが通知された場合に、モジュール実行部315は、イベント一時記憶部315Aに一時記憶された電力イベントを取り出す。
モジュール実行部315は、通知されたイベントの対象時間を取得する。モジュール実行部315は、取得した対象時間を含むイベントがモジュール実行部315又は後述のイベント送信部316にあるか否かを判定する。モジュール実行部315又はイベント送信部316にイベントがある場合には、モジュール実行部315は、当該イベントに通知されたイベントを追加して追加集計処理を実行する。このとき、イベント一時記憶部315Aから取り出されたイベントがある場合には、当該イベントも追加して追加集計処理を実行する。その後、モジュール実行部315は、追加集計処理が実行されたデータを新たなイベントとしてイベント送信部316へ出力する。
一方、モジュール実行部315及びイベント送信部316にイベントがない場合には、モジュール実行部315は、後述の送信履歴を参照し、対象時間を含むイベントが送信済みか否かを判定する。送信済みでない場合には、モジュール実行部315は、通知されたイベントをイベント一時記憶部315Aに格納する。なお、送信済みである場合には、モジュール実行部315は、通知されたイベントを加工処理しないままイベント送信部316へ出力する。このイベントは、より上位のノードで追加集計処理を試み、最上位となるサーバノード110でも追加集計が間に合わなかった場合は、エラーログやサービス利用者への通知として、未集計イベントの情報の存在を記録・送信する。このとき、イベント一時記憶部315Aから取り出されたイベントがある場合には、当該イベントもイベント送信部316へ出力する。
図19の説明に戻る。イベント送信部316は、イベントを上位ノードに送信する処理部である。例えば、イベント送信部316は、モジュール実行部315によって加工処理されたイベント、あるいはモジュール選択部314によって出力されたイベントを上位ノードへ送信する。また、例えば、イベント送信部316は、上位ノードにイベントを送信した場合に、送信履歴を記録する。一態様としては、イベント送信部316は、送信されるイベントを格納する送信キューを有しており、モジュール選択部314及びモジュール実行部315によって出力されたイベントは送信キューに格納される。そして、イベント送信部316は、送信キューの先頭に格納されたイベントを取り出して、取り出したイベントを上位ノードへ送信する。
図22は、イベント送信部316によって記録される送信履歴の一例を示す図である。図22に示すイベント型「平均電力」の例では、9時25分から9時30分までの間に機器Aにおいて処理されたイベントの平均電力のイベントが送信されたことを示す。なお、イベント送信部316は、同一のイベント型及び発生イベント属性を有するイベントについては、対象時間が最新の情報のみを記録する。このため、図22に示すイベント型「平均電力」に対応する9時25分以前のイベントは、既に送信されているものとして判定される。
トポロジ検出部317は、GWノード310がどの上位ノードに接続されているかを表すノード間の接続情報をトポロジとして検出する処理部である。また、トポロジ検出部317は、例えば、検出した上位ノードのノードIDをイベント送信部316に登録する。例えば、トポロジ検出部317は、UPnPプロトコル等を用いて、GWノード310と同一のローカルネットワーク内に存在する他のGWノード310を認識したり、サーバノード110から他のGWノード310の存在の通知を受けたりすることによってトポロジを検出する。なお、サーバノード110とのネットワーク接続の確立は、サーバノード110のURL等のアドレスを設定しておくことにより実現できる。
トポロジ送信部318は、トポロジ検出部317によって検出されたトポロジをサーバノード110に送信する処理部である。例えば、トポロジ送信部318は、GWノード310が接続されている上位ノードのノードIDをサーバノード110に送信する。
なお、イベント受信部311、モジュール受信部312、モジュール設定受信部313、モジュール選択部314、モジュール実行部315、イベント送信部316、トポロジ検出部317及びトポロジ送信部318には、各種の集積回路や電子回路を採用できる。例えば、集積回路としては、ASICが挙げられる。また、電子回路としては、CPUやMPUなどが挙げられる。
また、モジュール設定記憶部313A及びイベント一時記憶部315Aなどの記憶部には、半導体メモリ素子や記憶装置を採用できる。例えば、半導体メモリ素子としては、VRAM、RAM、やフラッシュメモリなどが挙げられる。また、記憶装置としては、ハードディスク、光ディスクなどの記憶装置が挙げられる。
[センサノードの構成]
次に、本実施例に係るGWノードの機能的構成について説明する。図23は、実施例1に係るセンサノード210の機能的構成を示すブロック図である。図23に示すセンサノード210は、センサ情報受信部211と、モジュール受信部212と、モジュール設定受信部213と、モジュール設定記憶部213Aとを有する。また、センサノード210は、モジュール選択部214と、モジュール実行部215と、イベント一時記憶部215Aと、イベント送信部216と、トポロジ検出部217と、トポロジ送信部218とを有する。
センサ情報受信部211は、センサノード210に内蔵または付設されたセンサデバイスからセンサ情報を受信する処理部である。例えば、センサ情報受信部211は、センサノード210に電力センサが内蔵されている場合には、電力センサによって計測された電力を受信する。なお、センサノード210に複数のセンサデバイスが内蔵されている場合には、各々のセンサデバイスに対応してセンサ情報受信部211が設けられる。
モジュール受信部212は、サーバノード110からモジュールを受信する処理部である。このモジュール受信部212によって受信されたモジュールは、モジュールの実行制御を行うモジュール実行部215に出力される。
モジュール設定受信部213は、モジュールの設定情報を受信する処理部である。例えば、モジュール設定受信部213は、自装置に配備されるモジュールの設定情報をサーバノード110から受信する。モジュール設定受信部213は、受信したモジュールの設定情報を後述のモジュール設定記憶部213Aに登録する。
モジュール設定記憶部213Aは、自装置に配備されるモジュールの設定情報を記憶する記憶部である。例えば、モジュール設定記憶部213Aは、サーバノード110からモジュールの設定情報が受信された場合にモジュール設定受信部213によってモジュールの設定情報が登録される。また、例えば、モジュール設定記憶部213Aは、受信されたイベントを加工処理するモジュール選択するために、後述のモジュール選択部214によって参照される。
例えば、モジュール設定記憶部213Aは、モジュールID、入力イベント型及び発生イベント属性が対応付けられたデータを記憶する。図24は、モジュール設定記憶部213Aに記憶される情報の構成例を示す図である。図24に示すモジュール「平均電力計算」の例では、機器A又は機器Bからの電力イベントが受信されると、そのイベントを自装置に配備されたモジュール「平均電力計算」に通知されることを示す。
モジュール選択部214は、受信されたイベントの加工処理を行うモジュールを選択する処理部である。例えば、モジュール選択部214は、センサ情報受信部211によってイベントが受信されると、受信されたイベントを加工処理するモジュールが自装置に配備されているか否かを判定する。例えば、モジュール選択部214は、モジュール設定記憶部213Aを参照し、受信されたイベントを入力イベントとし、発生イベント属性が一致するモジュールがあるか否かを判定する。モジュールが配備されている場合には、モジュール選択部214は、該当するモジュールに受信されたイベントを通知する。一方、モジュールが配備されていない場合には、モジュール選択部214は、受信されたイベントをイベント送信部216へ出力する。
イベント一時記憶部215Aは、イベントを一時記憶する記憶部である。例えば、イベント一時記憶部215Aは、同一の集計処理の処理対象となるイベントのうち一部のイベントが残りのイベントよりも先に受信される場合に、後に受信されるイベントを待ち合わせるために、先に受信されたイベントを一時記憶する。例えば、イベント一時記憶部215Aは、後述のモジュール実行部215によってイベントが格納される。また、例えば、イベント一時記憶部215Aは、一時記憶したイベントに対応するイベントが受信された場合に、モジュール実行部215によって一時記憶したイベントが取り出される。一態様としては、イベント一時記憶部215Aは、先に受信されたイベントが後に受信されるイベントを待ち合わせるための待ち合わせキューとして実現される。
例えば、イベント一時記憶部215Aは、イベント型、発生イベント属性、対象時間、待機イベント内容及び追加集計用モジュールが対応付けられたデータを一時記憶する。なお、イベント一時記憶部315Aに一時記憶される情報の構成例は、図21に示した例と同様である。
モジュール実行部215は、センサノード210に配備されたモジュールの実行制御を行う処理部である。例えば、モジュール実行部215は、モジュール選択部214によってイベントがモジュールに通知された場合には、当該モジュールを実行することによってイベントの加工処理を実行する。また、例えば、モジュール実行部215は、モジュール選択部214によってイベントが追加集計用モジュールに通知された場合には、当該モジュールを実行することによってイベントの追加集計処理を実行する。
イベント送信部216は、イベントを上位ノードに送信する処理部である。例えば、イベント送信部216は、モジュール実行部215によって加工処理されたイベント、あるいはモジュール選択部214によって出力されたイベントを上位ノードへ送信する。また、例えば、イベント送信部216は、上位ノードにイベントを送信した場合に、送信履歴を記録する。一態様としては、イベント送信部216は、送信されるイベントを格納する送信キューを有しており、モジュール選択部214及びモジュール実行部215によって出力されたイベントは送信キューに格納される。そして、イベント送信部216は、送信キューの先頭に格納されたイベントを取り出して、取り出したイベントを上位ノードへ送信する。なお、イベント送信部216によって記録される送信履歴は、図22に示した例と同様である。
トポロジ検出部217は、センサノード210がどの上位ノードに接続されているかを表すノード間の接続情報をトポロジとして検出する処理部である。例えば、トポロジ検出部217は、UPnPプロトコル等を用いて、センサノード210と同一のローカルネットワーク内に存在する他のGWノード310を認識したり、サーバノード110から他のGWノード310の存在の通知を受けたりすることによってトポロジを検出する。なお、サーバノード110とのネットワーク接続の確立は、サーバノード110のURL等のアドレスを設定しておくことにより実現できる。
トポロジ送信部218は、トポロジ検出部217によって検出されたトポロジをサーバノード110に送信する処理部である。例えば、トポロジ送信部218は、センサノード210が接続されている上位ノードのノードIDをサーバノード110に送信する。
なお、センサ情報受信部211、モジュール受信部212、モジュール設定受信部213、モジュール選択部214、モジュール実行部215、イベント送信部216、トポロジ検出部217及びトポロジ送信部218には、各種の集積回路や電子回路を採用できる。例えば、集積回路としては、ASICが挙げられる。また、電子回路としては、CPUやMPUなどが挙げられる。
また、モジュール設定記憶部213A及びイベント一時記憶部215Aなどの記憶部には、半導体メモリ素子や記憶装置を採用できる。例えば、半導体メモリ素子としては、VRAM、RAMやフラッシュメモリなどが挙げられる。また、記憶装置としては、ハードディスク、光ディスクなどの記憶装置が挙げられる。
[処理の流れ]
次に、本実施例に係るセンサネットワークシステムの処理の流れについて説明する。ここでは、まず、GWノード310によって実行される(1)イベント受信時の処理及び(2)全体処理を説明した後に、サーバノード110によって実行される(3)モジュール配備処理及び(4)追加集計配備処理を説明することとする。
(1)イベント受信時の処理
図25は、実施例1に係るGWノード310におけるイベント受信時の処理の手順を示すフローチャートである。このイベント受信時の処理は、GWノード310の電源がON状態である限り、繰り返し実行される。
図25に示すように、下位ノードからイベントを受信した場合には(ステップS101肯定)、GWノード310は、受信したイベントを加工処理するモジュールが配備されているか否かを判定する(ステップS102)。なお、イベントを受信しなかった場合には(ステップS101否定)、GWノード310は、イベントを受信するまで待機する。
モジュールが配備されている場合には(ステップS102肯定)、GWノード310は、受信したイベントに対応するイベントが一時記憶されているか否かを判定する(ステップS103)。一例としては、GWノード310は、受信したイベントのイベント型、発生イベント属性及び対象時間に対応するイベントが、イベント一時記憶部315Aに一時記憶されているか否かを判定する。なお、モジュールが配備されていない場合には(ステップS102否定)、GWノード310は、受信したイベントを上位ノードへ送信し(ステップS115)、ステップS101の処理に移行する。
一時記憶されている場合には(ステップS103肯定)、GWノード310は、一時記憶されたイベントをイベント一時記憶部315Aから取得する(ステップS104)。そして、実行されるモジュールが追加集計用モジュールである場合には(ステップS105肯定)、GWノード310は、受信したイベントの対象時間を取得する(ステップS106)。なお、一時記憶されていない場合には(ステップS103否定)、GWノード310は、ステップS105の処理に移行する。
続いて、GWノード310は、取得した対象時間を含むイベントがモジュール実行部315又はイベント送信部316にあるか否かを判定する(ステップS107)。モジュール実行部315又はイベント送信部316にイベントがある場合には(ステップS107肯定)、GWノード310は、当該イベントに受信したイベントを追加して追加集計処理を実行する(ステップS108)。このとき、ステップS104の処理において、イベント一時記憶部315Aから取り出されたイベントがある場合には、GWノード310は、当該イベントも追加して追加集計処理を実行する。
続いて、GWノード310は、イベントの処理結果を新たなイベントとして上位ノードへ送信する(ステップS109)。そして、GWノード310は、送信履歴を記録し(ステップS110)、ステップS101の処理に移行する。
一方、モジュール実行部315又はイベント送信部316にイベントがない場合には(ステップS107否定)、GWノード310は、送信履歴を参照し、対象時間を含むイベントが送信済みか否かを判定する(ステップS111)。送信済みである場合には(ステップS111肯定)、GWノード310は、受信したイベントを加工処理しないまま上位ノードへ送信し(ステップS112)、ステップS110の処理に移行する。また、送信済みでない場合には(ステップS111否定)、GWノード310は、受信したイベントを一時記憶し(ステップS113)、ステップS101の処理に移行する。
また、実行されたモジュールが追加集計用モジュールでない場合には(ステップS105否定)、GWノード310は、受信したイベントの加工処理を実行し(ステップS114)、ステップS109の処理に移行する。一例としては、追加集計処理以外の加工処理が実行される。
このようにして、GWノード310は、上記のステップS101〜ステップS115までの処理を電源がOFF状態になるまで繰り返し実行する。
なお、ここでは、GWノード310のイベント受信時の処理について説明したが、センサノード210によって実行されるイベント受信時の処理も一部を除き同様である。すなわち、センサノード210の場合には、上記のステップS101においてセンサ情報をイベントとして受信する点が相違する点を除き、GWノード310と同様である。
(2)全体処理
続いて、本実施例に係るGWノード310における全体処理について説明する。図26は、実施例1に係るGWノード310における全体処理の手順を示すフローチャートである。この全体処理は、GWノード310の電源がON状態である限り、繰り返し実行される。なお、この全体処理の説明では、GWノード310によって実行されるイベント受信時の処理以外の処理について説明するものとする。
図26に示すように、新たな上位ノードを検出した場合には(ステップS201肯定)、GWノード310は、当該上位ノードのノードIDをサーバノード110へ送信する(ステップS202)。なお、新たな上位ノードを検出しなかった場合には(ステップS201否定)、ステップS202の処理を実行せずにステップS203の処理へ移行する。
続いて、サーバノード110からモジュールの設定情報を受信した場合には(ステップS203肯定)、GWノード310は、サーバノード110から受信したモジュールの設定情報を登録する(ステップS204)。なお、モジュールの設定情報を受信しなかった場合には(ステップS203否定)、ステップS204の処理を実行せずにステップS205の処理へ移行する。
続いて、サーバノード110からモジュールを受信した場合には(ステップS205肯定)、GWノード310は、サーバノード110から受信したモジュールを配備する(ステップS206)。なお、モジュールを受信しなかった場合には(ステップS205否定)、ステップS206の処理を実行せずにステップS201の処理へ移行する。
このようにして、GWノード310は、上記のステップS201〜ステップS206までの処理を電源がOFF状態になるまで繰り返し実行する。なお、ここでは、GWノード310の全体処理について説明したが、センサノード210によって実行される全体処理も同様である。
(3)モジュール配備処理
続いて、本実施例に係るモジュール配備処理について説明する。図27は、実施例1に係るモジュール配備処理の手順を示すフローチャートである。このモジュール配備処理は、例えば、センサネットワークのトポロジが変化した場合に処理が起動される。
図27に示すように、サーバノード110は、発生イベント情報記憶部116Aが更新されるのを待機する(ステップS301)。そして、発生イベント情報記憶部116Aが更新されると、モジュール配備処理が終了したか否かが判断されるが(ステップS302)、ここではモジュール配備処理が終了していないので(ステップS302否定)、ステップS303の処理へ移行する。
続いて、サーバノード110は、モジュール定義記憶部111Bに記憶されたモジュールの定義のうちモジュール識別子、入力イベント型及び集約属性名のカラムデータを配備先情報記憶部117Aの該当カラムに格納する(ステップS303)。
そして、サーバノード110は、ステップS303の処理を実行後に、下記に説明するステップS304の処理を実行する。すなわち、サーバノード110は、発生イベント情報記憶部116Aに記憶された発生ノードIDのうち、発生イベント型が未配備のモジュールの入力イベント型に含まれる発生ノードIDを抽出する。さらに、サーバノード110は、前述のように抽出した発生ノードID間で未配備のモジュールに定義された集約属性の属性名と同一の集約属性に属する属性値が同一であるノードを抽出する。
その後、サーバノード110は、抽出結果として得られた発生ノードID及び発生ノードIDに対応付けられた発生イベント属性を配備先情報記憶部117Aに書き込む(ステップS305)。
このとき、発生ノードIDの数が「0」である場合(ステップS306肯定)には、下位ノードから通知される発生イベントが発生イベント情報記憶部116Aに登録し切れていない可能性がある。この場合には、ステップS302の処理に移行する。
ここで、発生ノードIDの数が複数である場合(ステップS307肯定)には、下記に説明するステップS308の処理を実行する。すなわち、サーバノード110は、トポロジ記憶部112Aに記憶された上位ノードIDのうち各発生ノードIDに対応するセンサノード210又はGWノード310が下位ノードとして全て収容され、かつ最も下位ノード側であるノードIDを抽出する(ステップS308)。そして、サーバノード110は、前述のように抽出したノードIDを配備先ノードIDのカラムに登録する(ステップS309)。
また、発生ノードIDの数が1つである場合(ステップS307否定)には、サーバノード110は、モジュールを配備するノードに選択の余地がないので、先に抽出結果として得られた発生ノードIDを配備先ノードIDのカラムに登録する(ステップS309)。
その後、サーバノード110は、モジュール配備処理が終了するまで(ステップS302否定)、上記のステップS303〜ステップS309までの処理を繰り返し実行する。そして、モジュール配備処理が終了すると(ステップS302肯定)、サーバノード110は、ステップS310の追加集計配備処理に移行する。なお、追加集計配備処理が実行された後には、サーバノード110は、ステップS301の処理に移行する。
(4)追加集計配備処理
続いて、本実施例に係る追加集計配備処理について説明する。図28は、実施例1に係る追加集計配備処理の手順を示すフローチャートである。この追加集計配備処理は、例えば、上記のモジュール配備処理が完了した場合に処理が起動される。
図28に示すように、サーバノード110は、モジュール配備処理が完了した場合に、配備先情報記憶部117Aを読み出して、読み出した配備モジュールを追加集計配備テーブルに格納する(ステップS401)。続いて、サーバノード110は、最も深いノードの深さを処理対象深さに設定する(ステップS402)。そして、サーバノード110は、処理対象深さに対応する全ノードについて追加集計配備処理が処理済みか否かが判断されるが(ステップS403)、ここでは追加集計配備処理が終了していないので(ステップS403否定)、ステップS404の処理へ移行する。
サーバノード110は、処理対象深さに対応するノードのうち、未処理のノードから処理対象となるノードを1つ選択する(ステップS404)。サーバノード110は、モジュール定義記憶部111Bを参照し、選択したノードの配備モジュールに対応する追加集計用モジュールを特定する(ステップS405)。サーバノード110は、トポロジ記憶部112Aを参照し、選択したノードの上位ノードを特定する(ステップS406)。サーバノード110は、特定した上位ノードに、特定した追加集計用モジュールのモジュールIDが格納済みか否かを判定する(ステップS407)。
格納済みではない場合には(ステップS407否定)、サーバノード110は、特定した追加集計用モジュールのモジュールIDを、上位ノードのモジュールIDに格納する(ステップS408)。そして、サーバノード110は、選択したノードの配備モジュールの入力イベント型及び発生イベント属性を、上位ノードの追加集計用モジュールの入力イベント型及び発生イベント属性に格納し(ステップS409)、ステップS403の処理に移行する。
一方、格納済みである場合には(ステップS407肯定)、サーバノード110は、選択したノードの配備モジュールの発生イベント属性を、上位ノードの追加集計用モジュールの発生イベント属性に格納し(ステップS410)、ステップS403の処理に移行する。
このように、サーバノード110は、処理対象深さに対応する全ノードについて追加集計配備処理が終了するまで(ステップS403否定)、上記のステップS403〜ステップS410までの処理を繰り返し実行する。
そして、処理対象深さに対応する全ノードについて追加集計配備処理が終了すると(ステップS403肯定)、サーバノード110は、処理対象深さが「1」であるか否かを判定する(ステップS411)。処理対象深さが「1」でない場合には(ステップS411否定)、サーバノード110は、処理対象深さを1つ減らし(ステップS412)、ステップS403の処理に移行する。
一方、処理対象深さが「1」である場合には(ステップS411肯定)、サーバノード110は、追加集計配備処理を終了し、追加集計配備処理によって配備された追加集計用モジュールを、配備先情報記憶部117Aに格納する(ステップS413)。
そして、サーバノード110は、配備先情報記憶部117Aに格納したモジュールを配備先ノードIDに対応するノードに送信する(ステップS414)。このとき、サーバノード110は、配備されるモジュールの設定情報についても、対応するノードへ送信する。
[実施例1の効果]
上述してきたように、本実施例に係るGWノード310及びセンサノード210は、受信したイベントが、自ノードに配備されているモジュールの処理対象でない場合には、受信したイベントを自ノードよりも上位に位置する上位ノードに送信する。また、GWノード310及びセンサノード210は、複数のイベントの集計結果にイベントを追加集計する追加集計処理を実行する追加集計用モジュールが自ノードに配備されており、下位ノードからイベントを受信した場合には、次のように処理する。つまり、GWノード310及びセンサノード210は、そのイベントを集計結果に追加集計する追加集計処理を追加集計用モジュールに実行させる。このため、GWノード310及びセンサノード210は、イベントを処理することができる。一例としては、GWノード310及びセンサノード210は、ネットワークトラフィックを増大させることなく、イベントを処理することができる。また、他の例としては、GWノード310及びセンサノード210は、集計結果に含まれなかったイベントを受信した場合に、当該イベントを集計結果に追加集計することができる。
また、本実施例に係るGWノード310及びセンサノード210は、集計結果を上位ノードに送信済みか否かを示す送信履歴を参照し、下位ノードから受信したイベントを除いて集計された集計結果が送信済みであるか否かを判定する。集計結果が上位ノードに送信済みである場合には、GWノード310及びセンサノード210は、受信したイベントを当該上位ノードに送信する。集計結果が上位ノードに送信済みでない場合には、GWノード310及びセンサノード210は、受信したイベントを記憶する。そして、GWノード310及びセンサノード210は、集計結果を受信した場合に、受信した当該集計結果に、記憶したイベントを追加集計する追加集計処理を追加集計用モジュールに実行させる。このため、GWノード310及びセンサノード210は、集計結果に含まれなかったイベントが集計結果より先に受信された場合にも、当該集計結果を受信するまで当該イベントを記憶するので、当該イベントを処理することができる。
また、本実施例に係るサーバノード110は、モジュールを、ネットワークに接続されたノードに配備した場合に、当該モジュールによって集計された集計結果にイベントを追加集計する追加集計処理を実行する追加集計用モジュールを特定する。また、サーバノード110は、特定した追加集計用モジュールを、モジュールが配備されたノードの上位に位置する上位ノードに配備する。このため、サーバノード110は、下位ノードにイベントを処理させることができる。一例としては、サーバノード110は、ネットワークトラフィックを増大させることなく、下位ノードにイベントを処理させることができる。また、他の例としては、サーバノード110は、集計結果に含まれなかったイベントを受信した下位ノードに、当該イベントを集計結果に追加集計させることができる。
図29は、実施例1に係るセンサネットワークの効果を説明するための図である。図29には、イベントの加工処理を実行するモジュールが下位ノードに分散配備されるセンサネットワークを例示する。図29に示すように、ノード1aには、追加集計用モジュール1bが配備されている。この追加集計用モジュール1bによって追加集計処理されるイベント1cが受信されると(s11)、待ち合わせキュー1dにイベント1cとともに処理されるイベントがあるか検索される(s12)。ここで、イベント1cとともに処理されるイベントがあれば、当該イベントが取得される(s13)。
続いて、イベント1cの対象時間を含むイベントがあるか、送信キュー1e及び入力キュー1fが検索される(s14)。送信キュー1e及び入力キュー1fのいずれかにイベント1cの対象時間を含むイベントがあれば、当該イベントが取得され(s15)、イベント1cを追加して追加集計処理が実行される。このとき、待ち合わせキュー1dから取得されたイベントがあれば、イベント1cとともに追加集計される。なお、s15において、イベント1cの対象時間を含むイベントが取得されるのは、当該イベントが、イベント1cを除いて集計された集計結果であると考えられるからである。
そして、追加集計処理の処理結果が新たなイベントとして元の送信キュー1e又は入力キュー1fに格納される(s16)。送信キュー1eに格納された新規イベントは次のノード1gに送信され(s17)、入力キュー1fに格納された新規イベントは次のモジュール1hで処理される。なお、イベント1cの追加集計処理を実行する追加集計用モジュール1bが配備されていない場合には、受信されたイベント1cは未処理のまま送信キュー1eに格納され(s18)、次のノード1gに送信される。
これによれば、本来の収集経路とは異なる経路でイベントが収集されても、当該イベントは上位ノードに送信される。そして、当該イベントを除いて集計された集計結果を受信しているノードが、当該イベントを受信した場合には、処理結果に当該イベントが追加されて集計結果が更新される。このため、本実施例に係る下位ノードは、ネットワークトラフィックを増大させることなくイベントを処理することができる。
上記の実施例では、本来の収集経路とは異なる経路で収集されたイベントを,当該イベントを除いて集計された集計結果に追加集計する場合を説明したが、必ずしもイベントを集計結果に追加集計できるとは限らない。そこで、本実施例では、本来の収集経路とは異なる経路で収集されたイベントを、当該イベントの加工処理を担当する下位ノードに送信する場合を説明する。
[サーバノードの構成]
図30は、実施例2に係るサーバノード120の機能的構成を示すブロック図である。図30に示すサーバノード120は、図2に示したサーバノード110に比べて、配備先決定部121によって実行される処理の一部が相違する。なお、以下では、上記の実施例と同様の機能を発揮する機能部については同一の符号を付し、その説明を省略することとする。
配備先決定部121は、図2に示した配備先決定部117に比べて、モジュールを配備するモジュール配備処理を実行する点は共通し、下位送信用モジュールを配備する下位送信配備処理を実行する点が相違する。ここで、下位送信用モジュールは、下位ノードにイベントを送信するモジュールを指す。以下では、(1)下位送信配備処理、(2)下位送信配備処理の具体例をそれぞれ説明する。
(1)下位送信配備処理
下位送信配備処理について説明する。配備先決定部121は、例えば、モジュール配備処理によってモジュールを配備した後に、下位送信用モジュールを配備する。一例としては、配備先決定部121は、下位送信配備テーブルを用いて、下位送信用モジュールを配備する。この下位送信配備テーブルは、下位送信用モジュールを配備するために、配備先決定部121によって保持されるテーブルである。
例えば、下位送信配備テーブルには、ノードID、深さ、配備モジュール及び下位送信用モジュールが対応付けられたデータが記憶される。ここで言う「下位送信用モジュール」は、下位送信配備処理によって配備される下位送信用モジュールに関する情報を指す。ここでは、下位送信用モジュールには、モジュールID、入力イベント型及び発生イベント属性が対応付けられている。
図31は、下位送信配備テーブルに格納される情報の構成例を示す図である。この図31の例では、モジュール配備処理によりモジュールが配備された段階のテーブル例を図示している。すなわち、図31に示すように、全カラムのうち配備モジュールのモジュールID、入力イベント型及び発生イベント属性が図11の配備先情報記憶部117Aから複写された段階のテーブル例が図示されている。以降の下位送信用モジュールに関するカラムが埋められる遷移については、図32〜図36などを用いて後述する。
配備先決定部121は、センサネットワーク内のノードをトポロジ記憶部112Aから抽出し、抽出したノードIDを下位送信配備テーブルに書き込む。このとき、配備先決定部121は、トポロジ記憶部112Aに記憶されたノード間の接続情報に基づいて、ノードの深さを下位送信配備テーブルに書き込む。
続いて、配備先決定部121は、各ノードに配備されたモジュールのモジュールID、入力イベント型及び発生イベント属性を配備先情報記憶部117Aから抽出する。そして、配備先決定部121は、抽出結果として得られたモジュールID、入力イベント型及び発生イベント属性を、下位送信配備テーブルのノードIDに対応付けて、配備モジュールの該当カラムにそれぞれ書き込む。このとき、下位送信配備テーブルは、図31に示すように、下位送信用モジュールのモジュールID、入力イベント型及び発生イベント属性のカラムがブランクの状態となる。
配備先決定部121は、処理対象となるノードを選択する。配備先決定部121は、トポロジ記憶部112Aを参照し、選択したノードの上位ノードを特定する。配備先決定部121は、選択したノードを送信先とする下位送信用モジュールを、特定した上位ノードの下位送信用モジュールのモジュールIDに格納する。なお、同一の上位ノードに同一ノードを送信先とする下位送信用モジュールが複数配備されることはないので、配備先決定部121は、選択したノードを送信先とする下位送信用モジュールが既に上位ノードのモジュールIDに書き込まれている場合には、モジュールIDを重複して書き込むことはない。
そして、配備先決定部121は、選択したノードに配備されたモジュールの入力イベント型及び発生イベント属性を、上位ノードの下位送信用モジュールの入力イベント型及び発生イベント属性に格納する。これによって、下位ノードに対応する下位送信用モジュールが上位ノードに配備されることとなる。このように、配備先決定部121は、下位ノードに対応する下位送信用モジュールを下位ノードから上位ノードへ順に配備していくことにより、センサネットワーク内の各ノードに下位送信用モジュールを配備する。
(2)下位送信配備処理の具体例
次に、図31〜図36を用いて、下位送信配備処理の具体例について説明する。図32は、図31に示した下位送信配備テーブルからの配備状況の遷移を示す図である。図33は、図32に示した下位送信配備テーブルからの配備状況の遷移を示す図である。図34は、図33に示した下位送信配備テーブルからの配備状況の遷移を示す図である。図35は、図34に示した下位送信配備テーブルからの配備状況の遷移を示す図である。図36は、図35に示した下位送信配備テーブルからの配備状況の遷移を示す図である。
モジュール配備処理によってノードにモジュールが配備されると、配備先決定部121によってセンサネットワーク1内のノードである電力センサX、電力センサY、ホームGW及びクラウドが図5のトポロジ記憶部112Aから抽出される。そして、図31に示すように、抽出結果である電力センサX、電力センサY、ホームGW及びクラウドが下位送信配備テーブルのノードIDに格納される。
さらに、トポロジ記憶部112Aに記憶されたノード間の接続情報に基づいて、センサネットワーク1内の各ノードの深さが下位送信配備テーブルに格納される。図31に示した例では、センサネットワーク1内の全ノードの上位ノードである「クラウド」の深さが「1」となる。そして、「クラウド」の下位ノードである「ホームGW」の深さが「2」となり、「ホームG」の下位ノードである「電力センサX」及び「電力センサY」の深さがそれぞれ「3」となる。
ここで、センサネットワーク1のうち深さが最も深いノードの1つは、深さ「3」の「電力センサX」である。そして、「電力センサX」の上位ノードは、トポロジ記憶部112Aに記憶された接続情報によると、「ホームGW」である。それゆえ、図32に示す網掛け部分のように、下位ノードである「電力センサX」にイベントを送信する下位送信用モジュール「下位送信(電力センサX)」が、「ホームGW」の下位送信用モジュールとして配備先決定部121によって格納される。このとき、図33に示す網掛け部分のように、「電力センサX」の配備モジュールの入力イベント型「電力」及び発生イベント属性「機器ID=機器A,機器B」が、下位送信用モジュール「下位送信(電力センサX)」の入力イベント型及び発生イベント属性に格納される。
また、「電力センサX」と同じく深さ「3」の「電力センサY」についても、同様に下位送信用モジュールが配備される。つまり、図34に示す網掛け部分のように、「電力センサY」にイベントを送信する下位送信用モジュール「下位送信(電力センサY)」が、上位ノードである「ホームGW」の下位送信用モジュールとして配備先決定部121によって格納される。このとき、「電力センサY」の配備モジュールの入力イベント型「電力」及び発生イベント属性「機器ID=機器C,機器D」が、下位送信用モジュール「下位送信(電力センサY)」に対応する入力イベント型及び発生イベント属性として格納される。
このように、深さ「3」のノードに配備されたモジュールに対応する下位送信用モジュールに関する情報が書き込まれると、次に、深さ「2」のノードである「ホームGW」について処理が行われる。この「ホームGW」の上位ノードは、トポロジ記憶部112Aに記憶された接続情報によると、「クラウド」である。それゆえ、図35に示す網掛け部分のように、下位ノードである「ホームGW」にイベントを送信する下位送信用モジュール「下位送信(ホームGW)」が、「クラウド」の下位送信用モジュールとして配備先決定部121によって格納される。
ここで、ホームGWによって加工処理されるイベントとしては、図35の例では、モジュール「家庭内電力総計」によって加工処理される機器A〜Dのいずれかによって発生された平均電力イベントが挙げられる。それゆえ、図36に示す網掛け部分のように、「下位送信(ホームGW)」の入力イベント型及び発生イベント属性には、「家庭内電力総計」の入力イベント型「平均電力」及び発生イベント属性「機器ID=機器A,機器B,機器C,機器D」が格納される。
また、ホームGWによって加工処理されるイベントとしては、モジュール「下位送信(電力センサX)」によって送信される機器A及び機器Bによって発生した電力イベントも挙げられる。それゆえ、図36に示す網掛け部分のように、「下位送信(ホームGW)」の入力イベント型及び発生イベント属性には、「下位送信(電力センサX)」の入力イベント型「電力」及び発生イベント属性「機器ID=機器A,機器B」が格納される。
さらに、ホームGWによって加工処理されるイベントとしては、モジュール「下位送信(電力センサY)」によって送信される機器C及び機器Dによって発生した電力イベントも挙げられる。それゆえ、図36に示す網掛け部分のように、「下位送信(ホームGW)」の入力イベント型及び発生イベント属性には、「下位送信(電力センサY)」の入力イベント型「電力」及び発生イベント属性「機器ID=機器C,機器D」が格納される。なお、このとき、「下位送信(ホームGW)」の入力イベント型には既に「電力」が格納されているので、発生イベント属性に「機器ID=機器C,機器D」が追記され、「機器ID=機器A,機器B,機器C,機器D」となる。
このように、深さ「2」のノードを送信先とする下位送信用モジュールに関する情報が格納されると、下位送信配備テーブルに格納された下位送信用モジュールのモジュールIDが特定される。そして、特定されたモジュールIDが配備されたノードを配備先ノードIDとして、配備先決定部121によって配備先情報記憶部117Aに登録される。
これによって、下位送信用モジュール「下位送信(電力センサX)」及び「下位送信(電力センサY)」が「ホームGW」であるGWノード310に配備されることとなる。また、下位送信用モジュール「下位送信(ホームGW)」が「クラウド」であるサーバノード110に配備されることとなる。
[GWノードの構成]
図37は、実施例2に係るGWノード320の機能的構成を示すブロック図である。図37に示すGWノード320は、図19に示したGWノード310に比べて、モジュール設定記憶部321によって記憶される情報の一部が相違する。また、GWノード320は、イベント一時記憶部315Aを有さず、下位送信部322を有する点が相違する。
モジュール設定記憶部321は、自装置に配備されるモジュールの設定情報を記憶する。図38は、モジュール設定記憶部321に記憶される情報の構成例を示す図である。図38に示すモジュール「下位送信(電力センサX)」の例では、機器A又は機器Bからの電力イベントが受信されると、そのイベントが下位送信部322によって電力センサXへ送信されることを示す。また、図38に示すモジュール「下位送信(電力センサY)」の例では、機器C又は機器Dからの電力イベントが受信されると、そのイベントが下位送信部322によって電力センサYへ送信されることを示す。
下位送信部322は、イベントを下位ノードに送信する処理部である。例えば、下位送信部322は、モジュール選択部314によってイベントが下位送信用モジュールに通知された場合には、当該モジュールに指定された送信先のノードに当該イベントを送信する。
[センサノードの構成]
図39は、実施例2に係るセンサノード220の機能的構成を示すブロック図である。図39に示すセンサノード220は、図23に示したセンサノード210に比べて、イベント一時記憶部315Aを有さず、下位送信部221を有する点が相違する。
下位送信部221は、イベントを下位ノードに送信する処理部である。例えば、下位送信部221は、モジュール選択部214によってイベントが下位送信用モジュールに通知された場合には、当該モジュールに指定された送信先のノードに当該イベントを送信する。
[処理の流れ]
次に、本実施例に係るセンサネットワークシステムの処理の流れについて説明する。ここでは、まず、GWノード320によって実行される(1)イベント受信時の処理を説明した後に、サーバノード120によって実行される(2)下位送信配備処理を説明することとする。なお、GWノード320によって実行される全体処理と、サーバノード120によって実行されるモジュール配備処理は、上記の実施例と同様である。
(1)イベント受信時の処理
図40は、実施例2に係るGWノード320におけるイベント受信時の処理の手順を示すフローチャートである。このイベント受信時の処理は、GWノード320の電源がON状態である限り、繰り返し実行される。
図40に示すように、下位ノードからイベントを受信した場合には(ステップS501肯定)、GWノード320は、受信したイベントを加工処理するモジュールが配備されているか否かを判定する(ステップS502)。なお、イベントを受信しなかった場合には(ステップS501否定)、GWノード320は、イベントを受信するまで待機する。
モジュールが配備されている場合には(ステップS502肯定)、GWノード320は、当該モジュールが下位送信用モジュールか否かを判定する(ステップS503)。下位送信用モジュールである場合には(ステップS503肯定)、GWノード320は、受信したイベントを下位ノードへ送信し(ステップS504)、ステップS501の処理に移行する。
一方、下位送信用モジュールでない場合には(ステップS503否定)、GWノード320は、受信したイベントの加工処理を実行する(ステップS505)。そして、GWノード320は、イベントの処理結果を上位ノードへ送信し(ステップS506)、ステップS501の処理に移行する。
また、モジュールが配備されていない場合には(ステップS502否定)、GWノード320は、受信したイベントを加工処理しないまま上位ノードへ送信し(ステップS507)、ステップS501の処理に移行する。
このようにして、GWノード320は、上記のステップS501〜ステップS507までの処理を電源がOFF状態になるまで繰り返し実行する。
なお、ここでは、GWノード320のイベント受信時の処理について説明したが、センサノード220によって実行されるイベント受信時の処理も一部を除き同様である。すなわち、センサノード220の場合には、上記のステップS501において、センサ情報もイベントとして受信する点が相違する。また、センサノード220の場合には、下位送信用モジュールが実行されない点が相違する。つまり、上記のステップS502の処理が肯定判定された場合には、センサノード220は、ステップS503の処理を実行せずに、ステップS505の処理に移行する。
(2)下位送信配備処理
続いて、本実施例に係る下位送信配備処理について説明する。図41は、実施例2に係る下位送信配備処理の手順を示すフローチャートである。この下位送信配備処理は、例えば、図27に示したモジュール配備処理が完了した場合に、ステップS310の追加集計配備処理に替えて実行される。
図41に示すように、サーバノード120は、モジュール配備処理が完了した場合に、配備先情報記憶部117Aを読み出して、読み出した配備モジュールを下位送信配備テーブルに格納する(ステップS601)。続いて、サーバノード120は、最も深いノードの深さを処理対象深さに設定する(ステップS602)。そして、サーバノード120は、処理対象深さに対応する全ノードについて下位送信配備処理が処理済みか否かが判断されるが(ステップS603)、ここでは下位送信配備処理が終了していないので(ステップS603否定)、ステップS604の処理へ移行する。
サーバノード120は、処理対象深さに対応するノードのうち、未処理のノードから処理対象となるノードを1つ選択する(ステップS604)。サーバノード120は、トポロジ記憶部112Aを参照し、選択したノードの上位ノードを特定する(ステップS605)。サーバノード120は、選択したノードを送信先とする下位送信用モジュールを、特定した上位ノードの下位送信用モジュールのモジュールIDに格納する(ステップS606)。
サーバノード120は、選択したノードに配備されたモジュールの入力イベント型及び発生イベント属性を、上位ノードの下位送信用モジュールの入力イベント型及び発生イベント属性に格納し(ステップS607)、ステップS603の処理に移行する。
このように、サーバノード120は、処理対象深さに対応する全ノードについて下位送信配備処理が終了するまで(ステップS603否定)、上記のステップS603〜ステップS607までの処理を繰り返し実行する。
そして、処理対象深さに対応する全ノードについて下位送信配備処理が終了すると(ステップS603肯定)、サーバノード120は、処理対象深さが「1」であるか否かを判定する(ステップS608)。処理対象深さが「1」でない場合には(ステップS608否定)、サーバノード120は、処理対象深さを1つ減らし(ステップS609)、ステップS603の処理に移行する。
一方、処理対象深さが「1」である場合には(ステップS608肯定)、サーバノード120は、下位送信配備処理を終了し、下位送信配備処理によって配備された下位送信用モジュールを、配備先情報記憶部117Aに格納する(ステップS610)。
そして、サーバノード120は、配備先情報記憶部117Aに格納したモジュールを配備先ノードIDに対応するノードに送信する(ステップS611)。このとき、サーバノード120は、配備されるモジュールの設定情報についても、対応するノードへ送信する。
[実施例2の効果]
上述してきたように、本実施例に係るGWノード320及びセンサノード220は、受信したイベントを、当該イベントを集計するモジュールが配備された、自ノードよりも下位に位置する下位ノードに送信する。このため、GWノード310及びセンサノード210は、イベントを確実に処理することができる。一例としては、GWノード320及びセンサノード220は、ネットワークトラフィックを増大させることなく、イベントを確実に処理することができる。
また、本実施例に係るサーバノード120は、イベントを処理するモジュールを、ネットワークに接続されたノードに配備した場合に、当該ノードの上位に位置する上位ノードに、当該モジュールによって処理されるイベントを当該ノードへ送信させる。このため、サーバノード120は、下位ノードにイベントを確実に処理させることができる。一例としては、サーバノード120は、ネットワークトラフィックを増大させることなく、下位ノードにイベントを確実に処理させることができる。
上記の実施例では、本来の収集経路とは異なる経路で収集されたイベントを,追加集計処理によって集計結果に追加する場合と、下位送信処理によって当該イベントを下位ノードに送信して集計する場合とをそれぞれ説明した。しかしながら、これらの処理を適宜選択して実行されても良い。本実施例では、本来の収集経路とは異なる経路で収集されたイベントを受信した場合に、追加集計処理と下位送信処理とが適宜選択され、実行される場合を説明する。
[サーバノードの構成]
図42は、実施例3に係るサーバノード130の機能的構成を示すブロック図である。図42に示すサーバノード130は、図2に示したサーバノード110に比べて、追加集計可否記憶部131を有する点と、配備先決定部132によって実行される処理の一部とが相違する。なお、以下では、上記の実施例と同様の機能を発揮する機能部については同一の符号を付し、その説明を省略することとする。
追加集計可否記憶部131は、集計種別ごとに、追加集計処理の可否を記憶する。
例えば、追加集計可否記憶部131は、モジュールに関する定義が開発者によって登録される際に、新規の集計種別のモジュールが登録されるごとに、追加集計処理の可否が登録される。
例えば、追加集計可否記憶部131は、集計種別、追加集計可否及び追加集計必要値が対応付けられたデータを記憶する。ここで言う「追加集計可否」は、対応する集計種別によって集計処理された集計結果に対して追加集計処理が可能か否かを示す情報を指す。また、「追加集計必要値」は、追加集計処理が実行される際に必要となる値を指す。なお、「追加集計必要値」は、例えば、追加集計処理が実行される際に必要となる値が存在しない場合には、ブランクの状態となる。
図43は、追加集計可否記憶部131に記憶される情報の構成例を示す図である。図43の例では、集計種別「最大値抽出」及び追加集計可否「可」が対応付けられている。このうち、「最大値抽出」は、集約されたイベントから所定の属性値が最大値をとるイベントを抽出する集計種別を指す。これは、「最大値抽出」によってイベントを集計するモジュールは、追加集計処理が可能であることを示す。
配備先決定部132は、図2に示した配備先決定部117に比べて、モジュール配備処理を実行する点は共通し、選択配備処理を実行する点が相違する。ここで、選択配備処理は、追加集計用モジュール及び下位送信用モジュールのいずれかを選択して配備する処理を指す。以下では、(1)選択配備処理、(2)選択配備処理の具体例をそれぞれ説明する。
(1)選択配備処理
選択配備処理について説明する。配備先決定部132は、例えば、モジュール配備処理によってモジュールを配備した後に、追加集計用モジュール及び下位送信用モジュールのいずれかを選択して配備する。一例としては、配備先決定部132は、選択配備テーブルを用いて、追加集計用モジュール及び下位送信用モジュールのいずれかを選択して配備する。この選択配備テーブルは、追加集計用モジュール及び下位送信用モジュールを配備するために、配備先決定部132によって保持されるテーブルである。
例えば、選択配備テーブルには、ノードID、深さ、配備モジュール、追加集計用モジュール及び下位送信用モジュールが対応付けられたデータが記憶される。
図44は、選択配備テーブルに格納される情報の構成例を示す図である。この図44の例では、モジュール配備処理によりモジュールが配備された段階のテーブル例を図示している。すなわち、図44に示すように、全カラムのうち配備モジュールのモジュールID、入力イベント型及び発生イベント属性が図11の配備先情報記憶部117Aから複写された段階のテーブル例が図示されている。以降の追加集計用モジュールと下位送信用モジュールとに関するカラムが埋められる遷移については、図45〜図48などを用いて後述する。
配備先決定部132は、センサネットワーク内のノードをトポロジ記憶部112Aから抽出し、抽出したノードIDを選択配備テーブルに書き込む。このとき、配備先決定部132は、トポロジ記憶部112Aに記憶されたノード間の接続情報に基づいて、ノードの深さを選択配備テーブルに書き込む。
続いて、配備先決定部132は、各ノードに配備されたモジュールのモジュールID、入力イベント型及び発生イベント属性を配備先情報記憶部117Aから抽出する。そして、配備先決定部132は、抽出結果として得られたモジュールID、入力イベント型及び発生イベント属性を、選択配備テーブルのノードIDに対応付けて、配備モジュールの該当カラムにそれぞれ書き込む。このとき、選択配備テーブルは、図44に示すように、追加集計用モジュール及び下位送信用モジュールのモジュールID、入力イベント型及び発生イベント属性のカラムがブランクの状態となる。
配備先決定部132は、処理対象となるノードを選択する。配備先決定部132は、処理対象ノードに配備された配備モジュールごとに、当該配備モジュールが追加集計可能か否かを判定する。一例としては、配備先決定部132は、モジュール定義記憶部111Bを参照し、配備モジュールごとに集計種別を特定する。そして、配備先決定部132は、追加集計可否記憶部131を参照し、特定した集計種別に対応付けられた追加集計可否が「可」である場合に、当該配備モジュールが追加集計可能と判定する。これに対して、配備先決定部132は、特定した集計種別に対応付けられた追加集計可否が「不可」である場合に、当該配備モジュールが追加集計不能と判定する。
配備モジュールが追加集計不能である場合には、配備先決定部132は、処理対象ノードの上位ノードに、自装置を送信先とする下位送信用モジュールを配備する。
一方、配備モジュールが追加集計可能である場合には、配備先決定部132は、配備モジュールの出力イベント型を入力イベント型とするモジュールが、処理対象ノードに配備されているか否かを判定する。配備モジュールの出力イベント型を入力イベント型とするモジュールが配備されていない場合には、配備先決定部132は、配備モジュールに対応する追加集計用モジュールを、処理対象ノードの上位ノードに配備する。
また、配備モジュールの出力イベント型を入力イベント型とするモジュールが配備されている場合には、配備先決定部132は、当該配備モジュールが追加集計可能か否かを判定する。当該配備モジュールが追加集計可能である場合には、配備先決定部132は、配備モジュールに対応する追加集計用モジュールを、処理対象ノードの上位ノードに配備する。これに対して、当該配備モジュールが追加集計不能である場合には、配備先決定部132は、処理対象ノードの上位ノードに、自装置を送信先とする下位送信用モジュールを配備する。
ここで、配備モジュールの出力イベント型を入力イベント型とし、かつ、追加集計不能なモジュールが処理対象ノードに配備されている場合に、当該配備モジュールに対応する追加集計用モジュールが上位ノードに配備されないのは、次の理由のためである。すなわち、当該追加集計用モジュールが配備されても、その出力イベントを入力イベントとするモジュールが実行されないからである。このため、配備モジュールの出力イベント型を入力イベント型とし、かつ、追加集計不能なモジュールが処理対象ノードに配備されている場合には、処理対象ノードを送信先とする下位送信用モジュールが配備されることとなる。
このように、配備先決定部132は、追加集計用モジュール及び下位送信用モジュールを選択しつつ、下位ノードから上位ノードへ順に配備していく。これにより、センサネットワーク内の各ノードに追加集計用モジュール及び下位送信用モジュールが配備されることとなる。
(2)選択配備処理の具体例
次に、図44〜図48を用いて、選択配備処理の具体例について説明する。図45は、図44に示した選択配備テーブルからの配備状況の遷移を示す図である。図46は、図45に示した選択配備テーブルからの配備状況の遷移を示す図である。図47は、図46に示した選択配備テーブルからの配備状況の遷移を示す図である。図48は、図47に示した選択配備テーブルからの配備状況の遷移を示す図である。
モジュール配備処理によってノードにモジュールが配備されると、配備先決定部132によってセンサネットワーク1内のノードである電力センサX、電力センサY、ホームGW及びクラウドが図5のトポロジ記憶部112Aから抽出される。そして、図44に示すように、抽出結果である電力センサX、電力センサY、ホームGW及びクラウドが追加集計配備テーブルのノードIDに格納される。
さらに、トポロジ記憶部112Aに記憶されたノード間の接続情報に基づいて、センサネットワーク1内の各ノードの深さが追加集計配備テーブルに格納される。図44に示した例では、センサネットワーク1内の全ノードの上位ノードである「クラウド」の深さが「1」となる。そして、「クラウド」の下位ノードである「ホームGW」の深さが「2」となり、「GWノード」の下位ノードである「電力センサX」及び「電力センサY」の深さがそれぞれ「3」となる。
センサネットワーク1のうち深さが最も深いノードの1つは、深さ「3」の「電力センサX」である。この「電力センサX」に配備されたモジュール「平均電力計算」に対応する集計種別は、モジュール定義記憶部111Bから「平均値計算」と特定される。この「平均値計算」には、追加集計可否記憶部131において追加集計可否「可」が対応付けられている。よって、「電力センサX」に配備されたモジュール「平均電力計算」は、追加集計可能と判定される。
ここで、「電力センサX」には、「平均電力計算」の出力イベント型「平均電力」を入力イベント型とするモジュールが配備されていない。それゆえ、図45に示す網掛け部分のように、「電力センサX」の上位ノードである「ホームGW」の追加計算用モジュールのモジュールIDに、「平均電力計算」の追加集計用モジュールである「平均電力追加計算」が格納される。このとき、「電力センサX」の配備モジュールに対応する入力イベント型「電力」及び発生イベント属性「機器ID=機器A,機器B」が、「ホームGW」の追加集計用モジュールに対応する入力イベント型及び発生イベント属性に格納される。
また、「電力センサX」と同じく深さ「3」の「電力センサY」についても、モジュール「平均電力計算」が配備されているので、同様に、追加集計用モジュール「平均電力追加計算」が格納される。この「電力センサY」の上位ノードは「ホームGW」であるが、「ホームGW」の追加集計用モジュールのモジュールIDは既に格納されている。このため、図46に示す網掛け部分のように、「電力センサY」の配備モジュールに対応する発生イベント属性「機器ID=機器C,機器D」が、「ホームGW」の追加集計用モジュールに対応する発生イベント属性にさらに格納される。
このように、深さ「3」のノードに配備されたモジュールに対応する追加集計用モジュールに関する情報が書き込まれると、深さ「2」のノードである「ホームGW」に配備されたモジュールについて処理を行う。図46に示す例では、「ホームGW」には、モジュール「使用電力差分検出」と、追加集計用モジュール「平均電力追加計算」とが配備されている。ここでは、この「使用電力差分検出」は、追加集計不能なモジュールの一例である。この場合、「ホームGW」の上位ノードは「クラウド」である。それゆえ、図47に示す網掛け部分のように、ホームGWを送信先とする下位送信用モジュール「下位送信(ホームGW)」が「クラウド」の下位送信用モジュールとして配備先決定部132によって格納される。このとき、「ホームGW」の配備モジュールの入力イベント型「平均電力」及び発生イベント属性「機器ID=機器A,機器B,機器C,機器D」が、「クラウド」の「下位送信(ホームGW)」の入力イベント型及び発生イベント属性に格納される。
また、「ホームGW」には、追加集計用モジュールとして「平均電力追加計算」が格納されている。この「平均電力追加計算」の集計種別は、モジュール定義記憶部111Bから「平均値計算」と特定される。この「平均値計算」には、追加集計可否記憶部131において追加集計可否「可」が対応付けられている。よって、追加計算用モジュール「平均電力追加計算」は、追加集計可能と判定される。
ここで、「ホームGW」には、「平均電力追加計算」の出力イベント型「平均電力」を入力イベント型とするモジュール「使用電力差分検出」が配備されている。また、この「使用電力差分検出」は、追加集計不能である。それゆえ、上位ノードである「クラウド」には、「平均電力追加計算」に対応する追加集計用モジュールが配備されるのではなく、下位送信用モジュールが配備されることとなる。ここで、「クラウド」には、既に「ホームGW」を送信先とする下位送信用モジュールが登録されている。したがって、図48に示す網掛け部分のように、「平均電力追加計算」の入力イベント型「電力」及び発生イベント属性「機器ID=機器A,機器B,機器C,機器D」が、「下位送信(ホームGW)」の入力イベント型及び発生イベント属性に格納されることとなる。
このように、深さ「2」のノードに配備されたモジュールに対応する追加集計用モジュール及び下位送信用モジュールに関する情報が格納されると、選択配備テーブルに格納された追加集計用モジュール及び下位送信用モジュールのモジュールIDが特定される。そして、特定されたモジュールIDが配備されたノードを配備先ノードIDとして、配備先決定部132によって配備先情報記憶部117Aに登録される。
これによって、追加集計用モジュール「平均電力追加計算」が「ホームGW」であるGWノード310に配備され、下位送信用モジュール「下位送信(ホームGW)」が「クラウド」であるサーバノード110に配備されることとなる。
[GWノードの構成]
図49は、実施例3に係るGWノード330の機能的構成を示すブロック図である。図49に示すGWノード330は、図19に示したGWノード310に比べて、モジュール設定記憶部331によって記憶される情報の一部が相違する。また、GWノード330は、図37に示した下位送信部322を有する点が相違する。
モジュール設定記憶部331は、自装置に配備されるモジュールの設定情報を記憶する。例えば、モジュール設定記憶部331は、図20に示したように、追加集計用モジュール「平均電力追加計算」の設定情報を記憶する。また、例えば、図38に示したように、下位送信用モジュール「下位送信(電力センサX)」の設定情報を記憶する。
[センサノードの構成]
図50は、実施例3に係るセンサノード230の機能的構成を示すブロック図である。図50に示すセンサノード230は、図23に示したセンサノード210に比べて、下位送信部221を有する点が相違する。なお、下位送信部221の説明は、図39に示した下位送信部221の説明と同様である。
[処理の流れ]
次に、本実施例に係るセンサネットワークシステムの処理の流れについて説明する。ここでは、まず、GWノード330によって実行される(1)イベント受信時の処理を説明した後に、サーバノード130によって実行される(2)選択配備処理を説明することとする。なお、GWノード330によって実行される全体処理と、サーバノード130によって実行されるモジュール配備処理は、上記の実施例1と同様である。
(1)イベント受信時の処理
図51は、実施例3に係るGWノード330におけるイベント受信時の処理の手順を示すフローチャートである。このイベント受信時の処理は、GWノード330の電源がON状態である限り、繰り返し実行される。
図51に示すように、下位ノードからイベントを受信した場合には(ステップS701肯定)、GWノード330は、受信したイベントを加工処理するモジュールが配備されているか否かを判定する(ステップS702)。なお、イベントを受信しなかった場合には(ステップS701否定)、GWノード330は、イベントを受信するまで待機する。
モジュールが配備されている場合には(ステップS702肯定)、GWノード330は、当該モジュールが下位送信用モジュールか否かを判定する(ステップS703)。下位送信用モジュールでない場合には(ステップS703否定)、GWノード330は、受信したイベントに対応するイベントが一時記憶されているか否かを判定する(ステップS704)。
一時記憶されている場合には(ステップS704肯定)、GWノード330は、一時記憶されたイベントをイベント一時記憶部315Aから取得する(ステップS705)。そして、GWノード330は、ステップS702で配備されていると判定されたモジュールが追加集計用モジュールか否かを判定する(ステップS706)。なお、一時記憶されていない場合には(ステップS704否定)、GWノード330は、ステップS706の処理に移行する。
追加集計用モジュールである場合には(ステップS706肯定)、GWノード330は、受信したイベントの対象時間を取得する(ステップS707)。そして、GWノード330は、取得した対象時間を含むイベントがモジュール実行部315又はイベント送信部316にあるか否かを判定する(ステップS708)。モジュール実行部315又はイベント送信部316にイベントがある場合には(ステップS708肯定)、GWノード330は、当該イベントに受信したイベントを追加して追加集計処理を実行する(ステップS709)。このとき、ステップS705の処理において、イベント一時記憶部315Aから取り出されたイベントがある場合には、GWノード330は、当該イベントも追加して追加集計処理を実行する。
続いて、GWノード330は、イベントの処理結果を新たなイベントとして上位ノードへ送信する(ステップS710)。そして、GWノード330は、送信履歴を記録し(ステップS711)、ステップS701の処理に移行する。
一方、モジュール実行部315又はイベント送信部316にイベントがない場合には(ステップS708否定)、GWノード330は、送信履歴を参照し、対象時間を含むイベントが送信済みか否かを判定する(ステップS712)。送信済みである場合には(ステップS712肯定)、GWノード330は、受信したイベントを加工処理しないまま上位ノードへ送信し(ステップS713)、ステップS711の処理に移行する。また、送信済みでない場合には(ステップS712否定)、GWノード330は、受信したイベントを一時記憶し(ステップS714)、ステップS701の処理に移行する。
また、モジュールが追加集計用モジュールでない場合には(ステップS706否定)、GWノード330は、受信したイベントの加工処理を実行し(ステップS715)、ステップS710の処理に移行する。一例としては、追加集計処理及び下位送信処理以外の加工処理が実行される。
また、モジュールが下位送信用モジュールである場合には(ステップS703肯定)、GWノード330は、受信したイベントを下位ノードへ送信し(ステップS716)、ステップS701の処理に移行する。
また、モジュールが配備されていない場合には(ステップS702否定)、GWノード330は、受信したイベントを加工処理しないまま上位ノードへ送信し(ステップS717)、ステップS701の処理に移行する。
このようにして、GWノード330は、上記のステップS701〜ステップS717までの処理を電源がOFF状態になるまで繰り返し実行する。
なお、ここでは、GWノード330のイベント受信時の処理について説明したが、センサノード230によって実行されるイベント受信時の処理も一部を除き同様である。すなわち、センサノード230の場合には、上記のステップS701において、センサ情報もイベントとして受信する点が相違する。また、センサノード230の場合には、下位送信用モジュールが実行されない点が相違する。つまり、上記のステップS702の処理が肯定判定された場合には、センサノード230は、ステップS703の処理を実行せずに、ステップS704の処理に移行する。
(2)選択配備処理
続いて、本実施例に係る選択配備処理について説明する。図52及び図53は、実施例3に係る選択配備処理の手順を示すフローチャートである。この選択配備処理は、例えば、図27に示したモジュール配備処理が完了した場合に、ステップS310の追加集計配備処理に替えて実行される。
図52に示すように、サーバノード130は、モジュール配備処理が完了した場合に、配備先情報記憶部117Aを読み出して、読み出した配備モジュールを追加集計配備テーブルに格納する(ステップS801)。続いて、サーバノード130は、最も深いノードの深さを処理対象深さに設定する(ステップS802)。そして、サーバノード130は、処理対象深さに対応する全ノードについて選択配備処理が処理済みか否かが判断されるが(ステップS803)、ここでは選択配備処理が終了していないので(ステップS803否定)、ステップS804の処理へ移行する。
サーバノード130は、処理対象深さに対応するノードのうち、未処理のノードから処理対象となるノードを1つ選択する(ステップS804)。サーバノード130は、モジュール定義記憶部111Bを参照し、選択したノードに配備されたモジュールを特定する(ステップS805)。そして、サーバノード130は、図53のステップS806の処理に移行する。
図53に示すように、サーバノード130は、特定したモジュールが追加集計可能か否かを判定する(ステップS806)。特定したモジュールが追加集計可能である場合には(ステップS806肯定)、サーバノード130は、特定したモジュールの出力イベント型を入力イベント型とするモジュールが、選択したノードに配備されているか否かを判定する(ステップS807)。
特定したモジュールの出力イベント型を入力イベント型とするモジュールが配備されている場合には(ステップS807肯定)、サーバノード130は、当該モジュールが追加集計可能か否かを判定する(ステップS808)。
追加集計可能である場合には(ステップS808肯定)、サーバノード130は、モジュール定義記憶部111Bを参照し、特定したモジュールの追加集計用モジュールを特定する(ステップS809)。
続いて、サーバノード130は、トポロジ記憶部112Aを参照し、選択したノードの上位ノードを特定する(ステップS810)。そして、サーバノード130は、特定した上位ノードに、特定した追加集計用モジュールのモジュールIDが格納済みか否かを判定する(ステップS811)。
格納済みではない場合には(ステップS811否定)、サーバノード130は、特定した追加集計用モジュールのモジュールIDを、上位ノードのモジュールIDに格納する(ステップS812)。そして、サーバノード130は、特定したモジュールの入力イベント型及び発生イベント属性を、上位ノードの追加集計用モジュールの入力イベント型及び発生イベント属性に格納し(ステップS813)、図52のステップS803の処理に移行する。
一方、格納済みである場合には(ステップS811肯定)、サーバノード130は、特定したモジュールの発生イベント属性を、上位ノードの追加集計用モジュールの発生イベント属性に格納し(ステップS814)、ステップS803の処理に移行する。
また、特定したモジュールの出力イベント型を入力イベント型とするモジュールが追加集計不能である場合には(ステップS808否定)、サーバノード130は、トポロジ記憶部112Aを参照し、選択したノードの上位ノードを特定する(ステップS815)。そして、サーバノード130は、選択したノードを送信先とする下位送信用モジュールを、特定した上位ノードの下位送信用モジュールのモジュールIDに格納する(ステップS816)。
続いて、サーバノード130は、選択したノードに配備されたモジュールの入力イベント型及び発生イベント属性を、上位ノードの下位送信用モジュールの入力イベント型及び発生イベント属性に格納し(ステップS817)、図52のステップS803の処理に移行する。
また、特定したモジュールが追加集計不能である場合には(ステップS806否定)、サーバノード130は、ステップS815の処理に移行する。
このように、サーバノード130は、処理対象深さに対応する全ノードについて追加集計配備処理が終了するまで(ステップS803否定)、上記のステップS803〜ステップS817までの処理を繰り返し実行する。
そして、処理対象深さに対応する全ノードについて選択配備処理が終了すると(ステップS803肯定)、サーバノード130は、処理対象深さが「1」であるか否かを判定する(ステップS818)。処理対象深さが「1」でない場合には(ステップS818否定)、サーバノード130は、処理対象深さを1つ減らし(ステップS819)、ステップS803の処理に移行する。
一方、処理対象深さが「1」である場合には(ステップS818肯定)、サーバノード130は、選択配備処理を終了し、選択配備処理によって配備された追加集計用モジュール及び下位送信用モジュールを、配備先情報記憶部117Aに格納する(ステップS820)。
そして、サーバノード130は、配備先情報記憶部117Aに格納したモジュールを配備先ノードIDに対応するノードに送信する(ステップS821)。このとき、サーバノード130は、配備されるモジュールの設定情報についても、対応するノードへ送信する。
[実施例3の効果]
上述してきたように、本実施例に係るGWノード330及びセンサノード230は、受信したイベントが、自ノードに配備されているモジュールの処理対象でない場合には、受信したイベントを自ノードよりも上位に位置する上位ノードに送信する。また、GWノード330及びセンサノード230は、複数のイベントの集計結果にイベントを追加集計する追加集計処理を実行する追加集計用モジュールが自ノードに配備されており、下位ノードからイベントを受信した場合には、次のように処理する。つまり、GWノード330及びセンサノード230は、そのイベントを集計結果に追加集計する追加集計処理を追加集計用モジュールに実行させる。GWノード330及びセンサノード230は、受信したイベントを、当該イベントを集計するモジュールが配備された、自ノードより下位のノードに送信する。このため、GWノード330及びセンサノード230は、ネットワークトラフィックを抑制しつつ、イベントを確実に処理することができる。
また、本実施例に係るサーバノード130は、モジュールをノードに配備した場合に、可否記憶部を参照し、配備されたモジュールが追加集計可能であれば、次のように処理する。つまり、サーバノード130は、モジュールによって集計された集計結果にイベントを追加集計する追加集計処理を実行する追加集計用モジュールを特定する。また、サーバノード130は、特定した追加集計用モジュールを、モジュールが配備されたノードの上位に位置する上位ノードに配備する。また、サーバノード130は、配備されたモジュールが追加集計可能でなければ、当該モジュールによって処理されるイベントを、当該モジュールが配備されたノードへ送信させる。このため、サーバノード130は、ネットワークトラフィックを抑制しつつ、下位ノードにイベントを確実に処理させることができる。
上記の実施例1〜3では、本来の収集経路とは異なる経路で収集されたイベントを、追加集計用モジュール又は下位送信用モジュールで処理する場合を説明した。しかしながら、これらの処理が繰り返し実行される場合には、モジュールを上位ノードへ再配備させても良い。そこで、本実施例では、追加集計用モジュール及び下位送信用モジュールの処理が繰り返し実行される頻度に応じて、モジュールを上位ノードへ再配備させる場合を説明する。
本実施例では、追加集計用モジュール及び下位送信用モジュールの処理が実行される頻度に応じて再配備させる処理を、上記の実施例3に適用する場合を説明する。しかしながら、本実施例で説明する処理は、上記の実施例1及び2に対して適用可能である。なお、本実施例に係るGWノード及びセンサノードの構成は、実施例3と同様である。
[サーバノードの構成]
図54は、実施例4に係るサーバノード140の機能的構成を示すブロック図である。図54に示すサーバノード140は、図2に示したサーバノード110に比べて、追加集計可否記憶部131及び頻度記憶部141を有する点と、配備先決定部142によって実行される処理の一部とが相違する。なお、以下では、上記の実施例と同様の機能を発揮する機能部については同一の符号を付し、その説明を省略することとする。
頻度記憶部141は、配備されたモジュールが実行される頻度を記憶する記憶部である。例えば、頻度記憶部141は、サーバノード140においてモジュールが実行された頻度を、当該モジュールで処理されたイベントの属性値ごとに記憶する。また、例えば、頻度記憶部141は、下位ノードにおいてモジュールが実行された頻度を、当該モジュールで処理されたイベントの属性値ごとに記憶する。
例えば、頻度記憶部141は、サーバノード140においてモジュールが実行された場合に、当該モジュールに関する情報が当該モジュールによって処理されたイベントの属性値ごとに登録される。また、例えば、頻度記憶部141は、下位ノードにおいてモジュールが実行された場合に、当該モジュールに関する情報が下位ノードから通知され、当該モジュールによって処理されたイベントの属性値ごとに登録される。
例えば、頻度記憶部141は、ノードID、深さ、配備モジュール、追加集計用モジュール及び下位送信用モジュールが対応付けられたデータを記憶する。このうち、配備モジュール、追加集計用モジュール及び下位送信用モジュールには、モジュールID、入力イベント型及び発生イベント属性が対応付けられている。また、このうち、発生イベント属性には、属性名、属性値及び頻度が対応付けられている。ここで言う「頻度」は、単位時間においてモジュールが実行された回数が、当該モジュールによって処理されたイベントの属性値ごとにカウントされた値を指す。例えば、「頻度」は、1分あたりの実行回数によって示される。
図55は、頻度記憶部141に記憶される情報の構成例を示す図である。図55の「クラウド」には、属性値「機器A」を含む平均電力イベントが下位送信用モジュール「下位送信(ホームGW)」によって送信された頻度が「1」である例を示す。また、図55の「ホームGW」には、属性値「機器B」を含む電力イベントが追加集計用モジュール「平均電力追加計算」によって追加集計された頻度が「20」である例を示す。また、図55の「電力センサX」には、属性値「機器A」を含む電力イベントがモジュール「平均電力計算」によって集計された頻度が「15」である例を示す。
配備先決定部142は、モジュール配備処理及び選択配備処理を実行する点は配備先決定部132と共通し、再配備処理を実行する点が相違する。ここで、再配備処理は、下位ノードに配備済の配備モジュールを、当該下位ノードの上位ノードへ移動させる処理を指す。なお、ここで言う「配備モジュール」は、例えば、図55に示した配備モジュールのモジュールIDを指し、追加集計用モジュール及び下位送信用モジュールのモジュールIDを指すものではない。
配備先決定部142は、センサネットワーク内に収容される各ノードに配備された配備モジュールごとに、当該配備モジュールの頻度と、追加集計用モジュール又は下位送信用モジュールの頻度とを比較する。例えば、配備先決定部142は、当該モジュールの頻度が、追加集計用モジュール又は下位送信用モジュールの頻度に基づく閾値より小さい場合に、当該配備モジュールを再配備対象とする。配備先決定部142は、再配備対象の配備モジュールが現在配備されているノードから当該配備モジュールを削除するとともに、当該ノードの上位ノードへ当該配備モジュールを配備する。なお、閾値は、開示技術を利用する利用者が任意の値を設定してよい。
一態様として、配備先決定部142は、図55に示した「電力センサX」の配備モジュール「平均電力計算」について再配備処理を実行する場合を説明する。ここでは、配備モジュールの頻度が上位ノードの追加集計用モジュールの頻度以下である場合に、再配備対象とするものとする。
この場合、この配備モジュール「平均電力計算」に対応する追加計算用モジュールは、「ホームGW」の追加計算用モジュール「平均電力追加計算」である。ここで、配備モジュール「平均電力計算」の属性値「機器A」の頻度「15」は、追加計算用モジュール「平均電力追加計算」の属性値「機器A」の頻度「10」より大きい。また、配備モジュール「平均電力計算」の属性値「機器B」の頻度「15」は、追加計算用モジュール「平均電力追加計算」の属性値「機器B」の頻度「20」より小さい。このように、配備モジュール「平均電力計算」については、いずれの属性値についても、配備モジュールの頻度が上位ノードの追加集計用モジュールの頻度以下ではないので、配備先決定部142は、配備モジュール「平均電力計算」を再配備対象としない。なお、いずれかの属性値について、配備モジュールの頻度が上位ノードの追加集計用モジュールの頻度以下である場合には、配備先決定部142は、配備モジュール「平均電力計算」を再配備対象とする。
また、他の態様として、配備先決定部142は、図55に示した「ホームGW」の配備モジュール「使用電力差分検出」について再配備処理を実行する場合を説明する。ここでは、配備モジュールの頻度が上位ノードの改装信用モジュールの頻度の2倍以下である場合に、再配備対象とするものとする。
この場合、この配備モジュール「使用電力差分検出」に対応する下位送信用モジュールは、「クラウド」の下位送信用モジュール「下位送信(ホームGW)」である。ここで、配備モジュール「使用電力差分検出」の属性値「機器A〜C」の頻度は、下位送信用モジュール「下位送信(ホームGW)」の属性値「機器A〜C」の頻度の2倍より大きい。しかしながら、配備モジュール「使用電力差分検出」の属性値「機器D」の頻度「30」は、下位送信用モジュール「下位送信(ホームGW)」の属性値「機器D」の頻度「16」の2倍以下である。この場合、配備先決定部142は、配備モジュール「使用電力差分検出」を再配備対象とする。なお、いずれの属性値についても、配備モジュールの頻度が上位ノードの追加集計用モジュールの頻度の2倍以下ではない場合には、配備先決定部142は、配備モジュール「使用電力差分検出」を再配備対象としない。
このように、配備先決定部142は、各ノードに配備された配備モジュールについて、当該配備モジュールの属性値ごとに、配備モジュールの頻度と追加集計用モジュール又は下位送信用モジュールの頻度とを比較することで、再配備を実行する。
なお、配備モジュールの再配備が実行された場合には、配備先決定部142は、当該配備モジュールに対応する追加集計用モジュール及び下位送信用モジュールの再配備も実行する。一例としては、配備先決定部142は、再配備されたモジュールを処理対象として、上述した選択配備処理を実行することで、追加集計用モジュール及び下位送信用モジュールの再配備を実行する。
[処理の流れ]
次に、本実施例に係るセンサネットワークシステムの処理の流れについて説明する。図56は、実施例4に係るサーバノード140における再配備処理の手順を示すフローチャートである。この再配備処理は、例えば、サーバノード140の電源がON状態である限り、所定タイミングで繰り返し実行される。
図56に示すように、サーバノード140は、最も深いノードの深さを処理対象深さに設定する(ステップS901)。そして、サーバノード140は、処理対象深さに対応する全ノードについて再配備処理が処理済みか否かが判断されるが(ステップS902)、ここでは再配備処理が終了していないので(ステップS902否定)、ステップS903の処理へ移行する。
サーバノード140は、処理対象深さに対応するノードに配備された配備モジュールのうち、全ての配備モジュールについて処理済みか否かを判定する(ステップS903)。未処理の配備モジュールがある場合には(ステップS903否定)、サーバノード140は、配備モジュールを1つ選択する(ステップS904)。なお、ここで言う「配備モジュール」は、図55の配備モジュールのモジュールIDに対応するものであり、追加集計用モジュール及び下位送信用モジュールのモジュールIDを含まないものとする。
続いて、サーバノード140は、選択した配備モジュールの全ての入力イベント型の属性値について処理済みか否かを判定する(ステップS905)。未処理の属性値がある場合には(ステップS905否定)、サーバノード140は、未処理の属性値を1つ選択する(ステップS906)。そして、サーバノード140は、選択した配備モジュールに対応する追加集計用モジュールが上位ノードに配備されているか否かを判定する(ステップS907)。
追加集計用モジュールが上位ノードに配備されていない場合には(ステップS907否定)、サーバノード140は、配備モジュールの頻度と上位ノードの下位送信用モジュールの頻度と比較する(ステップS908)。そして、配備モジュールの頻度が上位ノードの下位送信用モジュールの頻度の2倍以下である場合には(ステップS909肯定)、サーバノード140は、選択した配備モジュールを上位ノードへの再配備対象とする(ステップS910)。
一方、配備モジュールの頻度が上位ノードの下位送信用モジュールの頻度の2倍以下でない場合には(ステップS909否定)、サーバノード140は、ステップS905の処理に移行する。
また、追加集計用モジュールが上位ノードに配備されている場合には(ステップS907肯定)、サーバノード140は、配備モジュールの頻度と上位ノードの追加集計用モジュールの頻度と比較する(ステップS911)。そして、配備モジュールの頻度が上位ノードの追加集計用モジュールの頻度以下である場合には(ステップS912肯定)、サーバノード140は、ステップS910の処理に移行する。なお、配備モジュールの頻度が上位ノードの追加集計用モジュールの頻度以下でない場合には(ステップS912否定)、サーバノード140は、ステップS905の処理に移行する。
また、選択した配備モジュールの全ての入力イベント型の属性値について処理済みである場合には(ステップS905肯定)、サーバノード140は、ステップS904の処理に移行する。
処理対象深さに対応するノードに配備された配備モジュールのうち、全ての配備モジュールについて処理済みである場合には(ステップS903肯定)、サーバノード140は、ステップS902の処理に移行する。
このように、サーバノード140は、処理対象深さに対応する全ノードについて再配備処理が終了するまで(ステップS902肯定)、上記のステップS903〜ステップS912までの処理を繰り返し実行する。
そして、処理対象深さに対応する全ノードについて再配備処理が終了すると(ステップS902肯定)、サーバノード140は、処理対象深さが「1」であるか否かを判定する(ステップS913)。処理対象深さが「1」でない場合には(ステップS913否定)、サーバノード140は、処理対象深さを1つ減らし(ステップS914)、ステップS902の処理に移行する。
一方、処理対象深さが「1」である場合には(ステップS913肯定)、サーバノード140は、再配備処理を終了し、再配備対象となったモジュールを上位ノードへ再配備する(ステップS915)。
そして、サーバノード140は、配備先情報記憶部117Aに格納したモジュールを配備先ノードIDに対応するノードに送信する。このとき、サーバノード140は、配備されるモジュールの設定情報についても、対応するノードへ送信する。
[実施例4の効果]
上述してきたように、本実施例に係るサーバノード140は、モジュールによる処理の実行頻度を示す第1の頻度と、当該第1の頻度で実行された処理により出力された集計結果にイベントを追加集計する追加集計処理の実行頻度を示す第2の頻度とを比較する。サーバノード140は、比較した結果が所定の条件を満たした場合に、第1の頻度で実行されたモジュールを、当該モジュールが配備されたノードの上位ノードに配備する。このため、サーバノード140は、追加集計用モジュールの実行頻度を減らすことができる結果、各ノードにかかる処理負荷を抑制することができる。
また、本実施例に係るサーバノード140は、モジュールによって処理が実行された頻度を示す第1の頻度と、第1の頻度で実行された処理の対象であるイベントが下位ノードに送信された頻度を示す第3の頻度とを比較する。サーバノード140は、比較した結果が所定の条件を満たした場合に、第1の頻度で実行されたモジュールを、当該モジュールが配備されたノードの上位ノードに配備する。このため、サーバノード140は、イベントが下位ノードに送信される頻度を減らすことができる結果、各ノードにかかる処理負荷を抑制するとともに、ネットワークトラフィックを抑制することができる。
ところで、本実施例では、追加集計用モジュール又は下位送信用モジュールの実行頻度に応じて再配備される処理が、実施例3に記載の構成に適用される場合を説明したが、本発明はこれに限定されるものではなく、実施例1又は2に記載の構成に適用されても良い。
また、本実施例1〜3において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上述文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
また、図2,19,23,30,37,39,42,49,50,54のサーバノード110〜140、GWノード310〜330、センサノード210〜230の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、上記のノードの分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
[プログラム]
図57は、イベント処理プログラムを実行するコンピュータの一例を示す図である。図57に示すように、コンピュータ400は、各種演算処理を実行するCPU401と、ユーザからデータの入力を受け付ける入力装置402と、モニタ403とを有する。また、コンピュータ400は、記憶媒体からプログラム等を読み取る媒体読み取り装置404と、他の装置と接続するためのインターフェース装置405と、他の装置と無線により接続するための無線通信装置406とを有する。また、コンピュータ400は、各種情報を一時記憶するRAM(Random Access Memory)407と、ハードディスク装置408とを有する。また、各装置401〜408は、バス409に接続される。なお、イベント収集プログラムを実行するコンピュータについても、コンピュータ400と同様の構成を有する。
ハードディスク装置408には、上記の各図に示した各処理部と同様の機能を有するイベント処理プログラム又はイベント収集プログラムが記憶される。イベント処理プログラムの一例としては、図19に示したモジュール選択部314、モジュール実行部315及びイベント送信部316の各処理部と同様の機能を有するプログラムが記憶される。また、イベント処理プログラムの他の例としては、図37に示したモジュール選択部314及び下位送信部322の各処理部と同様の機能を有するプログラムが記憶される。イベント収集プログラムの一例としては、図2又は図30に示した配備先決定部117と同様の機能を有するプログラムが記憶される。また、ハードディスク装置408には、イベント処理プログラム又はイベント収集プログラムを実現するための各種データが記憶される。
CPU401は、ハードディスク装置408に記憶された各プログラムを読み出して、RAM407に展開して実行することで、各種の処理を行う。また、これらのプログラムは、コンピュータを上記した各処理部として機能させることができる。
なお、上記のイベント処理プログラム又はイベント収集プログラムは、必ずしもハードディスク装置408に記憶されている必要はない。例えば、コンピュータが読み取り可能な記録媒体に記憶されたプログラムを、コンピュータ400が読み出して実行するようにしても良い。コンピュータが読み取り可能な記録媒体は、例えば、CD−ROMやDVDディスク、USB(Universal Serial Bus)メモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリ、ハードディスクドライブ等が対応する。また、公衆回線、インターネット、LAN(Local Area Network)、WAN(Wide Area Network)等に接続された装置にこのプログラムを記憶させておき、コンピュータ400がこれらからプログラムを読み出して実行するようにしても良い。
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)複数のノードによって実行されるイベント処理方法であって、
前記ノードが、
受信したイベントが、自ノードに配備されているモジュールの処理対象でない場合には、受信したイベントを自ノードよりも上位に位置する上位ノードに送信し、
複数のイベントの集計結果にイベントを追加集計する追加集計処理を実行する追加集計用モジュールが自ノードに配備されており、自ノードよりも下位に位置する下位ノードからイベントを受信した場合には、当該イベントを集計結果に追加集計する追加集計処理を前記追加集計用モジュールに実行させる
ことを特徴とするイベント処理方法。
(付記2)受信したイベントを、当該イベントを集計するモジュールが配備された下位ノードに送信することを特徴とする付記1に記載のイベント処理方法。
(付記3)前記集計結果を上位ノードに送信済みか否かを示す送信履歴を参照し、前記下位ノードから受信したイベントを除いて集計された集計結果が送信済みであるか否かを判定し、
前記集計結果が上位ノードに送信済みである場合に、受信したイベントを当該上位ノードに送信し、
前記集計結果が上位ノードに送信済みでない場合に、受信したイベントを記憶するイベント記憶部に格納し、
前記集計結果を受信した場合に、受信した当該集計結果に、前記イベント記憶部に記憶されたイベントを追加集計する追加集計処理を追加集計用モジュールに実行させることを特徴とする付記1または2に記載のイベント処理方法。
(付記4)複数のノードによって実行されるイベント処理方法であって、
前記ノードが、
イベントを受信し、
受信したイベントを、当該イベントを集計するモジュールが配備された、自ノードよりも下位に位置する下位ノードに送信する
ことを特徴とするイベント処理方法。
(付記5)コンピュータによって実行されるイベント収集方法であって、
前記コンピュータが、
イベントを処理するモジュールを、ネットワークに接続されたノードに配備した場合に、当該モジュールによって集計された集計結果にイベントを追加集計する追加集計処理を実行する追加集計用モジュールを特定し、
特定した前記追加集計用モジュールを、前記モジュールが配備されたノードの上位に位置する上位ノードに配備する
ことを特徴とするイベント収集方法。
(付記6)前記モジュールを前記ノードに配備した場合に、前記モジュールごとに追加集計可能か否かを示す情報を記憶する可否記憶部を参照し、配備された前記モジュールが追加集計可能であれば、当該モジュールによって集計された集計結果にイベントを追加集計する追加集計処理を実行する追加集計用モジュールを特定し、
配備された前記モジュールが追加集計可能でなければ、当該モジュールによって処理されるイベントを、当該モジュールが配備されたノードへ送信させることを特徴とする付記5に記載のイベント収集方法。
(付記7)前記モジュールによって処理が実行された頻度を示す第1の頻度と、当該第1の頻度で実行された処理によって出力された集計結果に所定のイベントを追加集計する追加集計処理が実行された頻度を示す第2の頻度とを比較し、
比較した結果が所定の条件を満たした場合に、前記モジュールを、当該モジュールが配備されたノードの上位ノードに配備することを特徴とする付記5または6に記載のイベント収集方法。
(付記8)前記モジュールによって処理が実行された頻度を示す第1の頻度と、当該第1の頻度で実行された処理の対象であるイベントが下位側のノードに送信された頻度を示す第3の頻度とを比較し、
比較した結果が所定の条件を満たした場合に、前記処理を実行するモジュールを、当該モジュールが配備されたノードの上位ノードに配備することを特徴とする付記7に記載のイベント収集方法。
(付記9)コンピュータによって実行されるイベント収集方法であって、
コンピュータが、
イベントを処理するモジュールを、ネットワークに接続されたノードに配備し、
前記モジュールを前記ノードに配備した場合に、当該ノードの上位に位置する上位ノードに、当該モジュールによって処理されるイベントを当該ノードへ送信させる
ことを特徴とするイベント収集方法。
(付記10)コンピュータに、
受信したイベントが、自ノードに配備されているモジュールの処理対象でない場合には、受信したイベントを自ノードよりも上位に位置する上位ノードに送信し、
複数のイベントの集計結果にイベントを追加集計する追加集計処理を実行する追加集計用モジュールが自ノードに配備されており、自ノードよりも下位に位置する下位ノードからイベントを受信した場合には、当該イベントを集計結果に追加集計する追加集計処理を前記追加集計用モジュールに実行させる
各処理を実行させることを特徴とするイベント処理プログラム。
(付記11)受信したイベントを、当該イベントを集計するモジュールが配備された下位ノードに送信する処理をさらに実行させることを特徴とする付記10に記載のイベント処理プログラム。
(付記12)前記集計結果を上位ノードに送信済みか否かを示す送信履歴を参照し、前記下位ノードから受信したイベントを除いて集計された集計結果が送信済みであるか否かを判定し、
前記集計結果が上位ノードに送信済みである場合に、受信したイベントを当該上位ノードに送信し、
前記集計結果が上位ノードに送信済みでない場合に、受信したイベントを記憶するイベント記憶部に格納し、
前記集計結果を受信した場合に、受信した当該集計結果に、前記イベント記憶部に記憶されたイベントを追加集計する追加集計処理を追加集計用モジュールに実行させる各処理をさらに実行させることを特徴とする付記10または11に記載のイベント処理プログラム。
(付記13)コンピュータに、
イベントを受信し、
受信したイベントを、当該イベントを集計するモジュールが配備された、自ノードよりも下位に位置する下位ノードに送信する
各処理を実行させることを特徴とするイベント処理プログラム。
(付記14)コンピュータに、
イベントを処理するモジュールを、ネットワークに接続されたノードに配備した場合に、当該モジュールによって集計された集計結果にイベントを追加集計する追加集計処理を実行する追加集計用モジュールを特定し、
特定した前記追加集計用モジュールを、前記モジュールが配備されたノードの上位に位置する上位ノードに配備する
各処理を実行させることを特徴とするイベント収集プログラム。
(付記15)前記モジュールを前記ノードに配備した場合に、前記モジュールごとに追加集計可能か否かを示す情報を記憶する可否記憶部を参照し、配備された前記モジュールが追加集計可能であれば、当該モジュールによって集計された集計結果にイベントを追加集計する追加集計処理を実行する追加集計用モジュールを特定し、
配備された前記モジュールが追加集計可能でなければ、当該モジュールによって処理されるイベントを、当該モジュールが配備されたノードへ送信させる各処理をさらに実行させることを特徴とする付記14に記載のイベント収集プログラム。
(付記16)前記モジュールによって処理が実行された頻度を示す第1の頻度と、当該第1の頻度で実行された処理によって出力された集計結果に所定のイベントを追加集計する追加集計処理が実行された頻度を示す第2の頻度とを比較し、
比較した結果が所定の条件を満たした場合に、前記モジュールを、当該モジュールが配備されたノードの上位ノードに配備する各処理をさらに実行させることを特徴とする付記14または15に記載のイベント収集プログラム。
(付記17)前記モジュールによって処理が実行された頻度を示す第1の頻度と、当該第1の頻度で実行された処理の対象であるイベントが下位側のノードに送信された頻度を示す第3の頻度とを比較し、
比較した結果が所定の条件を満たした場合に、前記処理を実行するモジュールを、当該モジュールが配備されたノードの上位ノードに配備する各処理をさらに実行させることを特徴とする付記16に記載のイベント収集プログラム。
(付記18)コンピュータに、
イベントを処理するモジュールを、ネットワークに接続されたノードに配備した場合に、当該ノードの上位に位置する上位ノードに、当該モジュールによって処理されるイベントを当該ノードへ送信させる
各処理を実行させることを特徴とするイベント収集プログラム。
(付記19)受信したイベントが、自ノードに配備されているモジュールの処理対象でない場合には、受信したイベントを自ノードよりも上位に位置する上位ノードに送信する処理と、
複数のイベントの集計結果にイベントを追加集計する追加集計処理を実行する追加集計用モジュールが自ノードに配備されており、自ノードよりも下位に位置する下位ノードからイベントを受信した場合には、当該イベントを集計結果に追加集計する追加集計処理を前記追加集計用モジュールに実行させる処理と
を実行する処理部を有することを特徴とする情報処理装置。
(付記20)受信したイベントを、当該イベントを集計するモジュールが配備された下位ノードに送信する処理を実行する処理部を有することを特徴とする付記19に記載の情報処理装置。
(付記21)受信したイベントを記憶するイベント記憶部と、
前記集計結果を上位ノードに送信済みか否かを示す送信履歴を参照し、前記下位ノードから受信したイベントを除いて集計された集計結果が送信済みであるか否かを判定する処理と、
前記集計結果が上位ノードに送信済みである場合に、受信したイベントを当該上位ノードに送信する処理と、
前記集計結果が上位ノードに送信済みでない場合に、前記イベント記憶部に格納する処理と、
前記集計結果を受信した場合に、受信した当該集計結果に、前記イベント記憶部に記憶されたイベントを追加集計する追加集計処理を追加集計用モジュールに実行させる処理とをさらに実行する処理部を有することを特徴とする付記19または20に記載の情報処理装置。
(付記22)イベントを受信する処理と、
受信したイベントを、当該イベントを集計するモジュールが配備された、自ノードよりも下位に位置する下位ノードに送信する処理と
を実行する処理部を有することを特徴とする情報処理装置。
(付記23)イベントを処理するモジュールを、ネットワークに接続されたノードに配備した場合に、当該モジュールによって集計された集計結果にイベントを追加集計する追加集計処理を実行する追加集計用モジュールを特定する処理と、
特定した前記追加集計用モジュールを、前記モジュールが配備されたノードの上位に位置する上位ノードに配備する処理と
を実行する処理部を有することを特徴とする情報処理装置。
(付記24)前記モジュールを前記ノードに配備した場合に、前記モジュールごとに追加集計可能か否かを示す情報を記憶する可否記憶部を参照し、配備された前記モジュールが追加集計可能であれば、当該モジュールによって集計された集計結果にイベントを追加集計する追加集計処理を実行する追加集計用モジュールを特定する処理と、
配備された前記モジュールが追加集計可能でなければ、当該モジュールによって処理されるイベントを、当該モジュールが配備されたノードへ送信させる処理とを実行する処理部を有することを特徴とする付記23に記載の情報処理装置。
(付記25)前記モジュールによって処理が実行された頻度を示す第1の頻度と、当該第1の頻度で実行された処理によって出力された集計結果に所定のイベントを追加集計する追加集計処理が実行された頻度を示す第2の頻度とを比較する処理と、
比較した結果が所定の条件を満たした場合に、前記モジュールを、当該モジュールが配備されたノードの上位ノードに配備する処理とを実行する処理部を有することを特徴とする付記23または24に記載の情報処理装置。
(付記26)前記モジュールによって処理が実行された頻度を示す第1の頻度と、当該第1の頻度で実行された処理の対象であるイベントが下位側のノードに送信された頻度を示す第3の頻度とを比較する処理と、
比較した結果が所定の条件を満たした場合に、前記処理を実行するモジュールを、当該モジュールが配備されたノードの上位ノードに配備する処理とを実行する処理部を有することを特徴とする付記25に記載の情報処理装置。
(付記27)イベントを処理するモジュールを、ネットワークに接続されたノードに配備する処理と、
前記モジュールを前記ノードに配備した場合に、当該ノードの上位に位置する上位ノードに、当該モジュールによって処理されるイベントを当該ノードへ送信させる処理と
を実行する処理部を有することを特徴とする情報処理装置。