(57)【要約】【課題】受け付けたデータを送信するか否かの判定負荷を軽減すること。【解決手段】送信プログラムは、コンピュータに次の処理を実行させる。送信プログラムは、センサにより検出されたデータと、該センサを識別する識別情報とを受け付け、センサ群を識別する識別情報を、該センサ群に含まれるセンサに対応付けて記憶する第１記憶部を参照して、受け付けた識別情報に対応付けられたセンサ群を特定し、センサ群に含まれるセンサにより検出された送信済みのデータを、該センサ群に対応付けて記憶する第２記憶部を参照して、特定したセンサ群に対応付けられた送信済みのデータを取得し、取得した送信済みのデータに、受け付けたデータが含まれる場合、送信済みのデータの識別情報を、該データに対応付けて記憶する第３記憶部を参照して、該送信済みのデータに対応付けられた識別情報を取得し、取得した識別情報を送信する。【選択図】図７
2018182639.tif 000002
【特許請求の範囲】
【請求項１】
センサにより検出されたデータと、該センサを識別する識別情報とを受け付け、
センサ群を識別する識別情報を、該センサ群に含まれるセンサに対応付けて記憶する第１記憶部を参照して、受け付けた前記識別情報に対応付けられたセンサ群を特定し、
センサ群に含まれるセンサにより検出された送信済みのデータを、該センサ群に対応付けて記憶する第２記憶部を参照して、特定した前記センサ群に対応付けられた送信済みのデータを取得し、
取得した前記送信済みのデータに、受け付けた前記データが含まれるか否かの判定を行い、
受け付けた前記データが含まれる場合、送信済みのデータの識別情報を、該データに対応付けて記憶する第３記憶部を参照して、該送信済みのデータに対応付けられた識別情報を取得し、
受け付けた前記データを送信せずに、取得した前記識別情報を送信する、
処理をコンピュータに実行させることを特徴とする送信プログラム。
【請求項２】
データの形式が同じセンサに対して、同一のセンサ群を識別する識別情報を対応付けて前記第１記憶部に登録する、
処理をコンピュータにさらに実行させることを特徴とする請求項１に記載の送信プログラム。
【請求項３】
データに含まれる検出値の範囲毎に、該範囲に検出値が入ると予測されるセンサに対して、同一のセンサ群を識別する識別情報を対応付けて前記第１記憶部に登録する、
処理をコンピュータにさらに実行させることを特徴とする請求項１または２に記載の送信プログラム。
【請求項４】
受け付けた前記データを、特定した前記センサ群に対応する所定の精度のデータに修正する処理をコンピュータにさらに実行させ、
前記判定する処理は、取得した前記送信済みのデータに、修正した前記データが含まれるか否かの判定を行う、
ことを特徴とする請求項１から３の何れか１つに記載の送信プログラム。
【請求項５】
受け付けた前記データが含まれない場合、該データに対して全てのセンサ群で一意となる識別情報を付与し、該データと該識別情報を送信し、
送信したデータを送信済みのデータとして、特定したセンサ群に対応付けて前記第２記憶部に登録すると共に、該送信済みのデータを付与した識別情報と対応付けて前記第３記憶部に登録し、登録済みの送信済みのデータが所定数を超える場合、受け付けたデータが含まれると最も過去に判定された送信済みのデータを削除する、
処理をコンピュータにさらに実行させることを特徴とする請求項１から４の何れか１つに記載の送信プログラム。
【請求項６】
センサにより検出されたデータと、該センサを識別する識別情報とを受け付け、
センサ群を識別する識別情報を、該センサ群に含まれるセンサに対応付けて記憶する第１記憶部を参照して、受け付けた前記識別情報に対応付けられたセンサ群を特定し、
センサ群に含まれるセンサにより検出された送信済みのデータを、該センサ群に対応付けて記憶する第２記憶部を参照して、特定した前記センサ群に対応付けられた送信済みのデータを取得し、
取得した前記送信済みのデータに、受け付けた前記データが含まれるか否かの判定を行い、
受け付けた前記データが含まれる場合、送信済みのデータの識別情報を、該データに対応付けて記憶する第３記憶部を参照して、該送信済みのデータに対応付けられた識別情報を取得し、
受け付けた前記データを送信せずに、取得した前記識別情報を送信する、
処理をコンピュータが実行することを特徴とする送信方法。
【請求項７】
センサにより検出されたデータと、該センサを識別する識別情報とを受け付ける受付部と、
センサ群を識別する識別情報を、該センサ群に含まれるセンサに対応付けて記憶する第１記憶部を参照して、前記受付部により受け付けた前記識別情報に対応付けられたセンサ群を特定する特定部と、
センサ群に含まれるセンサにより検出された送信済みのデータを、該センサ群に対応付けて記憶する第２記憶部を参照して、前記特定部により特定した前記センサ群に対応付けられた送信済みのデータを取得する第１取得部と、
前記第１取得部により取得した前記送信済みのデータに、前記受付部により受け付けた前記データが含まれるか否かを判定する判定部と、
前記判定部による判定の結果、受け付けた前記データが含まれる場合、送信済みのデータの識別情報を、該データに対応付けて記憶する第３記憶部を参照して、該送信済みのデータに対応付けられた識別情報を取得する第２取得部と、
前記受付部により受け付けた前記データを送信せずに、前記第２取得部により取得した前記識別情報を送信する送信部と、
を有することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、送信プログラム、送信方法および情報処理装置に関する。
【背景技術】
【０００２】
Internet  Of  Things（ＩｏＴ）では、温度、湿度、圧力といったセンサのデータをサーバが受け、サーバがインターネットなどのネットワークを通じてクラウドに送信する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１４−０７８１３４号公報
【特許文献２】特開２００２−３６８６２３号公報
【特許文献３】特表２０１６−５２１４０２号公報
【特許文献４】特開２０１２−２２１３６８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、サーバが、数十台〜数百台のセンサから得られる大量なデータをクラウドに送信する場合、ネットワークに掛かる負荷が大きくなる。
【０００５】
そこで、ネットワークに掛かる負荷を軽減する次のような手法が考えられる。例えば、サーバは、クラウドへ送信済みのデータに対して一意のＩＤ（Identifier）を対応付けて記憶する。サーバは、センサから新たにデータを受け付けた場合、受け付けたデータを記憶したデータと順に比較する。同じデータが記憶されている場合、サーバは、ＩＤをクラウドへ送信する。一方、同じデータが記憶されていない場合、サーバは、ＩＤとデータをクラウドへ送信する。
【０００６】
しかしながら、受け付けたセンサのデータを、全てのセンサの送信済みデータと比較した場合、受け付けたデータを送信するか否かの判定負荷が大きくなる。
【０００７】
一つの側面では、受け付けたデータを送信するか否かの判定負荷を軽減できる送信プログラム、送信方法および情報処理装置を提供することにある。
【課題を解決するための手段】
【０００８】
一つの態様では、送信プログラムは、センサにより検出されたデータと、該センサを識別する識別情報とを受け付ける処理をコンピュータに実行させる。送信プログラムは、センサ群を識別する識別情報を、該センサ群に含まれるセンサに対応付けて記憶する第１記憶部を参照して、受け付けた識別情報に対応付けられたセンサ群を特定する処理をコンピュータに実行させる。送信プログラムは、センサ群に含まれるセンサにより検出された送信済みのデータを、該センサ群に対応付けて記憶する第２記憶部を参照して、特定したセンサ群に対応付けられた送信済みのデータを取得する処理をコンピュータに実行させる。送信プログラムは、取得した送信済みのデータに、受け付けたデータが含まれるか否かを判定する処理をコンピュータに実行させる。送信プログラムは、受け付けたデータが含まれる場合、送信済みのデータの識別情報を、該データに対応付けて記憶する第３記憶部を参照して、該送信済みのデータに対応付けられた識別情報を取得する処理をコンピュータに実行させる。送信プログラムは、受け付けたデータを送信せずに、取得した識別情報を送信する処理をコンピュータに実行させる。
【発明の効果】
【０００９】
一つの側面として、受け付けたデータを送信するか否かの判定負荷を軽減できる。
【図面の簡単な説明】
【００１０】
【図１】図１は、実施例１のシステムの構成の一例を示す図である。
【図２】図２は、実施例１の管理サーバの構成を示すブロック図である。
【図３】図３は、実施例１のグループデータの一例を示す図である。
【図４】図４は、実施例１のキャッシュメモリのデータ構成を説明する図である。
【図５】図５は、キャッシュメモリからのデータの読み出しを説明する図である。
【図６】図６は、センサからデータを収集する流れを説明する図である。
【図７】図７は、実施例１の送信処理の一例を示すフローチャートである。
【図８】図８は、実施例２の管理サーバの構成を示すブロック図である。
【図９】図９は、実施例２の送信処理の一例を示すフローチャートである。
【図１０】図１０は、送信プログラムを実行するコンピュータの一例を示す図である。
【発明を実施するための形態】
【００１１】
以下、図面に基づいて、本願の開示する送信プログラム、送信方法および情報処理装置の実施例を詳細に説明する。なお、本実施例により、開示技術が限定されるものではない。また、以下の実施例は、矛盾しない範囲で適宜組みあわせてもよい。
【実施例１】
【００１２】
［システム全体の説明］
最初に、センサからのデータを収集するシステムの概略的な構成を説明する。図１は、実施例１のシステムの構成の一例を示す図である。システム１０は、センサ２０と、ゲートウェイ３０と、管理サーバ４０と、クラウドサーバ５０とを有する。
【００１３】
センサ２０、ゲートウェイ３０および管理サーバ４０は、状態の検出を行う現地側に設けられている。ゲートウェイ３０および管理サーバ４０は、ネットワークＮ１を通じて相互に通信可能に接続されている。かかるネットワークＮ１には、有線または無線を問わず、ＬＡＮ（Local  Area  Network）などの任意の種類の通信網を採用できる。
【００１４】
クラウドサーバ５０は、クラウド側に設けられている。管理サーバ４０およびクラウドサーバ５０は、ネットワークＮ２を通じて相互に通信可能に接続されている。かかるネットワークＮ２には、有線または無線を問わず、インターネット（Internet）を始め、ＬＡＮやＶＰＮ（Virtual  Private  Network）などの任意の種類の通信網を採用できる。
【００１５】
センサ２０は、状態の検出を行う検出対象に設けられたセンサ機器である。ＩｏＴでは、様々な検出対象にセンサ２０が設けられ、センサ２０により、検出対象の状態の検出が行われる。図１の例では、センサ２０を３つ図示したが、センサ２０は任意の数とすることができる。本実施例では、様々な場所にセンサ２０を設け、センサ２０により、状態として温度、圧力を検出する場合を例に説明する。なお、検出する状態は、温度、圧力に限定されるものではない。
【００１６】
センサ２０は、状態を検出する検出部と、例えば、Bluetooth（登録商標）、ZigBee（登録商標）などの近距離無線通信が可能な無線通信部と、検出部および無線通信部に電力を供給するボタン電池などの電源部とを有する。各センサ２０には、それぞれを識別する識別情報として、一意のセンサＩＤが定められている。センサ２０は、検出対象の状態を検出部により検出し、検出した状態を示す状態情報とセンサＩＤとを含んだデータを無線通信部から無線通信により周期的に送信する。例えば、センサ２０は、温度および圧力を周期的に検出し、検出した温度、圧力それぞれの検出値を示す検出データとセンサＩＤとを含んだセンサデータを無線通信により送信する。
【００１７】
センサ２０から送信されたセンサデータは、不図示の無線アクセスポイントを介してゲートウェイ３０へ送信される。ゲートウェイ３０は、受信したセンサデータを管理サーバ４０へ送信する。なお、ゲートウェイ３０が、無線アクセスポイントを兼ねてもよい。また、図１の例では、ゲートウェイ３０を１つ図示したが、ゲートウェイ３０も任意の数とすることができる。例えば、ゲートウェイ３０は、所定数のセンサ２０ごと、あるいは、センサ２０が配置される所定のエリアごとに複数設けられてもよい。
【００１８】
管理サーバ４０は、ゲートウェイ３０から受信したセンサデータを管理する現地側の情報処理装置の一例である。管理サーバ４０は、ゲートウェイ３０から受信したセンサデータに対して後述する各種の処理を行い、各種のデータをクラウドサーバ５０へ送信する。管理サーバ４０は、例えば、据置型や可搬型のパーソナルコンピュータを用いることができる。また、管理サーバ４０は、可搬型の端末としては、上記の可搬型のパーソナルコンピュータの他にも、例えば、タブレット端末を採用することもできる。
【００１９】
クラウドサーバ５０は、各センサ２０のセンサデータを収集し、分析するクラウド側の情報処理装置の一例である。クラウドサーバ５０は、管理サーバ４０から受信したデータを記憶し、検出対象の状態の変化の検知など各種の処理を行う。クラウドサーバ５０は、例えば、据置型のサーバコンピュータを用いることができる。なお、クラウドサーバ５０は、ＳａａＳ（Software  as  a  Service）やＰａａＳ（Platform  as  a  Service）等のクラウドコンピューティング技術を適用したものである。
【００２０】
次に、管理サーバ４０の構成について説明する。図２は、実施例１の管理サーバの構成を示すブロック図である。図２に示すように、管理サーバ４０は、通信部１１０と、記憶部１２０と、制御部１３０とを有する。なお、管理サーバ４０は、図２に示す機能部以外にも既知のコンピュータが有する各種の機能部、例えば各種の入力デバイスや音声出力デバイス、表示部等の機能部を有することとしてもかまわない。
【００２１】
通信部１１０は、例えば、ＮＩＣ（Network  Interface  Card）等によって実現される。通信部１１０は、ネットワークＮ１、Ｎ２を介して他の情報処理装置と有線または無線で接続され、他の情報処理装置との間で情報の通信を司る通信インタフェースである。例えば、通信部１１０は、センサ２０で検出されたセンサデータをゲートウェイ３０から受信する。また、通信部１１０は、制御部１３０からの制御に応じて各種のデータをクラウドサーバ５０へ送信する。
【００２２】
記憶部１２０は、例えば、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ（Flash  Memory）等の半導体メモリ素子、ハードディスクや光ディスク等の記憶装置によって実現される。記憶部１２０は、グループデータ１２１を有する。また、記憶部１２０は、制御部１３０での処理に用いる情報を記憶する。
【００２３】
グループデータ１２１は、センサ２０をセンサ群としてグループに分けたセンサグループに関する情報を記憶する。
【００２４】
ここで、ＩｏＴでは、様々な検出対象にセンサ２０が設けられ、様々な状態が検出される。また、様々なメーカがセンサ２０を販売している。このため、センサ２０から収集されるセンサデータには、データの形式や、検出データに含まれる検出値の範囲に様々なものがある。本実施例では、データの形式および検出値の範囲ごとに、センサ２０をセンサグループに分けている。グループデータ１２１には、センサ２０と該センサ２０が属するセンサグループとが対応付けて記憶されている。
【００２５】
図３は、実施例１のグループデータの一例を示す図である。図３に示すように、グループデータ１２１は、「センサＩＤ」、「センサグループ」といった項目を有する。
【００２６】
「センサＩＤ」は、センサグループを対応付けるセンサ２０のセンサＩＤである。「センサグループ」は、センサ２０に対応付けるセンサグループの情報である。図３の例では、センサＩＤが「１」のセンサ２０は、センサグループが「Ａ」であることを示す。
【００２７】
図２に戻る。制御部１３０は、管理サーバ４０を制御するデバイスである。制御部１３０としては、ＣＰＵ（Central  Processing  Unit）、ＭＰＵ（Micro  Processing  Unit）等の電子回路や、ＡＳＩＣ（Application  Specific  Integrated  Circuit）、ＦＰＧＡ（Field  Programmable  Gate  Array）等の集積回路を採用できる。制御部１３０は、各種の処理手順を規定したプログラムや制御データを格納するためのキャッシュメモリ１４０等の内部メモリを有し、ＲＡＭや内部メモリを作業領域として種々の処理を実行する。
【００２８】
制御部１３０は、各種のプログラムが動作することにより各種の処理部として機能する。例えば、制御部１３０は、送信済みデータ管理部１３１と、受付部１３２と、登録部１３３と、特定部１３４と、第１取得部１３５と、判定部１３６と、第２取得部１３７と、送信部１３８とを有する。制御部１３０は、各種の処理部により以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部１３０の内部構成は、図１に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。
【００２９】
送信済みデータ管理部１３１は、クラウドサーバ５０へ送信済みのデータをキャッシュメモリ１４０に保存、管理する。ここで、キャッシュメモリ１４０は、記憶容量が限られており、全ての送信済みデータを保存することはできない。そこで、送信済みデータ管理部１３１は、頻繁に使用されるデータがキャッシュメモリ１４０上に残るように管理する。例えば、送信済みデータ管理部１３１は、ＬＲＵ（Least  Recently  Used）方式により最大で所定個の送信済みデータがキャッシュメモリ１４０に記憶されるように管理する。例えば、送信済みデータ管理部１３１は、データをリスト構造で管理し、データが使用されたらリストの先頭に移動する。また、送信済みデータ管理部１３１は、該当データが見つからない場合はリストの末尾のデータを削除し、新しいデータをリストの先頭に挿入する。
【００３０】
図４は、実施例１のキャッシュメモリのデータ構成を説明する図である。送信済みデータは、リスト構造で記憶されている。図４の例では、「｛３２Ｃ，６１．２Ｐ｝」等が送信済みデータに該当する。「３２Ｃ」は、検出された温度が３２［℃］であることを示す。「６１．２Ｐ」は、検出された圧力が６１．２［Ｐａ］であることを示す。また、各送信済みデータには、センサグループと、データを識別するデータＩＤと対応付けて記憶されている。図４の例では、「Ａ  ｇｒｏｕｐ＿ｉｄ  ＡＡＡＡ１」が、対応づけて記憶されたセンサグループと、データを識別するデータＩＤに該当する。「Ａ  ｇｒｏｕｐ」は、センサグループが「Ａ」であることを示している。「ｉｄ  ＡＡＡＡ１」は、データＩＤが「ＡＡＡＡ１」であることを示している。
【００３１】
図２に戻る。受付部１３２は、各種のデータを受け付ける。例えば、受付部１３２は、通信部１１０により受信されたセンサデータを受け付ける。
【００３２】
登録部１３３は、センサ２０に対応付けるセンサグループをグループデータ１２１に登録する。例えば、登録部１３３は、受付部１３２により受け付けたセンサデータを参照し、データの形式およびセンサデータに含まれる検出値の範囲ごとに、該センサ２０に対応付けるセンサグループをグループデータ１２１に登録する。例えば、登録部１３３は、受信されたセンサ２０のセンサデータを解析し、送信元のセンサ２０のセンサＩＤを特定する。また、登録部１３３は、例えば、「，」、「｛」、「｝」などのセンサデータ内に含まれる所定の区切り文字を検索し、センサデータに含まれる区切り文字で区切られた項目を特定する。登録部１３３は、項目の数が同じデータを、データの形式が同じものとして、データの形式ごとに、センサ２０をセンサグループに分類する。また、登録部１３３は、項目の値の範囲ごとに、センサ２０をセンサグループにさらに分類する。登録部１３３は、分類したセンサグループごとに、センサグループの識別情報を定め、センサグループの識別情報とセンサグループに属するセンサ２０のセンサＩＤをグループデータ１２１に登録する。なお、登録部１３３は、センサ２０ごとに、該センサ２０から受信した所定数のセンサデータを解析して項目ごとに平均値を求め、平均値の範囲ごとに、センサ２０をセンサグループに分類してもよい。また、登録部１３３は、センサ２０ごとに、該センサ２０から受信した所定数のセンサデータを解析して項目ごとに検出値が範囲に含まれる頻度を求め、最も頻度の多い範囲のセンサグループに分類してもよい。また、登録部１３３は、センサ２０のセンサＩＤや、センサ２０のＭＡＣアドレス、センサ２０の種類、状態等に基づいて、センサ２０をセンサグループに分類してもよい。
【００３３】
登録部１３３は、各センサ２０から最初に受信したセンサデータを解析して、センサ２０にセンサグループを対応付けし、グループデータ１２１へ登録してもよい。また、登録部１３３は、センサ２０ごとに、該センサ２０から受信した所定数のセンサデータを解析し、センサ２０をセンサグループに分類してもよい。また、登録部１３３は、一定時間ごと（例えば、６時間ごと）のタイミングなど所定のタイミングで、グループデータ１２１に記憶されたセンサ２０に対応付けるセンサグループを更新してもよい。また、登録部１３３は、クラウドサーバ５０など外部の装置から対応付けするセンサ２０とセンサグループの情報を受信し、受信した情報に基づいて、センサ２０とセンサグループを対応付けしてグループデータ１２１に登録してもよい。
【００３４】
特定部１３４は、受付部１３２により受け付けたセンサデータの送信元のセンサ２０が属するセンサグループを特定する。例えば、特定部１３４は、グループデータ１２１を参照し、センサデータに含まれるセンサＩＤに対応付けられたセンサグループを特定する。また、特定部１３４は、センサデータに一意のデータＩＤを付与する。
【００３５】
第１取得部１３５は、キャッシュメモリ１４０を参照し、特定部１３４により特定したセンサグループに対応付けられた送信済みデータを取得する。例えば、第１取得部１３５は、特定部１３４により特定したセンサグループに対応付けられた送信済みデータをキャッシュメモリ１４０から順に読み出す。
【００３６】
図５は、キャッシュメモリからのデータの読み出しを説明する図である。第１取得部１３５は、センサグループに対応付けられた送信済みデータを上から順に検索する。第１取得部１３５は、検索の結果、次に該当するデータが無ければ、Ｎｕｌｌとする。例えば、第１取得部１３５は、センサグループ「Ａ」の送信済みデータを読み出す場合、図５に示すように、１行目、３行目、４行目のデータを順に読み出す。また、第１取得部１３５は、センサグループ「Ｂ」の送信済みデータを読み出す場合、図５に示すように、２行目、５行目のデータを順に読み出す。
【００３７】
判定部１３６は、第１取得部１３５により取得した送信済みデータに、受付部１３２により受け付けたセンサデータの検出データが含まれるか否かを判定する。例えば、判定部１３６は、第１取得部１３５により順に読み出された送信済みデータを検出データと比較し、検出データと項目の値が全て一致する送信済みデータがあるか否か判定する。
【００３８】
第２取得部１３７は、判定部１３６による判定の結果、取得した送信済みデータに検出データが含まれる場合、キャッシュメモリ１４０を参照して、送信済みデータに対応付けられたデータＩＤを取得する。例えば、第２取得部１３７は、読み出した送信済みデータに、検出データと項目の値が全て一致する送信済みデータがある場合、項目の値が全て一致した送信済みデータのデータＩＤを取得する。
【００３９】
送信部１３８は、判定部１３６による判定の結果、取得した送信済みデータに検出データが含まれる場合、検出データを送信せずに、第２取得部１３７により取得したデータＩＤをクラウドサーバ５０へ送信する。例えば、送信部１３８は、検出データと項目の値が全て一致する送信済みデータがある場合、全て一致する送信済みデータのデータＩＤをクラウドサーバ５０へ送信する。
【００４０】
一方、送信部１３８は、判定部１３６による判定の結果、取得した送信済みデータに検出データが含まれない場合、検出データに対して全てのセンサグループで一意となるデータＩＤを対応付け、検出データとデータＩＤをクラウドサーバ５０へ送信する。例えば、送信部１３８は、項目の値が全て一致する送信済みデータがない場合、検出データに対して一意のデータＩＤを付与する。そして、送信部１３８は、付与したデータＩＤと検出データとを対応付けてクラウドサーバ５０へ送信する。
【００４１】
送信済みデータ管理部１３１は、キャッシュメモリ１４０を更新する。例えば、送信済みデータ管理部１３１は、送信した検出データを送信済みのデータとして、特定したセンサグループ、データＩＤを対応付けてキャッシュメモリ１４０に登録する。また、送信済みデータ管理部１３１は、登録の結果、キャッシュメモリ１４０に記憶された登録済みの送信済みのデータが所定数を超える場合、受け付けたデータが含まれると最も過去に判定された送信済みのデータをキャッシュメモリ１４０から削除する。例えば、送信済みデータ管理部１３１は、検出データと項目の値が全て一致する送信済みデータがある場合、一致した送信済みデータのレコードをキャッシュメモリ１４０に記憶された送信済みデータのリストの先頭に移動する。また、送信済みデータ管理部１３１は、検出データと項目の値が全て一致する送信済みデータがない場合、キャッシュメモリ１４０に記憶された送信済みデータのリストの末尾のレコードを削除する。送信済みデータ管理部１３１は、検出データをセンサグループ、データＩＤと対応付けてリストの先頭に挿入する。
【００４２】
ここで、図６を用いてセンサ２０からデータを収集する流れを説明する。図６は、センサからデータを収集する流れを説明する図である。
【００４３】
センサ２０は、それぞれ温度および圧力を周期的に検出し、検出した温度、圧力それぞれの検出値を示す検出データとセンサＩＤとを含んだセンサデータを無線通信によりゲートウェイ３０へ送信する。図６の例では、センサＩＤ「１」のセンサ２０が「１，｛３２Ｃ，６１．２Ｐ｝」のセンサデータをゲートウェイ３０へ送信している。センサデータの「１」は、送信元のセンサ２０のセンサＩＤである。センサデータの「｛３２Ｃ，６１．２Ｐ｝」は、検出データである。「３２Ｃ」は、検出された温度が３２［℃］であることを示す。「６１．２Ｐ」は、検出された圧力が６１．２［Ｐａ］であることを示す。
【００４４】
ゲートウェイ３０は、受信したセンサデータを管理サーバ４０へ送信する。
【００４５】
管理サーバ４０では、受付部１３２が、センサデータを受け付ける。特定部１３４は、グループデータ１２１を参照し、センサデータに含まれるセンサＩＤに対応付けられたセンサグループを特定する。図６の例では、センサＩＤ「１」は、センサグループが「Ａ」と特定される。
【００４６】
第１取得部１３５は、キャッシュメモリ１４０を参照し、特定したセンサグループに対応付けられた送信済みデータを取得する。図６の例では、第１取得部１３５は、センサグループが「Ａ」の送信済みデータをキャッシュメモリ１４０から順に読み出す。図６の例では、「Ａ  ｇｒｏｕｐ＿ｉｄ  ＡＡＡＡ１：｛３２Ｃ，６１．２Ｐ｝」との送信済みデータが読み出される。
【００４７】
判定部１３６は、取得した送信済みデータに、受け付けたセンサデータの検出データが含まれるか否かを判定する。例えば、判定部１３６は、読み出された送信済みデータを検出データと比較し、検出データと項目の値が全て一致する送信済みデータがあるか否か判定する。図６の例では、検出データと、読み出した送信済みデータとで項目の値が全て一致する。
【００４８】
第２取得部１３７は、判定の結果、取得した送信済みデータに検出データが含まれる場合、送信済みデータに対応付けられたデータＩＤを取得する。図６の例では、第２取得部１３７は、送信済みデータに対応付けられたデータＩＤ「ＡＡＡＡ１」を取得する。
【００４９】
送信部１３８は、判定の結果、取得した送信済みデータに検出データが含まれる場合、検出データを送信せずに、第２取得部１３７により取得したデータＩＤをクラウドサーバ５０へ送信する。図６の例では、送信部１３８は、データＩＤ「ＡＡＡＡ１」をクラウドサーバ５０へ送信する。
【００５０】
クラウドサーバ５０は、受信済みのデータとデータＩＤを記憶している。例えば、データＩＤ「ＡＡＡＡ１」に対応付けて「｛３２Ｃ，６１．２Ｐ｝」が記憶されている。クラウドサーバ５０では、データＩＤを受信すると、受信したデータＩＤに対応するデータを特定する。例えば、クラウドサーバ５０は、受信したデータＩＤ「ＡＡＡＡ１」に対応付するデータを「｛３２Ｃ，６１．２Ｐ｝」と特定する。クラウドサーバ５０は、特定したデータをデータベースに登録する。これにより、図６の例では、データベースに「｛３２Ｃ，６１．２Ｐ｝」とのデータが登録される。
【００５１】
送信済みデータ管理部１３１は、キャッシュメモリ１４０を更新する。例えば、送信済みデータ管理部１３１は、一致した送信済みデータのレコードをキャッシュメモリ１４０に記憶された送信済みデータのリストの先頭に移動する。なお、図６の例では、「Ａ  ｇｒｏｕｐ＿ＩＤ  ＡＡＡＡ１：｛３２Ｃ，６１．２Ｐ｝」が既にリストの先頭であるため、移動は行われない。
【００５２】
このように、管理サーバ４０は、センサ２０から新たにセンサデータを受け付けた場合、センサデータの送信元のセンサ２０と同じセンサグループに属するセンサ２０の送信済みデータと順に比較する。そして、同じデータが記憶されている場合、管理サーバ４０は、データＩＤをクラウドサーバ５０へ送信する。一方、同じデータが記憶されていない場合、管理サーバ４０は、データＩＤと検出データをクラウドサーバ５０へ送信する。このように、管理サーバ４０は、センサグループ内の送信済みデータと比較することで、比較する送信済みデータの数を減らすことができ、受け付けたデータを送信するか否かの判定負荷を軽減できる。
【００５３】
次に、実施例１の管理サーバ４０が実行する送信処理の流れについて説明する。図７は、実施例１の送信処理の一例を示すフローチャートである。送信処理は、所定のタイミング、例えば、センサデータを通信部１１０で受信したタイミングで実行される。
【００５４】
受付部１３２は、受信したセンサデータを受け付ける（ステップＳ１０）。特定部１３４は、グループデータ１２１を参照し、センサデータに含まれるセンサＩＤに対応付けられたセンサグループを特定する（ステップＳ１１）。第１取得部１３５は、キャッシュメモリ１４０を参照し、特定したセンサグループに対応付けられた送信済みデータを取得する（ステップＳ１２）。
【００５５】
判定部１３６は、取得した送信済みデータに、受け付けたセンサデータの検出データが含まれるか否かを判定する（ステップＳ１３）。判定の結果、取得した送信済みデータに検出データが含まれる場合（ステップＳ１３：Ｙｅｓ）、第２取得部１３７は、送信済みデータに対応付けられたデータＩＤを取得する（ステップＳ１４）。送信部１３８は、第２取得部１３７により取得したデータＩＤをクラウドサーバ５０へ送信する（ステップＳ１５）。
【００５６】
一方、判定の結果、取得した送信済みデータに検出データが含まれない場合（ステップＳ１３：Ｎｏ）、送信部１３８は、検出データに対して全てのセンサグループで一意となるデータＩＤを対応付ける。そして、送信部１３８は、検出データとデータＩＤをクラウドサーバ５０へ送信する（ステップＳ１６）。
【００５７】
送信済みデータ管理部１３１は、キャッシュメモリ１４０を更新し（ステップＳ１７）、処理を終了する。例えば、送信済みデータ管理部１３１は、送信した検出データを送信済みのデータとして、特定したセンサグループ、データＩＤを対応付けてキャッシュメモリ１４０に登録する。また、送信済みデータ管理部１３１は、登録の結果、キャッシュメモリ１４０に記憶された登録済みの送信済みのデータが所定数を超える場合、受け付けたデータが含まれると最も過去に判定された送信済みのデータをキャッシュメモリ１４０から削除する。
【００５８】
このように、管理サーバ４０は、センサ２０により検出された検出データと、該センサを識別するセンサＩＤとを受け付ける。管理サーバ４０は、センサグループを識別する識別情報を、該センサグループに含まれるセンサに対応付けて記憶する記憶部１２０のグループデータ１２１を参照して、受け付けたセンサＩＤに対応付けられたセンサグループを特定する。管理サーバ４０は、センサグループに含まれるセンサ２０により検出された送信済みデータを、該センサグループに対応付けて記憶するキャッシュメモリ１４０を参照して、特定したセンサグループに対応付けられた送信済みデータを取得する。管理サーバ４０は、取得した送信済みデータに、受け付けた検出データが含まれるか否かの判定を行う。管理サーバ４０は、受け付けた検出データが含まれる場合、送信済みデータのデータＩＤを、該送信済みデータに対応付けて記憶するキャッシュメモリ１４０を参照して、該送信済みデータに対応付けられたデータＩＤを取得する。管理サーバ４０は、受け付けた検出データを送信せずに、取得したデータＩＤを送信する。その結果、管理サーバ４０は、受け付けたデータを送信するか否かの判定負荷を軽減できる。
【００５９】
また、管理サーバ４０は、データの形式が同じセンサ２０に対して、同一のセンサグループを識別する識別情報を対応付けて記憶部１２０のグループデータ１２１に登録する。これにより、管理サーバ４０では、データの形式が同じセンサグループごとに、送信済みデータが管理される。その結果、管理サーバ４０では、判定の際に、受け付けた検出データに対してデータの形式が同じ送信済みデータと判定を行うことになり、判定の検索範囲を狭めることができるため、検索性能を向上させることができる。
【００６０】
また、管理サーバ４０は、検出データに含まれる検出値の範囲毎に、該範囲に検出値が入ると予測されるセンサ２０に対して、同一のセンサグループを識別する識別情報を対応付けて記憶部１２０のグループデータ１２１に登録する。これにより、管理サーバ４０では、検出値の範囲が同様のセンサグループごとに、送信済みデータが管理される。その結果、管理サーバ４０では、判定の際に、受け付けた検出データに対して検出値の範囲が同様の送信済みデータと判定を行うことになり、判定の検索範囲を狭めることができるため、検索性能を向上させることができる。
【００６１】
また、管理サーバ４０は、受け付けた検出データが含まれない場合、該検出データに対して全てのセンサグループで一意となるセンサＩＤを付与し、該検出データと該センサＩＤを送信する。管理サーバ４０は、送信した検出データを送信済みデータとして、特定したセンサグループとセンサＩＤとを対応付けてキャッシュメモリ１４０に登録する。管理サーバ４０は、登録済みの送信済みデータが所定数を超える場合、検出データが含まれると最も過去に判定された送信済みデータを削除する。その結果、管理サーバ４０では、キャッシュメモリ１４０に検出データに出現する頻度の高い送信済みデータを保持させることができ、受け付けたデータを送信するか否かを効率良く判定できる。
【実施例２】
【００６２】
次に、上記実施例２ついて説明する。図８は、実施例２の管理サーバの構成を示すブロック図である。図８に示す管理サーバ４０は、実施例１の管理サーバ４０と一部が同一であるため、同一の構成には同一符号を付すことで、その重複する構成および動作の説明については省略する。
【００６３】
実施例２の管理サーバ４０の制御部１３０は、さらに、修正部１３９を有する。
【００６４】
修正部１３９は、受付部１３２により受け付けたセンサデータの検出データを、センサグループに対応する所定の精度のデータに修正する。
【００６５】
ここで、ＩｏＴでは、様々なメーカから販売されたセンサ２０からデータが収集される場合がある。そして、センサ２０は、メーカや機種によって、状態の検出精度がことなり、センサデータに含まれる検出値の精度も異なる場合がある。例えば、温度を検出する場合、センサ２０には、温度の検出値を３２℃と整数で記録するものや、温度の検出値を３２．１℃と少数点１位まで記録するものがある。
【００６６】
そこで、修正部１３９は、検出データを、センサグループに対応する所定の精度のデータに修正する。センサグループごとの検出値の精度は、予め設定されていてもよい。また、センサグループごとの検出値の精度は、クラウドサーバ５０など外部の装置から受付けてもよい。例えば、登録部１３３は、クラウドサーバ５０など外部の装置からセンサグループごとの検出値の精度を受付け、受けた検出値の精度をグループデータ１２１に登録してもよい。また、登録部１３３は、センサグループごとに、センサグループに属するセンサ２０から受信したセンサデータの検出データについて検出値の精度を求め、最も精度の低い検出値の精度をグループデータ１２１に登録してもよい。
【００６７】
例えば、修正部１３９は、グループデータ１２１に基づき、検出データを、センサグループに対応するセンサ２０のうち、最も低い精度のデータに修正する。同じセンサグループに温度の検出値を３２．１℃とするセンサ２０と、温度の検出値を３２℃とするセンサ２０とがある場合、修正部１３９は、温度の検出値の３２．１℃の小数点１位を四捨五入または切り捨てして、整数の３２℃に修正する。
【００６８】
判定部１３６は、送信済みのデータに、精度を修正した検出データが含まれるか否かの判定を行う。また、送信部１３８は、判定部１３６による判定の結果、取得した送信済みデータに、精度を修正した検出データが含まれない場合、精度を修正した検出データに対して全てのセンサグループで一意となるデータＩＤを対応付ける。そして、送信部１３８は、精度を修正した検出データとデータＩＤをクラウドサーバ５０へ送信する。また、送信済みデータ管理部１３１は、精度を修正した検出データを送信済みのデータとして、特定したセンサグループ、データＩＤを対応付けてキャッシュメモリ１４０に登録する。
【００６９】
これにより、管理サーバ４０は、センサグループごとに、検出データの検出値の精度を揃えることができるため、判定の際に、キャッシュメモリ１４０に記憶される送信済みのデータとのヒット率を向上させることができる。このように、管理サーバ４０は、送信済みのデータとのヒット率が向上するで、クラウドサーバ５０へデータＩＤのみを送信するケースが増加するため、ネットワークＮ２に掛かる負荷を軽減できる。
【００７０】
次に、実施例２の管理サーバ４０が実行する送信処理の流れについて説明する。図９は、実施例２の送信処理の一例を示すフローチャートである。以下の説明では、ステップＳ１０、Ｓ１１、Ｓ１２、Ｓ１４、Ｓ１５の処理は、実施例１と同様であるので、その説明を省略する。
【００７１】
修正部１３９は、受け付けたセンサデータの検出データを、センサグループに対応する所定の精度のデータに修正する（ステップＳ２０）。
【００７２】
判定部１３６は、取得した送信済みデータに、精度を修正した検出データが含まれるか否かを判定する（ステップＳ１３）。判定の結果、取得した送信済みデータに、精度を修正した検出データが含まれない場合（ステップＳ１３：Ｎｏ）、送信部１３８は、精度を修正した検出データに対して全てのセンサグループで一意となるデータＩＤを対応付ける。そして、送信部１３８は、精度を修正した検出データとデータＩＤをクラウドサーバ５０へ送信する（ステップＳ１６）。
【００７３】
送信済みデータ管理部１３１は、精度を修正した検出データを送信済みのデータとして、特定したセンサグループ、データＩＤを対応付けてキャッシュメモリ１４０に登録する（ステップＳ１７）。
【００７４】
このように、管理サーバ４０は、受け付けたセンサデータの検出データを、特定したセンサグループに対応する所定の精度のデータに修正する。管理サーバ４０は、取得した送信済みデータに、修正した検出データが含まれるか否かの判定を行う。その結果、管理サーバ４０は、送信済みのデータとのヒット率を向上させることができるため、ネットワークＮ２に掛かる負荷を軽減できる。
【実施例３】
【００７５】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。
【００７６】
例えば、上記各実施例では、センサグループおよびデータＩＤを送信済みのデータに対応付けてキャッシュメモリ１４０に記憶する場合を説明したが、これに限定されない。例えば、センサグループとデータＩＤとをそれぞれ別に送信済みのデータに対応付けてキャッシュメモリ１４０または記憶部１２０に記憶させてもよい。
【００７７】
例えば、上記各実施例では、受け付けたセンサデータの検出データが送信済みデータに含まれる場合、検出データを送信せずに、送信済みデータのデータＩＤを送信する場合を説明したが、これに限定されない。例えば、受け付けたセンサデータに含まれるセンサＩＤをデータＩＤと共に送信してもよい。
【００７８】
また、図示した各部の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各部の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、受付部１３２、登録部１３３、特定部１３４、第１取得部１３５、判定部１３６、第２取得部１３７、送信部１３８および修正部１３９を適宜統合してもよい。また、図示した各処理は、上記の順番に限定されるものでなく、処理内容を矛盾させない範囲において、同時に実施してもよく、順序を入れ替えて実施してもよい。
【００７９】
さらに、各装置で行われる各種処理機能は、ＣＰＵ（またはＭＰＵ、ＭＣＵ（Micro  Controller  Unit）等のマイクロ・コンピュータ）上で、その全部または任意の一部を実行するようにしてもよい。また、各種処理機能は、ＣＰＵ（またはＭＰＵ、ＭＣＵ等のマイクロ・コンピュータ）で解析実行されるプログラム上、またはワイヤードロジックによるハードウェア上で、その全部または任意の一部を実行するようにしてもよいことは言うまでもない。
【００８０】
ところで、上記の実施例で説明した各種の処理は、予め用意されたプログラムをコンピュータで実行することで実現できる。そこで、以下では、上記の実施例と同様の機能を有するプログラムを実行するコンピュータの一例を説明する。図１０は、送信プログラムを実行するコンピュータの一例を示す図である。
【００８１】
図１０に示すように、コンピュータ２００は、各種演算処理を実行するＣＰＵ２０１と、データ入力を受け付ける入力装置２０２と、モニタ２０３とを有する。また、コンピュータ２００は、記憶媒体からプログラム等を読み取る媒体読取装置２０４と、各種装置と接続するためのインタフェース装置２０５と、他の情報処理装置等と有線または無線により接続するための通信装置２０６とを有する。また、コンピュータ２００は、各種情報を一時記憶するＲＡＭ２０７と、ハードディスク装置２０８とを有する。また、各装置２０１〜２０８は、バス２０９に接続される。
【００８２】
ハードディスク装置２０８には、受付部１３２、登録部１３３、特定部１３４、第１取得部１３５、判定部１３６、第２取得部１３７、送信部１３８および修正部１３９の各処理部と同様の機能を有する送信プログラムが記憶される。また、ハードディスク装置２０８には、グループデータ１２１、および、送信プログラムを実現するための各種データが記憶される。入力装置２０２は、例えば、コンピュータ２００の管理者から操作情報等の各種情報の入力を受け付ける。モニタ２０３は、例えば、コンピュータ２００の管理者に対して表示画面等の各種画面を表示する。インタフェース装置２０５は、例えば印刷装置等が接続される。通信装置２０６は、例えば、図２に示した通信部１１０と同様の機能を有し図示しないネットワークと接続され、図示しない他の情報処理装置と各種情報をやりとりする。
【００８３】
ＣＰＵ２０１は、ハードディスク装置２０８に記憶された各プログラムを読み出して、ＲＡＭ２０７に展開して実行することで、各種の処理を行う。また、これらのプログラムは、コンピュータ２００を受付部１３２、登録部１３３、特定部１３４、第１取得部１３５、判定部１３６、第２取得部１３７、送信部１３８および修正部１３９として機能させることができる。
【００８４】
なお、上記の送信プログラムは、必ずしもハードディスク装置２０８に記憶されている必要はない。例えば、コンピュータ２００が読み取り可能な記憶媒体に記憶されたプログラムを、コンピュータ２００が読み出して実行するようにしてもよい。コンピュータ２００が読み取り可能な記憶媒体は、例えば、ＣＤ−ＲＯＭやＤＶＤディスク、ＵＳＢ（Universal  Serial  Bus）メモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリ、ハードディスクドライブ等が対応する。また、公衆回線、インターネット、ＬＡＮ等に接続された装置にこの送信プログラムを記憶させておき、コンピュータ２００がこれらから送信プログラムを読み出して実行するようにしてもよい。
【符号の説明】
【００８５】
１０  システム
２０  センサ
３０  ゲートウェイ
４０  管理サーバ
５０  クラウドサーバ
１１０  通信部
１２０  記憶部
１２１  グループデータ
１３０  制御部
１３１  送信済みデータ管理部
１３２  受付部
１３３  登録部
１３４  特定部
１３５  第１取得部
１３６  判定部
１３７  第２取得部
１３８  送信部
１３９  修正部
１４０  キャッシュメモリ
【図１】
2018182639.tif 000003
【図２】
2018182639.tif 000004
【図３】
2018182639.tif 000005
【図４】
2018182639.tif 000006
【図５】
2018182639.tif 000007
【図６】
2018182639.tif 000008
【図７】
2018182639.tif 000009
【図８】
2018182639.tif 000010
【図９】
2018182639.tif 000011
【図１０】
2018182639.tif 000012