(57)【要約】【課題】電池駆動型のノードにおける電力消費量の削減を図ること。【解決手段】転送ノードは、観測対象を観測するセンサを有するセンサノードと無線通信する無線通信デバイスと、プロセッサおよびメモリを有する演算部と、無線通信デバイスと演算部に電力供給する電池と、を有する。プロセッサは、観測データをセンサノードから受信するまでの受信間隔と、観測データをセンサノードから受信するスロットとに基づいて、スロットで受信する観測データの受信タイミングを設定し、かつ、受信間隔と同一時間間隔である送信間隔をセンサノードに送信する設定処理、設定が完了した場合、電池から無線通信デバイスおよび演算部への電力供給を停止する停止処理、設定から受信タイミングが到来する都度、電池から無線通信デバイスおよび演算部に電力供給して、センサノードからの観測データの受信をスロットの時間分待機する受信待機処理を実行する。【選択図】図２
2015216581.tif 000002
【特許請求の範囲】
【請求項１】
観測対象を観測するセンサを有するセンサノードと無線通信する無線通信デバイスと、プロセッサおよびメモリを有する演算部と、前記無線通信デバイスと前記演算部に電力供給する電池と、を有する転送ノードであって、
前記プロセッサが、
前記センサによって観測された観測データを前記センサノードから受信するまでの受信間隔と、前記観測データを前記センサノードから受信する受信時間であるスロットと、に基づいて、前記スロットで受信する前記観測データの受信タイミングを設定し、かつ、前記受信間隔と同一時間間隔である送信間隔を前記センサノードに送信する設定処理と、
前記設定処理による設定が完了した場合、前記電池から前記無線通信デバイスおよび前記演算部への電力供給を停止する停止処理と、
前記設定処理による設定から前記受信タイミングが到来する都度、前記電池から前記無線通信デバイスおよび前記演算部に電力供給して、前記センサノードからの前記観測データの受信を前記スロットの時間分待機する受信待機処理と、
を実行することを特徴とする転送ノード。
【請求項２】
前記設定処理では、無線通信可能なセンサノードが複数存在する場合、前記センサノードの数よりも少ない複数のスロットの各々について前記受信タイミングを設定し、かつ、前記各センサノードに対応するスロットを割り当てることを特徴とする請求項１に記載の転送ノード。
【請求項３】
前記設定処理では、前記受信間隔よりも長い特定の受信間隔と前記センサノードの数とに基づいて、前記センサノードごとに前記スロットを割り当てた特定の受信タイミングを設定し、
前記受信待機処理では、前記特定の受信タイミングが到来する都度、前記電池から前記無線通信デバイスおよび前記演算部に電力供給して、前記各センサノードからの前記観測データの受信を前記スロットの時間分待機することを特徴とする請求項２に記載の転送ノード。
【請求項４】
前記無線通信デバイスは、さらに、上位のノードと無線通信可能であり、
前記プロセッサが、
前記スロットの時間内に、複数の前記センサノードから４個以上の観測データを受信した場合、前記４個以上の観測データの中から第１の観測データを選択する選択処理と、
前記４個以上の観測データの各々に含まれる３以上の整数であるｎ種類の特徴量により規定されるｎ次元空間において、前記４個以上の観測データの中から、前記選択処理によって選択された第１の観測データに近いｎ個の第２の観測データを取得する取得処理と、
前記ｎ次元空間上における前記第１の観測データの位置と、前記取得処理によって取得された前記ｎ個の第２の観測データにより形成される平面と、の距離を算出する算出処理と、
前記算出処理によって算出された距離に基づいて、前記４個以上の観測データから前記第１の観測データを削除する削除処理と、
前記削除処理後における観測データ群を結合した通信メッセージを生成する結合処理と、
前記結合処理によって得られた通信メッセージを前記上位のノードに無線送信する送信処理と、
を実行することを特徴とする請求項２に記載の転送ノード。
【請求項５】
前記無線通信デバイスは、さらに、上位のノードと無線通信可能であり、
前記プロセッサが、
前記スロットの時間内に前記センサノードから前記観測データを受信した場合、前記無線通信デバイスにより、前記観測データを前記上位のノードに無線送信する送信処理を実行することを特徴とする請求項１に記載の転送ノード。
【請求項６】
前記プロセッサが、
前記スロットの時間内に複数の観測データを受信した場合、前記複数の観測データを結合した通信メッセージを生成する結合処理を実行し、
前記送信処理では、前記結合処理によって得られた通信メッセージを前記上位のノードに無線送信することを特徴とする請求項５に記載の転送ノード。
【請求項７】
前記プロセッサが、
前記受信待機処理における１回の受信待機における前記観測データの数と、前記スロットの数および前記受信間隔により規定される最大受信流量と、に基づいて、１回の受信待機の時間の冗長を検知する検知処理を実行し、
前記設定処理では、前記検知処理によって冗長であると検知された場合、前記スロットの数の削減または前記受信間隔の伸長による設定変更を実行し、
前記送信処理では、前記設定変更による変更結果を前記センサノードに送信することを特徴とする請求項１または２に記載の転送ノード。
【請求項８】
観測対象を観測するセンサと、前記センサによって観測された観測データを転送する転送ノードに無線通信する無線通信デバイスと、プロセッサおよびメモリを有する演算部と、前記センサと前記無線通信デバイスと前記演算部に電力供給する電池と、を有するセンサノードであって、
前記プロセッサが、
前記センサにより前記観測対象を観測するまでの前記送信間隔より短い観測間隔により観測タイミングを設定し、前記転送ノードが前記観測データを受信する受信間隔と同一時間間隔である、前記センサノードが前記観測データを前記転送ノードに送信するまでの送信間隔を前記転送ノードから受信して、前記転送ノードに前記観測データを送信する送信タイミングを設定する設定処理と、
前記設定処理による設定が完了した場合、前記電池から前記無線通信デバイスおよび前記演算部への電力供給を停止する第１の停止処理と、
前記設定処理による設定から前記観測タイミングまたは前記送信タイミングのいずれかの一方のタイミングが到来する都度、前記電池から前記演算部に電力供給する給電処理と、
前記観測タイミングが到来する都度、前記電池から前記センサに電力供給して、前記センサに前記観測対象を観測させて前記観測データを取得して前記メモリに保持し、所定の観測時間経過後に前記電池からの前記センサへの電力供給を停止する観測処理と、
前記送信タイミングが到来する都度、前記メモリに保持された前記観測データを読み出して前記転送ノードに送信し、前記スロットの時間分経過後に前記電池から前記無線通信デバイスへの電力供給を停止する送信処理と、
前記観測処理または前記送信処理が終了した場合、前記電池から前記演算部への電力供給を停止する第２の停止処理と、
を実行することを特徴とするセンサノード。
【請求項９】
前記設定処理では、前記転送ノードが前記観測データを前記センサノードから受信する受信時間であるスロットを前記センサノードに割り当てた場合、前記スロットを指定する情報と前記受信間隔に基づいて、前記送信タイミングを設定することを特徴とする請求項８に記載のセンサノード。
【請求項１０】
前記送信処理では、前記転送ノードから前記観測データを受信したことを示す確認メッセージを前記無線通信デバイスにより受信した場合、前記観測データを前記メモリから消去することを特徴とする請求項８に記載のセンサノード。
【請求項１１】
前記センサノードは、前記観測データの送信を待機する送信待機状態と前記観測データの送信を待機しない送信非待機状態のいずれかの状態に設定可能であり、
前記観測処理では、前記観測データが送信対象とすべきか否かを判断し、送信対象にすべきと判断された場合には、前記観測データを前記メモリに保持して、前記センサノードの状態を前記送信待機状態に遷移させて、前記所定の観測時間経過後に前記電池から前記センサへの電力供給を停止し、送信対象にすべきでないと判断された場合には、前記所定の観測時間経過後に前記電池から前記センサへの電力供給を停止し、
前記送信処理では、前記送信タイミングが到来したときの前記状態が前記送信待機状態である場合には、前記メモリに保持された前記観測データを読み出して前記転送ノードに送信し、前記状態を前記送信待機状態から前記送信非待機状態に遷移させて、前記スロットの時間分経過後に前記電池から前記無線通信デバイスへの電力供給を停止し、前記送信タイミングが到来したときの前記状態が前記送信非待機状態である場合には、前記電池から前記無線通信デバイスへ電力供給しないことを特徴とする請求項８に記載のセンサノード。
【請求項１２】
前記設定処理では、前記受信間隔よりも長い特定の受信間隔と前記センサノードに割り当てた前記スロットを指定する情報とを前記転送ノードから受信し、前記特定の受信間隔と同一時間間隔である特定の送信間隔と前記スロットを指定する情報とに基づいて、特定の送信タイミングを設定し、
前記送信処理では、前記送信タイミングが到来したときの前記状態が前記送信非待機状態である場合には、前記特定の送信タイミングが到来したか否かを判断し、前記特定の送信タイミングが到来した場合には、前記電池から前記無線通信デバイスへ電力供給し、前記メモリに保持された前記観測データを読み出して前記転送ノードに送信し、前記スロットの時間分経過後に前記電池から前記無線通信デバイスへの電力供給を停止することを特徴とする請求項８に記載のセンサノード。
【請求項１３】
前記観測処理では、前記観測データが複数取得された場合、時系列な３個の観測データのうち、最古の観測データと最新の観測データとの間の中間の観測データを線形近似圧縮により削除可能か否かを判断し、削除可能である場合、前記中間の観測データを前記メモリに保持しないことを特徴とする請求項８に記載のセンサノード。
【請求項１４】
前記センサノードは、前記観測データの送信を待機する送信待機状態と前記観測データの送信を待機しない送信非待機状態と前記観測データの送信が失敗した場合に前記観測データを再送するために待機する遅延待機状態のいずれかの状態に設定可能であり、
前記送信処理では、前記送信タイミングが到来したときの前記状態が前記送信待機状態である場合には、前記メモリに保持された前記観測データを読み出して前記転送ノードに送信し、当該送信が成功したときは前記状態を前記送信待機状態から前記送信非待機状態に遷移させて、前記所定の送信時間経過後に前記電池から前記無線通信デバイスへの電力供給を停止し、当該送信が失敗したときは後続する複数の送信タイミングの中のいずれかの送信タイミングを決定して、前記状態を前記遅延待機状態に遷移させて、前記所定の送信時間経過後に前記電池から前記無線通信デバイスへの電力供給を停止し、前記送信タイミングが到来したときの前記状態が前記送信非待機状態である場合には、前記電池から前記無線通信デバイスへの電力供給をせず、前記遅延待機状態において前記いずれかの送信タイミングが到来した場合には、前記状態を前記送信待機状態に遷移させることを特徴とする請求項８に記載のセンサノード。
【請求項１５】
観測対象を観測するセンサを有するセンサノードと、前記センサによって観測された観測データを前記センサノードから受信する転送ノードと、を有するセンサネットワークシステムであって、
前記転送ノードは、前記センサノードと無線通信する第１の無線通信デバイスと、第１のプロセッサおよび第１のメモリを有する第１の演算部と、前記第１の無線通信デバイスと前記第１の演算部に電力供給する第１の電池と、を有し、
前記センサノードは、前記観測データを前記転送ノードに無線通信する第２の無線通信デバイスと、第２のプロセッサおよび第２のメモリを有する第２の演算部と、前記センサと前記第２の無線通信デバイスと前記第２の演算部に電力供給する第２の電池と、を有し、
前記転送ノードでは、
前記第１のプロセッサが、
前記センサによって観測された観測データを前記センサノードから受信するまでの受信間隔と、前記観測データを前記センサノードから受信する受信時間であるスロットと、に基づいて、前記スロットで受信する前記観測データの受信タイミングを設定し、かつ、前記受信間隔と同一時間間隔である送信間隔を前記センサノードに送信する第１の設定処理と、
前記第１の設定処理による設定が完了した場合、前記第１の電池から前記第１の無線通信デバイスおよび前記第１の演算部への電力供給を停止する第１の停止処理と、
前記第１の設定処理による設定から前記受信タイミングが到来する都度、前記第１の電池から前記第１の無線通信デバイスおよび前記第１の演算部に電力供給して、前記センサノードからの前記観測データの受信を前記スロットの時間分待機する受信待機処理と、を実行し、
前記センサノードでは、
前記第２のプロセッサが、
前記センサにより前記観測対象を観測するまでの前記送信間隔より短い観測間隔により観測タイミングを設定し、前記転送ノードが前記観測データを受信する受信間隔と同一時間間隔である、前記センサノードが前記観測データを前記転送ノードに送信するまでの送信間隔を前記転送ノードから受信して、前記転送ノードに前記観測データを送信する送信タイミングを設定する第２の設定処理と、
前記第２の設定処理による設定が完了した場合、前記第２の電池から前記第２の無線通信デバイスおよび前記第２の演算部への電力供給を停止する第２の停止処理と、
前記第２の設定処理による設定から前記観測タイミングまたは前記送信タイミングのいずれかの一方のタイミングが到来する都度、前記第２の電池から前記第２の演算部に電力供給する給電処理と、
前記観測タイミングが到来する都度、前記第２の電池から前記センサに電力供給して、前記センサに前記観測対象を観測させて前記観測データを取得して前記メモリに保持し、所定の観測時間経過後に前記第２の電池から前記センサへの電力供給を停止する観測処理と、
前記送信タイミングが到来する都度、前記第２のメモリに保持された前記観測データを読み出して前記転送ノードに送信し、前記スロットの時間分経過後に前記第２の電池から前記第２の無線通信デバイスへの電力供給を停止する送信処理と、
前記観測処理または前記送信処理が終了した場合、前記第２の電池から前記第２の演算部への電力供給を停止する第３の停止処理と、を実行することを特徴とするセンサネットワークシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、無線通信を介して観測データを送信するセンサノード、無線通信を介して収集した観測データを転送する転送ノード、並びに、センサノードおよび転送ノードを有するセンサネットワークシステムに関する。
【背景技術】
【０００２】
無線センサネットワークの例としては、ＩＥＥＥ８０２．１５．４やＺｉｇＢｅｅ（登録商標。以下同じ）通信規格を利用した非同期型無線ネットワークが広く採用されている。ＺｉｇＢｅｅは、センサネットワークを構成するノードを、ＦＦＤ（Ｆｕｌｌ−Ｆｕｎｃｔｉｏｎ  Ｄｅｖｉｃｅ：フル機能デバイス）とＲＦＤ（Ｒｅｄｕｃｅｄ−Ｆｕｎｃｔｉｏｎ  Ｄｅｖｉｃｅ：機能限定デバイス）とに分類する。
【０００３】
ルータノードおよびゲートウェイノードはＦＦＤである。ルータノードおよびゲートウェイノードは、メッシュ構造の通信ネットワークを構築し、観測データを多段に転送する機能を有する。ＦＦＤは、他のノードからの通信を常時監視する必要があるため、ＡＣ（Ａｌｔｅｒｎａｔｉｎｇ  Ｃｕｒｒｅｎｔ）駆動により常時起動状態となる。一方、センサノードはＲＦＤであり、センサによる観測と観測データの無線送信を行った後、休眠することにより電力消費を削減し、その結果、電池駆動を実現している。
【０００４】
一方、広域な現場においてルータノードの電源確保が困難であることから、たとえば、特許文献１や特許文献２に示す電池駆動によるルータノードが開示されている。
【０００５】
特許文献１では、ルータノードが、その子として管理する複数のセンサノードと時刻同期を行い、センサノードとルータノード間でＴＤＭＡ（Ｔｉｍｅ  Ｄｉｖｉｓｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ａｃｃｅｓｓ）方式を用いた通信を行う方式について開示している。すなわち、ルータノードがそれぞれのセンサノードに対して時間スロットを割り当て、各時間スロットにおいて該ルータノードと通信を行うセンサノードが単独であることを保証する。これにより、複数のセンサノードから同時に通信がなされることによる通信衝突（輻輳）が発生しないことを保証する。ルータノードは該各時間スロット以外の時間に休眠を行うことにより省電力を図り、その結果ルータノードの電池駆動を実現する。
【０００６】
特許文献２ではＴＤＭＡ方式を採用し、センサノードからの通信が必要であるという情報をプリアンブルによりルータノードに伝達し、ルータノードが該センサノードに対して通信開始時刻を伝達し、該通信開始時刻までルータノードを休眠させることにより省電力を図る方式について開示している。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００８−２４４７５６号公報
【特許文献２】特開２０１２−１７００６８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
複数のセンサノードおよびルータノードを利用する現場では、センサノードおよびルータノードの電池交換の作業コストが課題となる。そのため、ルータノードの電力消費量を、少なくともセンサノードの電力消費量と同等程度に抑える必要がある。
【０００９】
一方、特許文献１および特許文献２で開示された方法では、ルータノードの常時受信待機に課題がある。ルータノードは、センサノードの送信間隔において常時受信待機を行わねばならない。多くの観測データの波形は、センサノードの観測間隔に対し十分緩やかとなる。センサノードが一定間隔で観測した場合において、たとえば一定の許容誤差範囲内で同じ値を取る観測データを間引くことにより、センサノードの送信回数を削減することができ、これによりセンサノードの電力消費量を削減することができる。
【００１０】
一方、ルータノードは、センサノードにおいて観測データが間引かれたことを検知する手段が存在しない。そのためルータノードは、センサノードが送信を行う可能性のある全ての時間スロットにおいて、受信待機を行う必要がある。
【００１１】
このように、従来の電池駆動型のルータノードにおいては、センサノードの消費電力量に対し、センサノードの接続数を乗じた値と同程度の電力消費が必要となる。そのため、ルータノードの電池をセンサノードの電池よりも大容量にするか、あるいはルータノードの電池交換回数をセンサノードの電池交換回数よりも高頻度で実施する必要がある。
【００１２】
また、センサノードにおいては、センサによる観測処理時では観測データの送信処理はしないため、無線通信デバイスを起動すると電力消費量が増加する。同様に、観測データの送信処理時では、センサによる観測処理はしないため、センサを起動すると電力消費量が増加する。
【００１３】
本発明は、電池駆動型のノードにおける電力消費量の削減を図ることを目的とする。
【課題を解決するための手段】
【００１４】
本願において開示される発明の一側面となるセンサネットワークシステムは、観測対象を観測するセンサを有するセンサノードと、前記センサによって観測された観測データを前記センサノードから受信する転送ノードと、を有する。前記転送ノードは、前記センサノードと無線通信する第１の無線通信デバイスと、第１のプロセッサおよび第１のメモリを有する第１の演算部と、前記第１の無線通信デバイスと前記第１の演算部に電力供給する第１の電池と、を有し、前記センサノードは、前記観測データを前記転送ノードに無線通信する第２の無線通信デバイスと、第２のプロセッサおよび第２のメモリを有する第２の演算部と、前記センサと前記第２の無線通信デバイスと前記第２の演算部に電力供給する第２の電池と、を有する。以降転送ノードのことをルータノードと称する。
【００１５】
前記ルータノードでは、前記第１のプロセッサが、前記センサによって観測された観測データを前記センサノードから受信するまでの受信間隔と、前記観測データを前記センサノードから受信する受信時間であるスロットと、に基づいて、前記スロットで受信する前記観測データの受信タイミングを設定し、かつ、前記受信間隔と同一時間間隔である送信間隔を前記センサノードに送信する第１の設定処理と、前記第１の設定処理による設定が完了した場合、前記第１の電池から前記第１の無線通信デバイスおよび前記第１の演算部への電力供給を停止する第１の停止処理と、前記第１の設定処理による設定から前記受信タイミングが到来する都度、前記第１の電池から前記第１の無線通信デバイスおよび前記第１の演算部に電力供給をして、前記センサノードからの前記観測データの受信を前記スロットの時間分待機する受信待機処理と、を実行する。
【００１６】
前記センサノードでは、前記第２のプロセッサが、前記センサにより前記観測対象を観測するまでの前記送信間隔より短い観測間隔により観測タイミングを設定し、前記ルータノードが前記観測データを受信する受信間隔と同一時間間隔である、前記センサノードが前記観測データを前記ルータノードに送信するまでの送信間隔を前記ルータノードから受信して、前記ルータノードに前記観測データを送信する送信タイミングを設定する第２の設定処理と、前記第２の設定処理による設定が完了した場合、前記第２の電池から前記第２の無線通信デバイスおよび前記第２の演算部への電力供給を停止する第２の停止処理と、前記第２の設定処理による設定から前記観測タイミングまたは前記送信タイミングのいずれかの一方のタイミングが到来する都度、前記第２の電池から前記第２の演算部に電力供給する給電処理と、前記観測タイミングが到来する都度、前記センサに電力供給して、前記センサに前記観測対象を観測させて前記観測データを取得して前記メモリに保持し、所定の観測時間経過後に前記第２の電池から前記センサへの電力供給を停止する観測処理と、前記送信タイミングが到来する都度、前記第２のメモリに保持された前記観測データを読み出して前記ルータノードに送信し、前記スロットの時間分経過後に前期第２の電池から前記第２の無線通信デバイスへの電力供給を停止する送信処理と、前記観測処理または前記送信処理が終了した場合、前記第２の電池から前記第２の演算部への電力供給を停止する第３の停止処理と、を実行する。
【発明の効果】
【００１７】
本発明の代表的な実施の形態によれば、電池駆動型のノードにおける電力消費量の削減を図ることができる。前述した以外の課題、構成及び効果は、以下の実施例の説明により明らかにされる。
【図面の簡単な説明】
【００１８】
【図１】実施例１にかかるセンサネットワークシステムの構成例を示す説明図である。
【図２】実施例１におけるセンサネットワークシステムの通信シーケンス例１を示す説明図である。
【図３】図実施例１にかかるセンサノードのハードウェア構成例を示すブロック図である。
【図４】実施例１にかかるルータノードのハードウェア構成例を示すブロック図である。
【図５】実施例１にかかるゲートウェイノードのハードウェア構成例を示すブロック図である。
【図６】実施例１かかるサーバのハードウェア構成例を示すブロック図である。
【図７】実施例１にかかるセンサノードの機能的構成例を示すブロック図である。
【図８】実施例１にかかるルータノードの機能的構成例を示すブロック図である。
【図９】実施例１にかかるゲートウェイノードの機能的構成例を示すブロック図である。
【図１０】実施例１にかかるサーバの機能的構成例を示すブロック図である。
【図１１】センサネットワークシステムにおける通信メッセージのデータ構造例を示す説明図である。
【図１２】ルータノードの動作処理の一例を示すフローチャートである。
【図１３】センサノードの動作処理の一例を示すフローチャートである。
【図１４】図１３に示した通信試行処理（ステップＳ１３１２）に関するセンサノード１０４の状態遷移図である。
【図１５】図１３に示した通信試行処理（ステップＳ１３１２）の一例を示すフローチャートである。
【図１６】図１５に示したイベント送信試行処理（ステップＳ１５０３）の一例を示すフローチャートである。
【図１７】図１５に示したコマンド受信試行処理（ステップＳ１５０５）の一例を示すフローチャートである。
【図１８】実施例１におけるセンサネットワークシステムの通信シーケンス例２を示す説明図である。
【図１９】線形近似圧縮の概念図である。
【図２０】逐次的に線形近似圧縮を行うための概念図である。
【図２１】センサノードの圧縮部による線形近似圧縮処理の一例を示すフローチャートである。
【図２２】実施例３にかかる通信試行処理に関するセンサノードの状態遷移図である。
【図２３】実施例３にかかる通信試行処理（ステップＳ２２０４）のフローチャートである。
【図２４】実施例３におけるセンサネットワークシステムの通信シーケンス例を示す説明図である。
【図２５】実施例４にかかる通信試行処理に関するセンサノードの状態遷移図である。
【図２６】実施例４にかかる通信試行処理の一例を示すフローチャートである。
【図２７】実施例４におけるセンサネットワークシステムの通信シーケンス例を示す説明図である。
【図２８】複数段構成のセンサネットワークシステムの構成例を示す説明図である。
【図２９】実施例５におけるセンサネットワークシステムの通信シーケンス例を示す説明図である。
【図３０】図１２に示したイベント結合（ステップＳ１２０９）における空間圧縮の概念を示す説明図である。
【図３１】実施例５にかかる空間圧縮処理の一例を示すフローチャートである。
【図３２】実施例６にかかるルータノードの制御部の動作処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００１９】
（実施例１）
＜システム構成例＞
図１は、実施例１にかかるセンサネットワークシステムの構成例を示す説明図である。センサネットワークシステムは、たとえば、鉄道、道路、橋梁の設備保全、農地の生育監視のための温度、電力使用量、装置振動応力など、時間の経過に伴い変化する観測データをセンサノードにより取得するシステムである。
【００２０】
センサネットワークシステム１００は、サーバ１０１と、有線通信手段１０７を介して接続するゲートウェイノード１０２、ゲートウェイノード１０２と無線通信手段１０８を介してツリー状に接続するルータノード１０３と、ルータノード１０３と無線通信手段１０８を介して接続するセンサノード１０４と、を含む構成である。ルータノード１０３およびセンサノード１０４は、電池駆動である。
【００２１】
有線通信手段１０７は、たとえば、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Nｅｔｗｏｒｋ）であり、既存のＴＣＰ／ＩＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）やＵＤＰ／ＩＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）を用いて相互通信を行う有線の通信路である。無線通信手段１０８には、たとえば、ＩＥＥＥ８０２．１５．４プロトコルやＺｉｇＢｅｅプロトコルが適用される無線の通信路である。
【００２２】
サーバ１０１は、ゲートウェイノード１０２、ルータノード１０３、およびセンサノード１０４を制御し、センサノード１０４が観測した観測データを、ルータノード１０３およびゲートウェイノード１０２を介して取得する。ゲートウェイノード１０２は、有線通信手段１０７と無線通信手段１０８の境界に配置され、サーバ１０１とルータノード１０３との間のデータを中継する。
【００２３】
ルータノード１０３は、センサノード１０４からの観測データを直接または配下のルータノード１０３から間接的に受信して、ゲートウェイノード１０２に送信する。また、ルータノード１０３は、ゲートウェイノード１０２からのデータをセンサノード１０４または配下のルータノード１０３に送信する。ゲートウェイノード１０２と観測地点に配置されるセンサノード１０４との間の距離に応じて、１または複数のルータノード１０３が配置される。センサノード１０４は観測地点に配置され、時間の経過に伴い変化する観測データを取得してルータノード１０３に送信する。
【００２４】
＜センサネットワークシステム１００の通信シーケンス例１＞
図２は、実施例１におけるセンサネットワークシステム１００の通信シーケンス例１を示す説明図である。図２では、説明を単純化するため、ルータノード１０３およびセンサノード１０４は１台とする。図２において、サーバ１０１、ゲートウェイノード１０２、ルータノード１０３およびセンサノード１０４の縦線は時間軸である。時間軸間の矢印はデータの流れを示す。
【００２５】
また、ルータノード１０３およびセンサノード１０４における時間軸上の矩形は、ルータノード１０３およびセンサノード１０４が起動している時間と当該時間での処理を模式的に示す。たとえば、ルータノード１０３における矩形の記号「ｂ」は、センサノード１０４へのコマンド送信処理を示す。また、矩形の記号「ｒ」は、センサノード１０４からの通信メッセージを受信するコマンド受信処理を示す。コマンド送信処理ｂおよびコマンド受信処理ｒが終了すると、ルータノード１０３は、電力消費を抑えるため休眠する。これらの処理について、前の処理の開始（終了を基準にしてもよい）から次の処理の開始までの間隔がルータノード１０３の受信間隔である。
【００２６】
また、センサノード１０４における矩形の記号「ｉ」は、ルータノード１０３からのコマンド受信処理を示す。また、矩形の記号「ｏ」は、センサによる観測処理を示す。また、矩形の記号「ｓ」は、観測処理によって観測された観測データをルータノード１０３に送信するための通信試行処理を示す。これらの処理が終了すると、センサノード１０４は、電力消費を抑えるため、休眠する。コマンド受信処理ｉの開始（終了を基準にしてもよい）から通信試行処理ｓの開始までの間隔がセンサノード１０４の送信間隔である。前の通信試行処理ｓの開始（終了を基準にしてもよい）から次の通信試行処理ｓまでの間隔もセンサノード１０４の送信間隔である。
【００２７】
初期処理として、サーバ１０１は、ルータノード１０３の受信間隔をΔ秒に変更する設定コマンドｃ２０１を発行する。ゲートウェイノード１０２は、設定コマンドｃ２０１をサーバ１０１から受信して、ルータノード１０３に転送する。ゲートウェイノード１０２が、設定コマンドｃ２０１を発行してもよい。ルータノード１０３は、設定コマンドｃ２０１を受信し、自分自身が管理する配下の全てのセンサノード１０４に対し、送信間隔をΔ秒に設定する設定コマンドｃ２０２を発行し、ルータノード１０３自身の受信間隔をΔ秒間隔に設定し、休眠を開始する。センサノード１０４は設定コマンドｃ２０２を受信し、送信間隔をΔ秒に設定し、休眠を開始する。これにより、ルータノード１０３の受信間隔とセンサノード１０４の送信間隔が同期する。
【００２８】
センサノード１０４は、所与の観測間隔で観測処理ｏを行い、観測データを取得する。観測データはすべて送信対象としてもよく、また、センサノード１０４内で送信対象か否かを判定してもよい。Ｃａｓｅ２０５の例では、通信試行処理ｓを実行する時点で三回の観測処理ｏを行っており、そのうち二回の観測処理ｏにおいて、センサノード１０４が観測データをイベントとして送信キューに蓄積したものとする。
【００２９】
Ｃａｓｅ２０５の例では、センサノード１０４は、通信試行処理ｓにおいて、送信キューにイベントが存在するため、イベントｅ２０３を発行する。なお、センサノード１０４は、イベントｅ２０３である２回の観測データを単一の通信メッセージに格納して送信することができる。
【００３０】
ルータノード１０３は、イベントｅ２０３を受信し、ゲートウェイノード１０２に対しイベントｅ２０４を送信する。そして、ゲートウェイノード１０２は、受信したイベントｅ２０４を有線通信手段１０７によりサーバ１０１に送信する。
【００３１】
また、Ｃａｓｅ２０６の例は、通信試行処理ｓを実行する時点で三回の観測処理ｏを行っており、その全ての観測処理ｏにおいて送信キューにイベントが蓄積されていない。Ｃａｓｅ２０６の例では、センサノード１０４は、通信試行処理ｓにおいて、送信キューにイベントが存在しないため、イベントを発行しない。
【００３２】
一方、ルータノード１０３は、前回（Ｃａｓｅ２０５）のコマンド受信処理ｒからΔ秒経過したときに休眠状態から起動してコマンド受信処理ｒに復帰するが、Ｃａｓｅ２０６ではセンサノード１０４からイベントが送信されてこないため、所定時間経過後に再度休眠状態となる。
【００３３】
図２に示した実施例１の効果は以下三点である。第一に、センサノード１０４が観測タイミングで毎回送信せず、ルータノード１０３の受信タイミングでのみ送信を行うため、センサノード１０４の観測タイミングで無線通信デバイスを起動する必要がなく、また観測タイミングにおいてルータノード１０３との通信時間が削減できるため、センサノード１０４の電力消費量を削減することができる。
【００３４】
第二に、センサノード１０４の送信試行タイミングにおいても、センサノード１０４に送信対象データが存在しない場合、無線通信デバイスの起動およびルータノード１０３との通信時間が削減できるため、センサノード１０４の電力消費量を削減することができる。
【００３５】
第三に、ルータノード１０３においては、センサノード１０４からの通信がルータノード１０３の受信タイミングのみに限定されるため、それ以外の時刻では休眠することができる。したがって、ルータノード１０３の電力消費量を削減することができる。
【００３６】
一般に、センサノード１０４が観測する観測データの変化は、連続する観測処理ｏの間隔である観測間隔に対して十分緩やかな場合が多い。そのため、センサノード１０４が観測データの変化を送信する場合、必ずしも全ての観測処理ｏにおいて観測データを送信する必要はない。
【００３７】
＜ハードウェア構成例＞
つぎに、サーバ１０１、ゲートウェイノード１０２、ルータノード１０３、およびセンサノード１０４のハードウェア構成例について説明する。
【００３８】
図３は、実施例１にかかるセンサノード１０４のハードウェア構成例を示すブロック図である。センサノード１０４は、バッテリ３０１と、現在時刻を刻み続ける機能を有する集積回路であるＲＴＣ（Ｒｅａｌ  ｔｉｍｅ  Ｃｌｏｃｋ）３０２と、実世界環境を観測する機能を有するセンサ３０３と、プロセッサ３０６と、揮発性のメモリ３０７と、不揮発性メモリ３０８と、無線通信デバイス３０９と、を含む構成である。センサ３０３、プロセッサ３０６、揮発性のメモリ３０７、および不揮発性メモリ３０８は、演算部３０４を構成する。バッテリ３０１は、ＲＴＣ３０２、演算部３０４、無線通信デバイス３０９のそれぞれに対し電力供給を行う機能を有する。
【００３９】
図４は、実施例１にかかるルータノード１０３のハードウェア構成例を示すブロック図である。ルータノード１０３は、バッテリ４０１と、ＲＴＣ４０２と、プロセッサ５０６と、揮発性のメモリ４０７と、不揮発性メモリ４０８と、無線通信デバイス４０９と、を含む構成である。プロセッサ４０６、揮発性のメモリ４０７、および不揮発性メモリ４０８は演算部４０４を構成する。バッテリ４０１は、ＲＴＣ４０２、演算部４０４のそれぞれに対し電力供給を行う。
【００４０】
図５は、実施例１にかかるゲートウェイノード１０２のハードウェア構成例を示すブロック図である。ゲートウェイノード１０２は、プロセッサ５０６と、揮発性のメモリ５０７と、不揮発性メモリ５０８と、無線通信デバイス５０９と、有線通信デバイス５１０と、を含む構成である。
【００４１】
図６は、実施例１かかるサーバ１０１のハードウェア構成例を示すブロック図である。サーバ１０１は、キーボード、マウス、ディスプレイ等の入出力インタフェース６０２と、プロセッサ６０６と、揮発性のメモリ６０７と、ハードディスクなどの不揮発性メモリ６０８と、有線通信デバイス６１０と、観測データを蓄積するＤＢ（データベース）６０３と、を含む構成である。
【００４２】
＜機能的構成例＞
つぎに、サーバ１０１、ゲートウェイノード１０２、ルータノード１０３、およびセンサノード１０４の機能的構成例について説明する。
【００４３】
図７は、実施例１にかかるセンサノード１０４の機能的構成例を示すブロック図である。センサノード１０４は、休眠管理部７０１と、コマンド処理部７０３と、コマンド受信部７０６と、電力供給部７０４と、状態管理部７０５と、観測部７０７と、イベント生成部７０８と、イベント送信部７１０と、圧縮部７１１と、イベント結合部７１２と、を有する。また、センサノード１０４は、状態７１３、観測間隔７１４、送信間隔７１５、スロット番号を含むパラメタ７０２や、送信すべきイベントを蓄積する送信キュー７０９を管理する。パラメタ７０２および送信キュー７０９は、たとえば、不揮発性メモリ４０８によって実現される。
【００４４】
状態７１３には、送信待機状態と送信非待機状態がある。観測間隔７１４は、図２で説明したように、連続する観測処理ｏの時間間隔である。送信間隔７１５は、図２で説明したように、前の処理ｉ、ｓの開始（終了を基準にしてもよい）から次の処理ｓの開始までの時間間隔である。
【００４５】
スロット情報７１６とは、スロットに関する情報であり、スロット番号とスロットを含む。スロット番号は、スロットを一意に特定する番号である。スロットは、ルータノード１０３が実行するイベント受信処理ｒにおける所定の受信時間である。スロット番号（以下、あるスロット番号のスロットを「スロット＃」とする）は、センサノード１０４ごとに割り当てられ、該当するスロット＃において、当該スロット番号が割り当てられたセンサノード１０４からのイベントが受信される。
【００４６】
具体的には、センサノード１０４のコマンド受信処理ｉから、送信間隔７１５およびスロット＃に起因する遅延時間を加算した時間間隔が経過した時刻が１回目の送信タイミングであり、２回目以降の送信タイミングは、前回の送信タイミングに送信間隔７１５を加算した時刻になる。
【００４７】
また、スロット＃に起因する遅延時間とは、複数のスロット＃が重複しないようにルータノード１０３がスロット＃ごとに時分割でイベントを受信するための遅延時間である。たとえば、スロット＃がｎ個用意され、かつ、各スロット＃の時間間隔が１０秒の場合、スロット１による遅延時間は０秒、スロット２は１０秒、スロット３は２０秒、…、スロットｎは（ｎ−１）×１０秒となる。
【００４８】
休眠管理部７０１は、パラメタ７０２に従い、センサノード１０４の電源遮断とＲＴＣ３０２による電源投入指示を行う。たとえば、観測間隔７１４や送信間隔７１５とＲＴＣ３０２の現在時刻を参照して、観測処理ｏ、通信試行処理ｓの起動タイミングになった場合に、休眠管理部７０１は、電力供給部７０４への電源投入指示を行う。また、コマンド受信処理ｉ、観測処理ｏ、通信試行処理ｓの終了時刻になると、センサノード１０４を電源遮断する。
【００４９】
状態管理部７０５は、電力供給部７０４、観測部７０７、圧縮部７１１、イベント生成部７０８、イベント結合部７１２、イベント送信部７１０、コマンド受信部７０６、コマンド処理部７０３を制御する。
【００５０】
具体的には、たとえば、状態管理部７０５は、状態７１３に従い、電力供給部７０４によりセンサ３０３や無線通信デバイス３０９の電源遮断または投入を行う。状態７１３が送信待機状態に遷移すると、電力供給部７０４は、休眠管理部７０１からの電源投入指示を受けて、無線通信デバイス３０９に電源投入する。そして、通信後、送信非待機状態に遷移した場合、電力供給部７０４は、休眠管理部７０１からの電源遮断指示を受けて、無線通信デバイス３０９の電源遮断を行う。また、状態７１３が送信非待機状態の場合、電力供給部７０４は、休眠管理部７０１からの電源投入指示を受けて、観測タイミングになるとセンサ３０３に電源投入し、休眠管理部７０１からの電源遮断指示を受けて、センサ３０３の電源遮断を行う。
【００５１】
また、状態管理部７０５は、観測間隔７１４に従い、観測部７０７によりセンサ３０３から観測データを取得し、圧縮部７１１により観測データの時系列データを圧縮し、イベント生成部７０８により送信すべきイベントを生成し、送信キュー７０９に格納する。
【００５２】
また、状態管理部７０５は、送信キュー７０９に蓄積された複数のイベントを、イベント結合部７１２により一つのイベントにカプセル化し、送信間隔７１５に従い、イベント送信部７１０、無線通信デバイス３０９により無線送信する。
【００５３】
また、状態管理部７０５は、無線通信デバイス３０９およびコマンド受信部７０６から受信されるコマンドを取得し、コマンド処理部７０３により処理を行い、パラメタ７０２の設定を行う。
【００５４】
休眠管理部７０１、コマンド処理部７０３、コマンド受信部７０６、電力供給部７０４、状態管理部７０５、観測部７０７、イベント生成部７０８、イベント送信部７１０、圧縮部７１１、およびイベント結合部７１２は、具体的には、たとえば、図３の不揮発性メモリ３０８に記憶されたプログラムをプロセッサ３０６に実行させることにより、または、無線通信デバイス３０９により、その機能を実現する。
【００５５】
図８は、実施例１にかかるルータノード１０３の機能的構成例を示すブロック図である。ルータノード１０３は、休眠管理部８０１と、コマンド処理部８１２と、コマンド受信部８１１と、電力供給部８０３と、状態管理部８０４と、イベント受信部８０５と、イベント送信部８０７と、イベント結合部８１０と、コマンド送信部８０８と、制御部８１４と、を有する。
【００５６】
また、ルータノード１０３は、受信間隔８１５とスロット情報８１３とを含むパラメタ８０２、センサノード１０４から受信したイベントを蓄積するイベントキュー８０６、センサノード１０４へ送信すべきコマンドを蓄積するコマンドキュー８０９を管理する。パラメタ８０２、イベントキュー８０６、およびコマンドキュー８０９は、たとえば、不揮発性メモリ５０８によって実現される。
【００５７】
受信間隔８１５は、図２で説明したように、前の処理ｂ、ｒの開始（終了を基準にしてもよい）から次の処理ｒの開始までの時間間隔である。スロット情報８１３は、スロット番号とスロットとスロット数とを含む。スロット数とは、スロットの数である。スロット数は、図２に示したように、配下のセンサノード１０４の数が１台の場合、スロット数は１であり、配下のセンサノード１０４の数が２以上の場合、センサノード１０４の数よりも少ない数とする。すなわち、複数のセンサノード１０４が同一スロット＃を共有する。
【００５８】
スロット数がセンサノード１０４の数より少ない場合、輻輳することがあるが、その場合は次回の送信タイミングで再送すればよい。すなわち、状態管理部８０４は、スロットにより時分割でイベント受信部９０５およびイベント送信部９０７を送受信制御する。スロット数は、あらかじめ設定された値でもよく、動的に変更してもよい。動的に変更する例は、実施例６で後述する。
【００５９】
休眠管理部８０１は、受信間隔８１５に従い、ルータノード１０３の電源遮断とＲＴＣ４０２による電源投入指示を行う。たとえば、受信間隔８１５とＲＴＣ４０２の現在時刻を参照して、コマンド受信処理ｒの起動タイミングになった場合に、休眠管理部７０１は、センサノード１０４に電源投入する。また、コマンド送信処理ｂおよびコマンド受信処理ｒが終了すると、ルータノード１０３の電源を遮断する。
【００６０】
状態管理部８０４は、電力供給部８０３、イベント受信部８０５、イベント結合部８１０、イベント送信部８０７、コマンド処理部８１２、コマンド送信部８０８を制御する。
【００６１】
具体的には、たとえば、状態管理部８０４は、休眠管理部７０１からの電源投入指示を受けて、電力供給部８０３により無線通信デバイス４０９に電源投入する。そして、状態管理部８０４は、休眠管理部７０１からの電源遮断指示を受けて、電力供給部８０３により無線通信デバイス４０９の電源遮断を行う。
【００６２】
また、状態管理部８０４は、スロット数に従い、イベント受信部８０５によりセンサノード１０４からのイベントを受信し、イベントキュー８０６に蓄積し、イベント結合部８１０により複数イベントのカプセル化を行い、イベント送信部８０７により上位のルータノード１０３またはゲートウェイノード１０２へ無線送信する。
【００６３】
また、状態管理部８０４は、無線通信デバイス４０９およびコマンド受信部８１１から受信されるコマンドを取得し、コマンド処理部８１２により処理を行い、受信間隔８１５、スロット数などのパラメタ８０２に設定を行い、またコマンド送信部８０８によりセンサノード１０４に対してコマンドの転送を行う。
【００６４】
制御部８１４は、スロット数や受信間隔８１５を動的に変更するための処理を実行する。制御部８１４の詳細については、実施例６で後述する。
【００６５】
休眠管理部８０１、コマンド処理部８１２、コマンド受信部８１１、電力供給部８０３、状態管理部８０４、イベント受信部８０５、イベント送信部８０７、イベント結合部８１０、コマンド送信部８０８、および制御部８１４は、具体的には、たとえば、図４の不揮発性メモリ４０８に記憶されたプログラムをプロセッサ４０６に実行させることにより、または、無線通信デバイス４０９により、その機能を実現する。
【００６６】
図９は、実施例１にかかるゲートウェイノード１０２の機能的構成例を示すブロック図である。ゲートウェイノード１０２は、ルータノード１０３の機能ブロックとほぼ共通であり、ゲートウェイノード１０２は常時起動することによりＲＴＣ４０２や休眠管理部８０１が存在しないこと、サーバ１０１へのイベント送信部８０７およびコマンド受信部８１１が有線通信デバイス５１０と接続されていることのみが異なる。
【００６７】
図１０は、実施例１にかかるサーバ１０１の機能的構成例を示すブロック図である。サーバ１０１は、イベント受信部１００２、コマンド送信部１００３、警報部１００４、検索部１００６、制御部１０１０を有する。
【００６８】
サーバ１０１はまた、観測データ１００７や、ルータノード１０３やセンサノード１０４のツリー構造を管理する構成情報１００９を格納するＤＢ６０３と、ユーザ端末１００１と入出力を行うインタフェース６０２と、を有する。
【００６９】
イベント受信部１００２は、センサノード１０４から、ルータノード１０３、ゲートウェイノード１０２を経由して有線通信デバイス６１０より到来したイベントを受信する。たとえば、図２に示したように、イベント受信部１００２は、イベントｅ２０４を受信する。イベント受信部１００２は、受信したイベントに含まれている観測データ１００７をＤＢ６０３に格納する。
【００７０】
コマンド送信部１００３は、ゲートウェイノード１０２を介してルータノード１０３やセンサノード１０４にコマンドを送信する。たとえば、図２に示したように、コマンド送信部１００３は、コマンドｃ２０１を送信する。
【００７１】
警報部１００４は、警報をユーザ端末１００１に通知する。たとえば、イベント受信部１００２が受信したイベントに含まれる観測データが許容範囲外の値である場合に、警報部１００４は、警報をユーザ端末１００１に通知する。
【００７２】
検索部１００６は、ユーザ端末１００１からの観測データの検索要求に応じてＤＢ６０３を検索し、検索結果をユーザ端末１００１に返す。
【００７３】
制御部１０１０は、センサノード１０４やルータノード１０３に対するコマンドを発行し、ルータノード１０３の受信間隔やセンサノード１０４の送信間隔を設定する。発行されたコマンドは、上述したように、コマンド送信部１００３が送信する。
【００７４】
イベント受信部１００２、コマンド送信部１００３、警報部１００４、検索部１００６、および制御部１０１０は、具体的には、たとえば、図６の不揮発性メモリ６０８に記憶されたプログラムをプロセッサ６０６に実行させることにより、または、有線通信デバイス６１０により、その機能を実現する。
【００７５】
＜センサネットワークシステム１００における通信メッセージのデータ構造例＞
図１１は、センサネットワークシステム１００における通信メッセージのデータ構造例を示す説明図である。通信メッセージ１１００は、送信先ノード、送信元ノードなどの各種情報を含むヘッダ（Ｈｅａｄｅｒ）１１０１、コマンド、コマンド応答、イベントの種類を示すメッセージ種類情報（Ｔｙｐｅ）１１０２、継続フラグ（Ｃｏｎｔ）１１０３、ペイロード（Ｐａｙｌｏａｄ）１１０４、チェックサムなどの誤り訂正情報を含むフッタ（Ｆｏｏｔｅｒ）１１０５を含む構成である。
【００７６】
通信メッセージ１１００のサイズは、たとえば、２５６［Ｂｙｔｅｓ］であり、そのうちペイロード１１０４のサイズはほぼ半分の１００［Ｂｙｔｅｓ］程度となる。継続フラグ１１０３が真となる通信メッセージ１１００を受信したノードが、後続の通信メッセージ１１００を待機して連結することにより、ペイロード１１０４のサイズが上記制限を越える通信メッセージ１１００を受信することが可能となる。
【００７７】
メッセージ種類情報１１０２には、設定参照や設定変更など、何らかの処理を要求するコマンド、コマンドに対する応答であるコマンド応答、観測データや状態の変化を表すイベントの三種類がある。
【００７８】
メッセージ種類情報１１０２がコマンドである場合のペイロード１１０４の構造は、「Ｐａｙｌｏａｄ１」となり、コマンドの種類を示すＣｏｍｍａｎｄＩＤ、コマンドの発行番号であるＳｅｑＩＤ、引数の数を表すＰａｒａｍＮｕｍと、０個以上の引数Ｐａｒａｍｅｔｅｒが格納される。なお、図１１において、かぎ括弧［  ］で囲われた構造は、該構造が０個以上繰り返されることを示す。
【００７９】
メッセージ種類情報１１０２がコマンド応答である場合のペイロード１１０４の構造は「Ｐａｙｌｏａｄ２」となり、コマンドの種類を示すＣｏｍｍａｎｄＩＤ、コマンド応答に対応するコマンドの発行番号であるＳｅｑＩＤ、引数の数を表すＰａｒａｍＮｕｍと、０個以上の引数Ｐａｒａｍｅｔｅｒが格納される。
【００８０】
メッセージ種類情報１１０２がイベントである場合のペイロード１１０４の構造は、Ｐａｙｌｏａｄ３〜Ｐａｙｌｏａｄ８のいずれかとなる。たとえば、センサノード１０４が単一のセンサ３０３のみ搭載する場合、Ｐａｙｌｏａｄ３の構造をとり、観測時刻ＴｉｍｅＳｔａｍｐと観測値ＶａｌｕｅをＤａｔａＮｕｍ個格納する構造を取る。さらに観測データの数が多数の場合、Ｐａｙｌｏａｄ４の構造を取り、最も古い観測データの観測時刻ＴｉｍｅＳｔａｍｐと観測値Ｖａｌｕｅを格納し、以降の観測データを該観測時刻ＴｉｍｅＳｔａｍｐからの観測時刻差分ｄＴと該観測値Ｖａｌｕｅからの観測値差分ｄＶを格納してもよい。さらにはＰａｙｌｏａｄ５の構造を取り、前回送付したイベントに対する時刻差分ｄＴと観測値差分ｄＶのみを送付しても構わない。
【００８１】
センサノード１０４が複数のセンサ３０３を搭載する場合、Ｐａｙｌｏａｄ３、Ｐａｙｌｏａｄ４、Ｐａｙｌｏａｄ５に対し、それぞれペイロード１１０４にて送信するセンサ３０３の個数ＳｅｎｓｏｒＮｕｍと、センサ３０３を識別するＳｅｎｓｏｒＩＤを付与したＰａｙｌｏａｄ６、Ｐａｙｌｏａｄ７、Ｐａｙｌｏａｄ８の構造を格納してもよい。
【００８２】
＜ルータノード１０３の動作処理手順＞
図１２は、ルータノード１０３の動作処理の一例を示すフローチャートである。ルータノード１０３のＲＴＣ４０２は、電源投入のタイミングを検出する（ステップＳ１２０１）。電源投入のタイミングが検出されると、ＲＴＣ４０２からの電源投入指示により、休眠管理部８０１は、電力供給部８０３により演算部４０４に電力供給し、演算部４０４を起動する（ステップＳ１２０２）。つぎに、電力供給部８０３が無線通信デバイス４０９に電力を供給し、無線通信デバイス４０９を起動する（ステップＳ１２０３）。このあと、ルータノード１０３は、センサノード１０４からのイベントの受信を待ち受ける（ステップＳ１２０４）。
【００８３】
ルータノード１０３はイベントを受信したか否か判断し（ステップＳ１２０５）、受信した場合（ステップＳ１２０５：受信）、観測データを含むイベントをイベントキュー８０６に格納し、センサノード１０４にＡＣＫを返戻し（ステップＳ１２０６）、ステップＳ１２０７に進む。一方、タイムアウトが発生した場合（ステップＳ１２０５：ｔｉｍｅｏｕｔ）、ステップＳ１２０７に進む。
【００８４】
ルータノード１０３は、ステップＳ１２０４〜Ｓ１２０６までのイベント受信処理が、スロット数で指定された回数実行されたか否か判断する（ステップＳ１２０７）。スロット数で指定された回数まで実行されていない場合（ステップＳ１２０７：Ｎｏ）、ステップＳ１２０４に戻る。一方、スロット数で指定された回数分実行されたあと（ステップＳ１２０７：Ｙｅｓ）、ルータノード１０３は、コマンドキュー８０９にセンサノード１０４に対するコマンドが存在する場合、センサノード１０４にコマンドを送信する（ステップＳ１２０８）。たとえば、センサノード１０４が起動中である、ステップＳ１２０５の受信から所定時間（たとえば、２０ｍ秒）以内に、センサノード１０４にコマンドを送信する。コマンドの例としては、時刻同期を行うコマンドである。
【００８５】
つぎに、ルータノード１０３は、イベントキュー８０６に格納された観測データに対し、イベント結合などの演算を行う（ステップＳ１２０９）。また、ルータノード１０３は、観測データが符号化されている場合には、復号処理を行う。これらの演算内容については、本処理については後述する。
【００８６】
このあと、ルータノード１０３は、ゲートウェイノード１０２（または上位のルータノード１０３）に送信すべきイベントがあるか否かを判断する（ステップＳ１２１０）。送信すべきイベントがある場合（ステップＳ１２１０：Ｔ）、ルータノード１０３は、ゲートウェイノード１０２（または上位のルータノード１０３）にイベントを送信して（ステップＳ１２１１）、ステップＳ１２１２に進む。
【００８７】
一方、送信すべきイベントがない場合（ステップＳ１２１０：Ｆ）、ステップＳ１２１２に進む。このあと、ルータノード１０３は、電力供給部８０３による演算部４０４および無線通信デバイス４０９への給電を停止して、ＲＴＣ４０２が電源投入のタイミングを検出するまで（ステップＳ１２０１）休眠状態となる。
【００８８】
＜センサノード１０４の動作処理手順＞
図１３は、センサノード１０４の動作処理の一例を示すフローチャートである。センサノード１０４のＲＴＣ３０２は、電源投入のタイミングを検出する（ステップＳ１３０１）。電源投入のタイミングが検出されると、ＲＴＣ３０２からの電源投入指示により、休眠管理部７０１は、電力供給部７０４により演算部３０４に電力供給し、演算部３０４を起動する（ステップＳ１３０２）。ここで、電源投入のタイミングとは、たとえば、観測間隔７１４の経過時である観測タイミングまたは送信間隔７１５の経過時である送信タイミングのいずれかである。
【００８９】
つぎに、センサノード１０４は、タイマ判定をおこなう（ステップＳ１３０３）。たとえば、状態管理部７０５がパラメタ７０２の観測間隔７１４を参照して、観測タイミングになった場合（ステップＳ１３０３：観測）、ステップＳ１３０４に進む。ステップＳ１３０４〜Ｓ１３１０は、たとえば、図２に示した観測処理ｏに相当する処理である。一方、状態管理部７０５がパラメタ７０２の送信間隔７１５を参照して、送信タイミングになった場合（ステップＳ１３０３：通信）、ステップＳ１３１２に進む。
【００９０】
観測タイミングになった場合（ステップＳ１３０３：観測）、センサノード１０４は、センサ３０３に電力供給し、センサ３０３を起動する（ステップＳ１３０４）。このように、観測タイミング以外ではセンサ３０３に給電しないため、低消費電力化を図ることができる。センサノード１０４は、センサ３０３から観測データを取得する（ステップＳ１３０５）。このあと、センサノード１０４は、取得した観測データに対し、演算を行う（ステップＳ１３０６）。たとえば、センサノード１０４は、不揮発性メモリ３０８に蓄積された過去の観測データを含めて観測データの平均を求める演算を行う。
【００９１】
そして、演算の結果、センサノード１０４は、観測データが送信対象であるか否かを判断する（ステップＳ１３０７）。たとえば、センサノード１０４は、観測データが異常値または特異値を取る場合に送信対象であると判断し（ステップＳ１３０７：Ｔ）、当該観測データを送信キュー７０９に格納する（ステップＳ１３０８）。
【００９２】
また、観測データについて正常範囲の下限値および上限値を与えられている場合、センサノード１０４は、観測データが下限値を下回る、あるいは上限値を上回るタイミングで、異常が発生したと判断して、送信対象であると判断する（ステップＳ１３０７：Ｔ）。そして、センサノード１０４は、当該観測データを送信キュー７０９に格納する（ステップＳ１３０８）。さらに、異常発生後、上限値を再び下回る、あるいは下限値を再び上回るタイミングで、センサノード１０４は、異常が解除されたと判断して、送信対象であると判断する（ステップＳ１３０７：Ｔ）。そして、センサノード１０４は、当該観測データを送信キュー７０９に格納する（ステップＳ１３０８）。
【００９３】
ステップＳ１３０８のあと、センサノード１０４は、状態７１３を送信待機状態に遷移させ（ステップＳ１３０９）、ステップＳ１３１０に進む。一方、送信対象でないと判断された場合（ステップＳ１３０７：Ｆ）、ステップＳ１３１０に進む。このあと、センサノード１０４は、センサ３０３への電源供給を停止し（ステップＳ１３１０）、演算部３０４への電源供給を停止する（ステップＳ１３１１）。
【００９４】
また、ステップＳ１３０３において、送信タイミングになった場合（ステップＳ１３０３：通信）、センサノード１０４は、通信試行処理を実行する（ステップＳ１３１２）。通信試行処理（ステップＳ１３１２）は、たとえば、図２に示したコマンド受信処理ｉや通信試行処理ｓに相当する処理である。通信試行（ステップＳ１３１２）の詳細については後述する。そして、センサノード１０４は、演算部３０４への電源供給を停止する（ステップＳ１３１１）。このあと、センサノード１０４は、ＲＴＣ３０２が電源投入のタイミングを検出するまで（ステップＳ１３０１）、休眠状態となる。
【００９５】
＜センサノード１０４の状態遷移＞
図１４は、図１３に示した通信試行処理（ステップＳ１３１２）に関するセンサノード１０４の状態遷移図である。通信試行処理（ステップＳ１３１２）は、送信待機状態１４００において送信タイミングになった場合（ステップＳ１３０３：送信）に実行され、状態７１３が送信非待機状態１４０１に遷移する。そして、観測タイミングになり（ステップＳ１３０３：観測）かつ、観測データが送信対象になった場合（ステップＳ１３０７：Ｔ）、状態７１３が送信非待機状態１４０１から送信待機状態１４００に遷移する（ステップＳ１３０９）。
【００９６】
＜通信試行処理（ステップＳ１３１２）＞
図１５は、図１３に示した通信試行処理（ステップＳ１３１２）の一例を示すフローチャートである。まず、センサノード１０４は、パラメタ７０２内の状態７１３を参照する（ステップＳ１５０１）。状態７１３が送信非待機状態１４０１である場合（ステップＳ１５０１：非待機）、センサノード１０４は、通信試行処理（ステップＳ１３１２）を終了する。
【００９７】
一方、状態７１３が送信待機状態１４００の場合（ステップＳ１５０１：待機）、センサノード１０４は、無線通信デバイス３０９に電力供給し、無線通信デバイス３０９を起動する（ステップＳ１５０２）。そして、センサノード１０４は、イベント送信試行処理を実行する（ステップＳ１５０３）。イベント送信試行処理（ステップＳ１５０３）は、ルータノード１０３への観測データを含むイベントの送信を試行する処理であり、たとえば、図２に示した通信試行処理ｓに相当する。イベント送信試行処理（ステップＳ１５０３）の詳細については図１６で説明する。
【００９８】
そして、センサノード１０４は、イベント送信試行処理（ステップＳ１５０３）による無線通信が成功したか否かを判断する（ステップＳ１５０４）。失敗の場合（ステップＳ１５０４：Ｆ）、ステップＳ１５０６に進む。一方、成功の場合（ステップＳ１５０４：Ｔ）、センサノード１０４は、コマンド受信試行処理を実行する（ステップＳ１５０５）。コマンド受信試行処理（ステップＳ１５０５）は、ルータノード１０３からのコマンドの受信を試行する処理であり、たとえば、図２に示したコマンド受信処理ｉに相当する。コマンド受信試行処理（ステップＳ１５０５）の詳細については図１７で説明する。
【００９９】
このあと、センサノード１０４は、状態７１３を送信非待機状態１４０１に遷移させ（ステップＳ１５０６）、無線通信デバイス３１０の電力供給を停止する（ステップＳ１５０７）。これにより、センサノード１０４は、通信試行処理（ステップＳ１３１２）を終了する。
【０１００】
＜イベント送信試行処理（ステップＳ１５０３）＞
図１６は、図１５に示したイベント送信試行処理（ステップＳ１５０３）の一例を示すフローチャートである。センサノード１０４は、イベント結合部７１２により、送信キュー７０９に蓄積された複数のイベントをカプセル化し、図１１に示したように、通信メッセージ１１００のペイロード１１０４を作成する（ステップＳ１６０１）。作成結果は、たとえば、図１１のＰａｙｌｏａｄ３、Ｐａｙｌｏａｄ４、またはＰａｙｌｏａｄ５の構造となる。さらに図１１のペイロード１１０４の構造の一部あるいは全体に対し、ゴロム符号化を行うことでペイロード１１０４の構造を圧縮することが可能となる。
【０１０１】
ゴロム符号化は、数値０を１［ｂｉｔ］、１〜２を３［ｂｉｔ］、３〜６を５［ｂｉｔ］、７〜１４を７［ｂｉｔ］、１５〜３０を９［ｂｉｔ］、３１〜６２を１１［ｂｉｔ］の値に符号化する。そのため、Ｐａｙｌｏａｄ４、Ｐａｙｌｏａｄ５、Ｐａｙｌｏａｄ７、Ｐａｙｌｏａｄ８の観測時刻差分ｄＴ、観測値差分ｄＶが十分に小さい値となる場合、ペイロード１１０４の効率的な圧縮が実現でき、従って１回の通信メッセージ１１００に多くの観測データを格納することができるため、通信メッセージ１１００の回数を削減することが可能となる。
【０１０２】
つぎに、センサノード１０４は、ペイロード１１０４を含む通信メッセージ１１００を生成し、ルータノード１０３に対し無線でイベント送信を行う（ステップＳ１６０２）。イベント送信（ステップＳ１６０２）で送信されるイベントは、図１２に示したルータノード１０３の受信待機（ステップＳ１２０４）において受信される。ここで、ルータノード１０３のスロット数が１の場合、センサノード１０４は送信試行タイミングでそのまま送信を行えばよいが、スロット数が１より大きい場合、センサノード１０４はスロット番号を利用して該当するスロットを選択し、該選択スロットのタイミングで送信する。
【０１０３】
スロット選択の方式としては、たとえば、ルータノード１０３のスロット数を用い、スロット番号をランダムに選択してもよい。またルータノード１０３がセンサノード１０４に対し、あらかじめスロット番号を指定してもよい。ルータノード１０３がセンサノード１０４のスロットを指定する方式としては、たとえば、ルータノード１０３に接続されるセンサノード１０４にスロット番号を付与し、該スロット番号をスロット数で除した剰余を指定してもよい。また空間的に近傍に位置するセンサノード１０４は同じタイミングで環境の変化を検知し、送信する傾向がある。このため、空間的に近傍に位置するセンサノード１０４に対して異なるスロット番号を割り当ててもよい。
【０１０４】
このあと、センサノード１０４は、ルータノード１０３からのＡＣＫ応答を待機する（ステップＳ１６０３）。ＡＣＫ応答が返戻された場合（ステップＳ１６０４：Ｔ）、送信キュー７０９から、送信が完了したイベントを取り除くことで送信キュー７０９を更新し（ステップＳ１６０４）、センサノード１０４は、イベント送信試行処理（ステップＳ１５０３）を終了する。ＡＣＫ応答が返戻されない場合（ステップＳ１６０４：Ｆ）も、センサノード１０４は、イベント送信試行処理（ステップＳ１５０３）を終了する。
【０１０５】
＜コマンド受信試行処理（ステップＳ１５０５）＞
図１７は、図１５に示したコマンド受信試行処理（ステップＳ１５０５）の一例を示すフローチャートである。センサノード１０４は、ルータノード１０３からのコマンド受信を待機する（ステップＳ１７０１）。つぎに、センサノード１０４は、コマンド処理部７０３により、受信したコマンドの処理を行う（ステップＳ１７０２）。たとえば、受信したコマンドが時刻合わせコマンドの場合、コマンド処理部７０３は、ＲＴＣ３０２の現在時刻を修正する。また、受信したコマンドが設定変更コマンドの場合、コマンド処理部７０３は、観測間隔７１４や送信間隔７１５などのパラメタ７０２の設定を行う。
【０１０６】
この後、センサノード１０４は、コマンド処理結果をルータノード１０３に送信する（ステップＳ１７０３）。そして、センサノード１０４は、送信したコマンド処理結果に対するＡＣＫ受信を待機する（ステップＳ１７０４）。指定時間、ＡＣＫ受信が得られない場合（ステップＳ１７０４：Ｆ）、センサノード１０４は、コマンド受信試行処理（ステップＳ１５０５）を終了する。
【０１０７】
一方、ＡＣＫ受信があった場合（ステップＳ１７０４：Ｔ）、ステップＳ１７０５に進む。センサノード１０４は、ルータノード１０３のコマンドキュー８０９に未送信コマンドがあるか否かを判断する（ステップＳ１７０５）。ここでルータノード１０３のコマンドキュー８０９に未送信コマンドが存在するか否かについては、ステップ１７０４でルータノード１０３から到来するＡＣＫにルータノード１０３が書き込んでおき、センサノード１０４が当該書き込まれた内容を参照することにより実現可能である。未送信コマンドがある場合（ステップＳ１７０５：Ｔ）、ステップＳ１７０１に戻る。未送信コマンドがない場合（ステップＳ１７０５：Ｆ）、センサノード１０４は、コマンド受信試行処理（ステップＳ１５０５）を終了する。
【０１０８】
＜センサネットワークシステム１００の通信シーケンス例２＞
図１８は、実施例１におけるセンサネットワークシステム１００の通信シーケンス例２を示す説明図である。図１８では、１台のルータノード１０３の配下に複数（例として２台）のセンサノード１０４（ＳＮ＃１、ＳＮ＃２）があるものとする。図１８で用いる記号は、図２で使用した記号と同じである。
【０１０９】
初期処理として、サーバ１０１は、ルータノード１０３の受信間隔８１５をΔ秒に変更する設定コマンドｃ１８０１を発行する。
【０１１０】
ゲートウェイノード１０２は、設定コマンドｃ１８０１をサーバ１０１から受信して、ルータノード１０３に転送する。
【０１１１】
ルータノード１０３は設定コマンドｃ１８０１を受信し、自分自身が管理する全てのセンサノード１０４（ＳＮ＃１、ＳＮ＃２）に対し、送信間隔７１５をΔ秒に設定する設定コマンドｃ１８０２を発行し、ルータノード１０３自身の受信間隔８１５をΔ秒間隔に設定し、休眠を開始する。
【０１１２】
複数のセンサノード１０４は、それぞれ設定コマンドc１８０２を受信し、送信間隔７１５をΔ秒に設定し、休眠を開始する。センサノード１０４は、図１３のフローチャートに従い所定の観測間隔７１４でステップＳ１３０４からステップＳ１３１０に示す観測処理ｏを行い、当該観測処理ｏで得られた観測データが送信対象かどうかをステップＳ１３０７にて判別する。
【０１１３】
Ｃａｓｅ１８１１の例では、ＳＮ＃１のセンサノード１０４の通信試行処理（ステップＳ１３１２）を実行する時点で送信キュー７０９に蓄積されたイベントは存在しないため、ＳＮ＃１は送信を行わない。これに対し、ＳＮ＃２のセンサノード１０４の通信試行処理（ステップＳ１３１２）を実行する時点で送信キュー７０９に蓄積されたイベントが存在するため、ＳＮ＃２は送信を行う。
【０１１４】
同様に、Ｃａｓｅ１８１２の例では、ＳＮ＃１のセンサノード１０４の通信試行処理（ステップＳ１３１２）を実行する時点で送信キュー７０９に蓄積されたイベントが存在するため、ＳＮ＃１は送信を行うが、ＳＮ＃２のセンサノード１０４の通信試行処理（ステップＳ１３１２）を実行する時点で送信キュー７０９に蓄積されたイベントが存在しないため、ＳＮ＃２は送信を行わない。ルータノード１０３は、図１２のステップＳ１２０５で該イベントを受信し、送信判断処理（ステップＳ１２１０）に従い、ゲートウェイノード１０２に対しイベントｅ１８０４を送信する。
【０１１５】
Ｃａｓｅ１８１３の例では、ＳＮ＃１およびＳＮ＃２の両方の送信キュー７０９に蓄積されたイベントが存在するため、ＳＮ＃１およびＳＮ＃２は同時にルータノード１０３に対し送信を行い、結果として輻輳が発生する。その結果、ルータノード１０３は、ＳＮ＃１、ＳＮ＃２のどちらか一方（本例ではＳＮ＃１）のイベントを受信し、受信に成功したセンサノード１０４に対しＡＣＫを返戻した後、送信判断処理（ステップＳ１２１０）に従い、ゲートウェイノード１０２に対しイベントｅ１８０４を送信する。
【０１１６】
ルータノード１０３がＳＮ＃１、ＳＮ＃２のいずれのイベント受信にも失敗した場合は、ＡＣＫ返戻およびゲートウェイノード１０２へのイベント送信を行わない。Ｃａｓｅ１８１３では、ＳＮ＃２からのイベント受信に失敗した例を示している。
【０１１７】
Ｃａｓｅ１８１４の例は、輻輳によりイベント送信に失敗したセンサノード１０４の再送処理を示す。Ｃａｓｅ１８１３においてＡＣＫを受信しないＳＮ＃２のセンサノード１０４は、図１６のＡＣＫ受信の判定処理（ステップＳ１６０３）によりステップＳ１６０４を実行しないため、送信キュー７０９からイベントは削除されない。また通信成功または失敗にかかわらず、図１５のステップＳ１５０６により、状態７１３が送信非待機状態１４０１に遷移する。
【０１１８】
ＳＮ＃２の次回以降の観測タイミングにおいて、図１３の送信対象の判定処理（ステップＳ１３０７）において送信対象と判定された場合（ステップＳ１３０７：Ｔ）にのみ、状態７１３が送信待機状態１４００に遷移し（ステップＳ１３０９）、次のルータノード１０３の受信タイミングにおいてイベントが送信される。ここで送信される通信メッセージ１１００は、図１６のイベントカプセル化処理（ステップＳ１６０１）により、輻輳して送信失敗したイベントと新たに観測したイベントが図１１のＰａｙｌｏａｄ３〜Ｐａｙｌｏａｄ８のいずれかの構造で単一のメッセージとなる。
【０１１９】
センサノード１０４が複数ある場合の効果は以下の三点となる。第一に、ルータノード１０３は、ルータノード１０３に接続するセンサノード１０４の数に関わらず、スロット数をあらかじめ決められた個数しか用意しない。たとえばスロット数が１個の場合、複数のセンサノード１０４からの受信待機時間を１回分しか用意しない。これにより、ルータノード１０３の電力消費量は、接続するセンサノード１０４の数に比例して増大することがない。
【０１２０】
第二に、輻輳により送信に失敗した観測データは、次の観測データが発生した次回の受信タイミングに回される。そのため、ルータノード１０３に対しては、センサノード１０４からの送信がルータノード１０３の受信タイミングのみに限定され、それ以外の時刻で休眠することができるため、ルータノード１０３の電力消費量を削減することができる。
【０１２１】
第三に、輻輳により送信失敗した観測データは、図１１のＰａｙｌｏａｄ３〜Ｐａｙｌｏａｄ８のいずれかの構造で、次回の観測データに相乗りして送信される。そのため、輻輳により送信回数が増加し、さらなる輻輳が引き起こされるという状況を抑制することができる。
【０１２２】
一方、本方式による副作用としては、輻輳した観測データが再送信される時刻が、次回の観測データの送信タイミングに遅延されるため、データ到達時間の遅延が発生する。しかし、本副作用は、ルータノード１０３の受信間隔に対し、センサノード群からの観測データの送信間隔が十分小さい場合、発生する確率が十分小さくなり、実用的に問題が発生することはない。
【０１２３】
（実施例２）
実施例２にかかるセンサネットワークシステムについて説明する。実施例２は、実施例１におけるセンサノード１０４のイベント生成部７０８および圧縮部７１１に、観測データの時系列データを非可逆圧縮するアルゴリズムである線形近似圧縮を適用した例である。線形近似圧縮により、送信すべきイベントの数を削減することができるため、センサノード１０４の通信に要する電力消費量を、線形近似圧縮の圧縮率に比例して削減することができる。また、送信すべきイベントの数を削減するため、他のセンサノード１０４との間での輻輳発生確率を低減することができる。実施例２では、実施例１との差分のみ説明し、それ以外については実施例１と同じであるため説明を省略する。
【０１２４】
図１９は、線形近似圧縮の概念図である。（Ａ）は、固定観測間隔にて計測した観測データの時系列データ１９０１を示し、（Ｂ）は、線形近似圧縮した観測データの時系列データ１９０２を示す。線形近似圧縮は、時系列データ１９０１から、各観測データが所与の許容誤算範囲内に収まるよう観測データを間引くことにより、間引かれなかった観測データ１９０３、１９０４を結んだ構造で時系列データ１９０１を時系列データ１９０２で近似表現する。時系列データ１９０２で○印の観測データは、線形近似圧縮により間引かれなかった制御点である。
【０１２５】
図２０は、逐次的に線形近似圧縮を行うための概念図である。図２０において、横方向が時間、縦方向が観測値である（図１９と同様）。圧縮部７１１の一実装例である線形近似圧縮は、内部情報として、時刻および観測値を持つ過去の観測点Ｓ、Ｃを管理する。観測処理ｏにより新たに生成した観測点Ａが入力された時、圧縮部７１１は、観測点Ｃが、観測点Ｓ、Ａを結ぶ直線ＳＡで近似できるかどうかを判定する。観測点Ｃにおける直線ＳＣと直線ＳＡの誤差は下記式（１）により表される。ただし、ＶS、ＶC、ＶAは観測点Ｓ、Ｃ、Ａでの観測値、ＴS、ＴC、ＴAは観測点Ｓ、Ｃ、Ａでの観測時刻である。ここで式（１）の誤差が閾値である所与の許容誤差未満の時、圧縮部７１１は、観測点Ｃを削除する。
【０１２６】
誤差＝（ＶA−ＶS）×（ＴC−ＴS）／（ＴA−ＴS）−（ＶC−ＶS）・・・（１）
【０１２７】
図２１は、センサノード１０４の圧縮部７１１による線形近似圧縮処理の一例を示すフローチャートである。まず、圧縮部７１１は、観測処理ｏの処理回数を判断する（ステップＳ２１０１）。１回目の観測処理ｏである場合（ステップＳ２１０１：１回目）、圧縮部７１１は、当該観測処理ｏにおける観測時刻および観測値を観測点Ｓに代入する（ステップＳ２１０２）。そして、圧縮部７１１は、観測点Ｓを送信キュー７０９に格納し、処理を終了する。
【０１２８】
また、２回目の観測処理ｏである場合（ステップＳ２１０１：２回目）、圧縮部７１１は、当該観測処理ｏにおける観測時刻および観測値を観測点Ｃに代入し（ステップＳ２１０４）、送信キュー７０９に格納せずに処理を終了する。
【０１２９】
また、３回目以降の観測処理ｏである場合（ステップＳ２１０１：３回目以降）、圧縮部７１１は、当該観測処理ｏにおける観測時刻および観測値を観測点Ａに代入する（ステップＳ２１０５）。そして、圧縮部７１１は、上記（１）にしたがって、観測点Ｃにおける観測値の誤差を計算し（ステップＳ２１０６）、誤差が所与の許容誤差以上であるか否かを判断する（ステップＳ２１０７）。
【０１３０】
誤差が所与の許容誤差未満である場合（ステップＳ２１０７：Ｆ）、処理を終了する。観測点Ｃは送信キュー７０９に格納されないため、観測点Ｃに代入された観測時刻および観測値は削除されたことになり、ルータノード１０３に送信されることはない。一方、誤差が所与の許容誤差以上である場合（ステップＳ２１０７：Ｙｅｓ）、圧縮部７１１は、観測点Ｃを送信キュー７０９に格納する（ステップＳ２１０８）。すなわち、観測点Ｃに代入された観測時刻および観測値を保持することになる。そして、圧縮部７１１は、観測点Ｃに代入された観測時刻および観測値を観測点Ｓに代入し、観測点Ａに代入された観測時刻および観測値を観測点Ｃに代入して、つぎの観測処理ｏに備え、処理を終了する。
【０１３１】
実施例２による効果は以下の二点となる。第一に、センサノード１０４は、図１９に示した時系列データ１９０１の各時刻で観測を行うが、送信すべきデータは時系列データ１９０２を構成する制御点（○印）のみとなる。そのため、センサノード１０４の通信に要する電力消費量を、線形近似圧縮の圧縮率に比例して削減することができる。
【０１３２】
たとえば、観測データを５％に圧縮することができる場合、１００回の観測処理ｏに対し送信キューに蓄積されるイベントは平均５回となる。観測間隔が１分間隔、送信間隔が１０分間隔である場合、センサノード１０４の通信試行処理ｓにおいて送信を行う確率は、１−（０．９５）10＝０．４０となり、約４０％となる。そのため、観測間隔に対し通信を行う比率は１／１０×４０％＝４％となる。したがって、観測のたびに送信する方式と比較し、本方式ではセンサノード１０４の通信に関わる電力消費量を４％に削減することができる。同様に、送信間隔が２０分間隔である場合、観測間隔に対し通信を行う比率は１／２０×（１−（０．９５)20）＝３．２％となる。
【０１３３】
第二に、図１８のＣａｓｅ１８１３に示す輻輳が発生する確率は、複数のセンサノード１０４で一定間隔に同時に制御点が発生する確率と等しくなる。そのため、センサノード１０４の送信間隔７１５に対し観測データが十分に緩やかであり、かつ複数のセンサノード１０４の時系列データの形状が異なれば、輻輳発生確率を低減することができる。
【０１３４】
一方、線形近似圧縮の特徴として、観測データが所与の許容誤差範囲内で一定値を取る場合、すなわち観測データが一定値を取り続ける、あるいは一定の傾きを取り続ける場合、図２１では、センサノード１０４は観測データを送信しない。そのため、サーバ１０１に蓄積された観測データ集合からは、当該センサノードの観測データが許容誤差範囲内で一定値を取り続けているため送信されないのか、あるいはセンサノード１０４の故障あるいは通信障害により観測データが到来していないのかが区別できない。
【０１３５】
この問題を回避するため、実施例２では、ステップＳ２１０７を以下のステップＳ２１０７−２に変更してもよい。
【０１３６】
［ステップＳ２１０７−２］  誤差が所与の許容誤差未満の場合でも、観測点Ａの観測時刻と観測点Ｃの観測時刻の差が閾値時間間隔以上であれば、ステップＳ２１０８に移行する。
【０１３７】
ステップＳ２１０７−２により、センサノード１０４から一定間隔で通信が到来することが保障されるため、センサノード１０４の故障または通信障害を区別することが可能となる。たとえば、観測間隔が１分周期の場合、閾値時間間隔を１時間周期と設定することを考える。線形近似圧縮により、観測データが１時間生成されない確率を５％と仮定すると、ステップＳ２１０７−２により送信データ数は５％増加するが、センサノード１０４の故障または通信障害が少なくとも１時間の遅延で検知できることになる。
【０１３８】
また、線形近似圧縮の特徴として、制御点である観測データが送付されるタイミングで、その制御点以降の時系列データの推測は行えない。すなわち、図１９において、観測データ１９０３および観測データ１９０４を結ぶ直線の傾きは、サーバ１０１に制御点１９０４が到来した時点でしか得られない。制御点１９０４が到来するより前の時点で該直線の傾きをサーバ１０１側で得るため、ステップＳ２１０７−２の閾値時間間隔をより短期間にしてもよい。たとえば、観測間隔が１分周期の場合、閾値時間間隔を５分周期と設定する。閾値時間間隔をより短期間にすることにより、送信データ数はほぼ倍増するが、制御点以降の時系列の傾きが得られるため、その制御点以降の時系列データの推移の推測を行うことができる。
【０１３９】
また、センサノード１０４において多変量の観測データを送信する方式について説明する。センサノード１０４には、複数のセンサ３０３が接続されている場合が存在する。またそれ以外の場合においても、センサノード１０４の残電圧、センサノード１０４とルータノード１０３の通信品質を示すＲＳＳＩ（Ｒｅｃｅｉｖｅｄ  Ｓｉｇｎａｌ  Ｓｔｒｅｎｇｔｈ  Ｉｎｄｉｃａｔｉｏｎ：通信強度）を運用監視のための付帯情報として送信する場合が存在する。これらの複数の時系列データに対し、それぞれ別個に線形近似圧縮を行うことにより、データ量を削減することができる。
【０１４０】
特に、残電圧は電池容量が枯渇する直前まではほぼ一定値を取るため、圧縮効果は高い。一方、複数の時系列データをそれぞれ線形近似圧縮することにより、異なるタイミングで制御点が発生するため、送信回数が増大する。これを防止するため、図１３のステップＳ１３０８において、複数の時系列データで制御点が生成されたタイミングで送信キュー７０９に格納するのではなく、特定の単独の時系列データで制御点が生成されたタイミングにおいて、その他の観測データの時系列データをまとめて相乗りする形で送信キュー７０９に格納する方式が好適である。複数種類の観測データをペイロード１１０４に格納する形式は、図１１に示したＰａｙｌｏａｄ６、Ｐａｙｌｏａｄ７、Ｐａｙｌｏａｄ８となる。
【０１４１】
（実施例３）
実施例３について説明する。実施例３は、実施例１、２においてデータ到達時刻の遅延を軽減する例である。具体的には、実施例３では、他のセンサノード１０４との間で輻輳が発生したことにより、イベントが送信できなかった場合でも、当該センサノード１０４は、輻輳発生時点以降で、観測タイミングでイベントが発生しない場合においても、一定時間が経過することによりイベントの再送を行う。すなわち、通信が失敗した場合の再送を、次回以降の送信タイミングの中からランダムに決める。これにより、再度の輻輳を抑制することができる。実施例３では、実施例１、２との差分のみ説明し、それ以外については実施例１と同じであるため説明を省略する。実施例３では、センサノード１０４の状態遷移が実施例１、２で示した状態遷移（図１４）と通信試行処理（ステップＳ１３０３）が異なる。
【０１４２】
図２２は、実施例３にかかる通信試行処理に関するセンサノード１０４の状態遷移図である。センサノード１０４は、状態７１３として、送信待機状態２２０２、送信非待機状態２２０３、遅延待機状態２２０１の三状態のいずれかを取る。遅延待機状態２２０１とは、送信失敗によりイベントの送信を次回以降に待機させられる状態である。センサノード１０４が送信待機状態２２０２である場合、ステップＳ１３０３で送信タイミングになった時、センサノード１０４は、図１３に示した通信試行処理（ステップＳ１３０３）の代わりに通信試行処理（ステップＳ２２０４）を行う。通信試行処理（ステップＳ２２０４）の詳細については後述する。
【０１４３】
また、送信非待機状態２２０３または遅延待機状態２２０１である場合、ステップＳ１３０３で送信タイミングになった時でも、センサノード１０４は、通信試行処理（ステップＳ２２０４）を行わない。
【０１４４】
また、通信試行処理（ステップＳ２２０４）の結果、状態７１３は、送信成功時には送信非待機状態２２０３に遷移し、送信失敗時には遅延待機状態２２０１に遷移する。遅延待機状態２２０１において、状態７１３は、後述する遅延タイミングにおいて送信待機状態２２０２に遷移する。また、図１３の送信キュー追加（ステップＳ１３０８）で説明したとおり、観測データが送信対象であると判断された場合、状態７１３は送信待機状態２２０２に遷移する（ステップＳ１３０９）。
【０１４５】
図２３は、実施例３にかかる通信試行処理（ステップＳ２２０４）のフローチャートである。通信試行処理（ステップＳ２２０４）は、図１３に示した通信試行処理（ステップＳ１３０３）に替わる処理である。まず、状態７１３が送信非待機状態２２０３である場合（ステップＳ２３０１：非待機）、通信試行処理（ステップＳ２２０４）を終了する。また、状態７１３が送信待機状態２２０２である場合（ステップＳ２３０１：待機）、ステップＳ２３０２に移行し、遅延待機状態２２０１である場合（ステップＳ２３０１：遅延待機）、ステップＳ２３１０に移行する。
【０１４６】
状態７１３が送信待機状態２２０２である場合（ステップＳ２３０１：待機）、センサノード１０４は、電力供給部７０４により無線通信デバイス３０９に電力を供給し、無線通信デバイス３０９を起動する（ステップＳ２３０２）。
【０１４７】
つぎに、センサノード１０４は、図１６に示したイベント送信試行処理を実行する（ステップＳ２３０３）。そして、イベント送信試行処理（ステップＳ２３０３）により、無線通信に成功した場合（ステップＳ２３０４：Ｔ）、ステップＳ２３０５に移行し、失敗した場合（ステップＳ２３０４：Ｆ）、ステップＳ２３０８に移行する。
【０１４８】
センサノード１０４は、遅延待機時刻を算出する（ステップＳ２３０８）。遅延待機時刻は、次回以降の送信タイミングにおいて、所与の期間を閾値とした乱数により生成される。このあと、センサノード１０４は、状態７１３を遅延待機状態２２０１に遷移させ（ステップＳ２３０９）、無線通信デバイス３１０の電力供給を停止する（ステップＳ２３０７）。これにより、センサノード１０４は、通信試行処理（ステップＳ２２０４）を終了する。
【０１４９】
また、無線通信に成功した場合（ステップＳ２３０４：Ｔ）、センサノード１０４は、センサノード１０４の状態７１３を送信非待機状態に遷移させ（ステップＳ２３０５）、図１７に示したコマンド受信試行処理を実行して（ステップＳ２３０６）、無線通信デバイス３１０の電力供給を停止する（ステップＳ２３０７）。これにより、センサノード１０４は、通信試行処理（ステップＳ２２０４）を終了する。
【０１５０】
また、ステップＳ２３０１において、状態７１３が遅延待機状態２２０１である場合（ステップＳ２３０１：遅延待機）、センサノード１０４は、現在時刻とステップＳ２３０８で算出した遅延待機時刻とを比較し（ステップＳ２３１０）、現在時刻が遅延待機時刻を超えていなければ（ステップＳ２３１０：Ｆ）、通信試行処理（ステップＳ２２０４）を終了する。一方、現在時刻が遅延待機時刻になった場合（ステップＳ２３１０：Ｔ）、センサノード１０４は、センサノード１０４の状態７１３を送信待機状態２２０２に遷移させ（ステップＳ２３１１）、通信試行処理（ステップＳ２２０４）を終了する。
【０１５１】
図２４は、実施例３におけるセンサネットワークシステム１００の通信シーケンス例を示す説明図である。図２４において、Ｃａｓｅ２４００の例では、図１８のＣａｓｅ１８１３と同様、ＳＮ＃１およびＳＮ＃２の両方の送信キュー７０９に蓄積されたイベントが存在するため、ＳＮ＃１およびＳＮ＃２は同時にルータノード１０３に対し送信を行い、結果として輻輳が発生する。その結果、ルータノード１０３は、ＳＮ＃１またはＳＮ＃２のいずれか一方からのイベント（本例ではＳＮ＃１）を受信する。
【０１５２】
そして、ルータノード１０３は、受信に成功したセンサノード１０４（本例ではＳＮ＃１）に対しＡＣＫを返戻した後、図１２の送信判断処理（ステップＳ１２１０）に従い、ゲートウェイノード１０２に対しイベントｅ１０４を送信する。なお、ルータノード１０３がＳＮ＃１およびＳＮ＃２のいずれのイベント受信にも失敗した場合は、ＡＣＫ返戻およびゲートウェイノード１０２へのイベント送信を行わない。
【０１５３】
Ｃａｓｅ２４０７の例は、輻輳によりイベント送信に失敗したセンサノードの再送処理を示す。Ｃａｓｅ２４００においてＡＣＫを受信しないＳＮ＃２のセンサノード１０４は、図１６に示したＡＣＫ受信の判定処理（ステップＳ１６０３）によりステップＳ１６０４を実行しないため、送信キュー７０９からイベントは削除されない。
【０１５４】
また通信が失敗したため、図２３に示したように、状態７１３が遅延待機状態２２０１に遷移する（ステップＳ２３０９）。ＳＮ＃２は、次回以降の送信タイミングにおいて、図２３に示した時刻確認処理（ステップＳ２３１０）において現在時刻が遅延待機時刻が超過したことを持って状態７１３を送信待機状態に遷移させ、その次回の送信タイミングにおいて該イベントを送信する。
【０１５５】
ＳＮ＃２はまた、遅延待機時刻が到来していない時でも、次回以降の観測タイミングにおいて、図１３に示した送信対象の判定処理（ステップＳ１３０７）において送信対象と判定された場合に（ステップＳ１３０７：Ｔ）、状態７１３が送信待機状態１４００に遷移し、次の送信タイミングにおいて該イベントを送信する。
【０１５６】
また、図２４を用いて、センサノード１０４が算出した遅延待機時刻（ステップＳ２３０８）の例を説明する。たとえば、遅延待機時刻の所与のしきい値以内に、３回分の送信タイミングが含まれるものとする。Ｃａｓｅ２４００で輻輳が発生した場合、センサノード１０４は、次回以降の３回分の送信タイミングのうち、いずれかのタイミングで送信する。本例では、Ｃａｓｅ２４０７に示したように、ＳＮ＃２のセンサノード１０４は、２回目の送信タイミングを遅延待機時刻として算出し、イベントｅ２４０５をルータノード１０３に送信する。
【０１５７】
実施例３の効果は以下となる。図１４に示す通り、実施例１では、輻輳が発生した時点以降の観測タイミングにおいて、イベントが発生した時点以降で初めてイベントの再送が行われる。これに対し、実施例３では、輻輳が発生した時点以降で、観測タイミングでイベントが発生しない場合においても、一定時間が経過することによりイベントの再送を行う。さらに再送タイミングを乱数時間後にすることにより、輻輳したセンサノード１０４間で再度の輻輳を抑制することができる。
【０１５８】
（実施例４）
実施例４について説明する。実施例４は、実施例１におけるデータ到達時刻の最大遅延時間を保証する例である。具体的には、実施例４では、センサノード１０４は、パラメタ７０２に、送信間隔７１５のほか、送信間隔７１５よりも時間間隔が長い第２の送信間隔を含む。同様に、ルータノード１０３は、パラメタ８０２に、受信間隔８１５のほか、第２の受信間隔を含む。第２の送信間隔と第２の受信間隔は同一時間長である。第２の受信間隔については、受信間隔８１５と同一の通信シーケンスで、ルータノード１０３がサーバ１０１からゲートウェイノード１０２を介して受信して設定する。同様に、第２の送信間隔についても、送信間隔７１５と同一の通信シーケンスで、センサノード１０４からコマンドを受信して設定する。
【０１５９】
ルータノード１０３は、第２の受信間隔において、配下の全てのセンサノード１０４からのイベントを受信するスロットを用意する。これにより、送信間隔７１５による送信タイミングにおいてセンサノード１０４間で輻輳が発生した場合でも、第２の送信間隔による送信タイミング（以下、第２の送信タイミング）により各センサノード１０４からイベントが送信された場合でも、ルータノード１０３は、輻輳が発生することなく各イベントを受信することができ、センサノード１０４からのデータ到達の最大遅延時間が保証される。
【０１６０】
なお、第２の送信タイミングでセンサノード１０４がルータノード１０３にイベントを受信する時刻を、第２の送信時刻と称す。すなわち、センサノード１０４の最初の起動または前回の第２の送信時刻から第２の送信間隔を加算した時刻が、第２の送信時刻となる。同様に、第２の送信タイミングでルータノード１０３が各センサノード１０４からイベントを受信する時刻を、第２の受信時刻と称す。ルータノード１０３の最初の起動または前回の第２の受信時刻から第２の受信間隔を加算した時刻が、第２の受信時刻となる。
【０１６１】
このほか、実施例４では、実施例１、２との差分のみ説明し、それ以外については実施例１、２と同じであるため説明を省略する。実施例４では、センサノード１０４の状態遷移が実施例１、２で示した状態遷移（図１４）と通信試行処理（ステップＳ１３０３）が異なる。
【０１６２】
図２５は、実施例４にかかる通信試行処理に関するセンサノード１０４の状態遷移図である。センサノード１０４は、状態７１３として、送信待機状態２５０１または送信非待機状態２５０２の二状態のいずれかを取る。センサノード１０４が送信待機状態２５０１である場合、ステップＳ１３０３において通信タイミングになったとき、センサノード１０４は、通信試行処理（ステップＳ１３０３、２２０４）の代わりに通信試行処理（ステップＳ２５０３）を行う。通信試行処理（ステップＳ２５０３）の詳細については後述する。
【０１６３】
また、送信非待機状態２５０２である場合、ステップＳ１３０３で通信タイミングになったとき、センサノード１０４は、第二の通信タイミングの判定を行い、第二の通信試行処理（ステップＳ２５０４）を行う。通信試行処理（ステップＳ２５０３）の結果、状態７１３は送信非待機状態（ステップＳ２５０４）に遷移する。また、ステップＳ１３０８で説明したとおり、観測データが送信対象であると判断された場合（ステップＳ１３０８：Ｔ）、状態７１３は送信待機状態２５０１に遷移する（ステップＳ１３０９）。
【０１６４】
図２６は、実施例４にかかる通信試行処理の一例を示すフローチャートである。まず、センサノード１０４は、現在の状態７１３がどの状態であるかを判断する（ステップＳ２６０１）。状態７１３が送信非待機状態２５０２である場合（ステップＳ２６０１：非待機）、第２の通信試行処理（ステップＳ２６０８）に移行する。一方、状態７１３が送信待機状態２５０１である場合（ステップＳ２６０１：待機）、通信試行処理（ステップＳ２５０３）に移行する。
【０１６５】
通信試行処理（ステップＳ２５０３）では、センサノード１０４は、まず、電力供給部７０４により無線通信デバイス３０９に電力を供給し、無線通信デバイス３０９を起動する（ステップＳ２６０２）。つぎに、センサノード１０４は、図１６に示したイベント送信試行処理を実行する（ステップＳ２６０３）。そして、イベント送信試行処理（ステップＳ２６０３）において、無線通信に成功した場合は（ステップＳ２６０４：Ｔ）、図１７に示したコマンド受信試行処理（ステップＳ２６０５）に移行し、無線通信に失敗した場合は（ステップＳ２６０４：Ｆ）、ステップＳ２６０６に移行する。
【０１６６】
コマンド受信試行処理（ステップＳ２６０５）の実行後、または、無線通信に失敗した場合（ステップＳ２６０４：Ｆ）、センサノード１０４は、状態７１３を送信非待機状態２５０２に遷移させ（ステップＳ２６０６）、電力供給部７０４による無線通信デバイス３１０への電力供給を停止し（ステップＳ２６０７）、通信試行処理（ステップＳ２５０３）を終了する。
【０１６７】
一方、ステップＳ２６０１において、状態７１３が送信非待機状態２５０２である場合（ステップＳ２６０１：非待機）、第２の通信試行処理（ステップＳ２５０４）が実行される。具体的には、たとえば、センサノード１０４は、現在時刻と第２の送信時刻を比較し（ステップＳ２６０８）、現在時刻が第２の送信時刻を超えていなければ（ステップＳ２６０８：Ｆ）、第２の通信試行処理（ステップＳ２５０４）を終了する。
【０１６８】
一方、現在時刻が第２の送信時刻になった場合（ステップＳ２６０８：Ｔ）、センサノード１０４は、まず、電力供給部７０４により無線通信デバイス３０９に電力を供給し、無線通信デバイス３０９を起動する（ステップＳ２６０９）。そして、センサノード１０４は、第２のイベント通信試行処理を実行する（ステップＳ２５０４）。第２のイベント通信試行処理（ステップＳ２５０４）は、イベント送信試行処理（ステップＳ２６０３）と同様、図１６に示したイベント送信試行処理である。第２のイベント通信試行処理（ステップＳ２５０４）のあと、ステップＳ２６０４に移行する。ステップＳ２６０４以降の処理は、通信試行処理（ステップＳ２５０３）と同じである。
【０１６９】
図２７は、実施例４におけるセンサネットワークシステム１００の通信シーケンス例を示す説明図である。初期処理として、サーバ１０１は、ルータノード１０３の受信間隔８１５をΔ秒に変更し、かつ、ルータノード１０３の受信間隔８１５をΔ秒に変更すると共に、ルータノード１０３の第２の受信間隔をΔ２に変更する設定コマンドｃ２７０１を発行する。ゲートウェイノード１０２は、設定コマンドｃ２７０１をサーバ１０１から受信して、ルータノード１０３に転送する。
【０１７０】
ルータノード１０３は設定コマンドｃ２７０１を受信し、自分自身が管理する全てのセンサノード１０４に対し、送信間隔７１５をΔ秒に変更すると共に、第二の送信間隔をΔ２秒に変更する設定コマンドｃ２７０２を発行し、ルータノード１０３自身の受信間隔８１５をΔ秒に、第２の受信間隔をΔ２秒に設定し、休眠を開始する。複数のセンサノード１０４はそれぞれ設定コマンドｃ２７０２を受信し、送信間隔７１５をΔ秒に設定し、また第二の送信間隔をΔ２秒に設定し、休眠を開始する。
【０１７１】
Ｃａｓｅ２７０３は、ルータノード１０３の受信間隔８１５（Δ秒）における受信タイミングの動作を示す。図１８のＣａｓｅ１８１３と同様、センサノード１０４の送信タイミングにより、輻輳が発生する可能性がある。
【０１７２】
Ｃａｓｅ２７０６では、ルータノード１０３の第２の受信間隔（Δ２秒）における受信タイミングの動作を示す。第２の受信間隔において、ルータノード１０３は、スロット数を該ルータノード１０３に接続されるセンサノード１０４の台数として図１２に示したフローを実行する。センサノード１０４は、図２６のイベント送信試行処理（ステップＳ２６０３）において、所定間隔ＴＷ秒待機した後、自分自身に割り当てられたスロットの時刻において送信を行う。
【０１７３】
イベント送信試行処理（ステップＳ２６０３）では、ルータノード１０３が接続する全てのセンサノード１０４に対しスロットを開放しているため、通信障害を除きイベント送信試行処理（ステップＳ２６０３）での通信は成功する。所定間隔ＴＷをセンサノード１０４が取得する手段としては、たとえば、センサノード１０４がルータノード１０３に初回接続要求コマンドを発行する際、ルータノード１０３が該ルータノード１０３に登録されるセンサノード１０４の通し番号とスロット間隔を乗じて所定間隔ＴＷを算出し、これをコマンド応答通信でセンサノード１０４に返戻することで実現できる。これにより、受信間隔８１５（Δ秒）においてスロットが共通するセンサノード１０４であっても、第２の受信間隔（Δ２秒）では、センサノード１０４ごとに独立したスロットとなり、輻輳の発生を防止することができる。
【０１７４】
実施例４の効果としては、第２の受信間隔において、ルータノード１０３が配下のセンサノード１０４ごとにイベントを受信するスロットを独立して用意するため、配下の全てのセンサノード１０４との通信が成功する。この送信タイミングにてイベントが送信されるため、センサノード１０４からのデータ到達の最大遅延時間が保証される。
【０１７５】
一方、実施例４の副作用として、第２の受信間隔により給電および起動が行われるため、ルータノード１０３の消費電力が増大する。ただし本副作用は、送信間隔７１５（Δ秒）と第二の送信間隔（Δ２秒）を調整することで許容できる範囲となる。たとえば、送信間隔７１５がΔ＝Ｔ１秒、第二の送信間隔がΔ２＝Ｔ２秒、ルータノード１０３に接続されるセンサノード１０４の台数がＮ台とすると、ルータノード１０３の受信待機時間は、１／Ｔ１＋Ｎ／Ｔ２に比例する。たとえばＴ１＝１分、Ｔ２＝１時間、Ｎが１０台とすると、ルータノード１０３の受信待機時間は、１／１＋１０／６０であり、ルータノード１０３の電力消費を実施例１より１．１７倍する電力消費コストで１時間の遅延保障を実現することができる。
【０１７６】
（実施例５）
つぎに、実施例５について説明する。実施例５は、実施例１〜実施例４において、ルータノード１０３を複数段構成にした場合のルータノード１０３のイベント結合部８１０の処理例である。図１に示したように、センサネットワークシステム１００は、複数のルータノード１０３を直列および並列に接続した木構造のネットワークを構成する。センサネットワークシステム１００は、たとえば、線路や道路等の長区間を複数のルータノード１０３を直列して接続し、各ルータノード１０３にそれぞれ複数のセンサノード１０４を接続した構成、または、圃場などの広大な面を複数のルータノード１０３を直列および並列に接続し、各ルータノード１０３にそれぞれ複数のセンサノード１０４を接続した構成を取りうる。
【０１７７】
実施例５では、実施例１〜４との差分のみ説明し、それ以外については実施例１〜４と同じであるため説明を省略する。
【０１７８】
図２８は、複数段構成のセンサネットワークシステム１００の構成例を示す説明図である。図２８の例では、ゲートウェイノード１０２にルータノード１０３であるＲＮ＃１が接続し、ＲＮ＃１に複数のルータノード１０３であるＲＮ＃２、ＲＮ＃３が接続し、ＲＮ＃２にセンサノード１０４であるＳＮ＃１が接続している。また、ＲＮ＃１〜ＲＮ＃３の受信間隔８１５は同一であり、ＲＮ＃２のスロット数をＫ１、ＲＮ＃１のスロット数をＫ２（≠Ｋ１）とする。ここで、ＲＮ＃１、ＲＮ＃２、ＲＮ＃３のそれぞれに他のセンサノード１０４が接続するが、図２８から割愛する。
【０１７９】
図２９は、実施例５におけるセンサネットワークシステム１００の通信シーケンス例を示す説明図である。初期処理として、サーバ１０１は、ルータノード１０３の受信間隔８１５をΔ秒に変更する設定コマンドｃ２９０１を発行する。ゲートウェイノード１０２は、設定コマンドｃ２９０１をサーバ１０１から受信して、ルータノード１０３に転送する。
【０１８０】
設定コマンドｃ２９０１を受信したルータノード１０３は、自分自身が管理する配下の全てのセンサノード１０４に対し、送信間隔７１５をΔ秒に設定する設定コマンドｃ２９０３を発行し、自分自身が管理する配下の全てのルータノード１０３に対し、設定コマンドｃ２９０３を転送し、ルータノード１０３自身の受信間隔８１５をΔ秒間隔に設定し、休眠を開始する。
【０１８１】
複数のセンサノード１０４はそれぞれ、設定コマンドｃ２９０３を受信し、送信間隔７１５をΔ秒に設定し、休眠を開始する。センサノード１０４は、図１３のフローチャートに従い所定の観測間隔７１４でステップＳ１３０４からステップＳ１３１０に示す観測処理を行い、該観測データが送信対象かどうかを判別する（ステップＳ１３０７）。
【０１８２】
Ｃａｓｅ２８０７の例では、ＳＮ＃１のセンサノード１０４の通信試行処理を実行する時点でイベントｅ２９０４を発行する。イベントｅ２９０４を受信したＲＮ＃２のルータノード１０３は、図１２のステップＳ１２０５において複数のイベントを受信し、イベントキュー８０６に格納し、ステップＳ１２０９において複数のイベントを結合する。そして、ＲＮ＃２のルータノード１０３は、ステップＳ１２１１にて上位のルータノード１０３であるＲＮ＃１に結合したイベントを送信する。
【０１８３】
ＲＮ＃１は、ＲＮ＃２からのイベント、およびＲＮ＃３からのイベントを受信し、受信した各イベントをイベントキュー８０６に格納し、ステップＳ１２０９において、イベント結合部８１０により、受信した複数のイベントを結合し、ステップＳ１２１１にて上位であるゲートウェイノード１０２に結合したイベントを送信する。
【０１８４】
イベント結合（ステップＳ１２０９）は、たとえば、図１６のステップＳ１６０１で説明した、センサノード１０４の送信キュー７０９に蓄積された複数イベントのカプセル化と同様な方式でもよい。その結果、たとえば、図２８において、ＲＮ＃１は、ＳＮ＃１から到来した観測データＡを含むイベントｅ２９０４と、ＲＮ＃３から到来した観測データＢを含むイベントｅ２９０５から観測データＡ、Ｂを結合し、観測データＡ、Ｂを含むイベントｅ２９０６を作成し、ゲートウェイノード１０２に送信する。
【０１８５】
ルータノード１０３で生成するペイロード１１０４は、たとえば、図１１のＰａｙｌｏａｄ９、Ｐａｙｌｏａｄ１０、またはＰａｙｌｏａｄ１１のいずれかの構造を取り、センサノード１０４の発行するペイロード１１０４に、さらにイベント発行元のノード数ＮｏｄｅＮｕｍと各ノードの識別子であるＮｏｄｅＩＤを含む。これにより、図１１の説明および図１６のステップＳ１６０１で前述したとおり、ルータノード１０３は、通信メッセージ１１００のペイロード１１０４中に複数の観測データを格納することができる。
【０１８６】
つぎに、図１２に示したイベント結合（ステップＳ１２０９）の他の例について説明する。
【０１８７】
図３０は、図１２に示したイベント結合（ステップＳ１２０９）における空間圧縮の概念を示す説明図である。グラフ３００１は、ルータノード１０３において一定期間にイベントキュー８０６に蓄積された観測データ群の時空間上の配置例を示す。グラフ２９０１は位置Ｘ、時刻Ｔ、観測値Ｖから構成される三次元空間を表し、横軸が空間上のセンサノード１０４の位置Ｘ、縦軸は時間上の観測値Ｖの観測時刻Ｔ、紙面垂直方向が観測値Ｖとする。ここでイベントキュー８０６に、ＳＮ＃１からＳＮ＃５までの５台のセンサノード１０４の観測データが、点ｐを含む１６個の点（グラフ３００１の丸図形）に蓄積されているとする。ここで、点ｐの観測データと、点ｐの最近傍である点ａ、ｂ、ｃが構成する平面ａｂｃとの距離が閾値以下であれば、点ｐは削除可能である。グラフ３００２は、グラフ３００１において点ｐを削除した後のグラフである。
【０１８８】
図３１は、実施例５にかかる空間圧縮処理の一例を示すフローチャートである。ルータノード１０３は、イベントキュー８０６に格納されているイベント列から、未選択のイベントを選択する（ステップＳ３１０１）。イベント列のイベントは観測データを含むため、グラフ３００１の点（丸図形）に相当する。ここでは、例として点ｐが選択されたものとする。選択された点を候補点と称す。
【０１８９】
つぎに、ルータノード１０３は、候補点ｐの最近傍点を次元数の数だけ選択する（ステップＳ３１０２）。図３０の例では位置Ｘ、時刻Ｔ、観測値Ｖであるため次元数は３であり、点ａ〜ｃが選択される。なお、位置(Ｘ、Ｙ）、時刻Ｔ、観測値Ｖの場合、次元数は４である。
【０１９０】
そして、ルータノード１０３は、選択した最近傍点が構成する平面（４次元以上の場合は超平面）と候補点ｐとの距離（候補点ｐを通る超平面の垂線が超平面と交差する点ｑと、候補点ｐとのユークリッド距離）を算出し、誤差とする（ステップＳ３１０３）。
【０１９１】
ルータノード１０３は、ステップＳ３１０１〜Ｓ３１０３を、イベントキュー８０６の全てのイベントに対して適用する（ステップＳ３１０４：Ｆ）。すべてのイベントに適用された場合（ステップＳ３１０４：Ｔ）、ルータノード１０３は、誤差が最小となる候補点ｐを選択し、削除する（ステップＳ３１０５）。このあと、ルータノード１０３は、終了判定を行い（ステップＳ３１０６）、非終了の場合は（ステップＳ３１０６：Ｆ）、ステップＳ３００１からステップＳ３１０５を繰り返す。終了の場合（ステップＳ３１０６：Ｔ）、ルータノード１０３は、空間圧縮処理を終了する。
【０１９２】
終了判定（ステップＳ３１０６）では、ルータノード１０３は、たとえば、所与の閾値以下で削除できる候補点ｐが存在しない場合や、イベントキュー８０６に蓄積された候補点ｐが一定個数以下である場合に、終了と判定する。
【０１９３】
図１６に示したイベントカプセル化（ステップＳ１６０１）、または図３０で説明した空間圧縮を行い、各ルータノード１０３がイベント数を削減することにより、各ルータノード１０３において所与のスロット数で通信を行うことができ、通信に要する消費電力の低減化を図ることができる。
【０１９４】
（実施例６）
つぎに、実施例６について説明する。実施例１〜５の初期処理では、サーバ１０１がゲートウェイノード１０２を介して、ルータノード１０３の受信間隔８１５を変更する内容を含む設定コマンドを発行するが、実施例６では、ルータノード１０３がセンサノード１０４からのイベントを監視することにより、定期的にルータノード１０３の受信間隔８１５を変更する内容を含む設定コマンドを発行する。すなわち、実施例４は、受信間隔８１５を自律的に変更する例である。
【０１９５】
図３２は、実施例６にかかるルータノード１０３の制御部８１４の動作処理の一例を示すフローチャートである。ルータノード１０３は、イベント受信部８０５の動作を監視し、統計情報を算出する（ステップＳ３２０１）。統計情報とは、受信流量の最大値、輻輳回数、センサノード１０４におけるイベントの観測時刻とルータノード１０３における現在時刻との差である。受信流量の最大値は、スロット数を受信間隔８１５で除した値となる。
【０１９６】
つぎに、ルータノード１０３は、イベント受信頻度の検知を行う（ステップＳ３２０２）。ルータノード１０３は、受信間隔８１５とスロット数に基づき、受信間隔８１５で、スロット数により指定されたスロットの間、センサノード１０４からの受信待機を行う（図１２のステップＳ１２０４）。すなわち、ルータノード１０３は、スロット数分の各スロットの間、時分割で受信待機する。
【０１９７】
単位時間あたりにイベント受信部８０５で受信し、かつ、イベントキュー８０６に格納されたイベント数が、受信流量となる。ルータノード１０３は、受信流量を受信流量最大値で除した値が一定値以下である場合（ステップＳ３１０２：Ｔ）、ルータノード１０３は無駄に受信を行っていることになる。この場合、ルータノード１０３は、パラメタ設定として、スロット数を削減する（ステップＳ３２０６）。なお、スロット数が１の場合はこれ以上削減できないため、ルータノード１０３は、パラメタ設定として、受信間隔８１５をより長期間に設定する（ステップＳ３２０６）。ルータノード１０３は、受信流量を受信流量最大値で除した値が一定値以下であない場合（ステップＳ３１０２：Ｆ）、ステップＳ３２０３に移行する。
【０１９８】
つぎに、ルータノード１０３は、イベントの輻輳検知を行う（ステップＳ３２０３）。センサノード１０４における図１６のステップＳ１６０３で、輻輳が発生した時に輻輳回数をカウントしておき、次回ルータノード１０３への送信時に輻輳回数を送信することにより、ルータノード１０３で輻輳回数の検知を行うことができる。すなわち、ルータノード１０３は、センサノード１０４から輻輳回数を受信した場合、イベントの輻輳を検知したことになる（ステップＳ３２０３：Ｔ）。
【０１９９】
また、特定のセンサノード１０４からのイベントが一定期間到来しない場合も、当該センサノード１０４からの輻輳であると判断してもよい（ステップＳ３２０３：Ｔ）。イベントの輻輳が検知された場合（ステップＳ３２０３：Ｙｅｓ）、ルータノード１０３は、パラメタ設定として、受信間隔８１５をより短期間に設定し、または、スロット数を増加する（ステップＳ３２０６）。ただし、スロット数の上限は、センサノード１０４の数より１少ない数である。イベントの輻輳が検知されなかった場合（ステップＳ３２０３：Ｆ）、ステップＳ３２０４に移行する。
【０２００】
つぎに、ルータノード１０３は、イベントの遅延検知を行う（ステップＳ３２０４）。遅延検知では、イベント受信部８０５が受信したイベントの観測時刻とルータノード１０３における現在時刻との差が遅延値として用いられる。当該差は、統計情報として算出されている（ステップＳ３２０１）。
【０２０１】
遅延値が一定値より大きい場合は（ステップＳ３２０４：Ｔ）、ルータノード１０３は、パラメタ設定として、受信間隔８１５をより短期間に設定し、または、スロット数を増加する（ステップＳ３２０６）。ただし、スロット数の上限は、センサノード１０４の数より１少ない数である。また、パラメタ設定として、ルータノード１０３は、実施例３または実施例４で示した通信方式に切り替えてもよい。遅延値が一定値以下の場合（ステップＳ３２０４：Ｆ）、ステップＳ３２０５に移行する。
【０２０２】
つぎに、ルータノード１０３は、ルータノード１０３の電池残量を検知する（ステップＳ３２０５）。ルータノード１０３の電池残量が所定量以下である場合（ステップＳ３２０５：Ｔ）、パラメタ設定として、スロット数を削減する（ステップＳ３２０６）なお、スロット数が１の場合はこれ以上削減できないため、ルータノード１０３は、パラメタ設定として、受信間隔８１５をより長期間に設定する（ステップＳ３２０６）。ルータノード１０３の電池残量が所定量以下でない場合（ステップＳ３２０５：Ｆ）、ルータノード１０３は、一連の処理を終了する。
【０２０３】
ステップＳ３２０６のあと、ルータノード１０３は、ステップＳ３２０６で設定したパラメタへの変更を行うコマンドをセンサノード１０４に発行し（ステップＳ３２０７）、一連の処理を終了する。
【０２０４】
このように、実施例６では、ルータノード１０３が受信間隔８１５やスロット数を、ルータノード１０３またはセンサノード１０４の状態に応じた内容に自律的に変更することができ、低消費電力化を図ることができる。
【０２０５】
以上説明したように、本実施例によれば、センサノード１０４が観測タイミングで毎回イベントを送信せず、ルータノード１０３の受信タイミングでのみイベントを送信を行うため、センサノード１０４の観測タイミングで無線通信デバイスを起動する必要がない。また、観測タイミングにおいてルータノード１０３との通信時間が削減できるため、センサノード１０４の電力消費量を削減することができる。
【０２０６】
また、センサノード１０４の送信試行タイミングにおいても、センサノード１０４に送信対象となるデータが存在しない場合、無線通信デバイスの起動およびルータノード１０３との通信時間が削減できるため、センサノード１０４の電力消費量を削減することができる。
【０２０７】
さらに、ルータノード１０３においては、センサノード１０４からの通信がルータノード１０３の受信タイミングのみに限定されるため、それ以外の時刻では休眠することができる。したがって、ルータノード１０３の電力消費量を削減することができる。
【０２０８】
なお、本発明は前述した実施例に限定されるものではなく、添付した特許請求の範囲の趣旨内における様々な変形例及び同等の構成が含まれる。たとえば、前述した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに本発明は限定されない。また、ある実施例の構成の一部を他の実施例の構成に置き換えてもよい。また、ある実施例の構成に他の実施例の構成を加えてもよい。また、各実施例の構成の一部について、他の構成の追加・削除・置換をしてもよい。
【０２０９】
また、前述した各構成、機能、処理部、処理手段等は、それらの一部又は全部を、たとえば、集積回路で設計する等により、ハードウェアで実現してもよく、プロセッサがそれぞれの機能を実現するプログラムを解釈し実行することにより、ソフトウェアで実現してもよい。
【０２１０】
各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリ、ハードディスク、ＳＳＤ（Solid State Drive）等の記憶装置、又は、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に格納することができる。
【０２１１】
また、制御線や情報線は説明上必要と考えられるものを示しており、実装上必要な全ての制御線や情報線を示しているとは限らない。実際には、ほとんど全ての構成が相互に接続されていると考えてよい。
【符号の説明】
【０２１２】
１００  センサネットワークシステム
１０１  サーバ
１０２  ゲートウェイノード
１０３  ルータノード
１０４  センサノード
３０３  センサ
７０１  休眠管理部
７０２  パラメタ
７０３  コマンド処理部
７０４  電力供給部
７０５  状態管理部
７０６  コマンド受信部
７０７  観測部
７０８  イベント生成部
７０９  送信キュー
７１０  イベント送信部
７１１  圧縮部
７１２  イベント結合部
８０１  休眠管理部
８０３  電力供給部
８０４  状態管理部
８０５  イベント受信部
８０７  イベント送信部
８０８  コマンド送信部
８１０  イベント結合部
８１１  コマンド受信部
８１２  コマンド処理部
８１４  制御部
【図１】
2015216581.tif 000003
【図２】
2015216581.tif 000004
【図３】
2015216581.tif 000005
【図４】
2015216581.tif 000006
【図５】
2015216581.tif 000007
【図６】
2015216581.tif 000008
【図７】
2015216581.tif 000009
【図８】
2015216581.tif 000010
【図９】
2015216581.tif 000011
【図１０】
2015216581.tif 000012
【図１１】
2015216581.tif 000013
【図１２】
2015216581.tif 000014
【図１３】
2015216581.tif 000015
【図１４】
2015216581.tif 000016
【図１５】
2015216581.tif 000017
【図１６】
2015216581.tif 000018
【図１７】
2015216581.tif 000019
【図１８】
2015216581.tif 000020
【図１９】
2015216581.tif 000021
【図２０】
2015216581.tif 000022
【図２１】
2015216581.tif 000023
【図２２】
2015216581.tif 000024
【図２３】
2015216581.tif 000025
【図２４】
2015216581.tif 000026
【図２５】
2015216581.tif 000027
【図２６】
2015216581.tif 000028
【図２７】
2015216581.tif 000029
【図２８】
2015216581.tif 000030
【図２９】
2015216581.tif 000031
【図３０】
2015216581.tif 000032
【図３１】
2015216581.tif 000033
【図３２】
2015216581.tif 000034