以下、本発明の実施の形態を図面に基づいて説明する。
図1は、本発明の実施の形態のセンサネットシステムの構成を示すブロック図である。
本実施の形態のセンサネットシステムは、センサネット管理サーバ100、RDB(Relational Database)サーバ120、メールサーバ125、ゲートウェイノード130、ルータノード140、センサノード150、管理クライアント160、業務クライアント165、有線センサ170、RFIDリーダ175及びIP(Internet Protocol)ネットワーク180を備える。
IPネットワーク180は、センサネット管理サーバ100、RDBサーバ120、メールサーバ125、ゲートウェイノード130、管理クライアント160、業務クライアント165、有線センサ170及びRFIDリーダ175を相互に接続する。IPネットワーク180は、例えば、LAN(Local Area Network)である。
センサノード150は、本実施の形態のセンサネットシステムに分散されて設置される端末装置である。図1のセンサネットシステムには、9個のセンサノード150(SS1からSS9)が設置されているが、いくつ設置されてもよい。各センサノード150は、ZigBee通信部151、タスクマネージャ152、センサ制御部153及び電源管理部154を備える。
ZigBee通信部151は、ZigBeeプロトコルを用いて、ゲートウェイノード130又はルータノード140と通信する。タスクマネージャ152は、センサネット管理サーバ100から発行された要求に従って、当該センサノード150に設定されている情報を変更する。なお、要求は、センサノード150に対して何らかの処理を依頼するための情報である。
センサ制御部153は、当該センサ制御部153に備わるセンサを用いて、環境情報を観測する。電源管理部154は、当該センサノード150の電源を制御する。例えば、電源管理部154は、設定されている起動間隔で電力を供給することによって、当該センサノード150を起動させる。
センサノード150は、当該センサノード150に備わるセンサを用いて、環境情報を観測する。観測される環境情報は、温度、湿度、加速度、又はその他のいかなる物理量であってもよい。センサノード150は、観測した環境情報を、観測イベントとして、PAN(Personal Area Network)185等の無線ネットワークを介してセンサネット管理サーバ100に送信する。
センサノード150は、活動状態(activated)と休眠状態(sleeping)とを交互に繰り返す間欠動作(Intermittent mode)をする。本実施の形態のセンサノード150は、タイマが計測する時刻に基づいて、所定の間隔で間欠動作をする。この場合、活動状態は、環境情報を観測するためにセンサが駆動されるとき、及び、観測データを送信するための無線通信をするときに相当する。この場合、センサノード150は、観測データの送信を終了すると、休眠状態となる。休眠状態において、センサノード150内のタイマ以外の部位が全て停止するため、タイマ以外の部位は電力を消費しない。このため、休眠状態のセンサノード150の消費電力は、活動状態のときと比較して、小さくなる。
以下の説明において、センサノード150が観測した環境情報を含むデータを、観測データと記載する。観測データは、環境情報に加えて、タイムスタンプ及びシーケンス番号(後述)を含んでもよい。また、過去から現在までのいずれかの時点の観測データ、または、それらの観測データの集合を、履歴データと記載する。
本実施の形態のセンサノード150は、環境情報を観測して観測データを送信するだけでなく、送信した観測データを履歴データとして蓄積する。そして、履歴データを要求するコマンドを受信すると、要求された履歴データを送信する。センサノード150の構成については、後で図2A及び図2Bを参照して詳細に説明する。
ルータノード140は、ZigBee通信部141及びルーティングマネージャ142を備える。ZigBee通信部141は、ZigBeeプロトコルを用いて、ゲートウェイノード130、センサノード150又は他のルータノード140と通信する。ルーティングマネージャ142は、外部から受信した情報の転送先を判定する。
ルータノード140は、無線ネットワークを形成し、センサノード150とゲートウェイノード130又は他のルータノード140との間のデータ通信を中継する。具体的には、ルータノード140は、センサノード150によって観測された環境情報又はセンサネット管理サーバ100から発行された要求等を受信し、その要求等を、ゲートウェイノード130、センサノード150又は他のルータノード140に転送する。
ゲートウェイノード130は、ZigBee通信部131、IP通信部132、PAN制御部133及びルーティングマネージャ134を備える。
IP通信部132は、IPネットワーク180を介して、センサネット管理サーバ100と通信する。ルーティングマネージャ134は、外部から受信した情報の転送先を判定する。ZigBee通信部131は、ZigBeeプロトコルを用いて、ルータノード140又はセンサノード150と通信する。PAN制御部133は、当該ゲートウェイノード130から構成されるPAN185を制御する。
ゲートウェイノード130は、IPネットワーク180と、ZigBee等の低電力無線ネットワークとを相互に接続する。具体的には、ゲートウェイノード130は、センサノード150によって観測された環境情報又はセンサネット管理サーバ100から発行された要求等を受信し、その要求等を、センサネット管理サーバ100、他のゲートウェイノード130、ルータノード140又はセンサノード150に転送する。
PAN185は、複数のノードによって形成される無線のサブネットワークである。通常、ゲートウェイノード130がPAN185のコーディネータとなり、各PAN185を管理する。PAN185は、図1の「PAN2」に示すようなツリー構造であってもよいし、「PAN3」に示すようなメッシュ構造であってもよい。
センサネット管理サーバ100は、オブジェクトマネージャ101、アクションマネージャ102、イベント配送部103、PANマネージャ104、値変換部105、プロファイルドアダプタ106、ログマネージャ107及びIP通信部108を含む計算機である。IP通信部108は、クライアントアダプタ109、RDBアダプタ110、SMTPアダプタ111、ZigBeeアダプタ112、有線センサアダプタ113及びRFIDアダプタ114を含む。
オブジェクトマネージャ101は、システムの構成情報及び各種のパラメータを管理する。例えば、オブジェクトマネージャ101は、イベント配送部103経由で受け取る各種イベントに基づいて、保持している情報を更新する。
アクションマネージャ102は、センサの観測結果に基づいて、各種の動作を管理する。
イベント配送部103は、観測データ等をイベントとして扱う。そして、イベント配送部103は、予め設定された条件に応じて、各マネージャ又は値変換部105にイベントを配信し、又は、アクションを起動する。
PANマネージャ104は、PAN185の状態を管理する。
値変換部105は、イベント配送部103経由で配信される観測データの単位変換等を実行する。変換されたデータは、例えば、イベント配送部103に戻されてもよい。
プロファイルドアダプタ106は、アプリケーションごとのデータ解釈ルール等を管理する。具体的には、プロファイルドアダプタ106は、ノードからのイベント又はコマンドに対する応答をサーバのデータ形式に変換し、あるいは、ノードに対するコマンドを無線通信のためのデータ形式に変換する。
ログマネージャ107は、イベント配送部103経由で配信されるノードからの各種イベント(例えば、観測データ)、及び、センサネット管理サーバ100内のシステム動作状態等のログ出力を管理する。
IP通信部108は、IPネットワーク180を介して各種クライアント又はサーバと通信するためのコンポーネント群である。
クライアントアダプタ109は、センサネット管理サーバ100が管理クライアント160又は業務クライアント165と通信するためのインターフェースを提供する。RDBアダプタ110は、センサネット管理サーバ100がRDBサーバ120と通信するためのインターフェースを提供する。SMTPアダプタ111は、センサネット管理サーバ100が電子メールを送信するためのインターフェースを提供する。
ZigBeeアダプタ112は、センサネット管理サーバ100がZigBee規格に準拠するネットワークと通信するためのインターフェースを提供する。ZigBeeアダプタ112は、ZigBeeネットワーク層以下のプロトコルを隠蔽する。
有線センサアダプタ113は、センサネット管理サーバ100が有線センサ170と通信するためのインターフェースを提供する。有線センサアダプタ113は、接続される有線センサ170のネットワーク層以下のプロトコルを隠蔽する。有線センサアダプタ113は、有線センサ170と、無線通信するセンサノード150とが連携する応用システムにおいて使用される。
RFIDアダプタ114は、センサネット管理サーバ100がRFIDリーダ175又はRFIDライタ(図示省略)と通信するためのインターフェースを提供する。RFIDアダプタ114は、接続されるRFIDリーダ175等のネットワーク層以下のプロトコルを隠蔽する。RFIDアダプタ114は、RFIDリーダ175とセンサノード150とが連携する応用システムにおいて使用される。
RDBサーバ120には、センサノード150によって観測された環境情報の履歴が格納される。これらの履歴は、例えば、RDBサーバ120が管理するハードディスクドライブ又はその他の記憶媒体に格納される。RDBサーバ120に格納される情報については、後で図13B等を参照して詳細に説明する。
管理クライアント160は、センサネットシステムの管理者によって操作される計算機である。管理クライアント160は、管理者の操作を契機に、各種要求をセンサネット管理サーバ100に送信する。
業務クライアント165は、センサネットシステムのクライアントによって操作される計算機である。業務クライアント165は、各種アプリケーションを実行する。
また、業務クライアント165は、センサノード150によって観測された環境情報を、センサネット管理サーバ100から受信する。業務クライアント165は、受信した環境情報に基づいて、各種処理を実行する。
管理クライアント160及び業務クライアント165の少なくとも一方は、センサネット管理サーバ100に対して、観測データを要求することができる。これらのクライアントは、センサネット管理サーバ100から取得した観測データを表示してもよい。
有線センサ170は、環境情報を観測する。そして、有線センサ70は、観測した環境情報を、IPネットワーク180を介してセンサネット管理サーバ100に送信する。
RFIDリーダ175は、RFID176を読み取り、読み取った結果を、IPネットワーク180を介してセンサネット管理サーバ100に送信する。
図2Aは、本発明の実施の形態のセンサノード150の機能ブロック及びデータフローの説明図である。
本実施の形態のセンサノード150は、無線通信部201、センサ制御部202、最新データ組立部203、履歴データ応答部204、タイマ205及びデータ蓄積部206を含む。無線通信部201は、図1のZigBee通信部151に相当する。センサ制御部202は、図1のセンサ制御部153に相当する。最新データ組立部203、履歴データ応答部204及びデータ蓄積部206は、図1のタスクマネージャ152に相当する。データ蓄積部206には、履歴データが蓄積される。データ蓄積部206に蓄積される履歴データの内容については、後で図2Bを参照して詳細に説明する。なお、データ蓄積部206は、EEPROM等の不揮発メモリである。
次に、センサノード150が実行する処理を、ステップごとに説明する。
センサノード150は、自律的に(すなわち、他のノード又はサーバ等からの要求を受けずに)環境情報を観測し、観測データをセンサネット管理サーバ100に送信することができる。さらに、センサノード150は、センサネット管理サーバ100からの要求に従って、蓄積された観測データを管理サーバ100に送信することもできる。
図2AのステップA211からA215は、センサノード150が自律的に環境情報を観測し、観測された値を含む観測データを送信するまでの処理を示す。
タイマ205は、時刻又は時間間隔を計測し、所定のタイミングで、センサ制御部202に指示を送信する(ステップA211)。例えば、タイマ205は、所定の時刻に指示を送信してもよいし、所定の時間間隔で指示を送信してもよい。
センサ制御部202は、タイマ205からの指示を受信すると、環境情報(例えば、温度及び湿度)を観測し、観測された環境情報を最新データ組立部203に送信する(ステップA212)。
最新データ組立部203は、受信した環境情報を含む観測データを生成し、その観測データをデータ蓄積部206に格納する(ステップA213)。このとき格納されるデータには、環境情報が観測された時刻を示すタイムスタンプ、及び、観測された順序を示すシーケンス番号が付与されている(図2B参照)。
次に、最新データ組立部203は、受信した観測データ(すなわち、ステップA213においてデータ蓄積部206に格納されたものと同じ観測データ)を、無線通信部201に送信する(ステップA214)。
無線通信部201は、受信した観測データを、ルータノード140又はゲートウェイノード130対して、無線によって送信する(ステップA215)。送信された観測データは、ルータノード140又はゲートウェイノード130によって受信された場合、IPネットワーク180を経由してセンサネット管理サーバ100に到達する。しかし、いずれのルータノード140又はゲートウェイノード130も観測データを受信できない場合もある。この場合、無線通信部201から送信された観測データは、センサネット管理サーバ100に到達しない。
以下の説明において、ステップA215において送信された観測データは、リアルタイムデータとも記載される。
結局、センサ制御部202から送信されたリアルタイムデータは、データ蓄積部206に格納されるとともに、無線通信部201から送信される。
図2AのステップB221からB226は、センサノード150がセンサネット管理サーバ100からコマンドを受信し、蓄積されたデータを送信するまでの処理を示す。
最初に、無線通信部201は、センサネット管理サーバ100から、履歴データを取得するためのコマンドを受信する(ステップB221)。このコマンドは、センサネット管理サーバ100から送信され、IPネットワーク180及びゲートウェイノード130を経由して無線通信部201に到達する。このコマンドは、さらに一つ以上のルータノード140を経由してもよい。
次に、無線通信部201は、受信したコマンドを履歴データ応答部204に送信する(ステップB222)。
履歴データ応答部204は、受信したコマンドに従って、データを読み出すためのコマンドをデータ蓄積部206に送信し(ステップB223)、格納されているデータを取得する(ステップB224)。
次に、履歴データ応答部204は、取得したデータを無線通信部201に送信する(ステップB225)。
無線通信部201は、履歴データ応答部204から受信したデータを履歴データとして上位のノードに送信する(ステップB226)。ステップB221において複数の観測データを要求されている場合、ステップB226において、要求された複数の観測データがまとめて送信される。
なお、ステップA211からA215、及び、ステップB221からB226までのいずれの処理も実行されていないとき、センサノード150は休眠状態である。このとき、タイマ205以外の部位は、停止しているため、電力を消費しない。
図2Bは、本発明の実施の形態のセンサノード150のデータ蓄積部206に格納されたデータの説明図である。
データ蓄積部206に格納されたデータは、少なくとも、シーケンス番号207、タイムスタンプ208及び観測値209を含む。
シーケンス番号207は、各観測値209を識別するために、各観測値209が観測された順に付与される番号である。図2Bの例において、シーケンス番号207は、16進数で表示されている。
タイムスタンプ208は、各観測値209が観測された日時を示す。
観測値209は、センサノード150が備えるセンサ(図11のセンサ1103)によって観測された環境情報の値である。本実施の形態では、温度及び湿度が環境情報として観測されるが、その他の環境情報が観測されてもよい。
図2Bの例では、シーケンス番号207の値「0000」に対応するタイムスタンプ208及び観測値209として、それぞれ、「20060716T10:00:01」及び「25.0、60%」が格納されている。これは、2006年7月16日の10時0分1秒に観測された温度及び湿度が、それぞれ、25.0度及び60%であったことを示す。
さらに、図2Bの例では、シーケンス番号207の値「0001」に対応するタイムスタンプ208及び観測値209として、それぞれ、「20060716T10:05:01」及び「25.7、58%」が格納されている。シーケンス番号207の値が「0001」であることは、そのシーケンス番号に対応する観測値209が、シーケンス番号「0000」に対応する観測値209の次に観測されたことを示す。すなわち、2006年7月16日の10時0分1秒の次に環境情報が観測されたのは2006年7月16日の10時5分1秒であり、そのときに観測された温度及び湿度は、それぞれ、25.7度及び58%である。
このように、データ蓄積部206には、各時刻に観測された環境情報が、観測された順に格納され、その結果、所定の数の観測値209が蓄積される。図2Bの例では、シーケンス番号207が「0000」から「FFFF」までの65536組の観測値209(温度及び湿度)が蓄積される。
後で説明するように、データ蓄積部206は、不揮発メモリ1104(図11参照)に対応する。このため、図2Bに示す観測データは、実際には不揮発メモリ1104に格納される。
データ蓄積部206の容量(すなわち、データ蓄積部206に蓄積可能な観測データの量)は、ユーザ等からの要求と、許容されるコストとに基づいて決定される。一つのレコード当たりのデータは、例えば、16ビットのシーケンス番号207と、32ビットのタイムスタンプ208と、16ビットの観測値209と、を含む。ここで、レコードとは、一つのシーケンス番号207に対応する観測データである。一つのレコードの観測値が複数の種類の物理量(例えば、温度と湿度)を含む場合、各物理量に16ビットずつが割り当てられてもよい。
センサノード150が、観測間隔の異なる複数のセンサを備える場合、それぞれのセンサによって観測される観測値に独立したシーケンス番号207及びタイムスタンプ208が付与される。また、それぞれの観測データが格納される領域も独立していることが望ましい。
一方、複数のセンサが同一のタイミングで動作する場合、それらのセンサが観測した観測値は、共通のシーケンス番号207及びタイムスタンプ208によって管理されてもよい。図2Bの例では、「温度」及び「湿度」が共通のシーケンス番号207及びタイムスタンプ208によって管理される。
なお、データ蓄積部206は、リングバッファ形式で実現される。すなわち、シーケンス番号207が「0000」から「FFFF」までの全てのエントリに環境情報が格納された場合、その次に観測された環境情報は、再び、シーケンス番号207が「0000」であるエントリの観測値209に格納される。その後観測された環境情報は、シーケンス番号207が「0001」であるエントリ以降のエントリに順次格納される。
図2Bの例では、シーケンス番号207の値「FFFF」に対応するタイムスタンプ208及び観測値209として、それぞれ、「20060716T09:55:01」及び「24.8、59%」が格納されている。これは、図2Bの例において、シーケンス番号「0000」に対応する観測値209が、シーケンス番号「FFFF」に対応する観測値209の次に観測されたことを示す。
センサノード150は、後述する履歴データ要求コマンドを受信すると、要求された履歴データをデータ蓄積部206から読み出して送信する。履歴データ要求コマンドがシーケンス番号207を指定している場合、指定されたシーケンス番号207に対応するタイムスタンプ208及び観測値209が履歴データとして送信される。
次に、センサネット管理サーバ100の構成及び処理について説明する。
センサネット管理サーバ100は、センサノード150から送信されたデータを受信すると、そのデータを最新データとして格納するとともに、同じデータを、履歴データとして蓄積する。そして、センサネット管理サーバ100は、ユーザから最新データを要求されると最新データを提供し、ユーザから履歴データを要求されると履歴データを提供する。ユーザとは、例えば、管理クライアント160を操作する管理者、又は、業務クライアント165を操作するユーザである。
既に説明したように、センサノード150から送信されたデータは、常にセンサネット管理サーバ100に到達するとは限らない。このため、履歴データに欠損が生じる場合がある。センサネット管理サーバ100は、履歴データに欠損があるか否かを判定する。そして、欠損がある場合、センサネット管理サーバ100は、欠損した履歴データを再び送信することをセンサノード150に要求する。
このような欠損の有無の判定及び再送要求は、どの時点で実行されてもよい。例えば、これらの処理は、ユーザから履歴データを要求されたときに実行されてもよいし(図3及び図4参照)、定期的に又は所定の時刻に実行されてもよい(図5及び図6参照)。あるいは、これらの処理は、ハートビート監視の結果に基づいて実行されてもよいし(図7及び図8参照)、シーケンス番号に基づいて実行されてもよい(図9及び図10参照)。また、これらの欠損の有無の判定及び再送要求の処理を組み合わせることも可能である。
センサネットシステムは、例えば現場監督者が食品管理のために食品工場内の環境を管理したり、施設管理のために施設内の環境を管理したりするのに利用される。その場合において、現場監督者はできる限りリアルタイムの環境情報を取得して適切なライン管理を行うことが重要である。また、例えば食品工場内において空調の異常や火災の発生により温度が異常を示す場合には、センサノードが観測した情報をリアルタイムに現場監督者に通達することが重要である。一方、食品工場管理者が食品の管理状況を把握し日報を作成するなど食品の品質を保証する場合、あるいは施設管理者が施設の管理状況を報告するためには、できる限り欠損のない正確な現在までの履歴データが要求される。そこで、本発明では、センサノード150から送信されるリアルタイムデータを、管理方法の異なる最新データ蓄積管理部と履歴データ蓄積管理部に分けて記憶管理することにより、ユーザからの最新の観測データあるいは履歴データの表示要求に応じて、所望のデータを提示することを可能にする。
本実施形態は、ユーザからの表示要求の種類に応じて最新データ蓄積管理部と履歴データ蓄積管理部に格納される観測データを使い分ける。また、ユーザからの要求は、2種類のデータ蓄積管理部に格納されるデータのうちどちらを用いるかを指示するものでもよい。例えば、「現場把握」や「日報作成」などユーザの使用目的に応じたメニューあるいはグラフ表示などの表示形式を指定できるメニューなど、ユーザの利用しやすいGUIを提示し、そのメニューとセンサネット管理サーバ内の2種類のデータ蓄積管理部とを対応づけておくことができる。この場合、センサネット管理サーバは、メニューと2種類のデータ蓄積管理部とを対応づけるテーブルを保持しておく。これにより、センサネット管理サーバは、ユーザの要求に応じてテーブルを参照し、最新データ蓄積管理部に管理される観測データのみ、または履歴データ蓄積管理部に管理される観測データのみ、または最新データ蓄積管理部及び履歴データ蓄積管理部に格納される観測データを使い分けることができる。なお、観測データの表示形式については、図15A−図17Bで説明する。
図3は、本発明の実施の形態において、ユーザからの要求をトリガとして履歴データを取得する場合の、センサネット管理サーバ100の機能ブロック及びデータフローの説明図である。
センサネット管理サーバ100は、外部要求受付部301、最新データ蓄積管理部302、履歴データ蓄積管理部303、イベント配送部304、データ欠損管理部305及びセンサネット通信部306を含む。
外部要求受付部301は、クライアントアダプタ109に相当する。最新データ蓄積管理部302は、オブジェクトマネージャ101に相当する。最新データ蓄積管理部302は、最新の観測データを格納するためのメモリ(例えば、Random Access Memory)(図示省略)を含む。履歴データ蓄積管理部303は、RDBアダプタ110及びRDBサーバ120に相当する。イベント配送部304は、イベント配送部103に相当する。データ欠損管理部305は、PANマネージャ104の一部に相当する。センサネット通信部306は、プロファイルドアダプタ106及びZigBeeアダプタ112に相当する。
図3のステップA311からA314は、センサノード150から観測データ(この場合、リアルタイムデータ)を受信したセンサネット管理サーバ100が実行する処理を示す。受信した観測データは、センサノード150が観測した環境情報を含む。
図2Aにおいて説明したように、各センサノード150は、自律的なタイミングで間欠動作し、観測データをリアルタイムデータとして送信する。
最初に、センサネット通信部306は、センサノード150からリアルタイムデータとして送信された観測データを受信する(ステップA311)。
次に、センサネット通信部306は、受信した観測データを、イベント配送部304に送信する(ステップA312)。
イベント配送部304は、受信した観測データを、最新データ蓄積管理部302に送信する(ステップA313)。その結果、受信した観測データが、最新の観測データとして最新データ蓄積管理部302のメモリに格納される。最新データ蓄積管理部302のメモリに前回の観測データが格納されている場合、最新の観測データが格納されるときに、前回の観測データが削除されてもよい。
なお、センサノード150から送信された観測データは、常にセンサネット管理サーバ100に到達するとは限らない。このため、最新データ蓄積管理部302には、常にセンサノード150から最後に送信された観測データが格納されているとは限らない。しかし、センサネット管理サーバ100は、最新データ蓄積管理部302に格納されているデータ(すなわち、現時点で、センサネット管理サーバ100が最後にセンサノードから受信したリアルタイムデータ)を最新の観測データとして取り扱う。なお、最新データ蓄積管理部は、センサノードごとに最新の観測データを格納する。
さらに、イベント配送部304は、受信した観測データ(すなわち、ステップA313において送信されたものと同じデータ)を、履歴データ蓄積管理部303に送信する(ステップA314)。その結果、受信した観測データが履歴データ蓄積管理部303によって格納される。具体的には、RDBサーバ120が管理するデータベースに観測データが格納される。このとき、前回の観測データは、データベースから削除されない。データベースには、過去に受信した全ての観測データが履歴データとして蓄積されてもよいし、所定の数の観測データが履歴データとして蓄積されてもよい。データベースに所定の数の観測データが蓄積される場合、最新の観測データが格納されるときに、既に格納されている最も古い観測データが削除されてもよい。
結局、センサノード150から送信されたリアルタイムデータは、最新データ蓄積管理部302が管理するメモリに、最新の観測データとして格納され、さらに、履歴データ蓄積管理部303が管理するデータベースに、履歴データとして格納される。データベースには、さらに過去の観測データも履歴データとして格納されている。メモリ及びデータベースに格納される観測データの例については、後で詳細に説明する(図13A及び図13B参照)。
図3のステップB321からB333は、ユーザから履歴データを要求されたセンサネット管理サーバ100が実行する処理を示す。
最初に、外部要求受付部301は、ユーザから履歴データの要求を受信する(ステップB321)。
次に、外部要求受付部301は、受信した要求を履歴データ蓄積管理部303に送信する(ステップB322)。
外部要求受付部301からの要求を受信した履歴データ蓄積管理部303は、データ欠損管理部305に、履歴データに欠損があるか否かを調査することを要求する(ステップB323)。データ欠損管理部305は、要求に従って、履歴データに欠損があるか否かを調査する(ステップB324)。例えば、データ欠損管理部305は、履歴データとして格納されている観測データのシーケンス番号(図13のシーケンス番号1311)が連続しているか否かを判定してもよい。シーケンス番号が連続しない場合、履歴データに欠損があると判定される。
例えば、履歴データ蓄積管理部303に格納されている履歴データにおいて、観測データをタイムスタンプの順に並べたときに、シーケンス番号「0003」の次のシーケンス番号が「0008」である場合、シーケンス番号「0004」から「0007」までの観測データが欠損している。データ欠損管理部305は、履歴データに欠損がある場合、欠損している観測データのシーケンス番号を保持する(図14参照)。
データ欠損管理部305は、履歴データに欠損があると判定された場合、欠損しているデータを再送することを要求するコマンドをセンサネット通信部306に対して発行する(ステップB325)。
センサネット通信部306は、データ欠損管理部305から受信したコマンドを、センサノード150に対して発行する(ステップB326)。このコマンドは、図2AのステップB221において受信される。
次に、センサネット通信部306は、センサノード150から送信された観測データ(履歴データ)を受信する(ステップB327)。ここで受信するデータは、図2AのステップB226において送信されたデータである。
次に、センサネット通信部306は、受信した観測データを、イベント配送部304に送信する(ステップB328)。ステップB327において複数の観測データ(例えば、シーケンス番号「0004」から「0007」までの観測データ)を受信した場合、それらの観測データがステップB328においてまとめて送信される。
イベント配送部304は、受信した観測データを、最新データ蓄積管理部302に送信する(ステップB329)。最新データ蓄積管理部302は、受信した観測データが、既に最新データ蓄積管理部302に格納されている観測データより新しい場合、受信した観測データを最新の観測データとして格納する。なお、センサネット通信部が観測データをまとめて送信する場合、イベント配送部は観測データをまとめて最新データ蓄積管理部に送信し、最新データ蓄積管理部は受信した観測データの中で格納されている観測データより新しいデータがある場合に、最新の観測データとして格納する。
イベント配送部304は、受信した観測データ(すなわち、ステップB329において送信されたものと同じデータ)を、履歴データ蓄積管理部303に送信する(ステップB330)。その結果、受信した観測データが、履歴データ蓄積管理部303が管理するデータベースに履歴データとして格納される。これによって、履歴データの欠損が補完される。
次に、イベント配送部304は、受信した観測データ(すなわち、ステップB330において送信されたものと同じデータ)を、データ欠損管理部305に送信する(ステップB331)。データ欠損管理部305は、受信した観測データのシーケンス番号207と同一の番号を、自らが保持しているシーケンス番号207から削除する(図14参照)。
履歴データ蓄積管理部303は、欠損が補完されたことによって完全になった履歴データを、外部要求受付部301に送信する(ステップB332)。
外部要求受付部301は、履歴データ蓄積管理部303から受信した履歴データを、要求元に送信する(ステップB333)。
また、履歴データ蓄積管理部303が外部要求受付部301から履歴データ要求を受信後(ステップB322)、すぐに格納されている履歴データを外部要求受付部301に送信することもできる。この場合、欠損のあるデータが外部要求受付部から要求元に送信されるが、ステップB323−B333により要求元には欠損が補完されたデータが送信される。これにより、要求元は、欠損がありながらも履歴データを迅速に閲覧することができ、さらに必ず欠損のない完全な履歴データを閲覧することができる。なお、履歴データ蓄積管理部303は、外部要求受付部301から履歴データ要求を受信後、所定の時間内に履歴データの補完がなされない場合に、格納されている履歴データを外部要求受付部301に送信してもよい。
図3のステップB341からB344は、ユーザから最新の観測データを要求されたセンサネット管理サーバ100が実行する処理を示す。
最初に、外部要求受付部301は、ユーザから最新の観測データの要求を受信する(ステップB341)。
次に、外部要求受付部301は、受信した要求を最新データ蓄積管理部302に送信する(ステップB342)。
最新データ蓄積管理部302は、受信した要求に従って、最新の観測データを読み出して、外部要求受付部301に送信する(ステップB343)。
外部要求受付部301は、最新データ蓄積管理部302から受信した観測データを要求元に送信する(ステップB344)。
図4は、本発明の実施の形態において、ユーザからの要求をトリガとして実行される処理のコマンド発行シーケンスの説明図である。
センサノード150は、自律的に環境情報を観測し、最新の観測データを送信する(ステップ401)。ステップ401に「#3」と表示されているのは、この例において送信された観測データのシーケンス番号207が「0003」であることを意味する。ステップ401の送信は、図2AのステップA215に相当する。
ルータノード140は、ステップ401において送信された観測データを受信し、そのデータを送信する(ステップ403)。ゲートウェイノード130は、ステップ403において送信された観測データを受信し、そのデータをIPネットワーク180を経由してセンサネット管理サーバ100に送信する(ステップ404)。センサネット管理サーバ100は、ステップ404において送信された観測データを受信する。この受信は、図3のステップA311に相当する。観測データを受信したセンサネット管理サーバ100は、図3のステップA312からA314までの処理を実行する。
センサノード150は、ステップ401において観測データを送信するときに、さらに、コマンド要求を送信する(ステップ402)。ここで、コマンド要求について説明する。
センサノード150は、既に説明したように、自律的に間欠動作をする。休眠状態のセンサノード150において、少なくとも、無線通信部201は停止している。このため、休眠状態のセンサノード150は、センサネット管理サーバ100からのコマンドを受信することができない。さらに、センサネット管理サーバ100は、現在センサノード150が活動状態であるか否かを知ることができない。このため、センサネット管理サーバ100がセンサノード150にコマンドを送信する場合、そのコマンドは、ゲートウェイノード130又はルータノード140に保持される。そして、センサノード150は、活動状態のときにコマンド要求を送信する。
コマンド要求を受信したゲートウェイノード130又はルータノード140は、センサネット管理サーバ100からセンサノード150に対して送信されたコマンドを保持している場合、そのコマンドをセンサノード150に送信する。
図4の例では、ステップ402において送信されたコマンド要求は、ルータノード140によって受信される。この時点で、ルータノード140はコマンドを保持していないため、センサノード150にコマンドを送信しない。
その後、センサノード150は再び自律的に環境情報を観測し、最新の観測データ及びコマンド要求を送信する(ステップ405及び406)。このとき送信された観測データのシーケンス番号207は、「0004」である。以下の説明において、シーケンス番号207が「0003」である観測データを「観測データ#3」、シーケンス番号207が「0004」である観測データを「観測データ#4」と記載する。その他のシーケンス番号についても同様である。
ルータノード140は、ステップ405において送信された観測データを受信し、そのデータを送信する(ステップ407)。しかし、図4の例において、ステップ407の送信は失敗する。その結果、ステップ405において送信された観測データは、センサネット管理サーバ100に到達しない。
従来のセンサノードは、センサネット管理サーバ100からのアプリケーション層のACKを待つ。そして、ACKがない場合、従来のセンサノードは、送信に失敗したと判定して、観測データを再度送信する。しかし、本実施の形態のセンサノード150は、センサネット管理サーバ100からのアプリケーション層のACKを待たずに休眠状態になる。センサネット管理サーバ100は、アプリケーション層のACKを送信してもよいが、本実施の形態のセンサノード150は、そのACKを受信したか否かに関らず、休眠状態になる。
このため、本実施の形態のセンサノード150は、ACKを待つための待ち受け電力及びデータを再度送信するための送信電力を消費しない。また、センサノード150における通信の制御が簡素化される。なお、データを送信したセンサノード150が受信し得るACKには、センサネット管理サーバ100からのアプリケーション層のACKと、ルータノード140(又はゲートウェイノード130)からのMAC層のACKとがある。本実施の形態のセンサノード150は、アプリケーション層のACKを待たないが、MAC層のACKは待つことを前提とする。しかし、センサノード150がMAC層のACKを待たずに休眠状態になる場合にも、本発明を適用することができる。
その後、センサノード150は、同様にして観測データ#5から#7を送信する(図示省略)。これらの観測データは、いずれも、送信失敗のため、センサネット管理サーバ100に到達しない。したがって、この時点の履歴データ蓄積管理部303において、履歴データ#4から#7は、欠損している。
その後、センサノード150は再び自律的に環境情報を観測し、最新の観測データ#8及びコマンド要求を送信する(ステップ408及び409)。観測データ#8は、ルータノード140及びゲートウェイノード130を経由してセンサネット管理サーバ100に到達する(ステップ410及び411)。
その後、管理クライアント160は、センサネット管理サーバ100に、任意の範囲の履歴データを要求する(ステップ412)。この要求は、図3のステップB321に相当する。なお、図4には、管理クライアント160が履歴データを要求する場合を示すが、業務クライアント165が履歴データを要求する場合にも、同様の処理が実行される。後で説明する図6、図8及び図10についても同様である。
履歴データの要求を受信したセンサネット管理サーバ100は、図3のステップB322からB325までの処理を実行する。ステップB324において、データ欠損管理部305は、管理クライアント160によって指定された範囲の履歴データに欠損があるか否かを判定する。
図4の例は、管理クライアント160が、観測データ#4から#7を含む範囲を指定した場合について説明する。このため、データ欠損管理部305は、ステップB324において、履歴データの欠損があると判定する。この場合、センサネット管理サーバ100は、履歴データ要求コマンドをセンサノード150に対して送信する(ステップ413)。ステップ413は、図3のステップB326に相当する。
図4の例では、観測データ#4から#7までの送信に失敗している。このため、ステップ413において送信されたコマンドは、観測データ#4から#7を送信することをセンサノード150に要求する。ステップ413において送信されたコマンドは、ゲートウェイノード130を経由して、ルータノード140に到達し(ステップ414)、ルータノード140によって保持される。
その後、センサノード150は再び自律的に環境情報を観測し、最新の観測データ#9及びコマンド要求を送信する(ステップ415及び418)。観測データ#9は、ルータノード140及びゲートウェイノード130を経由してセンサネット管理サーバ100に到達する(ステップ416及び417)。ステップ417は、図3のステップA311に相当する。
コマンド要求418を受信した時点で、ルータノード140はセンサノード150へのコマンドを保持している。このため、ルータノード140は、保持している履歴データ要求コマンドをセンサノード150に対して送信する(ステップ419)。
センサノード150は、ステップ419において送信された履歴データ要求コマンドを受信する。この受信は、図2AのステップB221に相当する。その後、センサノード150は、受信したコマンドに従って、図2AのステップB222からB225までの処理を実行する。そして、センサノード150は、コマンドによって要求された履歴データを送信する(ステップ420)。ステップ420は、図2AのステップB226に相当する。ステップ420において送信される履歴データは、観測データ#4から#7を含む。
このように、履歴データにおいて複数の観測データが欠損していた場合、ユーザからの履歴データ要求をトリガとしてそれらの複数の欠損したデータが一度にまとめて送信される。このため、送信に失敗するたびに再度データを送信する従来のセンサノードと比較して、本実施の形態のセンサノード150は、データを再度送信するための電力を削減することができる。
センサノード150から送信された履歴データは、ルータノード140及びゲートウェイノード130を経由してセンサネット管理サーバ100に到達する(ステップ421及び422)。この到達は、図3のステップB327に相当する。その後、センサネット管理サーバ100は、図3のステップB328からB332までの処理を実行する。そして、センサネット管理サーバ100は、要求された履歴データを管理クライアント160に送信する(ステップ423)。ステップ423は、図3のステップB333に相当する。
なお、例えばセンサネット管理サーバ100がセンサノード150からの観測データを長期間受信することができなかった場合、多数の観測データが欠損している。このような場合に多数の観測データの送信を要求すると、処理の渋滞を招き、望ましくない場合がある。このような場合、一度に送信される観測データの量を制限することもできる。
例えば、センサネット管理サーバ100は、ステップ413において、履歴データ要求コマンドが指定する観測データを制限してもよい。例えば、センサネット管理サーバ100は、ステップ413において観測データ#4及び#5のみを要求してもよい。その場合、センサネット管理サーバ100は、観測データ#4及び#5を取得した後で、観測データ#6及び#7を要求する。あるいは、センサノード150が送信する観測データの量を制限してもよい。このとき、センサノード150は、送信を要求された観測データのうち、特徴点に該当する観測データを優先して送信し、その後、特徴点に該当しない観測データを順次送信してもよい。
ここで、特徴点は、所定の範囲外(又は範囲内)の観測値を含む観測データであってもよい。あるいは、特徴点は、直前の観測値からの変化量が所定の閾値を越える観測値を含む観測データであってもよい。あるいは、特徴点は、近似曲線を作成するためのパラメータであってもよい。あるいは、連続して欠損している観測データのうち所定の間隔(例えば、1分間隔で観測された観測データが24時間分欠損している場合、特徴点は、1時間間隔又は10分間隔等)の観測データであってもよい。あるいは、特徴点は、連続して欠損している観測データの中間時点の観測データであってもよい。
特徴点が上記の所定の間隔の観測データ又は中間時点の観測データである場合、センサノード150ではなく、センサネット管理サーバ100が特徴点を決定してもよい。
センサノード150は、古い観測データの上に新しい観測データを上書きするとき、特徴点以外の古い観測データの上に優先して上書きしてもよい。
なお、このセンサネット管理サーバが履歴データ要求コマンドで指定する観測データを制限する処理あるいはセンサノードが送信する観測データの量を制限する処理は、後述する定期的に又は所定の時刻に履歴データ要求コマンドを送信する場合(図5及び図6)、ハートビート監視の結果に基づいて履歴データ要求コマンドを送信する場合(図7及び図8参照)、シーケンス番号に基づいて履歴データ要求コマンドを送信する場合(図9及び図10参照)も実行可能であることはいうまでもない。
以上で、ユーザからの要求(ステップ412)をトリガとして実行される処理のコマンド発行シーケンスが終了する。
以上の図3及び図4に示す処理によれば、履歴データがセンサノード150から削除されていない限り、ユーザからの要求に対して、必ず欠損のない完全な履歴データが応答される。さらに、ユーザからの履歴データ要求をトリガとして、欠損したデータを補完するため、ユーザが要求した時点で可能な限り補完されたデータを提供することが可能となる。
図5は、本発明の実施の形態において、時刻情報をトリガとして履歴データを取得する場合の、センサネット管理サーバ100の機能ブロック及びデータフローの説明図である。
具体的には、図5には、定期的に又は所定の時刻に履歴データを取得するための機能ブロック及びデータフローを示す。図5において、図3と同様の部分及び処理については、詳細な説明を省略する。後で説明する図7及び図9についても同様である。
センサネット管理サーバ100は、外部要求受付部301、最新データ蓄積管理部302、履歴データ蓄積管理部303、イベント配送部304、データ欠損管理部305及びセンサネット通信部306を含む。これらの各部の説明は、すでに図3を参照してなされているため、省略する。
図5のセンサネット管理サーバ100は、さらに、時刻情報を管理するタイマ501を含む。
図5のステップA511からA514は、それぞれ、図3のステップA311からA314と同じであるため、説明を省略する。
図5のステップB521からB529は、時刻情報をトリガとしてセンサネット管理サーバ100が実行する処理を示す。具体的には、これらのステップは、タイマ501からの要求に従って、定期的に、又は、所定の時刻に、センサネット管理サーバ100が実行する処理を示す。
最初に、タイマ501は、履歴データの欠損の有無を調査する要求をデータ欠損管理部305に送信する(ステップB521)。タイマ501は、所定の間隔で(すなわち、定期的に)ステップB521の要求を送信してもよい。あるいは、タイマ501は、所定の時刻にステップB521の要求を送信してもよい。
データ欠損管理部305は、受信した要求に従って、履歴データに欠損があるか否かを調査する(ステップB522)。
データ欠損管理部305は、履歴データに欠損があると判定された場合、欠損しているデータを再送することを要求するコマンドをセンサネット通信部306に対して発行する(ステップB523)。
センサネット通信部306は、データ欠損管理部305から受信したコマンドを、センサノード150に対して発行する(ステップB524)。このコマンドは、図2AのステップB221において受信される。
次に、センサネット通信部306は、センサノード150から送信された観測データ(履歴データ)を受信する(ステップB525)。ここで受信するデータは、図2AのステップB226において送信されたデータである。
次に、センサネット通信部306は、受信した観測データを、イベント配送部304に送信する(ステップB526)。
イベント配送部304は、受信した観測データを、最新データ蓄積管理部302に送信する(ステップB527)。最新データ蓄積管理部302は、受信した観測データが、既に最新データ蓄積管理部302に格納されている観測データより新しい場合、受信した観測データを最新の観測データとして格納する。
イベント配送部304は、受信した観測データ(すなわち、ステップB527において送信されたものと同じデータ)を、履歴データ蓄積管理部303に送信する(ステップB528)。その結果、受信した観測データが、履歴データ蓄積管理部303が管理するデータベースに履歴データとして格納される。これによって、履歴データの欠損が補完される。
次に、イベント配送部304は、受信した観測データ(すなわち、ステップB528において送信されたものと同じデータ)を、データ欠損管理部305に送信する(ステップB529)。
なお、ステップB522からB529は、それぞれ、図3のステップB324からB331と同様である。
図5において、外部要求受付部301は、履歴データの要求を受信すると(ステップB530)、その要求を履歴データ蓄積管理部303に送信する(ステップB531)。
外部要求受付部301からの要求を受信した履歴データ蓄積管理部303は、その時点でデータベースに蓄積されている履歴データを外部要求受付部301に送信する(ステップB532)。
外部要求受付部301は、履歴データ蓄積管理部303から受信した履歴データを、要求元に送信する(ステップB533)。
ステップB530からB533までの処理は、ステップB521からB529までの処理と無関係に実行される。このため、ステップB531が実行された時点で、データベースに蓄積されている履歴データに欠損がある場合がある。この場合、履歴データ蓄積管理部303は、ステップ532において、欠損のある履歴データを送信する。
最新の観測データを要求されたセンサネット管理サーバ100が実行する処理は、図3のステップ341からステップ344と同様であるため、説明を省略する。後で説明する図7及び図9においても同様である。
図6は、本発明の実施の形態において、時刻情報をトリガとして実行される処理のコマンド発行シーケンスの説明図である。
図6において、ステップ601から607は、それぞれ、図4のステップ401から407と同じであるため、これらのステップの説明を省略する。ただし、ステップ604において送信されたデータは、図5のステップA511において受信される。
また、図6の例では、図4と同様、観測データ#4から#7の送信に失敗している。観測データ#4から#7は、センサネット管理サーバ100に到達していないため、履歴データ蓄積管理部303にまだ格納されていない。言い換えると、この時点の履歴データ蓄積管理部303において、履歴データ#4から#7は欠損している。
その後、管理クライアント160は、センサネット管理サーバ100に、任意の範囲の履歴データを要求する(ステップ608)。この要求は、図5のステップB530に相当する。図4の例と同様、この要求は、観測データ#4から#7を含む範囲を指定している。
センサネット管理サーバ100では、図5のステップB531及びB532の処理が実行される。そして、センサネット管理サーバ100は、要求された履歴データを管理クライアント160に送信する(ステップ609)。ステップ609は、図5のステップB533に相当する。ただし、ここで送信される履歴データにおいて、観測データ#4から#7は欠損している。
図6のステップ610から613は、それぞれ、図4のステップ408から411と同じであるため、これらのステップの説明を省略する。ただし、ステップ613において送信されたデータは、図5のステップA511において受信される。
その後、タイマ501が、履歴データの欠損の有無を調査する要求をデータ欠損管理部305に送信する(ステップ614)。ステップ614は、図5のステップB521に相当する。データ欠損管理部305は、ステップB522において、履歴データの欠損があると判定し、ステップB523を実行する。
次に、センサネット管理サーバ100は、観測データ#4から#7を送信することを要求する履歴データ要求コマンドを、センサノード150に対して送信する(ステップ615)。ステップ615は、図5のステップB524に相当する。ステップ615において送信されたコマンドは、ゲートウェイノード130を経由してルータノード140に到達し(ステップ616)、ルータノード140によって保持される。
その後実行されるステップ617から624は、それぞれ、図4のステップ415から422と同じであるため、これらのステップの説明を省略する。ただし、ステップ619において送信されたデータは、図5のステップA511において受信される。ステップ624において送信されたデータは、図5のステップB525において受信される。
その後再び、管理クライアント160が、センサネット管理サーバ100に任意の範囲の履歴データを要求する(ステップ625)。この要求は、図5のステップB530に相当する。ステップ608と同様、この要求は、観測データ#4から#7を含む範囲を指定している。
センサネット管理サーバ100では、図5のステップB531及びB532の処理が実行される。そして、センサネット管理サーバ100は、要求された履歴データを管理クライアント160に送信する(ステップ626)。この時点で、欠損していた観測データ#4から#7は既に補完されている(ステップ624参照)。このため、ステップ626において、観測データ#4から#7を含む完全な履歴データが送信される。
以上の図5及び図6に示す処理によれば、ユーザが履歴データを要求すると(ステップ608及び625)、管理サーバからすぐに履歴データが応答されるため(ステップ609及び626)、ユーザは迅速に履歴データを閲覧することができる。
図7は、本発明の実施の形態において、ハートビート復旧をトリガとして履歴データを取得する場合の、センサネット管理サーバ100の機能ブロック及びデータフローの説明図である。
具体的には、図7には、ハートビートが一旦消失した後、復旧したときに履歴データを取得するための機能ブロック及びデータフローを示す。
ここで、ハートビート判定について説明する。
ハートビート判定は、遠隔で稼動している装置の異常を監視する手段の一つである。監視対象の装置は、所定の間隔で、特定のハートビート信号を送信する。監視装置(監視対象の装置を監視する側の装置)は、ハートビート信号の受信状況に基づいて、監視対象の装置の稼動状態を判定する。
例えば、監視装置がハートビート信号の送信間隔を知っていれば、最後にハートビート信号を受信した時刻と、ハートビート信号の送信間隔とに基づいて、次にハートビート信号を受信する時刻を算出することができる。算出された時刻が現在時刻より前である場合、既に受信しているはずの次のハートビート信号をまだ受信していないことになる。このように、ハートビート信号が消失した(すなわち、ハートビート信号を上記の所定の間隔で受信しなくなった)場合、監視対象の装置に障害が発生したと判定される。一方、算出された時刻が現在時刻より前である場合、監視対象の装置は正常であると判定される。
本実施の形態においてハートビート判定を実行する場合、監視対象の装置はセンサノード150である。すなわち、センサノード150がハートビート信号を送信する。しかし、観測データとは別にハートビート信号を送信することは、消費電力が増加するため、望ましくない。観測データが定期的に送信される場合、その観測データをハートビート信号として利用することができる。以下、観測データをハートビート信号として利用する場合を例として説明する。
センサネット管理サーバ100は、外部要求受付部301、最新データ蓄積管理部302、履歴データ蓄積管理部303、イベント配送部304、データ欠損管理部305及びセンサネット通信部306を含む。これらの各部の説明は、すでに図3を参照してなされているため、省略する。
図7のセンサネット管理サーバ100は、さらに、ノード状態判定部701を含む。ノード状態判定部701は、センサノード150から定期的に送信されるハートビート信号を監視する。そして、ハートビート信号が消失したとき(すなわち、ハートビート信号を所定の間隔で受信しなくなったとき)、ノード状態判定部701は、センサノード150自体、又は、センサノード150からセンサネット管理サーバ100までの通信経路に障害が発生したと判定する。図7の例において、ノード状態判定部701は、センサノード150から定期的に送信される観測データをハートビート信号として利用する。
図7のステップA711からA714は、それぞれ、図3のステップA311からA314と同じであるため、説明を省略する。
図7のイベント配送部304は、センサネット通信部306から受信した最新の観測データを、ハートビート信号としてノード状態判定部701に送信する(ステップA715)。
図7のステップB721からB728は、ハートビート復旧をトリガとしてセンサネット管理サーバ100が実行する処理を示す。具体的には、これらのステップは、ノード状態判定部701からの要求に従って、センサノード150からセンサネット管理サーバ100への通信が復旧したときにセンサネット管理サーバ100が実行する処理を示す。
センサノード150から定期的に送信される観測データがセンサネット管理サーバ100に正常に到達している間、ノード状態判定部701は、イベント配送部304から定期的にハートビート信号を受信する。観測データがセンサネット管理サーバ100に到達しなくなると、センサネット管理サーバ100は、ハートビート信号を定期的に受信しなくなる。このように、ハートビート信号が消失したとき、ノード状態判定部701は、センサノード150又は通信経路に障害が発生したと判定する。
その後、再びハートビート信号を受信すると、ノード状態判定部701は、センサノード150又は通信経路が障害から復旧したと判定する。このとき、ノード状態判定部701は、履歴データの欠損の有無を調査する要求をデータ欠損管理部305に送信する(ステップB721)。
データ欠損管理部305は、受信した要求に従って、履歴データに欠損があるか否かを調査する(ステップB722)。
データ欠損管理部305は、履歴データに欠損があると判定された場合、欠損している履歴データを再送することを要求するための履歴データ要求コマンドをセンサネット通信部306に対して発行する(ステップB723)。
センサネット通信部306は、データ欠損管理部305から受信したコマンドを、センサノード150に対して発行する(ステップB724)。このコマンドは、図2AのステップB221において受信される。
次に、センサネット通信部306は、センサノード150から送信された観測データ(履歴データ)を受信する(ステップB725)。ここで受信するデータは、図2AのステップB226において送信されたデータである。
次に、センサネット通信部306は、受信した観測データを、イベント配送部304に送信する(ステップB726)。
イベント配送部304は、受信した観測データを、履歴データ蓄積管理部303に送信する(ステップB727)。その結果、受信した観測データが、履歴データ蓄積管理部303が管理するデータベースに格納される。これによって、履歴データの欠損が補完される。
次に、イベント配送部304は、受信した観測データ(すなわち、ステップB727において送信されたものと同じデータ)を、データ欠損管理部305に送信する(ステップB728)。
なお、ステップB722からB726は、それぞれ、図3のステップB324からB328と同様である。また、ステップB727からB728は、それぞれ、図3のステップB330からB331と同様である。
図7において、外部要求受付部301は、履歴データの要求を受信すると(ステップB729)、その要求を履歴データ蓄積管理部303に送信する(ステップB730)。
外部要求受付部301からの要求を受信した履歴データ蓄積管理部303は、その時点でデータベースに蓄積されている履歴データを外部要求受付部301に送信する(ステップB731)。なお、図5のステップB532と同様の理由によって、ステップB731において、欠損のある履歴データが送信される場合がある。
外部要求受付部301は、履歴データ蓄積管理部303から受信した履歴データを、要求元に送信する(ステップB732)。
図8は、本発明の実施の形態において、ハートビート復旧をトリガとして実行される処理のコマンド発行シーケンスの説明図である。
図8において、ステップ801から807は、それぞれ、図4のステップ401から407と同じであるため、これらのステップの説明を省略する。ただし、ステップ804において送信されたデータは、図7のステップA711において受信される。
また、図8の例では、図4と同様、観測データ#4から#7の送信に失敗している。このため、この時点の履歴データ蓄積管理部303において、履歴データ#4から#7は欠損している。
ノード状態判定部701は、観測データ#4を受信するべき時刻に受信しなかったとき、ハートビート信号の消失を検出する(ステップ808)。
その後、管理クライアント160は、センサネット管理サーバ100に、任意の範囲の履歴データを要求する(ステップ809)。この要求は、図7のステップB729に相当する。図4の例と同様、この要求は、観測データ#4から#7を含む範囲を指定している。
センサネット管理サーバ100では、図7のステップB730及びB731の処理が実行される。そして、センサネット管理サーバ100は、要求された履歴データを管理クライアント160に送信する(ステップ810)。ステップ810は、図7のステップB732に相当する。ただし、ここで送信される履歴データにおいて、観測データ#4から#7は欠損している。
その後、センサノード150は再び自律的に環境情報を観測し、最新の観測データ#8及びコマンド要求を送信する(ステップ811及び812)。観測データ#8は、ルータノード140及びゲートウェイノード130を経由してセンサネット管理サーバ100に到達する(ステップ813及び814)。ステップ814において送信された観測データ#8は、図7のステップA711において、センサネット通信部306によって受信される。
センサネット通信部306が受信した観測データ#8は、イベント配送部304を経由して、ノード状態判定部701にハートビート信号として送信される(ステップA715)。
ノード状態判定部701は、観測データ#8を受信すると、ハートビートが復旧した、すなわち、センサノード150又は通信経路が障害から復旧したと判定する。この場合、ノード状態判定部701は、履歴データの欠損の有無を調査する要求をデータ欠損管理部305に送信する(図7のステップB721)。データ欠損管理部305は、ステップB722において、履歴データの欠損があると判定し、ステップB723を実行する。
次に、センサネット管理サーバ100は、観測データ#4から#7を送信することを要求する履歴データ要求コマンドをセンサノード150に対して送信する(ステップ815)。ステップ815は、図7のステップB724に相当する。ステップ815において送信されたコマンドは、ゲートウェイノード130を経由してルータノード140に到達し(ステップ816)、ルータノード140によって保持される。
その後実行されるステップ817から824は、それぞれ、図4のステップ415から422と同じであるため、これらのステップの説明を省略する。ただし、ステップ819において送信されたデータは、図7のステップA711において受信される。ステップ824において送信されたデータは、図7のステップB725において受信される。
その後再び、管理クライアント160が、センサネット管理サーバ100に任意の範囲の履歴データを要求する(ステップ825)。この要求は、図7のステップB729に相当する。ステップ809と同様、この要求は、観測データ#4から#7を含む範囲を指定している。このとき、ステップ809及び810と同様の処理が実行され、履歴データが送信される(ステップ826)。ただし、この時点で、欠損していた観測データ#4から#7は既に補完されている(ステップ824参照)。このため、ステップ826において、観測データ#4から#7を含む完全な履歴データが送信される。
上記の図7及び図8は、観測データをハートビート信号として利用する場合について説明したものである。センサノード150が定期的に環境情報(例えば、温度又は湿度等)を観測する場合、観測データをハートビート信号として利用することができる。この場合、ハートビート信号が消失することは、観測データが到達しないこと、すなわち、履歴データが欠損することを意味する。したがって、この場合、履歴データの欠損を補完する処理(図7のステップB721からB728)を実行する必要がある。
ただし、ハートビートが消失している間は、センサノード150からセンサネット管理サーバ100まで信号が到達する可能性が低い。ハートビートが復旧すれば、信号が到達する可能性は高くなる。このため、履歴データ要求コマンドは、ハートビートが消失している間は送信されず、ハートビートが復旧した後で送信される(ステップ815)。このように、欠損を補完できる可能性が高い場合に欠損を補完するための履歴要求コマンドが発送されるため、管理サーバは効率的に欠損データを補完することができ、管理サーバの処理が軽減される。
一方、上記の例とは異なり、観測データが定期的に送信されない場合も考えられる。例えば、観測対象の環境情報が、不定期に発生するイベント(例えば、ドアの開け閉め)である場合、センサノード150は、そのイベントを検出したときに観測データを送信する。このように、観測データを定期的に送信しないセンサノード150は、観測データと別に定期的にハートビート信号を送信する必要がある。この場合、ハートビート信号が消失したとしても、履歴データに欠損が生じるとは限らない。例えば、ハートビート信号が消失してから復旧するまでの間に一度もドアが開け閉めされなかった場合、履歴データは欠損しない。
このような場合、ハートビート信号に、観測データと共通するシーケンス番号を付与することによって、履歴データが欠損したか否かを判定することができる。例えば、センサノード150は、最後に送信した観測データに付与したシーケンス番号207と同じシーケンス番号を、ハートビート信号に付与して送信してもよい。この場合、復旧して最初に受信したハートビート信号のシーケンス番号と同じ又はそれより古いシーケンス番号が付与された観測データをまだ受信していなければ、履歴データに欠損があると判定される。
以上の図7及び図8に示す処理によれば、ユーザが履歴を要求すると(ステップ809及び825)、すぐに履歴データが応答されるため(ステップ810及び826)、ユーザは迅速に履歴データを閲覧することができる。
図9は、本発明の実施の形態において、シーケンス番号をトリガとして履歴データを取得する場合の、センサネット管理サーバ100の機能ブロック及びデータフローの説明図である。
既に説明したように、センサノード150は、履歴データをデータ蓄積部206に蓄積する。しかし、データ蓄積部206のデータ容量は有限であるため、空き容量がない場合、新しい観測データが格納されるときに、最も古い履歴データが削除される。したがって、センサネット管理サーバ100は、履歴データ蓄積管理部303に蓄積された履歴データに欠損がある場合、欠損している履歴データがデータ蓄積部206から削除される前に履歴データ要求コマンドを発行する必要がある。
図9に示すセンサネット管理サーバ100は、履歴データがデータ蓄積部206から削除される前にその履歴データを取得するために、シーケンス番号に基づいて、履歴データ要求コマンドを発行するタイミングを決定する。
センサネット管理サーバ100は、外部要求受付部301、最新データ蓄積管理部302、履歴データ蓄積管理部303、イベント配送部304、データ欠損管理部305及びセンサネット通信部306を含む。これらの各部の説明は、すでに図3を参照してなされているため、省略する。
図9のステップA911からA914は、それぞれ、図3のステップA311からA314と同じであるため、説明を省略する。
図9のイベント配送部304は、センサネット通信部306から受信した最新の観測データを、さらにデータ欠損管理部305に送信する(ステップA915)。
図9のステップB921からB927は、シーケンス番号をトリガとしてセンサネット管理サーバ100が実行する処理を示す。具体的には、これらのステップは、欠損している履歴データのシーケンス番号と、イベント配送部304から受信した最新の観測データのシーケンス番号とを比較した結果に基づいて、センサネット管理サーバ100が実行する処理を示す。
ステップB921は、ステップA915に相当する。データ欠損管理部305は、ステップB921において、イベント配送部304から最新の観測データを受信する。
データ欠損管理部305は、受信した最新の観測データのシーケンス番号と、欠損している履歴データのシーケンス番号とを比較する。具体的には、データ欠損管理部305は、履歴データ蓄積管理部303に蓄積されている履歴データに欠損があるか否かを判定する。そして、欠損がある場合、データ欠損管理部305は、欠損している履歴データのうち最も古い履歴データのシーケンス番号と、受信した最新の観測データのシーケンス番号との差が所定の閾値を超えたか否かを判定する。所定の閾値は、データ蓄積部206のデータ容量に対する割合に基づいて定められる。
例えば、図2Bの例では、データ蓄積部206は、シーケンス番号207が「0000」から、「FFFF」(十進数に換算すると、65535)までの65536個の観測データを蓄積することができる。例えば、データ容量に対する割合「50%」に基づいて閾値を定める場合、閾値は、65536の50%である32768となる。
この場合、データ欠損管理部305は、欠損している最も古い履歴データのシーケンス番号と、受信した最新の観測データのシーケンス番号との差が32768を超えたとき、履歴データ要求コマンドを発行する必要があると判定する。そして、データ欠損管理部305は、欠損している履歴データを再送することを要求するための履歴データ要求コマンドをセンサネット通信部306に対して発行する(ステップB922)。その結果、欠損している履歴データを、削除される前に取得することが期待される。
センサネット通信部306は、データ欠損管理部305から受信したコマンドを、センサノード150に対して発行する(ステップB923)。このコマンドは、図2AのステップB221において受信される。
次に、センサネット通信部306は、センサノード150から送信された観測データ(履歴データ)を受信する(ステップB924)。ここで受信するデータは、図2AのステップB226において送信されたデータである。
次に、センサネット通信部306は、受信した観測データを、イベント配送部304に送信する(ステップB925)。
イベント配送部304は、受信した観測データを、履歴データ蓄積管理部303に送信する(ステップB926)。その結果、受信した観測データが、履歴データ蓄積管理部303が管理するデータベースに履歴データとして格納される。これによって、履歴データの欠損が補完される。
次に、イベント配送部304は、受信した観測データ(すなわち、ステップB926において送信されたものと同じデータ)を、データ欠損管理部305に送信する(ステップB927)。
なお、ステップB922からB925は、それぞれ、図3のステップB325からB328と同様である。また、ステップB926からB927は、それぞれ、図3のステップB330からB331と同様である。
図9において、外部要求受付部301は、履歴データの要求を受信すると(ステップB928)、その要求を履歴データ蓄積管理部303に送信する(ステップB929)。
外部要求受付部301からの要求を受信した履歴データ蓄積管理部303は、その時点でデータベースに蓄積されている履歴データを外部要求受付部301に送信する(ステップB930)。なお、図5のステップB532と同様の理由によって、ステップB930において、欠損のある履歴データが送信される場合がある。
外部要求受付部301は、履歴データ蓄積管理部303から受信した履歴データを、要求元に送信する(ステップB931)。
図10は、本発明の実施の形態において、シーケンス番号をトリガとして実行される処理のコマンド発行シーケンスの説明図である。
図10において、ステップ1001から1007は、それぞれ、図4のステップ401から407と同じであるため、これらのステップの説明を省略する。ただし、ステップ1004において送信されたデータは、図9のステップA911において受信される。
また、図10の例では、図4と同様、観測データ#4から#7の送信に失敗している。このため、この時点の履歴データ蓄積管理部303において、履歴データ#4から#7は欠損している。
その後、管理クライアント160は、センサネット管理サーバ100に、任意の範囲の履歴データを要求する(ステップ1008)。この要求は、図9のステップB928に相当する。図4の例と同様、この要求は、観測データ#4から#7を含む範囲を指定している。
センサネット管理サーバ100では、図9のステップB929及びB930の処理が実行される。そして、センサネット管理サーバ100は、要求された履歴データを管理クライアント160に送信する(ステップ1009)。ステップ1009は、図9のステップB931に相当する。ただし、ここで送信される履歴データにおいて、観測データ#4から#7は欠損している。
その後、センサノード150は再び自律的に環境情報を観測し、最新の観測データ#8及びコマンド要求を送信する(ステップ1010及び1011)。観測データ#8は、ルータノード140及びゲートウェイノード130を経由してセンサネット管理サーバ100に到達する(ステップ1012及び1013)。ステップ1013において送信された観測データ#8は、図9のステップA911において、センサネット通信部306によって受信される。
センサネット通信部306が受信した観測データ#8は、イベント配送部304を経由して、データ欠損管理部305に送信される(ステップA915)。
データ欠損管理部305は、受信した観測データ#8のシーケンス番号「0008」と、欠損した最も古い履歴データ#4のシーケンス番号「0004」との差「4」が、所定の閾値を超えているか否かを判定する。仮に所定の閾値が「3」であったとすると、二つのシーケンス番号の差が閾値を超えていると判定され、ステップB922及びB923が実行される。その結果、センサネット管理サーバ100は、観測データ#4から#7を送信することを要求する履歴データ要求コマンドをセンサノード150に対して送信する(ステップ1014)。ステップ1014は、図9のステップB923に相当する。
ステップ1014において送信されたコマンドは、ゲートウェイノード130を経由してルータノード140に到達し(ステップ1015)、ルータノード140によって保持される。
その後実行されるステップ1016から1023は、それぞれ、図4のステップ415から422と同じであるため、これらのステップの説明を省略する。ただし、ステップ1018において送信されたデータは、図9のステップA911において受信される。ステップ1023において送信されたデータは、図9のステップB924において受信される。
その後再び、管理クライアント160が、センサネット管理サーバ100に任意の範囲の履歴データを要求する(ステップ1024)。この要求は、図9のステップB928に相当する。ステップ1008と同様、この要求は、観測データ#4から#7を含む範囲を指定している。このとき、ステップ1008及び1009と同様の処理が実行され、履歴データが送信される(ステップ1025)。ただし、この時点で、欠損していた観測データ#4から#7は既に補完されている(ステップ1023参照)。このため、ステップ1025において、観測データ#4から#7を含む完全な履歴データが送信される。
以上の図9及び図10に示す処理によれば、ユーザが履歴を要求すると(ステップ1008及び1024)、すぐに履歴データが応答され(ステップ1009及び1025)、ユーザは迅速に履歴データを閲覧することができる。さらに、センサノード150内のデータ蓄積部206のデータ容量を考慮して、最も古いセンサノード上に格納している履歴データが削除される前に欠損データを補完することができるため、欠損していた履歴データを補完し損なうことなくユーザに提供することが可能となる。
図11は、本発明の実施の形態のセンサノード150の構成を示すブロック図である。
本実施の形態のセンサノード150は、アンテナ1101、RF回路1102、センサ1103、不揮発メモリ1104、電源1105、マイクロコンピュータ(MC)1106及びリアルタイムクロック(RTC)1107を備える。
RF回路1102は、アンテナ1101を介してルータノード140又はゲートウェイノード130と無線通信路を介して通信する高周波(RF)回路である。
センサ1103は、環境情報を観測する。本実施の形態のセンサ1103は、少なくとも、温度及び湿度を観測する。センサ1103は、その他のいかなる種類のセンサ(例えば、加速度センサ等)であってもよい。
不揮発メモリ1104は、例えば、EEPROM等である。本実施の形態の不揮発メモリ1104は、図2Aに示すデータ蓄積部206に相当する。すなわち、不揮発メモリ1104には、少なくとも、図2Bに示す観測データが格納される。不揮発メモリ1104には、さらに他のデータが格納されてもよい。図2Bに示すデータは、不揮発メモリ1104に格納されるため、センサノードの電源が遮断されても(例えば電池交換のため完全に電力供給が停止しても)消失しない。
電源1105は、センサノード150の各部を駆動するための電力を供給する。本実施の形態の電源1105は、例えば電池であるが、その他の種類の電源であってもよい。
RTC1107は、時刻情報を管理する。具体的には、RTC1107は、所定の時間を計測するタイマであってもよいし、現在時刻を計測する時計であってもよい。本実施の形態のRTC1107は、現在時刻を計測する時計である。RTC1107は、図2Aに示すタイマ205に相当する。
なお、電池交換等のために電力供給が完全に停止すると、センサノード150はリセットされる。その結果、RTC1107は、正確な時刻を保持しなくなる。ここで、正確な時刻とは、センサネット管理サーバ100によって管理される時刻と同期した時刻である。一方、不揮発メモリ1104に格納されたデータは消失しない。電源が復旧した後、センサノード150が環境情報の観測を開始すると、観測データは、データ蓄積部206(すなわち、不揮発メモリ1104)に引き続き格納される。このとき、最初に格納される観測データのシーケンス番号207は、センサノード150がリセットされる直前に格納された値の次の値となる。
また、タイムスタンプ208には、センサノード150がリセットされた後、時刻同期処理が実行されるまで、正確でない時刻情報(すなわち、センサネット管理サーバ100によって管理される時刻と同期していない時刻)が格納される。時刻同期処理が実行される前に格納された観測データは、履歴データ要求コマンドによって送信を要求されたとしても、送信されない。その後に実行される時刻同期処理については、後で図21A及び21Bを参照して説明する。
MC1106は、センサノード150全体を制御する。MC1106は、CPU(図示省略)、RAM(図示省略)及びROM(図示省略)を備えてもよい。その場合、CPUがROMに格納されたソフトウェアを実行することによって、種々の機能が実現される。図11には、さらに、MC1106が実現する機能のブロック図を示す。
MC1106は、タスク制御部1111、無線通信部1112、RF回路インターフェース(I/F)1113、センサ制御部1114、センサI/F1115、データ管理部1116、不揮発メモリI/F1117、電源制御部1118、電源回路切替I/F1119及びタイマ割り込みレジスタ1120を備える。
タスク制御部1111は、無線通信部1112、センサ制御部1114、データ管理部1116及び電源制御部1118を制御する。
無線通信部1112は、RF回路1102が実行する無線通信を制御する。無線通信部1112は、図2Aに示す無線通信部201に相当する。RF回路I/F1113は、無線通信部1112がRF回路1102を制御するために使用するレジスタである。
センサ制御部1114は、センサ1103が実行する環境情報の観測を制御する。センサ制御部1114は、図2Aに示すセンサ制御部202に相当する。センサ1103がデジタルセンサである場合,センサI/F1115は、センサ制御部1114がセンサ1103を制御するために使用するレジスタである。また,センサ1103がアナログセンサの場合,センサI/F1115は,A/D(アナログ−デジタル)変換器に相当する。
データ管理部1116は、不揮発メモリ1104に対するデータの書き込み及び読み出しを制御する。不揮発メモリ1117は、データ管理部1116が不揮発メモリに対するデータの書き込み及び読み出しを実行するために使用するレジスタである。
電源制御部1118は、電源1105による各部への電源の投入及び遮断を制御する。電源回路切替I/Fは、電源制御部1118が電源1105を制御するために使用するレジスタである。
タイマ割り込みレジスタ1120は、RTC1107からの割り込みを受けて、タスク制御部1111を起動させる。
図11に示す各部は、協同して、図2A及び図4等に示すセンサノード150の機能を実現する。
例えば、図2AのステップA211において、タスク制御部1111は、タイマ1120を経由してRTC1107からの割り込みを受けると、電源制御部1118に対して、センサノード150の各部への電源投入を要求する。その結果、センサノード150が活動状態になる。さらに、タスク制御部1111は、センサ制御部1114に対して環境情報の観測を要求する。センサ制御部1114は、センサI/F1115を経由してセンサ1103を制御し、環境情報を観測する。
ステップA212からA214において、タスク制御部1111は、センサ制御部1114が観測した環境情報を受け取り、その環境情報を含む環境データの送信を無線通信部1112に要求するとともに、環境データの格納をデータ管理部1116に要求する。
さらに、図2AのステップB222からB223において、タスク制御部1111は、無線通信部1112が受信した要求に従って、データ管理部1116に不揮発メモリ1104から履歴データを読み出すことを要求する。そして、図2AのステップB224からB225において、タスク制御部1111は、データ管理部1116によって読み出された履歴データを送信することを無線通信部1112に要求する。
上記の一連の処理が終了すると、タスク制御部1111は、電源制御部1118に対して、RTC1107以外の各部への電源遮断を要求する。その結果、センサノード150が休眠状態になる。
一方、センサノード150が不定期に間欠動作をする場合もある。例えば、センサノード150がドアの開閉を観測するセンサ1103を備える場合、そのセンサ1103がドアの開閉を観測したときにセンサノード150が活動状態となる。そして、センサノード150は、観測データを送信すると、休眠状態となる。この場合、休眠状態のセンサノード150において、少なくともセンサ1103は動作している必要がある。
いずれの場合にも、休眠状態のセンサノード150において、少なくともRF回路への電力供給は遮断される。このため、休眠状態のセンサノード150の消費電力は、活動状態のときと比較して、小さくなる。
図12は、本発明の実施の形態のセンサノード150が実行する履歴データ要求コマンド返答処理のフローチャートである。
具体的には、図12は、センサノードが履歴データ要求コマンド(図4のステップ413等)を受信したときに実行する処理を示す。この処理は、図2AのステップB221からB226に示す処理に相当する。
センサノード150が履歴データ要求コマンドを受信したとき、図12に示す処理が開始される(ステップ1201)。
受信した履歴データ要求コマンドは、要求の対象である履歴データのシーケンス番号207を指定している。例えば、図4のステップ413に示すコマンドは、#4から#7まで(すなわち、「0004」から「0007」まで)のシーケンス番号207を指定している。センサノード150は、指定されたシーケンス番号207のうち、まだ処理が終了していないシーケンス番号207があるか否か(すなわち、まだ対応する返答データが作成されていないシーケンス番号207があるか否か)を判定する(ステップ1202)。
ステップ1202において、まだ処理が終了していないシーケンス番号207があると判定された場合、センサノード150は、まだ処理が終了していないシーケンス番号207のうち先頭のシーケンス番号207を処理の対象として選択する。以下、処理の対象のシーケンス番号207を「該当シーケンス番号」、該当シーケンス番号が付与された観測データを「該当データ」と記載する。センサノード150は、該当シーケンス番号がデータ蓄積部206に蓄積されているか否かを判定する(ステップ1203)。
ステップ1203において、該当シーケンス番号がデータ蓄積部206に蓄積されていないと判定された場合、該当データはデータ蓄積部206に蓄積されていない。したがって、センサノード150は該当データを返答することができない。この場合、センサノード150は、該当データがないことを示す返答データを作成する(ステップ1206)。そして、センサノード150は、該当シーケンス番号の処理を終了し、次のシーケンス番号を対象とする処理を実行するためにステップ1202に戻る。
一方、ステップ1203において、該当シーケンス番号がデータ蓄積部206に蓄積されていると判定された場合、該当データはデータ蓄積部206に蓄積されている。この場合、センサノード150は、該当データのタイムスタンプ208が時刻同期済みであるか否かを判定する(ステップ1204)。
センサノード150の電源1105は、電池である。電池が交換されたとき、RTC1107の値はリセットされる。その後、管理サーバ100によって時刻が同期されるまで、RTC1107は正確な時刻を示さない。なお、時刻同期済みであるか否かは、観測データに付加されたフラグを参照することによって判定することができる(図21A及び図21B参照)。
ステップ1204において、時刻同期済みでないと判定された場合、該当データのタイムスタンプ208の値は正確でない。この場合、該当データを使用することができないため、ステップ1206が実行された後、処理はステップ1202に戻る。
一方、ステップ1204において、時刻同期済みであると判定された場合、センサノード150は、返答データを作成する(ステップ1205)。具体的には、該当データが返答データに追加される。そして、センサノード150は、該当シーケンス番号の処理を終了し、次のシーケンス番号を対象とする処理を実行するためにステップ1202に戻る。
ステップ1202において、処理が終了していないシーケンス番号がないと判定された場合、履歴データ要求コマンドによって指定された全てのシーケンス番号207に対応する返答データの作成が終了した。この場合、センサノード150は、作成した返答データを送信して(ステップ1207)、処理を終了する。ステップ1207は、図2AのステップB226、及び、図4のステップ420に相当する。
図13Aは、本発明の実施の形態のセンサネット管理サーバ100が管理する最新の観測データの説明図である。
センサネット管理サーバ100の最新データ蓄積管理部302には、各センサノード150から受信した最新の観測データが格納される。図13Aは、ある時点において最新データ蓄積管理部302に格納されている最新の観測データの例を示す。
最新データ蓄積管理部302に格納されている最新の観測データは、ノード識別子(ID)1301、タイムスタンプ1302及び観測値1303からなる。最新の観測データは、さらにシーケンス番号を含んでもよいが、必要ではない。
ノードID1301は、格納されている観測データの送信元のセンサノード150の識別子である。ノードID1301として、IEEE拡張アドレスが使用されてもよい。
タイムスタンプ1302は、送信元のセンサノード150によって観測データに付与されたものである。タイムスタンプ1302は、図2Bのタイムスタンプ208に対応する。
観測値1303は、センサノード150によって観測された環境情報の値である。本実施の形態の観測値1303は、センサノード150が観測した温度及び湿度である。
図13Aでは、例えば、ノードID1301の値「0001000200030004」に対応するタイムスタンプ1302及び観測値1303として、それぞれ、「2006/7/16 10:45:01」及び「25.6℃ 61%」が格納されている。この場合、ノードID「0001000200030004」によって識別されるセンサノード150から最後に受信した観測データが、2006年7月16日の10時45分1秒に観測された温度「25.6℃」及び湿度「61%」である。
図13Bは、本発明の実施の形態のセンサネット管理サーバ100が管理する履歴データの説明図である。
センサネット管理サーバ100の履歴データ蓄積管理部303が管理するデータベースには、各センサノード150から受信した観測データの履歴、すなわち履歴データが格納される。図13Bは、ノードID「0001000200030004」によって識別されるセンサノード150から受信した観測データの履歴の例を示す。センサネット管理サーバ100が複数のセンサノード150から観測データを受信する場合、センサノードごとに図13Bと同様のテーブルが作成され、履歴データ蓄積管理部303によって管理される。
本実施の形態の履歴データは、シーケンス番号1311、タイムスタンプ1312及び観測値1313からなる。
シーケンス番号1311及びタイムスタンプ1312は、送信元のセンサノード150によって観測データに付与されたものである。シーケンス番号1311及びタイムスタンプ1302は、図2Bのシーケンス番号207及びタイムスタンプ208に対応する。
観測値1313は、センサノード150によって観測された環境情報の値である。本実施の形態の観測値1313は、センサノード150が観測した温度及び湿度である。
図13Bでは、例えば、シーケンス番号1311の値「0000」に対応するタイムスタンプ1312及び観測値1313として、それぞれ、「2006/7/14 18:00:01」及び「28.0℃ 60%」が格納されている。この場合、2006年7月14日の18時00分1秒にセンサノード150によって観測された温度及び湿度が、それぞれ、「25.6℃」及び「61%」である。
図13Bの例では、シーケンス番号1311が「0004」から「0007」までの観測データが欠損している。これは、センサネット管理サーバ100が、観測データ#4から#7までを受信することができなかったことを意味する。
図14は、本発明の実施の形態のデータ欠損管理部305が管理するデータ欠損シーケンス番号の説明図である。
データ欠損管理部305は、欠損している観測データのシーケンス番号を管理する。具体的には、例えば、データ欠損管理部305は、図3のステップB324において、欠損している履歴データを調査する。その結果、欠損している観測データのシーケンス番号を取得する。
データ欠損管理部305が管理する情報は、図14に示すように、少なくとも、ノードID1401及び欠損シーケンス番号1402からなる。
ノードID1401は、各センサノード150の識別子である。
欠損シーケンス番号1402は、各センサノード150に対応する履歴データのうち、欠損している観測データのシーケンス番号である。
例えば、図13Bによれば、ノードIDが「0001000200030004」であるセンサノード150の履歴データにおいて、シーケンス番号1311が「0004」から「0007」までの観測データが欠損している。この場合、図14において、ノードID1401の値「0001000200030004」に対応する欠損シーケンス番号1402に、「0004」から「0007」までの値が含まれる。
図3のステップB330において、シーケンス番号が「0004」から「0007」までの観測データ(履歴データ)が補完された場合、ステップB311において、欠損シーケンス番号1402から、「0004」から「0007」までの値が削除される。
なお、何らかの原因によってセンサネット管理サーバ100が再起動したとき、データ欠損管理部305はリセットされ、その結果、図14に示すデータが全て失われる場合がある。このとき、データ欠損管理部305は、履歴データ蓄積管理部303が管理する履歴データを参照して、欠損シーケンス番号1402を取得し、格納してもよい。
次に、データの表示画面について、図15Aから図17Bまでを参照して説明する。これらの表示画面は、管理クライアント160又は業務クライアント165の表示装置(図示省略)に表示される。
図15Aは、本発明の実施の形態において、最新の観測データを表形式で表示する画面の説明図である。本表示形式は、ユーザが最新データ要求で表形式を指定した場合もしくは例えば「現場把握」など最新の観測データを表形式で表示することを前提とするメニューを指定した場合に表示する画面であり、最新データ蓄積管理部に格納される最新の観測データが表示される。
具体的には、図15Aは、図13Aに示す最新の観測データを表示する例である。図15Aの表示画面は、ノード番号1501、ノード名称1502、温度1503、湿度1504及び観測時刻1505からなる。 ノード番号1501及びノード名称1502は、表示対象である各センサノード150を識別する情報である。ノード番号1501の値「1」から「6」は、それぞれ、図13AのノードID1301の値「0001000200030004」から「0001000200030009」に対応する。
ノード名称1502は、各センサノード150が取り付けられている場所を示す。図15Aの例では、ノード番号1501の値「1」から「6」に対応するセンサノード150が、それぞれ、第1会議室、第2会議室、第3会議室、大会議室東側、大会議室西側及び廊下に取り付けられている。なお、ノード名称1502は、センサノード150が取り付けられている人又は物の名称、又は、ユーザが管理しやすいその他の名称であってもよい。
温度1503及び湿度1504は、図13Aの観測値1303に対応する。
観測時刻1505は、図13Aのタイムスタンプ1302に対応する。
図15Bは、本発明の実施の形態において、最新の観測データをマップ形式で表示する画面の説明図である。本表示形式は、ユーザが最新データ要求でマップ形式を指定した場合もしくは「現場全体把握」など最新の観測データをマップ形式で表示することを前提とするメニューを指定した場合に表示する画面であり、図15Aと同様に最新データ蓄積管理部に格納される最新の観測データが表示される。
図15Bは、図15Aと同じ観測データをマップ形式で表示する例である。図15Bに示すように、画面にはフロア図が表示される。そして、センサノード150が取り付けられた位置に、そのセンサノードが観測した最新の観測データ(すなわち、温度及び湿度)及びノード名称等が表示される。
図16は、本発明の実施の形態において、履歴データをグラフ形式で表示する画面の説明図である。本表示形式は、ユーザが履歴データ要求でグラフ形式を指定した場合もしくは例えば「日報作成」など履歴データをグラフ形式で表示することを前提とするメニューを指定した場合に表示する画面であり、履歴データ蓄積管理部に格納される履歴データが表示される。
図16には、例として、2006年7月1日に二つのセンサノード150(ノードA及びノードB)によって観測された全ての履歴データを表示する画面を示す。この例において、表示される履歴データは温度である。この場合、二つのセンサノード150によって2006年7月1日0時0分から、同日の24時0分までに観測された全ての温度が、2本の折れ線グラフによって表示される。
図16には、例えば日報を作成することを前提として、ある1日の0時から24時までの期間の履歴データが表示されているが、ユーザは、履歴データを表示する任意の期間を指定することができる。
図17Aは、本発明の実施の形態において、最新の観測データ及び履歴データをグラフ形式で表示する画面の説明図である。本表示形式は、ユーザが最新データ要求でグラフ形式を指定した場合もしくは「現在までの現場把握」など最新の観測データ及び履歴データをグラフ形式で表示することを前提とするメニューを指定した場合に表示する画面であり、最新データ蓄積管理部及び履歴データ蓄積管理部に格納される観測データが表示される。
図17Aには、例として、二つのセンサノード150(ノードA及びノードB)によって観測された温度を表示する画面を示す。この例において、現在時刻は2006年7月16日12時30分である。図17Aの例は、二つのセンサノード150によって2006年7月16日9時0分から、現在時刻(同日の12時30分)までの間に観測された温度が、履歴データ蓄積管理部から読み出されて2本の折れ線グラフによって表示される。さらにこれ以後は、最新データ蓄積管理部から最新の観測データが読み出され、観測データが追加表示されることになる。これにより、履歴データ蓄積管理部に既に格納されている品質の高い履歴データを表示され、かつ、それ以後は最新の観測データによりリアルタイムに状況を把握することが可能となる。
なお、図17Aに欠損があるのは、図6、8、10で説明したユーザからの履歴データ要求のタイミングにより欠損のある履歴データがユーザに提供される場合であるからである。または、図3で説明したように、ユーザからの要求をトリガとして欠損したデータを補完する場合において、履歴データ蓄積管理部303が外部要求受付部301から履歴データ要求を受信後、すぐにもしくは所定時間後、格納されている欠損のある履歴データを外部要求受付部301に送信し、ユーザに提供される場合であるからである。
図17Bは、図17Aと同様に、本発明の実施の形態において、最新の観測データ及び履歴データをグラフ形式で表示する画面の説明図である。本表示形式も、ユーザが最新データ要求でグラフ形式を指定した場合もしくは「現在までの現場把握」など最新の観測データ及び履歴データをグラフ形式で表示することを前提とするメニューを指定した場合に表示する画面であり、最新データ蓄積管理部及び履歴データ蓄積管理部に格納される観測データが表示される。図17Bの例は、図17Aから1時間半経過し、現在時刻(同日の14時00分)までに観測された温度が表示されており、1時間半の間に欠損を補完する処理が行われ、欠損のない履歴データが表示されている。
次に、センサネット管理サーバ100内で扱われるコマンド又はイベントについて、図18から図20を参照して説明する。
図18は、本発明の実施の形態のセンサネット管理サーバ100内で扱われる単一観測イベントの説明図である。
単一観測イベントとは、センサノード150において観測されたリアルタイムデータをセンサネット管理サーバ100が受信したときに発生するイベントである。本実施の形態の観測データは、センサノード150からゲートウェイノード130までの間は、ZigBeeのような規格に準拠した無線通信によって伝送される。そして、観測データは、例えばZigBeeアダプタ112又はプロファイルドアダプタ106において、XML(Extensible Markup Language)形式に変換される。図18に示す単一観測イベントは、例えば、図3のステップA312において送信される。
図18の例は、ノードIDが「0001000200030004」であるセンサノード150によって、2006年1月1日10時2分1秒に測定された温度「23℃」が、シーケンス番号「001F」とともに、「133.xxx.yyy.zzz:5555」なる識別子を有するゲートウェイノード130を経由して送信されたことを示す。
図19は、本発明の実施の形態のセンサネット管理サーバ100内で扱われる履歴データ要求コマンドの説明図である。
図19に示す履歴データ要求コマンドは、図3のステップB325等において送信されるコマンドの一例である。このコマンドは、XMLによって記述される。
図19の例は、ノードIDが「0001000200030004」であるセンサノード150に対して、シーケンス番号「0010」及び「0029」から「002B」の履歴データの送信を要求するコマンドを示す。
図20は、本発明の実施の形態のセンサネット管理サーバ100内で扱われるまとめ送りイベントの説明図である。
まとめ送りイベントとは、履歴データ要求コマンドに応答して送信された履歴データをセンサネット管理サーバ100が受信したときに発生するイベントである。図20に示すまとめ送りイベントは、例えば、図3のステップB328において送信される。
具体的には、図20は、例として、図19に示すコマンドに対する応答をセンサノード150から受信したセンサネット管理サーバ100において発生するまとめ送りイベントを示す。
図20の例は、シーケンス番号「0010」に対応する履歴データがセンサノード150に存在しなかったことを示す。不揮発メモリ1104の容量は有限であるため、古い履歴データが新しい履歴データによって上書きされる場合がある。その結果、要求された履歴データがセンサノード150に存在しない場合がある。このような場合、センサネット管理サーバ100は、存在しなかったシーケンス番号(図20の例では、「0010」)を対象とする履歴データ要求コマンドをさらに発行することはない。
さらに、図20の例は、シーケンス番号「0029」、「002A」及び「002B」に対応する観測値が、それぞれ、温度「23.0℃」、「22.0℃」及び「24.0℃」であることを示す。さらに、図20の例は、シーケンス番号「0029」、「002A」及び「002B」に対応するタイムスタンプが、それぞれ、「2006年1月1日10時0分1秒」、「2006年1月1日10時1分1秒」及び「2006年1月1日10時2分1秒」であることを示す。
次に、センサノード150の時刻同期処理について、図21A及び図21Bを参照して説明する。
センサノード150のRTC1107は、通常、常に正確な時刻(すなわち、センサネット管理サーバ100によって管理される時刻に同期した時刻)を保持していることが期待される。しかし、RTC1107に保持された時刻がリセットされる場合がある。例えば、電源1105が電池である場合、電池交換の際にRTC1107がリセットされる。その後、センサノード150は、センサネット管理サーバ100から時刻情報を取得して、取得した時刻にRTC1107の時刻を同期させる。このような時刻同期処理が実行されるまでの間、RTC1107は、正確な時刻を保持しない。このように、電池が交換された後、時刻同期処理が実行される前に観測された観測データのタイムスタンプは、センサネット管理サーバ100によって管理される時刻に同期していないため、利用することができない。
しかし、センサノード150は、センサネット管理サーバ100から時刻情報を取得したときに、その取得した時刻情報と、それを取得した時点のRTC1107が保持している時刻との差分に基づいて、既に観測データとして格納されている不正確な(すなわち、センサネット管理サーバ100によって管理される時刻に同期していない)タイムスタンプを修正することができる。具体的には、上記の差分を、既に格納されている不正確なタイムスタンプに加算することによって、タイムスタンプが修正される。修正された後のタイムスタンプは、利用することができる。
図21Aは、本発明の実施の形態において、時刻同期処理が実行される前のセンサノード150のデータ蓄積部206に格納されたデータの説明図である。
図21に示すデータは、図2Bに示したデータに時刻同期フラグ2104を追加したものである。図21Aのうち、シーケンス番号2101、タイムスタンプ2102及び観測値2103は、それぞれ、図2Bのシーケンス番号207、タイムスタンプ208及び観測値209と同様であるため、説明を省略する。ただし、時刻同期処理がまだ実行されていないため、図21Aのタイムスタンプ208には、正確な値が格納されていない。
本実施の形態において、センサノード150のRTC1107に保持された時刻は、リセットによって2000年1月1日0時0分0秒となる。すなわち、RTC1107は、リセットされると、2000年1月1日0時0分0秒を基点として動作を開始する。
時刻同期フラグ2104は、時刻同期処理が実行されたか否かを示すフラグである。時刻同期フラグ2104の値が「0」である場合、時刻同期処理がまだ実行されていない。すなわち、その時刻同期フラグ2104に対応するタイムスタンプの値は、センサネット管理サーバ100によって管理される時刻に同期していない。一方、時刻同期フラグ2104の値が「1」である場合、時刻同期処理が既に実行されている。すなわち、その時刻同期フラグ2104に対応するタイムスタンプの値は、センサネット管理サーバ100によって管理される時刻に同期している。
センサノード150は、時刻同期処理がまだ実行されていなくても、RTC1107からの要求に応じて環境情報を観測し、観測データを作成する。しかし、センサノード150は、センサネット管理サーバ100によって管理される時刻に同期していないタイムスタンプに対応する観測データを送信することを禁止する。すなわち、センサノード150は、時刻同期処理がまだ実行されていないとき、観測データをリアルタイムデータとして送信せず、データ蓄積部206に格納する。
さらに、センサノード150は、履歴データ要求コマンドによって、時刻同期フラグ2104の値が「0」である観測データの送信を要求されたとしても、その観測データを送信しない。あるいは、センサノード150は、観測データを送信するとともに、履歴データ要求コマンドを受信した時刻とその観測データが観測された時刻との差分を送信してもよい。この場合、センサネット管理サーバ100は、その差分に基づいて正確なタイムスタンプを算出することができる。
図21Aの例では、時刻同期処理がまだ実行されていないため、時刻同期フラグ2104の値が「0」である。上記のように、時刻同期フラグ2104の値が「0」である観測データは、利用することができない。これらの観測データは、図21Bに示す時刻同期処理の対象となる。
図21Bは、本発明の実施の形態において、時刻同期処理が実行された後のセンサノード150のデータ蓄積部206に格納されたデータの説明図である。
図21Bは、図21Aに示すデータに対して時刻同期処理を実行することによって取得される、修正されたデータの例を示す。
例えば、RTC1107が時刻情報として「2000年1月1日0時10分10秒」を保持しているときに、センサノード150が、センサネット管理サーバ100から時刻情報「2006年7月16日10時10分1秒」を取得した場合、それらの二つの時刻の差分は、「6年6か月15日9時間59分51秒」である。
なお、センサネット管理サーバ100から送信された時刻情報をセンサノード150が受信するまでに、IPネットワーク180及びPAN185において遅延が発生する場合がある。この場合、上記の時刻情報「2006年7月16日10時10分1秒」は、センサネット管理サーバ100から送信された時刻情報に、上記の遅延時間を加算することによって補正された値であってもよい。
この場合、シーケンス番号「0000」、「0001」及び「0002」に対応するタイムスタンプ「2000年1月1日0時0分10秒」、「2000年1月1日0時5分10秒」及び「2000年1月1日0時10分10秒」に上記の差分を加算することによって、正確なタイムスタンプ「2006年7月16日10時0分1秒」、「2006年7月16日10時5分1秒」及び「2006年7月16日10時10分1秒」が算出される。これらの算出された値によって、タイムスタンプ2102を修正することができる。
タイムスタンプ2102が修正されると、時刻同期フラグ2104の値が「1」に更新される。時刻同期フラグ2104の値が「1」である観測データは、利用することができる。すなわち、センサノード150は、時刻同期処理が実行された後に作成された観測データを最新の観測データとして送信する。また、センサノード150は、履歴データ要求コマンドによって、時刻同期フラグ2104の値が「1」である観測データの送信を要求された場合、その観測データを送信する。
なお、センサノード150がリセットされた時点で、時刻同期フラグ2104の値が「0」である観測データが既に格納されていた場合、その観測データの正確なタイムスタンプ208をその後の時刻同期処理によって算出することは不可能である。したがって、このような観測データは無効化される。
上記のような時刻同期処理は、センサノード150がリセットされたときだけでなく、RTC1107が保持している時刻と、センサネット管理サーバ100によって管理される時刻との間に誤差が生じた場合に実行されてもよい。
次に、センサノード150の外観について、図22A及び図22Bを参照して説明する。
図22Aは、本発明の実施の形態における、観測値が表示されたセンサノード150の外観の説明図である。
本実施の形態のセンサノード150は、データ表示部2201、操作ボタン2202及び操作ボタン2203を備える。
データ表示部2201は、例えば、液晶表示画面である。データ表示部には、操作ボタン2202等の操作に応じてデータが表示される。あるいは、センサネット管理サーバ100から受信したコマンドに従って、データが表示されてもよい。この表示は、消費電力削減のため、所定の時間が経過した後自動的に消える。ただし、データ表示部が電子ペーパーのように電力を消費しない素子である場合、表示を持続してもよい。
図22Aの例では、データ表示部2201に最新の観測値、すなわち、温度及び湿度が表示されている。例えば、操作ボタン2202を操作することによって、データ表示部2201に最新の観測値が表示されてもよい。あるいは,操作ボタン2202を操作することによって,蓄積されている過去の温度や湿度の観測値,蓄積されているデータの中の最大値や最小値,あるいは平均値が表示されても良い。あるいは、操作ボタン2202を操作することによって、センサネットに関する情報(例えば、チャンネルに関する情報又はPAN識別子)が表示されてもよい。操作ボタン2202を操作するごとに、これらの表示が切り替えられてもよい。
図22Bは、本発明の実施の形態における、蓄積データ数が表示されたセンサノード150の外観の説明図である。
図22Bは、図22Aと同様のセンサノード150のデータ表示部2201に、蓄積データ数が表示された例を示す。蓄積データ数とは、センサノード150のデータ蓄積部206に格納されている観測データ(履歴データ)の数である。例えば、操作ボタン2203を操作することによって、データ表示部2201に蓄積データ数が表示されてもよい。あるいは、操作ボタン2203を操作することによって、データ蓄積部206に格納されている観測データのタイムスタンプ208の範囲又はシーケンス番号207の範囲が表示されてもよい。操作ボタン2203を操作するごとに、これらの表示が切り替えられてもよい。
あるいは、操作ボタン2202及び2203の操作の組み合わせによって、データ表示部2201に表示されるデータが決定されてもよい。センサノード150は、さらに多くの操作ボタンを備えてもよい。
なお、本実施形態における処理フローはプログラムとして構成し、コンピュータでプログラムを読み取ることで実行することができる。
以上、本発明の例を説明したが、本発明は上記実施例に限定されるものではなく種々変形実施可能であり、上述した各実施例を適宜組み合わせることが可能であることは当業者に理解されよう。
以上の本発明の実施の形態によれば、センサノード150は、不揮発メモリ1104を備え、観測した環境情報を含む観測データを、センサネット管理サーバ100に送信するとともに、不揮発メモリ1104にも履歴データとして格納する。そして、センサノード150は、センサネット管理サーバ100からのACKを待たずに休眠状態となる。
センサネット管理サーバ100は、最新の観測データを格納するメモリと、観測データの履歴(すなわち、履歴データ)を管理するデータベースとを独立して管理する。そして、センサネット管理サーバ100は、履歴データに欠損がある場合、センサノード150に履歴データの送信を要求する。
センサノード150は、要求に応じて、不揮発メモリ1104に格納された履歴データをセンサネット管理サーバ100に送信する。その結果、センサネット管理サーバ100は、欠損のない完全な履歴データを取得することができる。
したがって、本発明の実施の形態によれば、センサノード150がセンサネット管理サーバ100からのACKを待たないため、活動状態の時間が短縮され、それによって、消費電力が削減される。その結果、センサノード150の電池交換のコストを低減することができる。
さらに、センサネット管理サーバにおいて、最新の観測データと履歴データを分けて管理し、必要に応じてセンサノード150に格納された履歴データを取得するため、センサネット管理サーバ100は、最新の観測データと完全な履歴データをユーザに提供することができる。
ユーザは、仮に最新の観測データを取得できない場合であっても、後で、欠損のない完全な履歴データを取得することができる。このとき、複数の欠損があれば、それらの複数の欠損したデータを一度にまとめて送信することができる。このため、送信に失敗するたびにデータを再送する従来の方法と比較して、送信のための消費電力が削減される。
また、センサネット管理サーバ100は、センサノード150の不揮発メモリ1104に格納された履歴データをバックアップとして利用することができる。例えば、履歴データ蓄積管理部303が管理するデータベースの内容が消失した場合、不揮発メモリ1104に格納された履歴データから、過去の観測データを再構築することができる。