図1は、本実施形態にかかる無線通信システムSの全体構成の一例を示す図である。図1に示すように、無線通信システムSは、複数のルータ10a〜10h(以下、個々のルータ10a〜10hを特に区別しない場合は、ルータ10という)と、コーディネータ20とを含む。コーディネータ20は、1つの無線通信システムSに、少なくとも1つ設けられるものとする。
本実施形態においては、無線通信システムSにおいて、コーディネータ20との距離が近くなるほどレベルの値が小さくなるように、各ルータ10をレベル分けする。コーディネータ20とルータ10との距離が近いとは、少ない中継数(すなわち、ホップ数)でコーディネータ20とルータ10とが接続することである。
具体的には、コーディネータ20と直接接続するルータ10a,10bをレベル1、レベル1のルータ10a,10bと直接接続するルータ10c〜10eをレベル2、レベル2のルータ10c〜10eと直接接続するルータ10f〜10hをレベル3とする。
また、本実施形態においては、ルータ10がコーディネータ20に近いほど、上位であるものとし、ルータ10がコーディネータ20から遠いほど、下位であるものとする。本実施形態の無線通信システムSは、各ルータ10が、下位のルータ10が送信したデータをそれぞれ中継しながら、コーディネータ20までデータを送り届けるマルチホップネットワークを構成する。また、ルータ10およびコーディネータ20は、ノードともいう。また、コーディネータ20は、根ともいう。
より詳細には、無線通信システムSは、最上位ノード(すなわち、コーディネータ20)から下位ノード(すなわち、ルータ10)に接続し、下位ノードからさらに下位のノードへと接続するツリー型のマルチホップネットワークである。コーディネータ20およびルータ10の接続関係は、自動または手動で予め定められているものとする。
また、マルチホップネットワーク上でルータ10よりも上位に位置する他のルータ10のうち、ルータ10と直接接続する他のルータ10を、「親ルータ」という。また、マルチホップネットワーク上でルータ10よりも下位に位置する他のルータ10のうち、ルータ10と直接接続する他のルータ10を、「直属ルータ」という。また、ルータ10の直属ルータ、および直属ルータから接続する他の下位のルータを総称する場合、ルータ10の配下のルータ10という。また、マルチホップネットワークにおいてコーディネータ20に近い方を上流、コーディネータ20から離れる側を下流ともいう。
例えば、ルータ10aは、ルータ10cおよびルータ10dの親ルータである。また、ルータ10aの直属ルータは、ルータ10cおよびルータ10dである。また、ルータ10c、ルータ10d、ルータ10f、およびルータ10gは、ルータ10aの配下のルータ10である。
コーディネータ20およびルータ10は、無線通信を行う無線通信装置である。コーディネータ20およびルータ10は、例えば、例えば、Bluetooth(登録商標)、Zigbee(登録商標)、Wi−Fi(登録商標)等の無線通信規格を用いた無線通信によって互いに接続している。
ルータ10は、ルータ10の周囲に設置されたセンサ30a〜30h(以下、個々のセンサ30a〜30hを特に区別しない場合は、センサ30という)から、センサデータを取得する。ルータ10は、コーディネータ20または上位のルータ10からデータ要求を受けた場合に、要求元のコーディネータ20または上位のルータ10に、センサデータを送信する。
センサ30は、例えば、特定領域の環境情報を検出する。環境情報は、例えば、大気の成分、気温、水温、紫外線などの光量、音量、などであるが、これらに限定されない。センサデータは、センサ30の検出結果である。本実施形態においては、センサ30は、無線通信によってルータ10にセンサデータを送信するものするが、ルータ10とセンサ30とが有線通信する構成を採用しても良い。センサ30は、エンドデバイスともいう。
コーディネータ20は、無線通信システムS内のルータ10を統括する管理装置である。コーディネータ20は、ルータ10に対してデータ要求を送信し、ルータ10から送信されたセンサデータを収集するものとする。
また、コーディネータ20は、伝送路41を介して外部の情報処理装置、例えばPC(Personal Computer)40と接続する。伝送路41は、例えばUSB(Universal Serial Bus)等の規格に準拠した伝送路とする。コーディネータ20は、各ルータ10から収集したセンサデータを、PC40に送信するものとする。
次に、ルータ10およびコーディネータ20のハードウェア構成について説明する。本実施形態においては、ルータ10およびコーディネータ20は、同じハードウェア構成を備えるものとする。
図2は、本実施形態にかかるルータ10およびコーディネータ20のハードウェア構成の一例を示す図である。ルータ10およびコーディネータ20は、第1の無線モジュール101と、第2の無線モジュール102と、フラッシュメモリ103と、プロセッサ104と、ROM(Read Only Memory)105と、RAM(Random Access Memory)106と、通信インターフェース(I/F)107とを備える。また、第1の無線モジュール101と、第2の無線モジュール102と、フラッシュメモリ103と、プロセッサ104と、ROM105と、RAM106と、通信インターフェース107とは、バス108により接続されている。
なお、ルータ10およびコーディネータ20のハードウェア構成は、図2に記載の例に限定されるものではない。例えば、ルータ10およびコーディネータ20のハードウェア構成は、プロセッサ104を中心として他のハードウェア部品がスター型に接続する構成であっても良い。
第1の無線モジュール101は、他のルータ10またはコーディネータ20と無線通信を行う。また、第2の無線モジュール102は、センサ30と無線通信を行う。また、ルータ10およびコーディネータ20は、第1の無線モジュール101および第2の無線モジュール102の代わりに、無線通信機能を実現する他の部品を備えても良い。例えば、ルータ10およびコーディネータ20は、NIC(Network Interface Card)、または無線LANアダプタ等を備えるものとしても良い。
プロセッサ104は、本実施形態のルータ10およびコーディネータ20を制御する演算装置である。また、ROM105は、プロセッサ104によって実行されるプログラム等を記憶する。また、RAM106、およびフラッシュメモリ103は、プロセッサ104による各種処理を実行するために必要な情報やセンサデータ等を記憶する。
通信インターフェース107は、PC40等の外部装置と接続するインターフェースであり、例えばUSBポート等である。
なお、ルータ10とコーディネータ20とを異なるハードウェア構成にしても良い。この場合は、ルータ10は、通信インターフェース107を備え無くとも良い。また、コーディネータ20は、第2の無線モジュール102を備え無くとも良い。
次に、本実施形態のルータ10の機能の詳細を説明する。図3は、本実施形態にかかるルータ10の機能的構成の一例を示すブロック図である。図3に示すように、ルータ10は、取得部111と、第1の受信部112と、第1の送信部113と、第2の受信部114と、第1の算出部115と、第2の送信部116と、第1の計時部117と、記憶部150とを備える。マルチホップネットワーク上の各ルータ10は全て同様の機能を備えるものとする。
記憶部150は、接続情報データベース(DB)90a、直属ルータ台数、第1の収集残台数、および、後述の取得部111によって取得されたセンサデータを記憶する。記憶部150は、例えばフラッシュメモリ103またはRAM106である。
接続情報データベース90aは、自装置(ルータ10)と直接接続する他のルータ10またはコーディネータ20を特定可能な識別情報が登録されたデータベースである。
図4は、本実施形態にかかる接続情報データベース90aの一例を示す図である。図4に示す接続情報データベース90aには、親ルータまたはコーディネータ識別情報と、直属ルータ識別情報とが登録されている。
本実施形態においては、マルチホップネットワーク上のルータ10またはコーディネータ20を特定可能な識別情報として、ルータ10またはコーディネータ20のMACアドレスの下2桁の数字を使用するが、識別情報はこれに限定されるものではない。
親ルータまたはコーディネータ識別情報は、マルチホップネットワーク上でルータ10よりも上位に位置する他のルータ10またはコーディネータ20のうち、ルータ10と直接接続する他のルータ10またはコーディネータ20を特定可能な識別情報である。
本実施形態のマルチホップネットワークはツリー型であるため、マルチホップネットワーク上でルータ10よりも上位に位置する他のルータ10またはコーディネータ20のうち、ルータ10と直接接続する他のルータ10またはコーディネータ20は、1台である。
接続情報データベース90aに登録される内容は、ルータ10毎にそれぞれ異なる。例えば、図4に示す接続情報データベース90aは、ルータ10aの記憶部150に記憶されているものとする。図1に示したように、マルチホップネットワーク上でルータ10aよりも上位に位置し、かつルータ10と直接接続するノードは、コーディネータ20である。この場合、接続情報データベース90aの親ルータまたはコーディネータ識別情報は、コーディネータ20を特定可能な識別情報“01”となる。
また、直属ルータ識別情報は、マルチホップネットワークにおける自装置(ルータ10)の配下の他のルータ10のうち、自装置と直接接続する1または複数のルータ10、つまり直属ルータの識別情報である。ルータ10aを本実施形態における自装置の一例とした場合、ルータ10cおよびルータ10dがルータ10aの直属ルータとなる。この場合、直属ルータ識別情報は、ルータ10cを特定可能な識別情報“04”、およびルータ10dを特定可能な識別情報“05”となる。接続情報データベース90aに直属ルータが登録される順番は、例えば、当該直属ルータがマルチホップネットワークに接続した順とする。
直属ルータは、本実施形態における第1の無線通信装置の一例である。例えば、ルータ10aを本実施形態における自装置の一例とした場合、ルータ10cおよびルータ10dは第1の無線通信装置の一例であり、コーディネータ20は第2の無線通信装置の一例である。
図3に戻り、直属ルータ台数は、ルータ10の直属ルータの台数である。直属ルータ台数は、接続情報データベース90aの直属ルータ識別情報に登録されたルータ10の台数と等しくなる。
また、第1の収集残台数は、ルータ10の直属ルータのうち、データ収集が未完了の直属ルータの台数である。第1の収集残台数は、後述の第1の算出部115によって算出される。
なお、本実施形態においては、ルータ10の第1の算出部115によって算出された収集残台数を、他のルータ10から受信した収集残台数、またはコーディネータ20で算出された収集残台数(後述の第2〜第4の収集残台数)と区別するために、「第1の収集残台数」としている。第1〜第4の収集残台数は、いずれも、第1〜第4の収集残台数を算出する各ルータ10の直属ルータのうち、データ収集が未完了の直属ルータの台数である。第1〜第4の収集残台数を特に区別しない場合、単に収集残台数としても良い。
ここで、直属ルータのデータ収集が完了するとは、ルータ10が、ルータ10の直属ルータおよび当該直属ルータの配下の全てのルータ10が取得したセンサデータについて、受信済みまたはタイムアウト済みであることをいう。
また、直属ルータのデータ収集が未完了であるとは、ルータ10が、ルータ10の直属ルータまたは当該直属ルータの配下のいずれかのルータ10が取得したセンサデータを受信しておらず、かつ、当該未受信分のセンサデータについてのデータ要求がタイムアウト済みではないことをいう。
取得部111は、センサ30からセンサデータを取得する。取得部111は、取得したセンサデータを記憶部150に保存する。
第1の受信部112は、マルチホップネットワーク上でルータ10(自装置)よりも上流に位置する他のルータ10またはコーディネータ20からデータ要求を受信する。第1の受信部112は、データ要求を受信した場合に、第1の送信部113、第1の算出部115、および第2の送信部116にデータ要求を受信したことを通知する。
本実施形態におけるデータ要求は、各ルータ10がセンサ30から取得したセンサデータを親ルータまたはコーディネータ20に送信するように要求する命令信号である。
本実施形態においては、ルータ10にデータ要求を送信する他のルータ10またはコーディネータ20は、接続情報データベース90aに登録された親ルータまたはコーディネータ識別情報によって特定されるルータ10またはコーディネータ20である。ルータ10aを例とすると、ルータ10aの第1の受信部112は、コーディネータ20からデータ要求を受信する。また、ルータ10dを例とすると、ルータ10dの第1の受信部112は、ルータ10aからデータ要求を受信する。
第1の送信部113は、第1の受信部112がデータ要求を受信した場合に、記憶部150の接続情報データベース90aに登録された直属ルータ識別情報に基づいて、直属ルータのうちの1台にデータ要求を送信する。
また、第1の送信部113は、送信先の直属ルータからのデータ収集が完了し、かつ、記憶部150に記憶された第1の収集残台数が0以外の場合には、直属ルータのうちの他の1台にデータ要求を送信する。また、第1の送信部113は、第2の受信部114が直属ルータから受信した第2の収集残台数が0となった場合に、当該直属ルータからのデータ収集が完了したと判断する。
また、第1の送信部113は、記憶部150に記憶された第1の収集残台数が0の場合には、全ての直属ルータからのデータ収集が完了したと判断し、直属ルータへのデータ要求の送信を終了する。
第2の受信部114は、直属ルータから、センサデータ、および直属ルータと直接接続するルータ10のうちデータ収集が未完了のルータ10の台数を受信する。本実施形態においては、直属ルータと直接接続するルータ10のうちデータ収集が未完了のルータ10の台数を、第2の収集残台数という。第2の受信部114は、受信した第2の収集残台数を、第1の送信部113および第1の算出部115に送出する。
また、本実施形態においては、直属ルータと直接接続するルータ10を、第3の無線通信装置という。例えば、ルータ10aを基準とする場合、ルータ10aの直属ルータであるルータ10dと直接接続するルータ10fおよびルータ10gが、第3の無線通信装置の一例となる。
第1の算出部115は、データ収集が未完了の直属ルータの台数である第1の収集残台数を算出する。より詳細には、第1の算出部115は、第1の受信部112がデータ要求を受信した場合に、直属ルータ台数を、第1の収集残台数の初期値として記憶部150に保存する。
また、第1の算出部115は、第2の受信部114が直属ルータから受信した第2の収集残台数が0となった場合に、当該直属ルータからのデータ収集が完了したと判断する。第1の算出部115は、直属ルータからのデータ収集が完了する毎に、直属ルータ台数(すなわち、第1の収集残台数の初期値)から1台分ずつ減算することにより、第1の収集残台数を算出する。
また、第1の算出部115は、後述の第1の計時部117によって計時された経過時間が所定の時間以上となった場合にも、第1の収集残台数から1台分を減算する。第1の計時部117によって計時された経過時間が所定の時間以上となった場合を、データ要求がタイムアウトした場合という。
第2の送信部116は、取得部111が取得したセンサデータ、直属ルータから収集したセンサデータ、および第1の算出部115によって算出された第1の収集残台数を、データ要求の送信元であるルータ10またはコーディネータ20に送信する。第2の送信部116は、データ要求の送信元である他のルータ10またはコーディネータ20を、接続情報データベース90aに登録された親ルータまたはコーディネータ識別情報によって特定するものとする。
また、第2の送信部116は、第1の受信部112がデータ要求を受信した場合に、当該データ要求の送信元である他のルータ10またはコーディネータ20に受信応答を送信する。受信応答は、例えば、ACK(ACKnowledgement)信号等である。
第1の計時部117は、第1の送信部113が直属ルータにデータ要求を送信してから、第2の受信部114が当該直属ルータから受信応答を受信するまでの経過時間を計時する。第1の計時部117は、経過時間が所定の時間以上となった場合に、第1の算出部115に、データ要求がタイムアウトしたことを通知する。
次に、本実施形態のコーディネータ20の機能の詳細を説明する。図5は、本実施形態にかかるコーディネータ20の機能的構成の一例を示すブロック図である。図5に示すように、コーディネータ20は、第3の送信部211と、第3の受信部212と、第2の算出部213と、第2の計時部214と、通信部215と、記憶部250とを備える。
記憶部250は、接続情報データベース(DB)90b、直属ルータ台数、第3の収集残台数、および、後述の第3の受信部212が受信したセンサデータを記憶する。記憶部250は、例えばフラッシュメモリ103またはRAM106である。
接続情報データベース90bは、上述の接続情報データベース90aと同様に、コーディネータ20(自装置)と直接接続するルータ10またはコーディネータ20を特定可能な識別情報が登録されたデータベースである。この場合、自装置であるコーディネータ20には親となる上位装置がないため、接続情報データベース90bは、直属ルータ識別情報のみが登録される。コーディネータ20の直属ルータはルータ10aおよびルータ10bであるため、接続情報データベース90bには、ルータ10aを特定可能な識別情報およびルータ10bを特定可能な識別情報が登録される。
直属ルータ台数は、コーディネータ20の直属ルータの台数である。直属ルータ台数は、接続情報データベース90bの直属ルータ識別情報に登録されたルータ10の台数と等しくなる。
第3の収集残台数は、コーディネータ20の直属ルータのうち、データ収集が未完了の直属ルータの台数である。第3の収集残台数は、後述の第2の算出部213によって算出される。
第3の送信部211は、コーディネータ20の配下のルータ10のうち、コーディネータ20と直接接続するルータ10、すなわち直属ルータにデータ要求を送信する。第3の送信部211は、送信先の直属ルータを、記憶部250の接続情報データベース90bに登録された直属ルータ識別情報から特定するものとする。また、第3の送信部211は、送信先のルータ10からのデータ収集が完了した場合に、他の直属ルータにデータ要求を送信する。
また、第3の送信部211は、後述の第2の算出部213によって算出された第3の収集残台数が0になった場合に、直属ルータへのデータ要求の送信を終了する。また、第3の送信部211は、第3の受信部212が直属ルータからセンサデータおよび第1の収集残台数を受信した場合に、送信元の直属ルータに受信応答を送信する。
第3の受信部212は、第3の送信部211によるデータ要求の送信先である直属ルータから、センサデータ、および第1の収集残台数を受信する。第3の受信部212は、受信したセンサデータを記憶部250に保存する。第3の受信部212は、センサデータおよび第1の収集残台数を受信した場合に、センサデータおよび第1の収集残台数を受信したことを第3の送信部211および第2の計時部214に通知する。
第2の算出部213は、直属ルータからのデータ収集が完了する毎に、データ収集が未完了の直属ルータの台数である第3の収集残台数を算出する。直属ルータからのデータ収集の完了は、センサデータの受信の完了だけではなく、データ要求のタイムアウトも含むものとする。また、第2の算出部213は、直属ルータへのデータ要求の開始の際に、直属ルータ台数を、第3の収集残台数の初期値として記憶部250に保存する。
第2の計時部214は、第3の送信部211が直属ルータにデータ要求を送信してから、第3の受信部212が当該直属ルータから受信応答を受信するまでの経過時間を計時する。第2の計時部214は、経過時間が所定の時間以上となった場合に、第2の算出部213に、データ要求がタイムアウトしたことを通知する。
通信部215は、記憶部250に保存されたセンサデータを、PC40に送信する。通信部215は、センサデータを定期的にPC40に送信しても良いし、全てのルータ10のデータ収集が完了した場合、つまり第3の収集残台数が0となった場合にセンサデータをPC40に送信しても良い。また、通信部215は、第3の受信部212が直属ルータからセンサデータを受信したタイミングで、都度、センサデータをPC40に送信しても良い。また、通信部215は、PC40からデータ収集の指示を受け付けるものとしても良い。
次に、以上のように構成された無線通信システムSで実行されるセンサデータ収集処理の流れについて説明する。
図6は、本実施形態にかかるセンサデータ収集処理の流れの一例を示すシーケンス図である。このシーケンス図の処理は、例えば、定期的に実行されても良いし、コーディネータ20がPC40からデータ収集の指示を受けた場合に実行されても良い。また、このシーケンス図に示す処理が実行される時点で、各ルータ10の取得部111は、センサデータから取得したセンサデータを記憶部150に保存しているものとする。
また、図6では、ルータ10aおよびルータ10bの第1の算出部115が算出した収集残台数を第1の収集残台数、ルータ10aの直属ルータであるルータ10cおよびルータ10dの第1の算出部115が算出した収集残台数を第2の収集残台数、コーディネータ20の第2の算出部213が算出した収集残台数を第3の収集残台数としている。また、ルータ10dの直属ルータであるルータ10fの第1の算出部115が算出した収集残台数を第4の収集残台数としている。ルータ10fは、ルータ10aの孫に相当するルータである。
まず、コーディネータ20の第2の算出部213は、直属ルータ台数を、第3の収集残台数の初期値とする(S1)。コーディネータ20の直属ルータ台数は、ルータ10aとルータ10bの2台であるため、この時点での第3の収集残台数は2である。
次に、第3の送信部211は、記憶部250の接続情報データベース90bに登録された直属ルータのうちの1台にデータ要求を送信する(S2)。本実施形態においては、例えば、ルータ10aの方が先に接続情報データベース90bに登録されているものとする。この場合、第3の送信部211は、まず、ルータ10aにデータ要求を送信する。この場合、ルータ10aの第1の受信部112は、コーディネータ20から送信されたデータ要求を受信する。
また、コーディネータ20の第2の計時部214は、第3の送信部211がルータ10aにデータ要求を送信した場合に、経過時間の計時を開始する(S3)。
そして、ルータ10aの第2の送信部116は、コーディネータ20に受信応答を送信する(S4)。
また、コーディネータ20の第3の受信部212は、ルータ10aから受信応答を受信する。コーディネータ20の第2の計時部214は、第3の受信部212がルータ10aから受信応答を受信した場合に、経過時間の計時を終了する(S5)。
次に、ルータ10aの第1の算出部115は、直属ルータ台数を、第1の収集残台数の初期値とする(S6)。ルータ10aの直属ルータ台数は、ルータ10cとルータ10dの2台であるため、この時点での第1の収集残台数は2である。
次に、ルータ10aの第2の送信部116は、記憶部150の接続情報データベース90aに登録された親ルータまたはコーディネータ識別情報によって、センサデータの送信先がコーディネータ20であることを特定する。また、第2の送信部116は、取得部111によって取得されたセンサデータ、すなわち自装置取得分のセンサデータを、記憶部150から読み出す。第2の送信部116は、自装置取得分のセンサデータ、および第1の算出部115によって算出された第1の収集残台数を、コーディネータ20に送信する(S7)。
コーディネータ20の第3の受信部212は、ルータ10aから、センサデータおよび第1の収集残台数を受信する。第3の受信部212は、受信したセンサデータを記憶部250に保存する。また、コーディネータ20の第3の送信部211は、ルータ10aに受信応答を送信する(S8)。
次に、ルータ10aの第1の送信部113は、接続情報データベース90aに登録された直属ルータ識別情報に基づいて、直属ルータのうちの1台にデータ要求を送信する(S9)。
図4で説明したように、ルータ10aの接続情報データベース90aには、ルータ10cの方が先に登録されているため、第1の送信部113は、まず、ルータ10cにデータ要求を送信する。
また、ルータ10aの第1の計時部117は、第1の送信部113がルータ10cにデータ要求を送信した場合に、経過時間の計時を開始する(S10)。
そして、ルータ10cの第1の受信部112は、ルータ10aから送信されたデータ要求を受信する。ルータ10cの第2の送信部116は、ルータ10aに受信応答を送信する(S11)。
また、ルータ10aの第2の受信部114は、ルータ10cから受信応答を受信する。ルータ10aの第1の計時部117は、第2の受信部114がルータ10cから受信応答を受信した場合に、経過時間の計時を終了する(S12)。図6に示す例では、ルータ10aからルータ10cへのデータ要求の経過時間は所定の時間未満であり、データ要求はタイムアウトしなかったものとする。
そして、ルータ10cの第1の算出部115は、直属ルータ台数を、第2の収集残台数の初期値とする(S13)。ルータ10cの直属ルータはないため、第2の収集残台数は0となる。
図6においては、ルータ10aを基準として説明しているため、ルータ10aの第1の算出部115が算出した収集残台数を第1の収集残台数、ルータ10cの第1の算出部115が算出した収集残台数を第2の収集残台数としているが、第1の収集残台数と第2の収集残台数の算出の手法に差異はないものとする。また、ルータ10cを基準として説明する場合には、ルータ10cの第1の算出部115が算出する収集残台数が、第1の収集残台数となる。
次に、ルータ10cの第2の送信部116は、自装置取得分のセンサデータ、およびルータ10cの第1の算出部115によって算出された第2の収集残台数を、ルータ10aに送信する(S14)。
ルータ10aの第2の受信部114は、ルータ10cから、センサデータおよび第2の収集残台数を受信する。そして、ルータ10aの第2の送信部116は、ルータ10cに受信応答を送信する(S15)。
また、ルータ10aの第1の算出部115は、第2の受信部114がルータ10cから受信した第2の収集残台数が0であるため、ルータ10cからのデータ収集が完了したと判断する。この場合、ルータ10aの第1の算出部115は、第1の収集残台数を1台分減算する(S16)。この時点で、第1の収集残台数は1となる。第1の算出部115は、減算後の第1の収集残台数を記憶部150に保存する。
次に、ルータ10aの第2の送信部116は、ルータ10cから受信したセンサデータ、および減算後の第1の収集残台数を、コーディネータ20に送信する(S17)。ここで、ルータ10が他のルータ10から受信したセンサデータを、自装置の取得部111が取得したセンサデータと区別する場合、「配下のルータ10のセンサデータ」という。また、ルータ10が配下のルータ10のセンサデータを上位のルータ10またはコーディネータ20に送信することを、「センサデータを中継する」ともいう。
コーディネータ20の第3の受信部212は、ルータ10aから、センサデータおよび第1の収集残台数を受信し、受信したセンサデータを記憶部250に保存する。また、第3の送信部211は、ルータ10aに受信応答を送信する(S18)。
また、ルータ10aの第1の送信部113は、第2の受信部114がルータ10cから受信した第2の収集残台数が0であるため、ルータ10cからのデータ収集が完了したと判断する。そして、ルータ10aの第1の送信部113は、接続情報データベース90aに登録された直属ルータ識別情報を参照し、ルータ10cの次に登録されているルータ10dに、データ要求を送信する(S19)。
また、ルータ10aの第1の計時部117は、第1の送信部113がルータ10dにデータ要求を送信した場合に、経過時間の計時を開始する(S20)。
そして、ルータ10dの第1の受信部112は、ルータ10aから送信されたデータ要求を受信する。また、ルータ10dの第2の送信部116は、ルータ10aに受信応答を送信する(S21)。
また、ルータ10aの第2の受信部114は、ルータ10dから受信応答を受信する。ルータ10aの第1の計時部117は、第2の受信部114がルータ10dから受信応答を受信した場合に、経過時間の計時を終了する(S22)。ルータ10aからルータ10dへのデータ要求はタイムアウトしなかったものとする。
そして、ルータ10dの第1の算出部115は、直属ルータ台数を、第2の収集残台数の初期値とする(S23)。ルータ10dの直属ルータは、ルータ10fとルータ10gの2台であるため、この時点での第2の収集残台数は2となる。
次に、ルータ10dの第2の送信部116は、自装置取得分のセンサデータ、および第2の収集残台数を、ルータ10aに送信する(S24)。
ルータ10aの第2の受信部114は、ルータ10dから、センサデータおよび第2の収集残台数を受信する。そして、ルータ10aの第2の送信部116は、ルータ10dに受信応答を送信する(S25)。ルータ10dから送信された第2の収集残台数は0ではないため、ルータ10aの第1の算出部115は、第1の収集残台数を変更しない。このため、この時点の第1の収集残台数は1である。
次に、ルータ10aの第2の送信部116は、ルータ10dから受信したセンサデータ、および現時点の第1の収集残台数を、コーディネータ20に送信する(S26)。
コーディネータ20の第3の受信部212は、ルータ10aから、センサデータおよび第1の収集残台数を受信し、受信したセンサデータを記憶部250に保存する。また、第3の送信部211は、ルータ10aに受信応答を送信する(S27)。
次に、ルータ10dの第1の送信部113は、接続情報データベース90aに登録された直属ルータ識別情報に基づいて、直属ルータのうちの1台にデータ要求を送信する(S28)。図6の例では、ルータ10dの第1の送信部113は、直属ルータのうち、ルータ10fに最初にデータ要求を送信するものとする。
また、ルータ10dの第1の計時部117は、第1の送信部113がルータ10fにデータ要求を送信した場合に、経過時間の計時を開始する(S29)。
そして、ルータ10fの第1の受信部112は、ルータ10dから送信されたデータ要求を受信する。また、ルータ10fの第2の送信部116は、ルータ10dに受信応答を送信する(S30)。
また、ルータ10dの第2の受信部114は、ルータ10fから受信応答を受信する。ルータ10dの第1の計時部117は、第2の受信部114がルータ10fから受信応答を受信した場合に、経過時間の計時を終了する(S31)。ルータ10dからルータ10fへのデータ要求はタイムアウトしなかったものとする。
次に、ルータ10fの第1の算出部115は、直属ルータ台数を、収集残台数の初期値とする(S32)。ルータ10fの直属ルータ台数は0台のため、第4の収集残台数は、0となる。
次に、ルータ10fの第2の送信部116は、自装置取得分のセンサデータ、および第4の収集残台数を、ルータ10dに送信する(S33)。
ルータ10dの第2の受信部114は、ルータ10fから、センサデータおよび第4の収集残台数を受信する。そして、ルータ10dの第2の送信部116は、ルータ10fに受信応答を送信する(S34)。
また、ルータ10dの第1の算出部115は、第2の受信部114がルータ10fから受信した第4の収集残台数が0であるため、ルータ10fからのデータ収集が完了したと判断し、第2の収集残台数を1台分減算する(S35)。この時点で、第1の収集残台数は1となる。第1の算出部115は、減算後の第1の収集残台数を記憶部150に保存する。
次に、ルータ10dの第2の送信部116は、ルータ10fから受信したセンサデータ、および減算後の第2の収集残台数を、ルータ10aに送信する(S36)。
ルータ10aの第2の受信部114は、ルータ10dから、センサデータおよび第2の収集残台数を受信する。そして、ルータ10aの第2の送信部116は、ルータ10dに受信応答を送信する(S37)。ルータ10dから送信された第2の収集残台数は0ではないため、ルータ10aの第1の算出部115は、第1の収集残台数を変更しない。このため、この時点の第1の収集残台数は1である。
次に、ルータ10aの第2の送信部116は、ルータ10dから受信したセンサデータ、および現時点の第1の収集残台数を、コーディネータ20に送信する(S38)。
コーディネータ20の第3の受信部212は、ルータ10aから、センサデータおよび第1の収集残台数を受信し、受信したセンサデータを記憶部250に保存する。また、第3の送信部211は、ルータ10aに受信応答を送信する(S39)。
そして、ルータ10dは、もう1つの直属ルータであるルータ10gに対しても、ルータ10fに対して実行した処理と同様にデータ収集処理を実行し、第2の収集残台数が0となるまで、処理を行う。
ルータ10dの第1の算出部115によって算出された第2の収集残台数が0となった場合、ルータ10dの第2の送信部116は、配下のルータ10(この場合は、ルータ10g)から受信したセンサデータ、および0となった第2の収集残台数を、ルータ10aに送信する(S40)。
ルータ10aの第2の受信部114は、ルータ10dから、センサデータおよび第2の収集残台数を受信する。ルータ10aの第2の送信部116は、ルータ10dに受信応答を送信する(S41)。
そして、ルータ10aの第1の算出部115は、第2の受信部114がルータ10dから受信した第2の収集残台数が0であるため、ルータ10dおよびその配下の全てのルータ10からのデータ収集が完了したと判断する。この場合、ルータ10aの第1の算出部115は、第1の収集残台数を1台分減算する(S42)。この時点で、第1の収集残台数は0となる。ここで、ルータ10aの第1の送信部113は、直属ルータへのデータ要求の送信を終了する。
次に、ルータ10aの第2の送信部116は、ルータ10dから受信したセンサデータ、および0となった第1の収集残台数を、コーディネータ20に送信する(S43)。
コーディネータ20の第3の受信部212は、ルータ10aから、センサデータおよび第1の収集残台数を受信し、受信したセンサデータを記憶部250に保存する。また、第3の送信部211は、ルータ10aに受信応答を送信する(S44)。
コーディネータ20の第2の算出部213は、第3の受信部212がルータ10aから受信した第1の収集残台数が0であるため、ルータ10aからのデータ収集が完了したと判断する。そして、第2の算出部213は、第3の収集残台数を1台分減算する(S45)。この時点で、第3の収集残台数は1となる。
また、コーディネータ20の第3の送信部211は、第3の受信部212がルータ10aから受信した第1の収集残台数が0であるため、ルータ10aからのデータ収集が完了したと判断する。そして、コーディネータ20の第3の送信部211は、接続情報データベース90bに登録された直属ルータ識別情報を参照し、ルータ10aの次に登録されているルータ10bに、データ要求を送信する(S46)。
そして、ルータ10bは、ルータ10aと同様に、配下のルータ10のデータ収集処理を実行する。ルータ10bの第1の収集残台数が0になった場合、ルータ10bの第2の送信部116は、配下のルータ10から受信したセンサデータ、および0となった第1の収集残台数を、コーディネータ20に送信する(S47)。
コーディネータ20の第3の受信部212は、ルータ10bから、センサデータおよび第1の収集残台数を受信し、受信したセンサデータを記憶部250に保存する。また、第3の送信部211は、ルータ10bに受信応答を送信する(S48)。そして、コーディネータ20の第3の送信部211は、直属ルータへのデータ要求の送信を終了する。
そして、通信部215は、第3の収集残台数が0となった場合に、センサデータをPC40に送信する(S49)。
従来、例えば、各ルータのデータ送信タイミングが重複することを防止するために、コーディネータが、マルチホップネットワークに含まれる全てのルータの送信タイミングを管理する場合があった。このような技術においては、例えば、コーディネータが、マルチホップネットワークに含まれる個々のルータに対するデータ要求を個別に送信するため、コーディネータは、マルチホップネットワークに含まれる全てのルータ10の識別情報、および全てのルータ10に到達するための経路情報を記憶しておく必要があった。また、各ルータは、コーディネータから送信されたデータ要求を、対象のルータまで中継するため、各ルータは配下の全てのルータの識別情報および配下の全てのルータに到達するための経路情報を予め記憶しておく必要があった。
これに対して、本実施形態のルータ10は、マルチホップネットワーク上でルータ10よりも上流に位置する他のルータ10またはコーディネータ20からデータ要求を受信した場合に、記憶部150に保存された直属ルータの識別情報に基づいて、直属ルータのうちの1台にデータ要求を送信し、直属ルータから収集したセンサデータおよび第1の収集残台数をデータ要求元の他のルータ10またはコーディネータ20に送信する。また、本実施形態のルータ10は、当該直属ルータからのデータ収集が完了した場合であって、第1の収集残台数が0以外の場合には、他の直属ルータにデータ要求を送信する。
このため、本実施形態のルータ10によれば、直属ルータに対して1台ずつデータ収集を実行するため、各直属ルータからルータ10へのセンサデータの送信タイミングの重複を低減することができる。また、本実施形態のルータ10によれば、ルータ10は、配下の全てのルータ10の識別情報または配下の全てのルータ10に到達するための経路情報を記憶しなくとも、データ要求先である直属ルータを特定する識別情報を記憶しておけば良いため、各ルータ10に記憶されるデータ量を低減することができる。
特に、WSN(Wireless Sensor Network)やIoT分野において使用される無線通信装置は小型化が求められるため、メモリ等のリソースが乏しい場合がある。このような場合においても、本実施形態のルータ10を適用することができる。
また、本実施形態では、1のルータ10に対して複数のルータ10が同時にセンサデータを送信することを低減することにより、センサデータの欠損を低減することができ、信頼性を向上することができる。
また、上述のような従来技術においては、コーディネータが全てのルータに対して個別にデータ要求を送信し、コーディネータの配下のルータが、対象のルータまで当該データ要求を中継する。このため、図1に示す例と同様に8台のルータを備えるツリー型のネットワークにおいて、8台のルータ全てからデータを収集するためには、合計17回のデータ要求をコーディネータまたはルータが送信することとなる。データ要求の送信回数が増加すると、データ要求の失敗によるデータ欠落のリスクが高くなる場合がある。また、送信タイミングが重複しないようにルータ10またはコーディネータ20がデータ要求の送信タイミングを管理する場合は、送信回数の増加により処理時間が長くなり、センサデータの収集に時間を要する場合がある。
これに対して、本実施形態のルータ10は、マルチホップネットワーク上でルータ10よりも上流に位置する他のルータ10またはコーディネータ20からデータ要求を受信した場合に、第1の収集残台数が0になるまで、直属ルータに順番にデータ要求を送信するため、個々のルータ10を指定したデータ要求を受けなくとも、配下のルータ10からデータを収集することができる。このため、本実施形態のルータ10によれば、ルータ10またはコーディネータ20によるデータ要求の送信回数を低減することができる。具体的には、図1に示す本実施形態のマルチホップネットワークにおいては、ルータ10の台数と同数の8回のデータ要求で、8台のルータ10の全てからデータを収集することができる。
また、本実施形態のルータ10によれば、データ要求の送信回数を低減することにより、データ要求の失敗によるデータ欠落のリスクを低減することができる。このため、本実施形態のルータ10によれば、効率的かつ信頼度の高いデータ収集を実現することができる。
また、本実施形態のルータ10は、さらに、直属ルータの台数を記憶しており、直属ルータからのデータ収集が完了する毎に、直属ルータの台数から1台分ずつ減算することにより、第1の収集残台数を算出する。このため、本実施形態のルータ10によれば、データ収集が未完了の直属ルータの台数を、容易に特定することができる。
また、本実施形態のルータ10は、直属ルータから、センサデータおよび第2の収集残台数を受信し、第2の収集残台数が0となった場合に、当該直属ルータからのデータ収集が完了したと判断する。このため、本実施形態のルータ10によれば、直属ルータの配下のルータ10の合計台数または個々のルータ10に到達する経路情報を把握していなくとも、直属ルータからのデータ収集の完了の有無を容易に判断することができる。
また、本実施形態のルータ10は、直属ルータにデータ要求を送信してから受信応答を受けるまでの経過時間が所定の時間以上となった場合に、第1の収集残台数から1台分を減算し、減算後の第1の収集残台数を上位のルータ10またはコーディネータ20に送信する。このため、本実施形態のルータ10によれば、直属ルータとの間の通信接続が遮断された場合にも、マルチポップネットワークに含まれる多くのルータ10から効率的にセンサデータを収集することができる。
また、本実施形態のルータ10はセンサ30から取得したセンサデータを上位のルータ10またはコーディネータ20に送信することにより、センサ30が検出した結果を効率的にコーディネータ20に収集することができる。
また、本実施形態のコーディネータ20は、直属ルータのうちの1台にデータ要求を送信し、当該直属ルータからのデータ収集が完了した場合に、他の直属ルータにデータ要求を送信する。また、本実施形態のコーディネータ20は、第3の収集残台数が0になった場合に、直属ルータへのデータ要求の送信を終了する。このため、本実施形態のコーディネータ20は、コーディネータ20に対して複数のルータ10から同時にセンサデータが送信されることを低減することができる。また、コーディネータ20はデータ要求の送信先である直属ルータの識別情報のみを記憶していれば良いため、コーディネータ20に記憶されるデータ量を低減することができる。
本実施形態の無線通信システムSによれば、上述のルータ10とコーディネータ20とを備えることにより、ルータ10同士の送信タイミングの重複を低減すると共に、ルータ10およびコーディネータ20に記憶されるデータ量を低減することができる。
なお、本実施形態においては、コーディネータ20はPC40と有線通信をするものとしたが、コーディネータ20は、3G(第3世代移動通信システム)やLTE(Long Term Evolution)等の規格に準拠した無線通信によって、PC40と接続しても良い。また、コーディネータ20が収集したセンサデータの送信先はPC40に限定されるものではない。例えば、コーディネータ20は、無線通信によってクラウド環境にセンサデータを送信しても良い。
また、本実施形態においては、タイムアウトの基準となる経過時間は、ルータ10またはコーディネータ20直属ルータにデータ要求を送信してから、当該直属ルータから受信応答を受けるまでの時間としたが、タイムアウトの基準はこれに限定されるものではない。例えば、ルータ10またはコーディネータ20直属ルータにデータ要求を送信してから、当該直属ルータからセンサデータおよび収集残台数を受信するまでの経過時間が所定の時間以上となった場合を、タイムアウトとしても良い。
コーディネータ20およびルータ10は、直属ルータのうち、データ要求がタイムアウトしたルータ10については、データ要求を再度送信しても良い。例えば、ルータ10は、データ要求がタイムアウトした直属ルータの識別情報を記憶部150に保存しておき、第1の収集残台数が0となった後に、データ要求がタイムアウトした直属ルータに対して、データ要求を再度送信するものとしても良い。
なお、本実施形態では、ルータ10とセンサ30とを別個の装置とする構成を説明したが、ルータ10とセンサ30とは、1つの装置に含まれるものであっても良い。
なお、本実施形態のコーディネータ20またはルータ10で実行されるプログラムは、インストール可能な形式または実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD(Digital Versatile Disk)、USB(Universal Serial Bus)メモリ等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成しても良いし、インターネット等のネットワーク経由で提供または配布するように構成しても良い。また、各種プログラムを、ROM等に予め組み込んで提供するように構成しても良い。
本実施形態のルータ10で実行されるプログラムは、上述した各機能部(取得部、第1の受信部、第1の送信部、第2の受信部、第1の算出部、第2の送信部、第1の計時部)を含むモジュール構成となっている。
また、本実施形態のコーディネータ20で実行されるプログラムは、上述した各機能部(第3の送信部、第3の受信部、第2の算出部、第2の計時部、通信部)を含むモジュール構成となっている。
また、本実施形態における、上記処理を実行するためのプログラムは、上記各機能部を含むモジュール構成となっており、実際のハードウェアとしては、例えば、CPU(プロセッサ)がROMまたはフラッシュメモリから上記プログラムを読み出して実行することにより、上述した各機能部がRAM(主記憶)上にロードされ、上述した各機能部がRAM(主記憶)上に生成されるようになっている。なお、上述した各機能部の一部または全部を、ASIC(Application Specific Integrated Circuit)やFPGA(Field−Programmable Gate Array)などの専用のハードウェアを用いて実現することも可能である。
また、本実施形態では、ルータ10の取得部111、第1の受信部112、第1の送信部113、第2の受信部114、第1の算出部115、第2の送信部116、第1の計時部117、およびコーディネータ20の第3の送信部221、第3の受信部212、第2の算出部213、第2の計時部214、通信部215を、プロセッサ104によって実現される機能の一例として記載したが、各機能部がハードウェア回路等によって実現されるものとしても良い。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。