(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024029610
(43)【公開日】2024-03-06
(54)【発明の名称】エッジデバイス、サーバ装置、プログラムおよびセンサシステム
(51)【国際特許分類】
H04Q 9/00 20060101AFI20240228BHJP
G08C 25/02 20060101ALI20240228BHJP
【FI】
H04Q9/00 301A
G08C25/02
H04Q9/00 311H
【審査請求】未請求
【請求項の数】15
【出願形態】OL
(21)【出願番号】P 2022131958
(22)【出願日】2022-08-22
(71)【出願人】
【識別番号】000204284
【氏名又は名称】太陽誘電株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】大川 浩
(72)【発明者】
【氏名】小杉 明史
【テーマコード(参考)】
2F073
5K048
【Fターム(参考)】
2F073AA01
2F073AA02
2F073AA03
2F073AA04
2F073AB01
2F073BB01
2F073BB04
2F073BB07
2F073BC01
2F073BC02
2F073CC03
2F073CC09
2F073CD11
2F073DD07
2F073EF01
2F073EF09
2F073FF01
2F073FG01
2F073FG02
2F073GG01
2F073GG06
2F073GG07
2F073GG08
5K048BA34
5K048DC01
5K048DC03
5K048EB03
5K048EB10
5K048FC03
5K048GA10
(57)【要約】
【課題】センシングデータの時系列性の保証する処理、および、欠損した一部のセンシングデータをリカバリするリカバリ処理を、簡易に且つ少ない通信負荷で実行する。
【解決手段】エッジデバイスは、収集間隔毎に、収集間隔中に検出された複数のセンサデータおよび時刻情報を含むブロックを生成するブロック生成部と、生成した各ブロックを正常受信情報をサーバ装置から受信するまで、繰り返してサーバ装置に送信する通常処理シーケンスを実行するブロック送信部と、正常受信情報を受信しないブロックに対する、通常処理シーケンスを中止させるバックアップ処理部と、リカバリイベント毎に、通常処理シーケンスを中止させたブロックを、正常受信情報をサーバ装置から受信するまで、繰り返してサーバ装置に送信するリカバリ処理シーケンスを実行するリカバリ処理部と、を備える。
【選択図】
図5
【特許請求の範囲】
【請求項1】
予め定められたサンプリング間隔でセンサ装置によりサンプリングされたセンサデータを収集する収集部と、
前記サンプリング間隔よりも長い収集間隔毎に、前記収集間隔中に検出された複数のセンサデータ、および、前記複数のセンサデータのそれぞれのサンプリング時刻を特定するための時刻情報を含むブロックを生成するブロック生成部と、
生成した各前記ブロックを、正常に前記ブロックを受信したことを示す正常受信情報をサーバ装置から受信するまで、繰り返して前記サーバ装置に送信する通常処理シーケンスを実行するブロック送信部と、
前記通常処理シーケンスにおいて予め定められた期間、前記正常受信情報を受信しない前記ブロックに対する、前記通常処理シーケンスを中止させるバックアップ処理部と、
前記収集間隔よりも長い時間の間隔で繰り返し発生するリカバリイベント毎に、前記通常処理シーケンスを中止させた前記ブロックを、前記正常受信情報を前記サーバ装置から受信するまで、繰り返して前記サーバ装置に送信するリカバリ処理シーケンスを実行するリカバリ処理部と、
を備えるエッジデバイス。
【請求項2】
前記バックアップ処理部は、前記正常受信情報を受信しないことにより前記通常処理シーケンスを中止した前記ブロックを、記憶装置に記憶させ、
前記リカバリ処理部は、前記リカバリ処理シーケンスにおいて、前記記憶装置に記憶された前記ブロックを、前記正常受信情報を前記サーバ装置から受信するまで、繰り返して前記サーバ装置に送信する
請求項1に記載のエッジデバイス。
【請求項3】
前記通常処理シーケンスにおいて、前記ブロック送信部は、生成された前記ブロックの一つである第1ブロックを、正常に前記第1ブロックを受信したことを示す前記正常受信情報を前記サーバ装置から受信するまで、繰り返して前記サーバ装置に送信し、
前記バックアップ処理部は、前記第1ブロックが前記通常処理シーケンスにおいて予め定められた期間、前記正常受信情報を受信しない場合、前記第1ブロックを前記記憶装置に記憶させる
請求項2に記載のエッジデバイス。
【請求項4】
前記リカバリ処理シーケンスにおいて、前記リカバリ処理部は、前記通常処理シーケンスを中止した前記ブロックの一つである第2ブロックを、正常に前記第2ブロックを受信したことを示す前記正常受信情報を前記サーバ装置から受信するまで、繰り返して前記サーバ装置に送信する
請求項3に記載のエッジデバイス。
【請求項5】
前記バックアップ処理部は、前記第1ブロックを、前記通常処理シーケンスにより送信開始してから予め定められた応答待機時間を経過した場合、または、前記通常処理シーケンスにより予め定められた応答回数送信した場合、前記通常処理シーケンスによる前記第1ブロックの送信を中止させる
請求項4に記載のエッジデバイス。
【請求項6】
前記ブロック生成部は、サンプリング時刻順に並べられた前記複数のセンサデータを含む前記ブロックを生成する
請求項1に記載のエッジデバイス。
【請求項7】
前記ブロック送信部は、前記通常処理シーケンスを、一定間隔毎に間欠的に実行する
請求項1に記載のエッジデバイス。
【請求項8】
前記リカバリ処理部は、前記リカバリイベントが発生する毎に、前記通常処理シーケンスを実行していない期間において、前記リカバリ処理シーケンスを実行する
請求項7に記載のエッジデバイス。
【請求項9】
請求項1から8の何れか1項に記載のエッジデバイスから前記ブロックを受信するサーバ装置であって、
受信した前記ブロックを記憶するデータ記憶部と、
前記エッジデバイスから前記ブロックを受信するブロック受信部と、
前記ブロックを受信する毎に、受信した前記ブロックに含まれる前記時刻情報と、前記データ記憶部に記憶された前記ブロックに含まれる前記時刻情報とを比較することにより受信した前記ブロックが既に前記データ記憶部に記憶されているか否かを判断し、受信した前記ブロックが前記データ記憶部に記憶されていない場合、受信した前記ブロックを前記データ記憶部に記憶させる書込部と、
受信した前記ブロックを前記データ記憶部に記憶させた場合、受信した前記ブロックを正常に受信したことを示す前記正常受信情報を前記エッジデバイスに送信する正常受信情報送信部と、
を備えるサーバ装置。
【請求項10】
受信した前記ブロックが、前記データ記憶部に既に記憶されている場合、前記正常受信情報送信部は、受信した前記ブロックを正常に受信したことを示す前記正常受信情報を前記エッジデバイスに送信する
請求項9に記載のサーバ装置。
【請求項11】
前記書込部は、前記データ記憶部に対して、複数の前記ブロックを前記時刻情報の順で整列させて書き込み、
前記書込部は、受信した前記ブロックが前記データ記憶部に記憶されていない場合、受信した前記ブロックに含まれる前記時刻情報より大きい前記時刻情報を含むブロックより後ろ、且つ、受信した前記ブロックに含まれる前記時刻情報より小さい前記時刻情報を含むブロックより前に、受信した前記ブロックを挿入する
請求項10に記載のサーバ装置。
【請求項12】
請求項1に記載のエッジデバイスとして情報処理装置を機能させるためのプログラム。
【請求項13】
請求項9に記載のサーバ装置として情報処理装置を機能させるためのプログラム。
【請求項14】
予め定められたサンプリング間隔で周囲の情報を検出してセンサデータを生成するセンサ装置と、
情報処理装置であるエッジデバイスと、
前記エッジデバイスとネットワークを介して接続され、情報処理装置であるサーバ装置と、
を備え、
前記エッジデバイスは、
前記サンプリング間隔で前記センサ装置によりサンプリングされたセンサデータを収集する収集部と、
前記サンプリング間隔よりも長い収集間隔毎に、前記収集間隔中に検出された複数のセンサデータ、および、前記複数のセンサデータのそれぞれのサンプリング時刻を特定するための時刻情報を含むブロックを生成するブロック生成部と、
生成した各前記ブロックを、正常に前記ブロックを受信したことを示す正常受信情報を前記サーバ装置から受信するまで、繰り返して前記サーバ装置に送信する通常処理シーケンスを実行するブロック送信部と、
前記通常処理シーケンスにおいて予め定められた期間、前記正常受信情報を受信しない前記ブロックに対する、前記通常処理シーケンスを中止させるバックアップ処理部と、
前記収集間隔よりも長い時間の間隔で繰り返し発生するリカバリイベント毎に、前記通常処理シーケンスを中止させた前記ブロックを、前記正常受信情報を前記サーバ装置から受信するまで、繰り返して前記サーバ装置に送信するリカバリ処理シーケンスを実行するリカバリ処理部と、
を有し、
前記サーバ装置は、
受信した前記ブロックを記憶するデータ記憶部と、
前記エッジデバイスから前記ブロックを受信するブロック受信部と、
前記ブロックを受信する毎に、受信した前記ブロックに含まれる前記時刻情報と、前記データ記憶部に記憶された前記ブロックに含まれる前記時刻情報とを比較することにより受信した前記ブロックが既に前記データ記憶部に記憶されているか否かを判断し、受信した前記ブロックが前記データ記憶部に記憶されていない場合、受信した前記ブロックを前記データ記憶部に記憶させる書込部と、
受信した前記ブロックを前記データ記憶部に記憶させた場合、受信した前記ブロックを正常に受信したことを示す前記正常受信情報を前記エッジデバイスに送信する正常受信情報送信部と、
を有するセンサシステム。
【請求項15】
前記センサ装置は、橋梁に設けられ、前記橋梁における前記センサ装置が設けられた位置における車両の走行方向における前記橋梁の変位を表す観測値を、前記センサデータとして検出する
請求項14に記載のセンサシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、エッジデバイス、サーバ装置、プログラムおよびセンサシステムに関する。
【背景技術】
【0002】
エッジデバイスがセンサからセンサデータを収集し、収集したセンサデータをインターネット等のネットワークを介してサーバ装置に送信するセンサシステムが知られている。また、このようなセンサシステムの一つとして、橋梁を通過する車両をセンサを用いて検出する橋梁モニタリングシステムが知られている(例えば特許文献1)。このような橋梁モニタリングシステムは、高速にセンシングをするので、非常に短い周期で大量のセンサデータをエッジデバイスからサーバ装置へと送信しなければならない。
【0003】
さらに、このようなセンサシステムは、中断期間無く、連続的にセンサデータを収集し続ける。また、このようなセンサシステムは、エッジデバイスからサーバ装置への伝送時においてネットワークの通信障害等により一部のセンシングデータが欠損する可能性がある。このため、このようなセンサシステムは、センシングデータの時系列性を保証する処理、および、欠損した一部のセンシングデータを再送信したり復元したりするリカバリ処理をしなければならない。
【0004】
特許文献2には、端末と基地局との無線通信環境が良好状態になった場合に、端末がバックアップとして記録されたセンシングデータをまとめて基地局へ無線送信する技術が記載されている。この技術では、その後、サーバは、センシングデータの欠損を検索し、欠損したセンシングデータを端末に再送させる。このような技術は、最新データを逐次処理しながら欠損データを処理するので、高速にセンシングをして大量のデータを扱う場合、負荷の集中により更なる欠損を誘発してしまう可能性がある。
【0005】
特許文献3には、複数の送信装置から所定の周期でデータを受信する技術が記載されている。この技術は、送信装置ごとに遅延状況を監視し、遅延状況に基づき未着データの到着を待機することにより、データの時系列性を確保する。例えば、特許文献3の技術は、データがA、B、C、D…という順で送られる場合において、Cのデータの到着が遅れると、Cの代わりにNULLのレコードを作成し、時刻を付与する。そして、特許文献3の技術は、所定の時間内にCのデータが到着すれば、NULLとしたレコードにデータを格納する。これにより、この技術は、連続的なデータの構造を維持することができる。しかし、このような技術は、最終的に、遅延したデータが所定の時間内に到着しないと、NULLのレコードのままとなるので、データの欠損が発生してしまう。
【0006】
また、特許文献4には、モデルを用いてデータを補間する技術が記載されている。しかし、特許文献4の技術は、実データのそのものを復元するのではないので、高精度な解析結果を要求されるシステムにおいては、補間されたデータの精度が不十分である可能性がある。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】国際公開第2020/031405号
【特許文献2】特許第5202204号公報
【特許文献3】特許第5478722号公報
【特許文献4】特許第5861619号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
本発明は、上記に鑑みてなされたものであって、センシングデータの時系列性の保証する処理、および、欠損した一部のセンシングデータをリカバリするリカバリ処理を、簡易に且つ少ない通信負荷で実行するエッジデバイス、サーバ装置、プログラムおよびセンサシステムを提供する。
【課題を解決するための手段】
【0009】
上述した課題を解決し、目的を達成するために、本発明に係るエッジデバイスは、予め定められたサンプリング間隔でセンサ装置によりサンプリングされたセンサデータを収集する収集部と、前記サンプリング間隔よりも長い収集間隔毎に、前記収集間隔中に検出された複数のセンサデータ、および、前記複数のセンサデータのそれぞれのサンプリング時刻を特定するための時刻情報を含むブロックを生成するブロック生成部と、生成した各前記ブロックを、正常に前記ブロックを受信したことを示す正常受信情報をサーバ装置から受信するまで、繰り返して前記サーバ装置に送信する通常処理シーケンスを実行するブロック送信部と、前記通常処理シーケンスにおいて予め定められた期間、前記正常受信情報を受信しない前記ブロックに対する、前記通常処理シーケンスを中止させるバックアップ処理部と、前記収集間隔よりも長い時間の間隔で繰り返し発生するリカバリイベント毎に、前記通常処理シーケンスを中止させた前記ブロックを、前記正常受信情報を前記サーバ装置から受信するまで、繰り返して前記サーバ装置に送信するリカバリ処理シーケンスを実行するリカバリ処理部と、を備える。
【発明の効果】
【0010】
本発明によれば、センシングデータの時系列性の保証する処理、および、欠損した一部のセンシングデータをリカバリするリカバリ処理を、簡易に且つ少ない通信負荷で実行することができる。
【図面の簡単な説明】
【0011】
【
図1】
図1は、センサシステムの構成を示す図である。
【
図2】
図2は、橋梁を横から見たときのセンサ装置の配置を示す図である。
【
図3】
図3は、センサシステムのデータ転送の流れを示すシーケンス図である。
【
図5】
図5は、エッジデバイスの機能構成を示すブロック図である。
【
図6】
図6は、サーバ装置の機能構成を示すブロック図である。
【
図7】
図7は、エッジデバイスの通常処理シーケンスの処理の流れを示すフローチャートである。
【
図8】
図8は、エッジデバイスのリカバリ処理シーケンスの処理の流れを示すフローチャートである。
【
図9】
図9は、サーバ装置の処理の流れを示すフローチャートである。
【
図10】
図10は、
図9のS33において受信したブロックがデータ記憶部に記憶されていると判断した場合の処理を示す図である。
【
図11】
図11は、
図9のS33において受信したブロックがデータ記憶部に記憶されていないと判断した場合の処理を示す図である。
【
図12】
図12は、通常処理シーケンスおよびリカバリ処理シーケンスの処理タイミングを示すタイミングチャートである。
【
図13】
図13は、情報処理装置のハードウェア構成を示す図である。
【発明を実施するための形態】
【0012】
以下、図面を参照しながら実施形態について説明する。
【0013】
図1は、実施形態に係るセンサシステム10の構成を示す図である。センサシステム10は、センサ装置20と、エッジデバイス22と、サーバ装置24とを備える。
【0014】
センサ装置20は、予め定められたサンプリング間隔で周囲の情報を連続して検出して、時系列のセンサデータを生成する。本実施形態においては、センサ装置20は、橋梁に設けられる。そして、センサ装置20は、橋梁におけるセンサ装置20が設けられた位置における車両の走行方向の変位を表す観測値を、センサデータとして検出する。センサ装置20は、検出して得られたセンサデータをエッジデバイス22へと送信する。
【0015】
エッジデバイス22は、センサ装置20と接続される情報処理装置である。例えば、エッジデバイス22は、LAN(Local Area Network)を介して有線でセンサ装置20と接続される。
【0016】
エッジデバイス22は、センサ装置20により検出されたセンサデータを取得する。そして、エッジデバイス22は、サンプリング間隔よりも長い収集間隔毎に、その収集間隔中に検出された複数のセンサデータをまとめたブロックを生成する。
【0017】
エッジデバイス22は、収集間隔毎に生成した複数のブロックのそれぞれを、サーバ装置24にネットワークを介して送信する。ネットワークは、有線であっても、無線であっても、有線と無線とが混在していてもよい。ネットワークは、例えば、LAN、PAN(Personal Area Network)またはWAN(Wide Area Network)、もしくは、PAN、LANおよびWANの混在ネットワークである。また、ネットワークは、LTE(Long Term Evolution)等のセルラ通信回線等を含んでいてもよい。
【0018】
サーバ装置24は、情報処理装置である。サーバ装置24は、1台のコンピュータであってもよいし、クラウドシステムのように複数台のコンピュータにより構成されていてもよい。
【0019】
サーバ装置24は、エッジデバイス22とネットワークを介して接続される。サーバ装置24は、エッジデバイス22から、それぞれが複数のセンサデータを含む複数のブロックを受信する。サーバ装置24は、受信した複数のブロックを記憶する。サーバ装置24は、受信した複数のブロックに含まれる複数のセンサデータを解析する。本実施形態においては、サーバ装置24は、例えば、複数のブロックに含まれる複数のセンサデータを解析することにより、橋梁に車両が通過したか否かおよび通過した各車両の重量等を算出する。
【0020】
図2は、橋梁を横から見たときのセンサ装置20の配置を示す図である。
【0021】
本実施形態において、センサ装置20は、例えば、橋梁における走行方向の中心よりも端部側に取り付けられる。さらに、センサ装置20は、橋梁の幅員方向における車線の略中心に設けられる。また、センサ装置20は、例えば、橋梁における下側の面であって、橋台の近傍に取り付けられる。
【0022】
センサ装置20は、橋梁におけるセンサ装置20が設けられた対象部分における走行方向の変位を表す観測値を、センサデータとして検出する。例えば、センサ装置20は、光学スケールを用いて、対象部分における走行方向の伸縮量を、センサデータとして検出する。伸縮量は、例えば、コンクリート橋梁において普通乗用車が走行した場合、数10センチメートル程度の距離の2点間における、数ナノメートルから数100ナノメートル程度の距離の変化である。
【0023】
センサ装置20は、橋梁における走行方向の伸縮量でなく、橋梁における他の物理量を検出してもよい。例えば、センサ装置20は、橋梁の対象部分におけるひずみを検出してもよい。
【0024】
本実施形態において、センサシステム10は、橋梁をモニタリングするシステムに適用される。しかし、センサシステム10は、橋梁をモニタリングするシステム以外に適用されてもよい。例えば、センサ装置20は、橋梁以外の他の構造物等の変位を検出してもよい。また、センサ装置20は、温度、湿度、気圧、水圧、流量、電圧または電流等の様々な物理量を検出してもよい。
【0025】
図3は、センサシステム10のデータ転送の流れを示すシーケンス図である。
【0026】
本実施形態において、センサ装置20は、例えば5m秒のサンプリング間隔で、橋梁の伸縮量を検出し、検出した伸縮量を表すセンサデータを生成する。そして、センサ装置20は、センサデータを生成する毎に、生成したセンサデータをエッジデバイス22に送信する。また、センサ装置20は、サンプリング間隔よりも長い送信間隔で、エッジデバイス22にセンサデータを送信してもよい。この場合、センサ装置20は、1回の送信処理で、所定個のセンサデータをまとめてエッジデバイス22に送信する。例えば、センサ装置20は、1秒毎の送信間隔で、200個のサンプリングデータを含むセンサデータ群を、エッジデバイス22に送信する。センサ装置20は、センサデータの生成および送信を、中断期間無く連続的に実行する。
【0027】
エッジデバイス22は、センサ装置20から送信されたセンサデータを受信して、一時的に記憶する。エッジデバイス22は、例えば1分の収集間隔毎に、その収集間隔においてサンプリングされた複数のセンサデータを含むブロックを生成する。本実施形態においては、1つの収集間隔について、12000個のセンサデータを含むブロックを生成する。
【0028】
エッジデバイス22は、生成された各ブロックをネットワークを介してサーバ装置24へと送信する。サーバ装置24は、ブロックをネットワークを介してエッジデバイス22から受信して記憶する。サーバ装置24は、ブロックを受信して記憶が完了した場合、正常にそのブロックを受信したことを示す正常受信情報をエッジデバイス22に送信する。
【0029】
ここで、エッジデバイス22は、通常処理シーケンスまたはリカバリ処理シーケンスの何れかで各ブロックをサーバ装置24に送信する。
【0030】
通常処理シーケンスにおいて、エッジデバイス22は、各ブロックを、サーバ装置24から正常受信情報を受信するまで、所定間隔毎に繰り返して送信する。エッジデバイス22は、正常受信情報を受信したブロックについては、送信を中止し、以後、そのブロックをサーバ装置24に送信しない。
【0031】
また、エッジデバイス22は、通常処理シーケンスにより予め定められた期間繰り返し送信しても正常受信情報を受信しないブロックに対して、通常処理シーケンスによる送信を中止する。そして、エッジデバイス22は、通常処理シーケンスによる送信を中止したブロックを記憶する。
【0032】
また、エッジデバイス22は、リカバリイベント毎に、リカバリ処理シーケンスを実行する。リカバリイベントは、収集間隔よりも長い時間の間隔で繰り返し発生する。例えば、リカバリイベントは、一日におけるある特定の時刻、例えば0時0分に発生するイベントであってもよい。また、これに加え、リカバリイベントは、バックアップとして記憶したブロックが所定量以上となったタイミングで発生するイベントであってもよい。
【0033】
リカバリ処理シーケンスにおいて、エッジデバイス22は、通常処理シーケンスによる送信を中止した各ブロックを、サーバ装置24から正常受信情報を受信するまで、所定間隔毎に繰り返して送信する。リカバリ処理シーケンスにおいて、エッジデバイス22は、正常受信情報を受信したブロックについては、送信を中止し、以後、そのブロックをサーバ装置24に送信しない。
【0034】
また、サーバ装置24は、エッジデバイス22からネットワークを介してブロックを受信した場合、既に受信して記憶しているブロックか否かを照合する。サーバ装置24は、受信したブロックが、未だ記憶していないブロックである場合、受信したブロックを記憶する。また、サーバ装置24は、ブロックを受信した場合、そのブロックを正常に受信したことを示す正常受信情報を、ネットワークを介してエッジデバイス22に送信する。
【0035】
このような構成のセンサシステム10は、ネットワークの障害等により通常処理シーケンスでサーバ装置24に送信されなかったブロックが発生しても、そのブロックを、他の時間帯において実行されるリカバリ処理シーケンスでサーバ装置24に再度送信する。これにより、センサシステム10は、エッジデバイス22において生成した複数のブロックを確実にサーバ装置24に送信することができる。
【0036】
図4は、ブロックの一例を示す図である。ブロックは、複数個のセンサデータと、1個の時刻情報とを含む。
【0037】
同一のブロックに含まれる複数のセンサデータは、同一の収集間隔に取得された、サンプリング時刻が連続したデータである。ブロックは、サンプリング時刻順に並べられた複数のセンサデータを含む。
【0038】
また、時刻情報は、ブロック内に含まれる複数のセンサデータのうちの特定のセンサデータのサンプリング時刻を表す。例えば、時刻情報は、ブロック内に含まれる複数のセンサデータのうちの最も早くサンプリングされたセンサデータのサンプリング時刻を表す。従って、ブロック内に含まれる複数のセンサデータのそれぞれは、時刻情報と、ブロック内における位置に基づき、サンプリング時刻が特定される。
【0039】
なお、時刻情報は、ブロック内に含まれる複数のセンサデータのうちの最も遅くサンプリングされたセンサデータのサンプリング時刻であってもよいし、ブロック内に含まれる複数のセンサデータのうちの中間位置のセンサデータのサンプリング時刻であってもよい。
【0040】
エッジデバイス22は、このようなブロックを生成することにより、ブロック内における複数のセンサデータに、欠損が存在しないこと、および、時系列性が確保されていることを保証することができる。
【0041】
時刻情報は、例えば、年、月、日、時間、分および秒を表す。なお、時刻情報は、サンプリング時刻を特定することができれば、1970年1月1日0時0分0秒からの秒数を表すエポック時刻であってもよい。なお、エポック時刻は、UNIX(登録商標)秒とも呼ばれる。また、センサデータのサンプリング間隔および収集間隔が予め定められているので、時刻情報は、予め定められた基準時刻からのサンプリング回数またはブロックの個数を表す整数値であってもよい。
【0042】
図5は、エッジデバイス22の機能構成を示すブロック図である。
【0043】
エッジデバイス22は、収集部32と、センサデータ記憶部34と、ブロック生成部36と、ブロック記憶部38と、ブロック送信部40と、バックアップ処理部42と、バックアップ記憶部44と、リカバリ処理部46とを備える。
【0044】
収集部32は、予め定められたサンプリング間隔でセンサ装置20によりサンプリングされたセンサデータを収集する。例えば、収集部32は、サンプリング間隔毎にセンサデータを取得する。収集部32は、取得したセンサデータをセンサデータ記憶部34に書き込む。
【0045】
センサデータ記憶部34は、収集部32により収集されたセンサデータを記憶する。
【0046】
ブロック生成部36は、サンプリング間隔よりも長い収集間隔毎に、センサデータ記憶部34に記憶されたセンサデータを読み出してブロックを生成する。ブロックは、
図4に示したように、その収集間隔中に検出された複数のセンサデータ、および、複数のセンサデータのそれぞれのサンプリング時刻を特定するための時刻情報を含む。ブロック生成部36は、生成したブロックをブロック記憶部38に書き込む。また、ブロック生成部36は、生成したブロックに含めた複数のセンサデータをセンサデータ記憶部34から消去してもよい。
【0047】
ブロック記憶部38は、記憶装置である。ブロック記憶部38は、ブロック生成部36により生成されたブロックを記憶する。
【0048】
ブロック送信部40は、通常処理シーケンスを実行する。通常処理シーケンスにおいて、ブロック送信部40は、ブロック生成部36が生成した各ブロックを、正常にブロックを受信したことを示す正常受信情報をネットワークを介してサーバ装置24から受信するまで、所定期間毎に繰り返してネットワークを介してサーバ装置24に送信する。例えば、通常処理シーケンスにおいて、ブロック送信部40は、ブロック生成部36により生成されたブロックの一つである第1ブロックを、正常に第1ブロックを受信したことを示す正常受信情報をサーバ装置24から受信するまで、所定期間毎に繰り返してサーバ装置24に送信する。ブロック送信部40は、正常受信情報をサーバ装置24から受信したブロックを、ブロック記憶部38から消去してもよい。
【0049】
バックアップ処理部42は、ブロック生成部36が生成した複数のブロックのうち、通常処理シーケンスにおいて予め定められた期間、正常受信情報を受信しないブロックに対する、通常処理シーケンスを中止させる。例えば、バックアップ処理部42は、ブロック生成部36により生成されたブロックの一つである第1ブロックを、通常処理シーケンスにより送信開始してから予め定められた応答待機時間を経過した場合、または、通常処理シーケンスにより予め定められた応答回数送信した場合、通常処理シーケンスによる第1ブロックの送信を中止させる。
【0050】
そして、バックアップ処理部42は、通常処理シーケンスを中止したブロックをバックアップ記憶部44に記憶させる。例えば、バックアップ処理部42は、第1ブロックが通常処理シーケンスにおいて予め定められた期間、正常受信情報を受信しない場合、第1ブロックをバックアップ記憶部44に記憶させる。なお、バックアップ処理部42は、バックアップ記憶部44に記憶させたブロックを、ブロック記憶部38から消去してもよい。
【0051】
バックアップ記憶部44は、記憶装置である。バックアップ記憶部44は、ブロック生成部36により生成された複数のブロックのうち、通常処理シーケンスを中止させたブロックを記憶する。なお、ブロック記憶部38およびバックアップ記憶部44は、共通の記憶装置により実現されてもよい。この場合、記憶装置は、通常処理シーケンスを中止していないブロックまたは通常処理シーケンスを中止したブロックの何れか一方にフラグ等が付加される。これにより、記憶装置は、通常処理シーケンスを中止させていないブロックと、通常処理シーケンスを中止させたブロックとを識別させることができる。
【0052】
リカバリ処理部46は、収集間隔よりも長い時間の間隔で繰り返し発生するリカバリイベント毎に、リカバリ処理シーケンスを実行する。リカバリ処理シーケンスにおいて、リカバリ処理部46は、通常処理シーケンスを中止させたブロックを、正常受信情報をサーバ装置24から受信するまで、繰り返してネットワークを介してサーバ装置24に送信する。例えば、リカバリ処理シーケンスにおいて、リカバリ処理部46は、通常処理シーケンスを中止したブロックの一つである第2ブロックを、正常に第2ブロックを受信したことを示す正常受信情報をサーバ装置24から受信するまで、繰り返してサーバ装置24に送信する。例えば、リカバリ処理部46は、リカバリ処理シーケンスにおいて、バックアップ記憶部44に記憶されたブロックを、正常受信情報をサーバ装置24から受信するまで、繰り返してサーバ装置24に送信する。リカバリ処理部46は、正常受信情報をサーバ装置24から受信したブロックを、バックアップ記憶部44から消去してもよい。
【0053】
図6は、サーバ装置24の機能構成を示すブロック図である。
【0054】
サーバ装置24は、データ記憶部52と、ブロック受信部54と、書込部56と、正常受信情報送信部58とを備える。
【0055】
データ記憶部52は、エッジデバイス22から受信したブロックを記憶する。
【0056】
ブロック受信部54は、エッジデバイス22から、ネットワークを介してブロックを受信する。
【0057】
書込部56は、ブロック受信部54がブロックを受信する毎に、受信したブロックに含まれる時刻情報と、データ記憶部52に記憶されたブロックに含まれる時刻情報とを比較する。書込部56は、時刻情報を比較することにより、受信したブロックがデータ記憶部52に記憶されているか否かを判断する。そして、書込部56は、受信したブロックがデータ記憶部52に記憶されていない場合、受信したブロックをデータ記憶部52に記憶させる。書込部56は、受信したブロックがデータ記憶部52に既に記憶されている場合、受信したブロックを廃棄する。
【0058】
例えば、書込部56は、データ記憶部52に対して、複数のブロックを時刻情報の順で整列させて書き込む。この場合において、ブロックの並び順は、例えばファイルシステムまたは他の管理情報等により管理されていればよく、記憶領域が物理的に並んでいなくてもよい。これにより、書込部56は、受信したブロックに含まれる時刻情報と、データ記憶部52に記憶されたブロックに含まれる時刻情報とを容易に比較することができる。
【0059】
また、書込部56は、受信したブロックがデータ記憶部52に記憶されていない場合、受信したブロックに含まれる時刻情報より大きい時刻情報を含むブロックより後ろ、且つ、受信したブロックに含まれる時刻情報より小さい時刻情報を含むブロックより前に、受信したブロックを挿入する。これにより、書込部56は、ブロックの受信順序が、時刻情報の順序と一致していない場合にも、データ記憶部52に対して、複数のブロックを時刻情報の順で整列させて書き込むことができる。
【0060】
正常受信情報送信部58は、受信したブロックをデータ記憶部52に記憶させた場合、受信したブロックを正常に受信したことを示す正常受信情報をネットワークを介してエッジデバイス22に送信する。また、正常受信情報送信部58は、受信したブロックが、データ記憶部52に既に記憶されている場合、受信したブロックを正常に受信したことを示す正常受信情報を、ネットワークを介してサーバ装置24に送信する。これにより、正常受信情報送信部58は、サーバ装置24が受信したブロックをエッジデバイス22が再度送信することを中止させることができる。
【0061】
図7は、通常処理シーケンスの処理の流れを示すフローチャートである。
【0062】
エッジデバイス22は、ブロック生成部36が生成した各ブロックについて、例えば、
図7に示す流れの通常処理シーケンスを実行する。
【0063】
まず、S11において、エッジデバイス22は、対象のブロックをサーバ装置24に送信する。
【0064】
続いて、S12において、エッジデバイス22は、サーバ装置24から、対象のブロックを正常に受信したことを示す正常受信情報を受信したか否かを判断する。
【0065】
対象のブロックについての正常受信情報を受信した場合(S12のYes)、エッジデバイス22は、処理をS13に進める。そして、S13において、エッジデバイス22は、対象のブロックをブロック記憶部38から削除し、対象のブロックについての本フローの処理を終了する。
【0066】
対象のブロックについての正常受信情報を受信していない場合(S12のNo)、エッジデバイス22は、処理をS14に進める。S14において、エッジデバイス22は、対象のブロックを最後に送信してから、所定時間経過したか否かを判断する。対象のブロックを最後に送信してから所定時間経過していない場合(S14のNo)、エッジデバイス22は、処理をS12に戻す。従って、エッジデバイス22は、対象のブロックについての正常受信情報を受信するか、または、対象のブロックを最後に送信してから所定時間経過するまで、S12およびS14の処理を繰り返す。
【0067】
対象のブロックを最後に送信してから所定時間経過した場合(S14のYes)、エッジデバイス22は、処理をS15に進める。S15において、エッジデバイス22は、1回目に対象のブロックを送信してから、予め定められた期間が経過したか否かを判断する。予め定められた期間は、例えば、予め定められた応答待機時間であってもよいし、予め定められた応答回数分ブロックを送信する期間であってもよい。
【0068】
1回目に対象のブロックを送信してから予め定められた期間が経過していない場合(S15のNo)、エッジデバイス22は、処理をS11に戻し、S11から処理を繰り返す。これにより、エッジデバイス22は、対象のブロックを所定時間毎に繰り返してサーバ装置24に送信することができる。
【0069】
1回目に対象のブロックを送信してから予め定められた期間が経過した場合(S15のYes)、エッジデバイス22は、処理をS16に進める。S16において、エッジデバイス22は、対象のブロックをブロック記憶部38から消去し、バックアップ記憶部44に記憶させる。なお、ブロック記憶部38およびバックアップ記憶部44が共通の記憶装置により構成される場合には、エッジデバイス22は、対象のブロックにフラグを付けることにより、ブロック記憶部38に記憶されているか、バックアップ記憶部44に記憶されているかを識別する。
【0070】
エッジデバイス22は、S16の処理を終えると、対象のブロックについての通常処理シーケンスを終了する。
【0071】
以上のような処理を実行することにより、エッジデバイス22は、通常処理シーケンスにおいて、生成した各ブロックを、正常受信情報をサーバ装置24から受信するまで、所定期間毎に繰り返してサーバ装置24に送信することができる。さらに、エッジデバイス22は、予め定められた期間、正常受信情報を受信しないブロックに対して、通常処理シーケンスを中止することができる。さらに、エッジデバイス22は、通常処理シーケンスを中止したブロックをバックアップ記憶部44に記憶させるこができる。
【0072】
図8は、リカバリ処理シーケンスの処理の流れを示すフローチャートである。エッジデバイス22は、例えば、
図8に示す流れのリカバリ処理シーケンスを実行する。
【0073】
S21において、エッジデバイス22は、リカバリイベントが発生したか否かを判断する。例えば、リカバリイベントは、例えば、例えば0時0分等の一日におけるある特定の時刻になったこと等である。
【0074】
リカバリイベントが発生していない場合(S21のNo)、エッジデバイス22は、処理をS21で待機する。リカバリイベントが発生した場合(S21のYes)、エッジデバイス22は、処理をS22に進める。
【0075】
S22において、エッジデバイス22は、バックアップ記憶部44にブロックが記憶されているか否かを判断する。すなわち、通常処理シーケンスを中止し、且つ、リカバリ処理シーケンスにおいてサーバ装置24から未だ正常受信情報を受信していないブロックが存在するか否かを判断する。
【0076】
バックアップ記憶部44にブロックが記憶されていない場合(S22のNo)、エッジデバイス22は、処理をS21に戻し、S21から処理を繰り返す。
【0077】
バックアップ記憶部44にブロックが記憶されている場合(S22のYes)、エッジデバイス22は、処理をS23に進める。
【0078】
エッジデバイス22は、バックアップ記憶部44に記憶された各ブロックについて、S23からS28の処理を実行する。
【0079】
S23において、エッジデバイス22は、バックアップ記憶部44に記憶されたブロックのうちの1つを、対象のブロックとして選択する。
【0080】
続いて、S24において、エッジデバイス22は、選択した対象のブロックをサーバ装置24に送信する。
【0081】
続いて、S25において、エッジデバイス22は、サーバ装置24から、対象のブロックについての正常受信情報を受信したか否かを判断する。
【0082】
対象のブロックについての正常受信情報を受信していない場合(S25のNo)、エッジデバイス22は、処理をS26に進める。S26において、エッジデバイス22は、対象のブロックを最後に送信してから、所定時間経過したか否かを判断する。対象のブロックを最後に送信してから所定時間経過していない場合(S26のNo)、エッジデバイス22は、処理をS25に戻す。従って、エッジデバイス22は、対象のブロックについての正常受信情報を受信する、または、対象のブロックを最後に送信してから所定時間経過するまで、S25およびS26の処理を繰り返す。
【0083】
対象のブロックを最後に送信してから所定時間経過した場合(S26のYes)、エッジデバイス22は、処理をS24に戻し、S24から処理を繰り返す。これにより、エッジデバイス22は、所定時間毎に対象のブロックの送信を繰り返すことができる。
【0084】
対象のブロックについての正常受信情報を受信した場合(S25のYes)、エッジデバイス22は、処理をS27に進める。そして、S27において、エッジデバイス22は、対象のブロックをバックアップ記憶部44から削除する。
【0085】
続いて、S28において、エッジデバイス22は、バックアップ記憶部44にブロックが残っているか否かを判断する。すなわち、エッジデバイス22は、通常処理シーケンスを中止し、且つ、リカバリ処理シーケンスにより未だサーバ装置24に送信されていないブロックが存在するか否かを判断する。
【0086】
エッジデバイス22は、バックアップ記憶部44にブロックが残っている場合(S28のYes)、処理をS23に戻し、S23から処理を繰り返す。エッジデバイス22は、バックアップ記憶部44にブロックが残っていない場合(S28のNo)、本フローの処理を終了する。
【0087】
以上のような処理を実行することにより、エッジデバイス22は、リカバリイベント毎に、リカバリ処理シーケンスを実行することができる。エッジデバイス22は、リカバリ処理シーケンスにおいて、通常処理シーケンスを中止させたブロックを、正常受信情報をサーバ装置24から受信するまで、繰り返してネットワークを介してサーバ装置24に送信することができる。
【0088】
図9は、サーバ装置24の処理の流れを示すフローチャートである。
図10は、
図9のS33において受信したブロックがデータ記憶部52に記憶されていると判断した場合の処理を示す図である。
図11は、
図9のS33において受信したブロックがデータ記憶部52に記憶されていないと判断した場合の処理を示す図である。
【0089】
まず、S31において、サーバ装置24は、エッジデバイス22からブロックを受信したか否かを判断する。ブロックを受信していない場合(S31のNo)、サーバ装置24は、処理をS31で待機する。ブロックを受信した場合(S31のYes)、サーバ装置24は、処理をS32に進める。
【0090】
S32において、サーバ装置24は、受信したブロックに含まれる時刻情報と、データ記憶部52に既に記憶されたブロックに含まれる時刻情報とを比較する。
【0091】
S33において、サーバ装置24は、時刻情報を比較することにより、受信したブロックがデータ記憶部52に既に記憶されているか否かを判断する。
【0092】
サーバ装置24は、受信したブロックがデータ記憶部52に既に記憶されている場合(S33のYes)、処理をS34に進める。S34において、サーバ装置24は、受信したブロックを廃棄する。例えば、サーバ装置24は、
図10に示されるように、受信したブロックの時刻情報が8月1日05時16分を示しており、データ記憶部52に、時刻情報が8月1日05時16分を示しているブロックが既に記憶されている場合、受信したブロックを廃棄する。
【0093】
サーバ装置24は、受信したブロックがデータ記憶部52に記憶されていない場合(S33のNo)、処理をS35に進める。S35において、サーバ装置24は、受信したブロックをデータ記憶部52に書き込む。
【0094】
この場合において、サーバ装置24は、受信したブロックに含まれる時刻情報より大きい時刻情報を含むブロックより後ろ、且つ、受信したブロックに含まれる時刻情報より小さい時刻情報を含むブロックより前に、受信したブロックを挿入する。例えば、サーバ装置24は、
図11に示されるように、受信したブロックの時刻情報が8月1日05時17分を示している場合、時刻情報が8月1日05時16分を示すブロックより後ろ、且つ、時刻情報が8月1日05時18分を示すブロックより前の位置に、受信したブロックを挿入する。
【0095】
サーバ装置24は、S34またはS35の処理を終えると、処理をS36に進める。S36において、サーバ装置24は、受信したブロックについての正常受信情報をネットワークを介してサーバ装置24に送信する。サーバ装置24は、S36の処理を終えると本フローを終了する。
【0096】
以上のような処理を実行することにより、サーバ装置24は、ブロックを受信し、受信したブロックがデータ記憶部52に記憶されていない場合、受信したブロックをデータ記憶部52に記憶させることができる。さらに、サーバ装置24は、受信したブロックを時刻情報に示される時刻順に並べてデータ記憶部52に記憶させることができる。また、サーバ装置24は、受信したブロックをデータ記憶部52に記憶させた場合、または、受信したブロックがデータ記憶部52に既に記憶されている場合、正常受信情報をエッジデバイス22に送信することができる。
【0097】
図12は、通常処理シーケンスおよびリカバリ処理シーケンスの処理タイミングを示すタイミングチャートである。
【0098】
エッジデバイス22は、例えば、通常処理シーケンスを、一定間隔毎に間欠的に実行する。例えば、エッジデバイス22は、ブロックを生成する時間間隔である収集間隔に、通常処理シーケンスを実行する。そして、エッジデバイス22は、通常処理シーケンスを実行する直前または所定時間前までに生成されたブロックであって、サーバ装置24からまだ正常受信情報を受信していないブロックを、各通常処理シーケンスにおいて送信する。なお、エッジデバイス22は、収集間隔よりも長い間隔毎、例えば10分毎に、通常処理シーケンスを実行してもよい。
【0099】
また、エッジデバイス22は、収集間隔毎に、収集間隔より短い実行時間、例えば10秒間、通常処理シーケンスを実行する。これにより、エッジデバイス22は、間欠的に通常処理シーケンスを実行することができる。
【0100】
また、エッジデバイス22は、リカバリ処理シーケンスを、リカバリイベントが発生した後、例えば日が変更した後であって、通常処理シーケンスを実行していない期間に、実行する。これにより、エッジデバイス22は、通常処理シーケンスの実行を妨げない期間において、リカバリ処理シーケンスを実行することができる。また、エッジデバイス22は、ネットワークのトラフィックが混雑していないと予測される期間に、リカバリ処理シーケンスを実行してもよい。これにより、エッジデバイス22は、リカバリ処理シーケンスにおいて、より確実にブロックをサーバ装置24に送信することができる。
【0101】
また、エッジデバイス22は、バックアップ記憶部44に記憶されたブロックが存在しなくなるまで、リカバリ処理シーケンスを間欠的に実行する。例えば、エッジデバイス22は、1回のリカバリ処理シーケンス期間において、バックアップ記憶部44に記憶されたブロックが無くならない場合、リカバリ処理シーケンスを一旦途中で中断し、次の通常処理シーケンスを実行した後に、リカバリ処理シーケンスを再開する。そして、エッジデバイス22は、バックアップ記憶部44に記憶されたブロックが全て存在しなくなるまで、リカバリ処理シーケンスの実行と中断とを繰り返す。これにより、エッジデバイス22は、バックアップ記憶部44に記憶された全てのブロックをサーバ装置24に送信することができる。
【0102】
以上のような本実施形態に係るセンサシステム10は、エッジデバイス22からサーバ装置24へと、複数のセンサデータを含むブロックを送信する。そして、センサシステム10は、サーバ装置24において、ブロックを時系列に並べて記憶する。これにより、センサシステム10は、センシングデータの時系列性を、簡易に保証することができる。
【0103】
また、センサシステム10は、エッジデバイス22からサーバ装置24へと通常処理シーケンスで送信できなかったブロックを、通常処理シーケンスとは異なる時間帯に実行されるリカバリ処理シーケンスで再度送信する。これにより、センサシステム10は、欠損した一部のセンシングデータをリカバリするリカバリ処理を、簡易に且つ少ない通信負荷で実行することができる。
【0104】
図13は、情報処理装置のハードウェア構成を示す図である。エッジデバイス22およびサーバ装置24は、一例として、
図13に示されるような一般の情報処理装置と同様のハードウェア構成の装置により実現される。情報処理装置は、CPU(Central Processing Unit)301と、操作装置302と、表示装置303と、主記憶装置305と、補助記憶装置306と、通信装置307と、バス309とを備える。各部は、バス309により接続される。
【0105】
CPU301は、主記憶装置305の所定領域を作業領域として補助記憶装置306等に予め記憶された各種プログラムとの協働により各種処理を実行し、サーバ装置24を構成する各部の動作を統括的に制御する。また、CPU301は、プログラムとの協働により、操作装置302、表示装置303および通信装置307等を動作させる。
【0106】
操作装置302は、タッチパネル、マウスやキーボード等の入力デバイスであって、ユーザから操作入力された情報を指示信号として受け付け、その指示信号をCPU301に出力する。
【0107】
表示装置303は、LCD(Liqid Crystal Display)等の表示部である。表示装置303は、CPU301からの表示信号に基づいて、各種情報を表示する。
【0108】
主記憶装置305は、SDRAM(Synchronous Dynamic Random Access Memory)等の揮発性の記憶媒体である。主記憶装置305は、CPU301の作業領域として機能する。
【0109】
補助記憶装置306は、フラッシュメモリ等の半導体による記憶媒体、磁気的または光学的に記録可能な記憶媒体等の書き換え可能な記録装置である。補助記憶装置306は、サーバ装置24の制御に用いられるプログラムを記憶する。
【0110】
通信装置307は、他の装置とデータの送受信をする。また、通信装置307は、ネットワークを介してサーバ等とデータの送受信をしてもよい。
【0111】
エッジデバイス22およびサーバ装置24で実行されるプログラムは、例えば、インターネット等のネットワークに接続されたコンピュータ上に格納され、ネットワーク経由でダウンロードさせることにより提供される。また、エッジデバイス22およびサーバ装置24で実行されるプログラムは、持ち運び可能な記憶媒体等に予め組み込んで提供されてもよい。
【0112】
エッジデバイス22で実行されるプログラムは、収集モジュールと、ブロック生成モジュールと、ブロック送信モジュールと、バックアップ処理モジュールと、リカバリ処理モジュールとを含むモジュール構成となっている。CPU301は、記憶媒体等からこのようなプログラムを読み出して、上記各モジュールを主記憶装置305にロードする。そして、CPU301は、このようなプログラムを実行することにより、収集部32、ブロック生成部36、ブロック送信部40、バックアップ処理部42およびリカバリ処理部46として機能する。また、CPU301は、このようなプログラムを実行することにより、主記憶装置305または補助記憶装置306を、センサデータ記憶部34、ブロック記憶部38およびバックアップ記憶部44として機能させる。なお、収集部32、ブロック生成部36、ブロック送信部40、バックアップ処理部42およびリカバリ処理部46の一部または全部がハードウェアにより構成されていてもよい。
【0113】
サーバ装置24で実行されるプログラムは、ブロック受信モジュールと、書込モジュールと、正常受信情報送信モジュールとを含むモジュール構成となっている。CPU301は、記憶媒体等からこのようなプログラムを読み出して、上記各モジュールを主記憶装置305にロードする。そして、CPU301は、このようなプログラムを実行することにより、ブロック受信部54、書込部56および正常受信情報送信部58として機能する。また、CPU301は、このようなプログラムを実行することにより、主記憶装置305または補助記憶装置306を、データ記憶部52として機能させる。なお、ブロック受信部54、書込部56および正常受信情報送信部58の一部または全部がハードウェアにより構成されていてもよい。
【0114】
以上、本発明の実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。実施形態は、種々の変更を行うことができる。
【符号の説明】
【0115】
10 センサシステム
20 センサ装置
22 エッジデバイス
24 サーバ装置
32 収集部
34 センサデータ記憶部
36 ブロック生成部
38 ブロック記憶部
40 ブロック送信部
42 バックアップ処理部
44 バックアップ記憶部
46 リカバリ処理部
52 データ記憶部
54 ブロック受信部
56 書込部
58 正常受信情報送信部