以下に図面を参照して本実施例について説明する。図1は、機器制御システムの構成の一例を示す図である。
本実施例の機器制御システム100は、サーバ200、端末300、周辺機器400、通信基地局500とを有する。本実施例では、周辺機器400は端末300により制御される。端末300は、周辺機器400の識別情報を取得してこの識別情報をサーバ200へ送信し、サーバ200から周辺機器400を制御するための制御アプリケーションを受け取る。端末300は、例えば通信基地局500を介して周辺機器400と通信を行い、周辺機器400の動作を制御する。本実施例の通信基地局500は、例えば無線LAN基地局等である。
図2は、サーバの一例の構成図である。サーバ200は、それぞれバスBで相互に接続されている入力装置21,出力装置22,ドライブ装置23,補助記憶装置24,メモリ装置25,演算処理装置26及びインターフェース装置27を含む。
入力装置21はキーボードやマウス等を含み、各種信号を入力するために用いられる。出力装置22はディスプレイ装置等を含み、各種ウインドウやデータ等を表示するために用いられる。インターフェース装置27は、モデム,LANカード等を含み、ネットワーク26に接続する為に用いられる。
本発明の機器制御プログラムは、サーバを制御する各種プログラムの少なくとも一部である。機器制御プログラムは例えば記録媒体28の配布やネットワークからのダウンロードなどによって提供される。機器制御プログラムを記録した記録媒体28は、CD−ROM、フレキシブルディスク、光磁気ディスク等の様に情報を光学的,電気的或いは磁気的に記録する記録媒体、ROM、フラッシュメモリ等の様に情報を電気的に記録する半導体メモリ等、様々なタイプの記録媒体を用いることができる。
また、機器制御プログラムを記録した記録媒体28がドライブ装置23にセットされると、機器制御プログラムは記録媒体28からドライブ装置23を介して補助記憶装置24にインストールされる。ネットワークからダウンロードされた機器制御プログラムは、インターフェース装置27を介して補助記憶装置24にインストールされる。
補助記憶装置24は、インストールされた機器制御プログラムを格納すると共に、必要なファイル,データ等を格納する。メモリ装置25は、コンピュータの起動時に補助記憶装置24から機器制御プログラムを読み出して格納する。そして、演算処理装置26はメモリ装置25に格納された機器制御プログラムに従って、後述するような各種処理を実現している。
以下に図3を参照して本実施例の機器制御システム100の有する装置の機能について説明する。図3は、機器制御システムの有する装置の機能を説明する図である。
本実施例のサーバ200は、端末管理部210、プロファイル管理部220、ロール管理部230、コンテキスト管理部240、アプリ管理部250、アプリ送信部260を有する。また本実施例のサーバ200は、端末データベース211、プロファイルデータベース221、ロール定義データベース231、コンテキストデータベース241、アプリデータベース251を有する。本実施例のサーバ200の有する各データベースは、例えば補助記憶装置24の所定の記憶領域に設けられていても良い。
本実施例の端末管理部210は、端末データベース211を管理する。端末データベース211には、端末300の識別情報(以下、端末ID)と、端末300を使用するユーザの識別情報(ユーザID)とが紐付されて格納される。本実施例の端末IDは、例えば端末300のIPアドレスや各端末の製造番号等、各端末を一意に識別することが可能なものであればよい。
プロファイル管理部220は、プロファイルデータベース221を管理する。プロファイルデータベース221は、ユーザIDと、プロファイル情報とが対応付けられて格納される。本実施例のプロファイル情報は、ユーザの属性を示すものであり、例えばユーザの年齢、性別、出身国、役職、役職と関連付けられた権限等を含む。また本実施例のプロファイル情報は、予めシステム管理者等により登録されており、登録後は更新されないか、また更新頻度が少ない静的な情報と呼べるものとした。
ロール管理部230は、ロール定義データベース231を管理する。ロール定義データベース231には、ユーザIDと、ユーザが果たすべき、あるいは果たしている役割に関するロール定義とが対応付けられて格納される。また本実施例のロール管理部230は、ロール定義データベース231に基づきユーザのロール定義を導出する。ロール管理部230の詳細は後述する。
コンテキスト管理部240は、コンテキストデータベース241を管理する。コンテキストデータベース241は、ユーザIDとコンテキスト情報とが対応付けられて格納される。コンテキスト情報は、後述する端末300の有するセンサ部320から提供される。
コンテキスト管理部240は、例えばセンサ部320がGPSセンサであった場合、センサ部320から通知された緯度経度情報から特定の地図上の特定の場所に変換し、コンテキスト情報とする。またコンテキスト管理部240は、例えば端末300が通信基地局500から受信した基地局情報から通信基地局500の電波到達マップ上の特定の場所(部屋)に変換し、コンテキスト情報としても良い。
また例えばセンサ部320が加速度センサ等であった場合、コンテキスト管理部240は、センサ部320から得られた情報から推定されたユーザの状態(静止中、移動中等)をコンテキスト情報としても良い。以下の本実施例の説明では、コンテキスト情報は端末300の位置情報とした。
アプリ管理部250は、アプリデータベース251を管理する。またアプリ管理部250は、アプリデータベース251を参照して機器IDに対応した機器制御アプリケーションを選択する。具体的にはアプリ管理部250は、端末IDから特定されたユーザIDに基づき、プロファイルデータベース221、ロール定義データベース231、コンテキストデータベース241のそれぞれからユーザIDと対応する情報を取得する。そしてアプリ管理部250は、取得した情報に基づき、機器制御アプリケーションを選択する。
すなわち本実施例では、プロファイルデータベース221、ロール定義データベース231、コンテキストデータベース241がユーザの状況を示すユーザ状況情報が格納されたユーザ状況情報データベースである。本実施例のアプリ管理部250は、アプリデータベース251において、端末300から取得した機器IDと、端末IDから特定されるユーザ状況情報とが合致する機器制御アプリケーションを選択する。
本実施例のアプリデータベース251は、周辺機器400を識別する機器IDと、ユーザ状況情報と、機器制御アプリケーションとが対応付けられて格納されている。またアプリデータベース251には、機器制御アプリケーションそのものが格納されている。
ユーザ状況情報とは、プロファイル情報、ロール定義、コンテキスト情報と、各情報に対応付けられたキーと、キーの種別を含む。キーの種別とは、キーがプロファイルキー、ロールキー、コンテキストキーのキーであるかを示す。
すなわち本実施例においてユーザ状況情報とは、プロファイルキーと、プロファイルキーと対応したプロファイル情報、ロールキーとロールキーに対応したロール定義、コンテキストキーとコンテキストキーに対応したコンテキスト情報を含む。尚以下の説明では、各種キーと対応付けられた情報や定義をキーの値と呼ぶ。
アプリ管理部250による機器制御アプリケーションの選択の処理の詳細と、アプリデータベース251の詳細は後述する。
また本実施例では、サーバ200がアプリデータベース251を有するものとしたが、アプリデータベース251は、他のサーバ等に設けられていても良い。この場合アプリデータベース251には、機器制御アプリケーションの格納場所を示すURLが格納されていても良い。
アプリ送信部260は、アプリ管理部250で選択された機器制御アプリケーションを端末300に配信する。送信すべき機器制御アプリケーション及び機器制御アプリケーションの配信先である端末300に関する情報は、アプリ管理部250より指定される。
本実施例の端末300は、機器ID読取部310、センサ部320を有する。また端末300は、サーバ200から送信された機器制御アプリケーションを実行する機能を有する。機器ID読取部310は、周辺機器400に対応付けられたタグに書き込まれた機器IDを読み取る。センサ部320は、ユーザの状況把握に使用する情報を取得する。
本実施例のセンサ部320は、例えばGPSセンサ、加速度センサ、地磁気センサ等を含む。また例えば端末300は無線LAN通信機能やBluetooth(登録商標)通信機能等の無線通信機能を有し、無線通信機能により近隣の機器と通信を行うことで、端末300が通信を行った機器の近隣に存在することを検出する場合がある。この場合においては、端末300の有する無線通信機能をセンサ部320としても良い。
本実施例の周辺機器400は、周辺機器400を識別する機器IDが格納されたタグ410、周辺機器400が提供するサービスを実行するサービス実行部420を有する。サービス実行部420は、端末300からの要求にしたがってサービスを実行し、その応答を端末300に返す。本実施例の周辺機器400は、例えば印刷サービスを提供するプリンタ、各種プログラムをインストールすることで対応するサービスを提供可能に設定されたコンピュータ、映像を投影するサービスを実行するプロジェクタ等がある。
また本実施例のサーバ200は、例えば端末300が配置された場所の環境等を検出するための環境センサ部510から受信した信号に基づき、ロール定義データベース231やコンテキストデータベース241を更新しても良い。
環境側センサ部510は、例えば端末300に具備されたNFCタグを読み取るタグ・リーダが挙げられる。例えば環境センサ部510がある部屋の入り口等に設けられた場合、環境センサ部510が端末300の有するNFCタグを読み取ったとき、端末300が部屋の中に配置されたものと判断できる。本実施例では、環境センサ部510が検出した情報はサーバ20のコンテキスト管理部240に通知される。
次に本実施例の機器制御システム100の動作について説明する。
本実施例の機器制御システム100において、端末300のセンサ部320や環境側センサ部510が取得したセンサ情報をサーバ200のコンテキスト管理部240に通知する(ステップS1)。センサ情報を受領したコンテキスト管理部240は、センサ情報を処理してユーザのコンテキスト情報を生成し、コンテキストデータベース241に格納する。
次にユーザの操作により、端末300の機器ID読取部310が制御対象とする周辺機器400の機器IDを読み取る(ステップS2)。端末300は、読み取った機器IDをサーバ200のアプリ管理部250に通知する(ステップS3)。尚端末300は、このとき端末IDも同時にアプリ管理部250へ通知する。
サーバ200においてアプリ管理部250は、端末IDを端末管理部210に通知する。端末管理部210は端末データベース211を参照し、端末IDと対応したユーザIDをアプリ管理部250へ応答する(ステップS4)。
アプリ管理部250は、アプリデータベース251を参照し、通知された機器IDに対応するユーザ状況情報を認識する。
アプリ管理部250は、機器IDに対応するユーザ状況情報にプロファイルキーが含まれる場合、ユーザIDと対応するプロファイルキーの値をプロファイル管理部220に問い合わせ、プロファイルデータベース221が参照された後、その応答を受信する(ステップS5)。ここでプロファイルキーの値とは、プロファイルデータベース221において、ユーザIDと対応したプロファイル情報である。
アプリ管理部250は、機器IDに対応するユーザ状況情報にロールキーが含まれる場合、ユーザIDと対応するロールキーの値をロール管理部230に問い合わせ、ロール定義データベース231が参照された後、その応答を受信する(ステップS6)。ここでロールキーの値とは、ロール定義データベース231において、ユーザIDと対応したロール定義である。
アプリ管理部250は、機器IDに対応するユーザ状況情報にコンテキストキーが含まれる場合、ユーザIDと対応するコンテキストキーの値をコンテキスト管理部240に問い合わせ、コンテキストデータベース241が参照された後、その応答を受信する(ステップS7)。ここでコンテキストキーの値とは、コンテキストデータベース241において、コンテキストデータベース241においてユーザIDと対応したコンテキスト情報である。
アプリ管理部250は、ステップS5〜7で受信した各キーとキーの値との組み合わせに合致する機器制御アプリケーションをアプリデータベース251から選択し、アプリ送信部260に選択した機器制御アプリケーションの送信を要求する(ステップS8)。アプリ送信部260は、受信した機器制御アプリケーションを端末300に送信する(ステップS9)。
端末300は、受信した機器制御アプリケーションを起動させ、ユーザにより機器制御アプリケーションの操作を受け付けると、周辺機器400へ操作指示を送信する。周辺機器400では、操作指示に基づくサービスが実行される(ステップS10)。
次に図4を参照して本実施例のロール管理部230とコンテキスト管理部240の機能についてさらに説明する。
図4は、ロール管理部とコンテキスト管理部の機能を説明する図である。
本実施例のロール管理部230は、タイマ部232、ロール導出部233を有する。また本実施例のロール定義データベース231は、スケジュール定義データベース234と、位置定義データベース235とを有する。
スケジュール定義データベース234は、ユーザIDと、スケジュール(時刻)に基づくロール定義とが対応付けられて格納される。位置定義データベース235は、ユーザIDと位置情報に基づくロール定義とが対応付けられて格納される。
スケジュールに基づくロール定義は、あるユーザは、この時間帯はある特定のロールを果たす、というルールで実現される。また位置情報に基づくロール定義は、あるユーザがこの位置(あるいは領域)に存在する間はある特定のロールを果たす、というルールで実現される。言い換えれば位置に基づくロール定義は、あるユーザは、ある特定のロールを果たすために、この位置(あるいは領域)に移動する、というルールで実現される。
タイマ部322は、現在の時刻を管理する時計であり、スケジュール定義データベース234を参照してロールを決定する際に参照される。
ロール導出部233は、ロール定義データベース231を参照して、ユーザIDに対応したロール定義を導出する。
ロール導出部233は、スケジュール定義データベース234からロール定義を導出する場合は、タイマ部232から現在時刻を取得する。そしてロール導出部233は、スケジュール定義データベース234において、アプリ管理部250からのロール問い合わせに含まれるユーザIDと現在時刻との双方に適合するロール定義が存在するか否かを確認する。ロール導出部233は、適合するロール定義が存在する場合は、ユーザIDと対応した現在のロールを導出する。導出されたロールは、アプリ管理部250に対して応答として通知される。
またロール導出部233は、位置定義データベース235からロールを導出する場合は、ロール問い合わせに含まれたユーザIDと対応した位置情報をコンテキスト管理部240から取得する。そしてロール導出部233は、位置定義データベース235において、ユーザIDと、取得した位置情報の双方に適合するロール定義が存在するか否かを確認する。ロール導出部233は、該当するロール定義が存在する場合は、ユーザIDと対応する現在のロールを導出する。導出されたロールは、アプリ管理部250に対して応答として通知される。
尚本実施例では、時刻と位置に基づくロールを分離して定義しているが、時刻と位置の双方の組み合わせに基づいてロール定義がなされても良い。さらに、他のコンテキスト(加速度センサから推定されるユーザの移動速度、鉄道やバスなどのユーザの移動手段など)、及びそれらと時刻と位置の組み合わせに基づいてロール定義がなされても良い。
本実施例のコンテキスト管理部240は、センサ・データ処理部242を有する。
センサ・データ処理部242は、センサ部320が取得したセンサの生データを受信し、それをコンテキスト情報にする処理を行う。例えば、センサ部320がGPSセンサである場合、センサ・データ処理部242は、緯度経度情報を受信し、緯度経度情報を地図上で受信した緯度経度に該当する位置情報に変換する。緯度経度情報及び変換された位置情報はコンテキストデータベース241に通知される。
コンテキストデータベース241は、センサ部320から受信した生データと、センサ・データ処理部242で処理された結果の情報とをユーザ毎のコンテキスト情報として保持する。尚コンテキスト情報は随時上書き更新されるが、その際、更新前の情報をファイルなどに書き出し、別途ログ・データとして保存されても良い。
次に図5を参照して本実施例のアプリ管理部250の機能についてさらに説明する。図5は、アプリ管理部の機能を説明する図である。
本実施例のアプリ管理部250は、ユーザID取得部252、キー取得部253、キー対応情報取得部254、アプリ選択部255を有する。
ユーザID取得部252は、端末300から通知された端末IDに基づき、端末データベース211から端末IDと対応するユーザIDを取得する。
キー取得部253は、アプリデータベース251を参照し、端末300から通知された機器IDと対応するユーザ状況情報に含まれるキーを取得する。具体的にはキー取得部253は、プロファイルキー、ロールキー、コンテキストキーのうち、ユーザ状況情報に含まれるキーを取得する。
キー対応情報取得部254は、キー取得部253が取得したキーと対応するデータベースにおいて、ユーザID取得部252が取得したユーザIDと対応する情報を取得する。キー対応情報取得部254は、キーがプロファイルキーの場合はプロファイルデータベース221を参照し、ユーザIDと対応するプロファイル情報を取得する。キー対応情報取得部254は、キーがロールキーの場合はロール定義データベース231を参照し、ユーザIDと対応するロール定義を取得する。キー対応情報取得部254は、キーがコンテキストキーの場合はコンテキストデータベース241を参照し、ユーザIDと対応するコンテキスト情報を取得する。
アプリ選択部255は、アプリデータベース251において、機器IDに対応するユーザ状況情報が、キー取得部253が取得したキーとキー対応情報取得部255の取得した情報と合致する機器制御アプリケーションを選択する。
以下に本実施例のアプリ管理部250による機器制御アプリケーションの選択の処理について説明する。図6は、アプリ管理部による機器制御アプリケーションの選択の処理を説明するフローチャートである。
本実施例のアプリ管理部250は、端末300から機器IDと端末IDとを受信すると(ステップS601)、ユーザID取得部252により端末データベース211から端末IDに対応するユーザIDを取得する(ステップS602)。
続いてアプリ管理部250は、キー取得部253により、アプリデータベース251において機器IDと対応するユーザ状況情報に含まれるキーを取得する(ステップS603)。ユーザ状況情報に含まれるキーとは、機器IDに対応した機器制御アプリケーションが定義しているキーのことである。
キー取得部253はユーザ状況情報にプロファイルキーが存在するか否かを判断する(ステップS604)。ステップS604においてプロファイルキーが存在する場合、キー対応情報取得部254は、プロファイル管理部220にキーの値を問い合わせ、プロファイルデータベース221からユーザIDと対応するプロファイル情報を取得する(ステップS605)。ステップS604においてプロファイルキーが存在しない場合、ステップS606へ進む。
キー取得部253は、ユーザ状況情報にコンテキストキーが存在するか否かを判断する(ステップS606)。ステップS606においてコンテキストキーが存在する場合、キー対応情報取得部254は、コンテキスト管理部240にキーの値を問い合わせ、コンテキストデータベース241からユーザIDと対応するコンテキスト情報を取得する(ステップS607)。ステップS606においてコンテキストキーが存在しない場合、ステップS608進む。
キー取得部253は、ユーザ状況情報にロールキーが存在するか否かを判断する(ステップS608)。ステップS609においてロールキーが存在する場合、キー対応情報取得部254は、ロール管理部230にキーの値を問い合わせ、ロール定義データベース231からユーザIDと対応するロール定義を取得する(ステップS609)。ステップS608においてロール定義が存在しない場合、ステップS610に進む。
アプリ選択部255は、アプリデータベース251を参照し、ステップS604からステップS609までの処理で取得した各キーと、各キーに対応する情報や定義から、機器制御アプリケーションを選択する(ステップS610)。続いてアプリ管理部250は、選択された機器アプリケーションをアプリ送信部260へ送信する(ステップS611)。
次に図7を参照して本実施例のロール管理部230の処理について説明する。図7は、ロール管理部の処理を説明するフローチャートである。
本実施例のロール管理部230は、図6のステップS608においてロールキーが存在した場合、ステップS609においてアプリ管理部250からロールキーに対応するロール定義の取得要求を受信する(ステップS71)。尚ロール管理部230は、このとき同時にユーザIDとロールキーも受信する。
次にロール導出部233は、ロール定義を導出していない未処理のロールキーが存在するか否かを判断する(ステップS72)。ステップS72において未処理のロールキーが存在する場合、ロール導出部233は、コンテキスト管理部240から取得したコンテキスト情報、タイマ部232から取得した現在時刻情報を参照して、ロール定義データベース231から未処理のロールキーに対応するロール定義を導出する(ステップS73)。
尚本実施例のロール導出部233は、ロールキーと対応するロール定義が位置情報のみに基づく定義であった場合、位置定義データベース235を参照してロール定義を導出する。また本実施例のロール導出部233は、ロールキーと対応するロール定義がスケジュール情報のみに基づく定義であった場合、スケジュール定義データベース234を参照してロール定義を導出する。
ステップS72において未処理のロールキーが存在しない場合、ロールキーに対応するロール定義をアプリ管理部250に応答する(ステップS74)。
次に図8を参照して本実施例の端末300による周辺機器400の制御について説明する。図8は、端末による周辺機器の制御を説明するフローチャートである。
本実施例の端末300が、ユーザにより制御対象の周辺機器400に近づけられると、機器ID読取部310が、周辺機器400のタグに記録されている周辺機器400の機器IDを読み取る(ステップS801)。
尚本実施例では、機器400を指定する方法について、周辺機器400に付与された機器IDをタグ410から読み取る方法に限定されない。例えば端末300は、赤外線を送信して、それを受光した周辺機器400が自身の機器IDを応答しても良い。また端末300は、周辺機器400から赤外線により周期的に送信される機器IDを受信しても良い。さらに端末300は、カメラで周辺機器400の写真を撮影し、撮影された写真を画像処理することによって撮影された周辺機器400を特定しても良い。
続いて端末300は、サーバ200のアプリ管理部250に対し、読み取った機器ID、と自身の端末IDとを送信する(ステップS802)。続いて端末300は、アプリ管理部250から機器制御アプリケーションを受信したか否かを判定する(ステップS803)。
ステップS803において機器制御アプリケーションを受信した場合、端末300は受信した機器制御アプリケーションを実行する(ステップS804)。端末300は、機器制御アプリケーションが起動された際、後述のステップS808において周辺機器400に向けて送信される機器制御メッセージの宛先に関する情報を周辺機器400に問い合わせても良い。当該宛先に関する情報とは、例えば周辺機器400のIPアドレス、ポート番号、URL(Uniform Resource Locator)等である。
続いて端末300は、ユーザによって機器制御アプリケーションに対する操作が行われたか否かを判定する(ステップS805)。
ステップS805において操作が行われた場合、端末300は機器制御アプリケーションに対する操作が終了操作であるか否かを判定する(ステップS806)。ステップS805で操作が行われない場合、端末300は操作が行われるまで待機する。
ステップS806において終了操作である場合、端末300は機器制御アプリケーションの実行を終了する(ステップS807)。
ステップS806において終了操作でない場合、端末300は、機器制御アプリケーションに対する操作を実行するために、必要な機器制御メッセージを周辺機器400に送信する(ステップS808)。
続いて端末300は、周辺機器400が機器制御メッセージで要求された処理を実行したことを示す応答を受信したか否かを判断する(ステップS809)。ステップS809において応答を受信した場合、端末300はステップS805へ戻る。ステップS809で応答を受信しない場合、端末300は応答を受信するまで待機する。
以上に説明したように本実施例では、機器IDと対応付けられたユーザ状況情報に含まれるキーと、キーの値の組合せに基づき、機器IDを制御する機器制御アプリケーションを選択する。
以下に具体例を挙げて本実施例の機器制御システム100の動作を説明する。
(具体例1)
以下の例では、例えば周辺機器400がプレゼンテーション等を行う場所に配置されたプロジェクタである。ユーザは、端末300により周辺機器400を制御する。
図9は、アプリデータベースの具体例を示す図である。図9に示すアプリデータベース251Aでは、機器IDと、ユーザ状況情報91と、機器制御アプリケーションの格納先URLとが対応付けられて格納されている。図9に示すユーザ状況情報91に含まれるキーは、ロールキーのみである。
図10は、ロール定義データベースの有するスケジュール定義データベースの例を示す図である。図10に示すスケジュール定義データベース234Aは、「発表者」ロールキーの値(value)が時刻に基づくスケジュールによって、どのように決定されるかを定義するものである。
スケジュール定義データベース234Aにおいて1行目のデータは、1月22日の時刻t1〜t2において、ユーザAは「発表者」キーの値として「Yes」をとることを示す。これは例えば会議スケジュールにおいて、1月23日の時刻t1〜t2の間はユーザAによるプレゼンテーションの時間として割り当てられていることを示す。
これに対し、スケジュール定義データベース234Aにおける最下行のデータでは、「発表者」キーの値としてNoをとることを示している。すなわち、先のユーザAは、自身のプレゼンテーションの終了後は「発表者」キーの値として「No」をとり、聴講者としてプロジェクタを制御することになる。
本実施例のスケジュール定義データベース234Aは、システム管理者等によりサーバ200へ予め登録されていても良い。また本実施例では、新たに具体的なスケジュール等がロール管理部230に提供されると、スケジュール定義データベース234Aが生成、更新される。スケジュール定義データベース234Aの生成及び更新の詳細は後述する。
また本実施例のスケジュール定義データベース234Aは、「option」欄を有しており、プレゼンテーション等に使用する資料の格納先URLが併せて登録されている。
本実施例では、機器制御アプリケーションが端末300に配信される際に同時に格納先URLも配信され、端末300では格納先URLを参照して資料を取得しても良い。尚格納先URLで特定される資料は端末300内に予め格納されていても良い。
図11は、ロール定義データベースの有する位置定義データベースの例を示す図である。図11に示す位置定義データベース235Aは、「発表者」ロールキーの値(value)が発表者の部屋R1における位置によって、どのように決定されるかを定義するものである。
位置定義データベース235Aにおいて、1行目のデータは、あるユーザが事前に決められたある一定のエリア内に存在しているとき、このユーザの「発表者」キーの値として「Yes」をとることを示している。尚ユーザの現在位置は、部屋R1において定義される座標(X,Y)で表現される。
これに対し、位置定義データベース235Aの最下行のデータでは、あるユーザが一定のエリア内に存在していないとき、このユーザの「発表者」キーの値として「No」をとることを示している。
以下に図12を参照して、一定のエリア内のユーザの位置について説明する。図12は、一定のエリア内のユーザの位置について説明する図である。
本実施例では、一定のエリアは予め設定されている。図12の例では、発表者が発表時に通常位置する部屋R1の前方のエリアを一定のエリア121として定義した。一定のエリア121の座標は、0≦X≦Xmax,0≦Y≦Ypとなる。
ユーザの位置は、例えば部屋R1に無線LAN(Local Area Network)基地局122、123、124を設置し、部屋R1内の端末300が、無線LAN基地局122、123、124から受信した電波の受信強度を計測する。
尚本実施例では、部屋R1内の位置を特定する座標と受信強度の関係を示す事前データをコンテキスト管理部240が有していても良い。コンテキスト管理部240は、各端末300によって受信された受信強度と事前データと照合することで、端末300の位置を特定できる。すなわちユーザの位置を特定できる。
図12の例では、ユーザAは一定のエリア121に位置し、ユーザBとユーザCは一定のエリア121外に位置することがわかる。
尚ユーザの位置の特定方法は、上記の方法に限定されない。ユーザの位置の特定方法は、周辺機器400の利用シーンにおいて要求される位置特定精度を実現できる方法であれば良い。
本実施例のロール管理部230において、ロール導出部233は、図10と図11で示したスケジュール定義データベース234Aと位置定義データベース235Aのいずれか一方を用いてロールを導出しても良い。またロール導出部233は、スケジュール定義データベース234Aと位置定義データベース235Aの双方を同時に用いてロールを導出しても良い。
双方のデータベースを同時に用いる際は、ロール導出部233は、各定義データベースから導出されたキーの値が等しい場合に導出された値を最終的な導出結果としても良い(AND条件)。またはロール導出部233は、各定義データベースから導出されたキーの値の少なくとも1つが「Yes」である場合、最終的な導出結果を「Yes」としても良い(OR条件)。
本実施例では、ロール導出部133によるロールの導出において、AND条件とOR条件の何れを用いるか選択可能であっても良いし、予め何れか一方に設定されていても良い。
本実施例では、AND条件とOR条件の選択又は設定は、ロールキー毎に行えるようにした。本実施例では、AND条件を選択することにより、発表者でない人が一定のエリア121に進入して周辺機器400を制御しようとした場合でも、スケジュール定義データベース234Aによって発表者と誤認識しないようにできる。
また本実施例では、OR条件を選択することにより、会議の進行に遅れが生じた場合でも、一定のエリア121に進入した人は発表者として認識することができ、状況の変化に柔軟に対応することが可能となる。したがって本実施例では、機器制御システムの利便性を向上させることができる。
以下に図13、図14を参照してスケジュール定義データベース234Aの生成及び更新について説明する。
本実施例のスケジュール定義データベース234Aは、例えばシステム管理者等により、スケジュールに係る情報がサーバ200に提供されると、ロール管理部230により生成及び更新される。図13は、サーバに提供されたスケジュールに係る情報の例を示す図である。
図13に示すスケジュールに係る情報(以下、スケジュール情報)Scは、例えば会議主催者等の端末300からサーバ200へ送信されても良い。
図14は、スケジュール定義データベースの更新を説明するフローチャートである。尚スケジュール定義データベース234Aは、会議主催者により最初に作成されたスケジュール情報に基づき生成されているものとした。
本実施例の機器制御システム100において、会議主催者により端末300上でスケジュール情報Scが作成されると(ステップS141)、スケジュール情報Scはサーバ200のロール管理部230に送信される(ステップS142)。
ロール管理部230は、受信したスケジュール情報Scに基づき、スケジュール定義データベース234Aを更新する(ステップS143)。続いてロール管理部230は、スケジュール情報Scに基づくスケジュールを登録したことを端末300に通知する(ステップS144)。
本実施例では、以上のように、スケジュールが変更された際には新たなスケジュール情報Scをサーバ200へ送信するだけで、スケジュール定義データベース234Aが更新される。よってユーザの状況の変化に対応した周辺機器400の制御を行うことができる。
次に図15を参照してコンテキストデータベース241Aについて説明する。図15は、コンテキストデータベースの例を示す図である。
図15に示すコンテキストデータベース241Aでは、ユーザのコンテキストとしてユーザの位置を管理する。コンテキストデータベース241Aでは、ユーザID、ユーザがいる部屋番号、各部屋内で定義されたユーザの位置を示す座標が対応付けられている。
本実施例における部屋番号は、例えば部屋の出入口に設置された環境センサ部510に端末300やユーザのIDカードを翳して開錠させることで、特定されても良い。また屋外及び屋内において、GPS衛星の送信信号が受信できるような場所では、緯度・経度・高度情報がユーザの位置情報とされても良い。
尚本実施例ではコンテキスト情報は、ユーザの位置情報としたが、これに限定されない。コンテキスト情報は、例えば、端末300に具備される各種センサ(地磁気センサ、加速度センサ等)、あるいは環境センサ部510で取得されたユーザの状況を表す情報であっても良い。
次に、制御対象の周辺機器400の機器IDがDev1であった場合に選択される機器制御アプリケーションについて説明する。
アプリ管理部250は、ユーザID取得部252により、端末300の端末IDからユーザIDを取得する。またアプリ管理部250は、キー取得部253により、アプリデータベース251Aから周辺機器400の機器IDがDev1に対応するキーを取得する。図9に示すアプリデータベース251Aから取得されるキーは、ロールキーのみである。
次にキー対応情報取得部255は、ロール管理部230にロール定義の問い合わせを行う。ロール管理部230は、ロール定義データベース231からユーザIDと対応するロール定義を取得する。
本実施例では、ロール定義データベース231の有するのみを用いてロールを導出するものとした。本実施例において、ユーザID取得部252により取得されたユーザIDがユーザAであった場合、ユーザAのロール定義は、「発表者」キーの値として「Yes」をとるものとなる。
アプリ管理部250は、機器IDがDev1であり、且つユーザAのロール定義と合致する機器制御アプリケーションをアプリデータベース251から選択する。図9のアプリデータベース251Aでは、機器IDがDev1、キー種別がロールキーであり、「発表者」キーの値として「Yes」をとる機器制御アプリケーションとして、URL1を選択する。URL1は、選択された機器制御アプリケーションの格納先を示すURLである。
アプリ管理部250は、URL1をアプリ送信部260へ送信する。アプリ送信部260は、URL1を端末300に送信する。端末300がURL1を受信すると、端末300はURL1へアクセスして機器制御アプリケーションをダウンロードし、実行する。機器制御アプリケーションが実行されると、端末300にはユーザAに対応した機器制御アプリケーションの操作画面が表示される。
また本実施例においてユーザAのプレゼンテーションが終了すると、ユーザAのロール定義は、「発表者」キーの値として「No」をとるものとなる。
この場合アプリ管理部250は、機器IDがDev1であり、且つユーザAのロール定義と合致する機器制御アプリケーションとして、アプリデータベース251からURL2を選択する。
アプリ管理部250は、URL2をアプリ送信部260へ送信する。アプリ送信部260は、URL2を端末300に送信する。端末300がURL5を受信すると、端末300はURL5へアクセスして機器制御アプリケーションをダウンロードし、実行する。機器制御アプリケーションが実行されると、端末300にはユーザAに対応した機器制御アプリケーションの操作画面が表示される。
図16は、機器制御アプリケーションの操作画面の一例を示す図である。図16(A)はURL1と対応する機器制御アプリケーションの操作画面の例であり、図16(B)はURL2と対応する機器制御アプリケーションの操作画面の例である。
図16(A)に示す操作画面161は、発表者用の機器制御アプリケーションが端末300に表示させる画面である。操作画面161では、周辺機器400の電源のON/OFF、発表開始(スライド表示開始)、スライドのページめくり(前へ)、同じくページめくり(次へ)、ページ指定によるページ移動、当該機器制御アプリの終了、といった操作が可能となっている。
図16(B)に示す操作画面162は、非発表者用すなわち聴講者用の機器制御アプリケーションが端末300に表示させる画面である。操作画面162では、ページめくりとページ指定によるページ移動、および機器制御アプリケーションの終了のみが可能となっており、発表者よりも制御可能な周辺機器400の機能が限定されている。
以上のように本実施例では、ユーザのロールに応じて周辺機器400の被制御機能を変えることで、発表者の発表中に聴講者によって周辺機器400の電源がOFFされるといった不適切な機器制御が行われないようにすることができる。
また本実施例では、発表者の発表中に、聴講者によって勝手にスライドのページめくりがされないようにするためには、例えば次のようにすれば良い。
コンテキスト管理部240は、発表が行われている場所(部屋R1)のコンテキスト情報を追加で管理する。部屋R1のコンテキスト情報とは、部屋R1の状況を示す情報である。部屋R1においてプレゼンテーションを行う場合、部屋R1のコンテキスト情報は、「開始前」、「発表中」、「質疑応答中」、「終了」といった具合に遷移する。
URL1に対応する機器制御アプリケーションは、操作画面161に、「質疑応答開始」ボタンを表示させる。さらに機器制御アプリケーションは、発表者が「発表開始」ボタン、「質疑応答開始」ボタン、「終了」ボタンをタッチすると、センサ部320に対してそれぞれ「発表開始」イベント、「質疑応答開始」イベント、「発表終了」イベントを通知する。
センサ部320は、機器制御アプリケーションからイベントを受信すると、各イベントをコンテキスト管理部240に通知する。するとコンテキスト管理部240において管理される部屋R1のコンテキスト情報が上述のように通り順次遷移する。
またアプリ管理部250では、部屋R1のコンテキストキーの値が「発表中」である間においては、聴講者が端末300を操作して周辺機器400を選択しても、現在は周辺機器400の制御が不可能である旨を表示する機器制御アプリケーションを選択する。
その後「質疑応答開始」ボタンがタッチされると、部屋R1のコンテキスト情報が「質疑応答中」に遷移し、それ以降周辺機器400を選択した端末300には、聴講者用の操作画面162が表示される。このように、人のコンテキスト情報だけに留まらず、機器のようなものや部屋のような場所のコンテキスト情報も合わせて管理することによって、より多様な状況に応じた機器制御を行うことも可能になる。
また本実施例では、アプリデータベース251Aは、機器IDに対応させて機器制御アプリケーションを定義したが、周辺機器400の機種IDと機器IDの対応関係データベースを別途用意しても良い。
図17は、アプリデータベースの他の具体例を示す図である。図17(A)は、周辺機器400の機種IDと機器IDの対応関係データベース256を示している。図17(B)は、機種IDに対応させて機器制御アプリケーションを定義したアプリデータベース251Bを示している。
この場合アプリ管理部250は、端末300から機器IDが通知されると、対応関係データベース256を参照して機器IDと対応する機種IDを取得する。そしてアプリ管理部250は、得られた機種IDとキー種別、キー、キーの値の組み合わせから機器制御アプリケーションを選択する。
本実施例では、機種ID毎に機器制御アプリケーションを定義することで、同一の機器制御アプリケーションで同一機種の周辺機器400を複数台制御することができる。
次に、アプリ管理部250による機器制御アプリケーションの選択における各キーの優先度について説明する。
本実施例では、プロファイル管理部210、コンテキスト管理部220、ロール管理部230がそれぞれに対応したキー(プロファイルキー、コンテキストキー、ロールキー)とキーの値を有する。また本実施例において機器制御アプリケーションは、各管理部から得られたキーとキーの値とに基づき選択される。
このため、例えばアプリデータベース251において、1つの機器IDに対して2つ以上の種類の異なるキーが含まれる場合がある。この場合、機器制御アプリケーションの選択に際し優先するキーによって、機器制御アプリケーションが制御する周辺機器400の機能に違いが生じる場合がある。
そこで本実施例のアプリ管理部250は、予め各キーに優先度を付与した優先度テーブルを有し、最も優先度の高いキーとキーの値から選択された機器制御アプリケーションを選択結果としても良い。
図18は、機器制御アプリケーションの選択における各キーの優先度を説明する図である。図18に示す優先度テーブル257では、機器IDと各キーの優先度が対応付けられている。図18では、機器IDがDev1の周辺機器400の機器制御アプリケーションを選択する際は、ロールキーとロールキーの値とを最優先にして選択する。
また図18では機器ID毎に優先度を付与しているが、例えば図17に示す機種ID毎に優先度が付与されるようにしても良い。
また本実施例では、各管理部から取得されたキーとキーの値から選択される機器制御アプリケーションが実現する機能をすべて許容することもできる。
本実施例のアプリ管理部250では、例えば機器ID(機種IDでも良い)、各種キーと、キーの値の対、及び機器IDと各キーと値の対を条件として許容される制御機能の関係を予めテーブルに定義しておく。
図19は、機器制御アプリケーションにおいて許容される制御機能の関係を説明する図である。
図19に示す制御機能関係テーブル191、周辺機器400をプロジェクタとして制御することを想定しており、「権限」キーはプロファイルキーであり、「発表者」キーはロールキーである。また制御機能関係テーブル191では、各キーとキーの値の対条件が満たされた場合に可能な制御には「許容される制御機能」欄に「○」が設定される。
例えば本実施例では、ユーザの「権限」キーの値が「管理者」であり、且つ「発表者」キーの値が「No」である場合には、「電源制御」、「ページめくり」及び「LAN設定」の全ての制御が可能である機器制御アプリケーションが選択される。
また機器制御アプリケーションは、起動パラメータにより被制御機能を指定可能できることが好まし。例えば図19の例では、ユーザの「権限」キーの値が「一般ユーザ」であり、且つ「発表者」キーの値が「No」である場合には、プロジェクタを制御する機器制御アプリケーションの「ページめくり」の起動パラメータのみオンとすれば良い。
このように本実施例では、周辺機器400に対して選択された機器制御アプリケーションで実行する制御を、起動パラメータにより指定することで、許容される制御機能の多様な組み合わせに柔軟に対応できる。
(具体例2)
以下の例では、例えば周辺機器400を指定したユーザのプロファイル(静的な属性)に基づいて、同一の周辺機器400に対して異なる操作が可能となるようになる例を示す。
図20は、アプリデータベースの他の具体例を示す図である。本実施例では特定の制御対象の周辺機器400は想定しないが、例えばビデオレコーダ等、多様な操作が可能な機器を想定する。
図20に示すアプリデータベース251Cでは、機器IDがDev2である周辺機器400に関連して、2つのプロファイルキーとキーの値の組合せが2通り対応付けられている。1つ目の組合せは、プロファイルキー「年齢」とキーの値「60才未満/それ以外」であり、2つ目の組合せは、プロファイルキー「出身国」とキーの値「日本/日本以外」である。アプリデータベース251Cでは、各プロファイルキーとキーの値の組合せ毎に異なる機器制御アプリケーションの格納先URL11,12,13,14が登録されている。
図21は、プロファイルデータベースの例を示す図である。
図21のプロファイルデータベース221Aには、ユーザIDとしてユーザA、ユーザBが登録されている。またプロファイルデータベース221Aには、ユーザのプロファイルキーとして年齢及び出身国が定義されており、各ユーザにおける各プロファイルキーに対する値が登録されている。
プロファイルデータベース221Aでは、ユーザA及びユーザBのプロファイルとして、ユーザAは年齢70才で出身国は日本、ユーザBは年齢30才で出身国は米国とそれぞれ登録されている。
図22は、機器制御アプリケーションの操作画面の別の例を示す図である。図22(A)は、URL13と対応する機器制御アプリケーションの操作画面163の例であり、図22(B)はURL12と対応する機器制御アプリケーションの操作画面164の例である。
操作画面163は、ユーザAが制御対象の周辺機器400としてDev2を指定した際に実行される機器制御アプリケーションにより表示される。操作画面163では、周辺機器400の主要な操作を行うための3つのボタンと、機器制御アプリケーションを終了するためのボタンが表示される。
ユーザAは、60歳以上の高齢者であり、複雑な操作を行わない場合が多いと考えられる。よって操作画面163では、基本的な操作を行うためのボタンが見やすくなるように大きく表示されている。尚操作画面163には、複雑な制御を可能にするために、操作画面を遷移させるボタンを設けても良い。この場合当該ボタンをタッチすることで、複雑な制御を行う操作画面が表示される。
操作画面164は、ユーザBが周辺機器400としてDev2を指定した時に実行される機器制御アプリケーションにより表示される。操作画面164では、多様な操作を行うためのボタンが表示されており、さらにそれらの各ボタンは英語で表示されている。
このように本実施例では、ユーザのプロファイルに応じて周辺機器400の被制御機能を変化させ、さらに操作画面の表示に使用する言語も変えることができる。よってユーザは分かりやすく必要な周辺機器の制御を行うことができる。
本実施例では、ユーザのプロファイルとして年齢と出身国を用いているが、これらの他に性別、役職(一般社員、幹部社員など)、権限(一般ユーザ、管理者など)などが用いられても良い。またユーザのプリファレンス(好み、優先度)を定義し、この定義情報に基づいて機器制御アプリケーションの言語が選択されても良い。
さらに本実施例では、ユーザのプロファイルのみを用いて機器制御アプリケーションを選択するものとしたが、コンテキストキー及びロールキーを組み合わせた多様な状況に応じて機器制御アプリケーションを提供し、それらによって適切な周辺機器の制御が可能になるようにされてもよい。
本発明は、以下に記載する付記のような構成が考えられる。
(付記1)
端末へ周辺機器を制御する機器制御アプリケーションを送信するサーバであって、
前記端末のユーザ毎の状況を示すユーザ状況情報が格納されたユーザ状況情報データベースと、
前記周辺機器の機器識別情報と、ユーザ状況情報と、前記周辺機器を制御する機器制御アプリケーションとが対応付けられて格納されたアプリデータベースと、
前記端末が取得した前記機器識別情報と、前記ユーザ状況情報データベースにおいて前記端末の端末識別情報により特定されるユーザ状況情報と、を取得する情報取得部と、
前記アプリデータベースにおいて、前記情報取得部が取得した前記機器識別情報と、前記ユーザ状況情報とが合致する機器制御アプリケーションを選択するアプリ選択部と、を有するサーバ。
(付記2)
前記ユーザ状況情報データベースは、種類の異なるユーザ状況情報がそれぞれに格納された複数のデータベースを含み、
前記アプリ選択部は、
前記アプリデータベースにおいて、前記複数の前記データベースにおいてそれぞれ特定された前記ユーザ状況情報が合致する機器制御アプリケーションを選択する付記1記載のサーバ。
(付記3)
前記アプリデータベースは、前記ユーザ状況情報の種類を特定する情報を含み、
前記情報取得部は、
前記アプリデータベースにおいて特定された種別のユーザ状況情報が格納されたデータベースから前記ユーザ状況情報を特定して取得する付記2記載のサーバ。
(付記4)
前記種類の異なるユーザ状況情報には優先度が設けられており、
前記情報取得部は、
優先度の高い種類のユーザ状況情報を取得する付記2記載のサーバ。
(付記5)
前記複数のデータベースは、
ユーザの属性を示すプロファイル情報と、端末識別情報と対応したユーザ識別情報とが対応付けられたプロファイルデータベースと、
ユーザが果たすべき又は果たしている役割に関する定義と、前記ユーザ識別情報とが対応付けられたロール定義データベースと、
ユーザの位置情報を含む前記ユーザの状態を示すコンテキスト情報と、前記ユーザ識別情報とが対応付けられたコンテキストデータベースと、を含み、
前記プロファイルデータベースから前記ユーザ識別情報に対応した前記プロファイルデータを取得するプロファイル管理部と、
前記ロール定義データベースから前記ユーザ識別情報に対応した前記ユーザの役割に関する定義を取得するロール管理部と、
前記コンテキストデータベースから前記ユーザ識別情報に対応した前記コンテキスト情報を取得するコンテキスト管理と、を有する付記2ないし4の何れか一項に記載のサーバ。
(付記6)
前記ロール管理部は、
前記ロール定義データベースを参照して前記役割に関する定義を導出するロール導出部を有する付記5記載のサーバ。
(付記7)
前記ロール定義データベースは、
前記ユーザ識別情報と、ユーザの位置情報に基づく役割に関する定義とが格納された位置定義データベースと、
前記ユーザ識別情報と、ユーザのスケジュールに基づく役割に関する定義とが格納されたスケジュール定義データベースと、を含み、
前記ロール導出部は、
ユーザの位置に基づき前記役割を導出する場合には、前記コンテキストデータベースと前記位置定義データベースとを参照し、
ユーザのスケジュールに基づき前記役割を導出する場合には、タイマ部から得られる時刻情報と、前記スケジュール定義データベースとを参照する付記6記載のサーバ。
(付記8)
コンピュータに、
周辺機器の機器識別情報と、端末のユーザ毎の状況を示すユーザ状況情報が格納されたユーザ状況情報データベースにおいて前記端末の端末識別情報により特定されるユーザ状況情報と、を取得する情報取得処理と、
前記周辺機器の機器識別情報と、ユーザ状況情報と、前記周辺機器を制御する機器制御アプリケーションとが対応付けられて格納されたアプリデータベースにおいて、前記情報取得処理で取得した前記機器識別情報と、前記ユーザ状況情報とが合致する機器制御アプリケーションを選択する選択処理と、を実行させる機器制御プログラム。
(付記9)
コンピュータが、
周辺機器の機器識別情報と、端末のユーザ毎の状況を示すユーザ状況情報が格納されたユーザ状況情報データベースにおいて前記端末の端末識別情報により特定されるユーザ状況情報を取得し、
周辺機器の機器識別情報と、ユーザ状況情報と、前記周辺機器を制御する機器制御アプリケーションとが対応付けられて格納されたアプリデータベースにおいて、取得した前記機器識別情報と、前記ユーザ状況情報とが合致する機器制御アプリケーションを選択する機器制御方法。
(付記10)
端末と、端末に制御される周辺機器と、前記周辺機器を制御する機器制御アプリケーションを前記端末へ送信するサーバとを含む機器制御システムであって、
前記サーバは、
前記端末のユーザ毎の状況を示すユーザ状況情報が格納されたユーザ状況情報データベースと、
前記周辺機器の機器識別情報と、ユーザ状況情報と、前記周辺機器を制御する機器制御アプリケーションとが対応付けられて格納されたアプリデータベースと、
前記端末が取得した前記機器識別情報と、前記ユーザ状況情報データベースにおいて前記端末の端末識別情報により特定されるユーザ状況情報と、を取得する情報取得部と、
前記アプリデータベースにおいて、前記情報取得部が取得した前記機器識別情報と、前記ユーザ状況情報とが合致する機器制御アプリケーションを選択するアプリ選択部と、
選択された前記機器制御アプリケーションを前記端末へ送信するアプリ送信部を有し、
前記端末は、
受信した前機器制御アプリケーションを実行し、前記周辺機器を操作する操作画面を表示させる機器制御システム。
本発明は、具体的に開示された実施例に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。