以下、本発明の実施の形態について図面に基づき説明する。
図1は本発明の一の実施形態にかかるネットワークシステムの全体的な構成を示す図である。
このネットワークシステムは、例えば携帯電話などの制御機器10、例えばDVR(Digital Video Recorder)などのネットワーク家電機器である被制御機器20(20A,20B)、サービスサーバ30、ダイレクトアクセス管理サーバ40、およびルータ50を有している。被制御機器20(20A,20B)は、互いに同一のLANを通じて接続可能か、または、インターネットを通じて接続可能とされている。なお、同図においては、被制御機器20(20A,20B)はそれぞれルータ50を通じてインターネットに接続可能な場合を示している。以後、個々の被制御機器を特定する場合には「被制御機器20A」「被制御機器20B」と記述し、個々の被制御機器を特定しない場合には「被制御機器20」と記述する。
制御機器10は、被制御機器20を制御する機器として動作するものである。制御機器10は、被制御機器20を制御できるものであれば何でもよく、携帯電話の他には、例えば、PC(Personal Computer)、PDA(Personal Digital Assistance)などであってよい。
制御機器10は、プログラムなどを記憶するメインメモリ、メインメモリに記憶されたプログラムを実行して各種の演算処理を行うCPU(Central Processing Unit)、ネットワークとのインタフェース部、DVR20とのインタフェース部、キー入力部や表示部などのユーザインタフェース部、不揮発性の記憶部11などを備える。記憶部11には、この制御機器10に登録されているユーザ識別情報が記憶されている。メインメモリには、被制御機器20との間でのダイレクトアクセスに関する処理を行うプログラムなどが記憶されている。
被制御機器20は、放送番組(動画)、音楽、画像、アプリケーションデータなどのコンテンツをメディアに録画したり再生したりする録画再生機能部のほか、プログラムなどを記憶するメインメモリ、メインメモリに記憶されたプログラムを実行して各種の演算処理を行うCPU、LANやインターネットなどのネットワークとのインタフェース部、制御機器10とのインタフェース部、不揮発性の記憶部21、リモコン受信部、TVなどを接続するためのインタフェース部などを備える。記憶部21には、被制御機器20に固定的に割り当てられた機器認証情報が予め記憶されている。メインメモリには、被制御機器20の録画再生機能部を制御するためのプログラムのほか、サービスサーバ30との間でのダイレクトアクセスに関する処理を行うためのプログラムなどが記憶されている。
サービスサーバ30は、制御機器10に対してネットワーク越しに被制御機器20にアクセスする各種のサービスを提供するサーバ装置である。このサービスサーバ30は、例えば、キーボード・マウスなどの入力部と、表示部と、プログラムなどを記憶するメインメモリと、メインメモリに記憶されたプログラムを実行して各種の演算処理を行うCPUと、ネットワークとの通信部と、記憶部31とを備えた、例えば定型的なコンピュータシステムを用いて実現される。メインメモリには、コンピュータシステムを動作させるために必要な基本的なプログラムのほか、サービスを実行するために必要なプログラムなどが記憶されている。記憶部31には、サービスサーバ30が提供する個々のサービスごとにサービスサーバ及びサービスの種類を識別するためのサービスIDが記憶されている。
ダイレクトアクセス管理サーバ40は、制御機器10と、サービスサーバ30のサービスとの組み合わせと被制御機器20との対応を管理するサーバである。このダイレクトアクセス管理サーバ40は、例えば、キーボード・マウスなどの入力部と、表示部と、プログラムなどを記憶するメインメモリと、メインメモリに記憶されたプログラムを実行して各種の演算処理を行うCPUと、ネットワークとのインタフェース部と、記憶部41とを備えた、例えば定型的なコンピュータシステムを用いて実現される。メインメモリには、コンピュータシステムを動作させるために必要な基本的なプログラムのほか、コンピュータシステムをダイレクトアクセス管理サーバとして機能させるためのプログラムなどが記憶されている。
ダイレクトアクセス管理サーバ40には、SOAP(Simple Object Access Protocol)サーバ42およびXMPP(eXtensible Messaging and Presence Protocol)サーバ43が設けられている。SOAPサーバ42は、制御機器10とサービスの組み合わせの登録、被制御機器20の登録、サービスサーバ30と被制御機器20との間でのダイレクトアクセスに関する処理を行うためのサーバである。XMPPサーバ43は、被制御機器20との間で双方向の常時接続セッションを設定するためのサーバである。なお、SOAPサーバ42及びXMPPサーバ43は、一実施例を示したものであり、SOAPサーバ42は他のAPI呼び出し方式を用いたサーバに、XMPPサーバ43は他のIMの方式を用いたサーバに、それぞれ置き換え可能である。
次に、各機器のインタフェースについて説明する。図1において[IF−**]はインタフェース番号を示している。
ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、サービスサーバ30からアクセスされるインタフェース[IF−02]と、被制御機器20からアクセスされるインタフェース[IF−00]とを有する。SOAPサーバ42にはSOAPクライアント機能も含まれており、サービスサーバ30側のインタフェース[IF−05]へのアクセスを行う。XMPPサーバ43のインタフェースは、XMPPセッションの確立を行う際にXMPPクライアントからアクセスされる。本システム構成例では、被制御機器20からアクセスされるインタフェース[IF−06]がこれに該当し、XMPPセッション確立後はこのインタフェース[IF−06]を用いて双方向にメッセージをやり取りできるため、XMPPサーバ43からも被制御機器20のインタフェース[IF−07]にアクセスすることができる。
サービスサーバ30は、制御機器10からアクセスされるインタフェース[IF−01]と、ダイレクトアクセス管理サーバ40からアクセスされるインタフェース[IF−05]とを有する。
なお、このシステム構成例では、サービスサーバ30はダイレクトアクセス管理サーバ40内のXMPPサーバ43と直接インタフェースしていないが、もちろん直接インタフェースするように構成してもよい。
被制御機器20は、ダイレクトアクセス管理サーバ40からアクセスされるXMPPセッション確立後のインタフェース[IF−07]と、制御機器10との間で例えば赤外線やUSB(Universal Serial Bus)などでデータを送受信するためのインタフェース[IF−03]と、サービスサーバ30もしくは制御機器10からアクセスされるダイレクトアクセス用URIに対応したインタフェース[IF−09]と、被制御機器20間つまり図1の例では、被制御機器20Aと被制御機器20Bとの間でデータを送受信するためのインタフェース[IF−32]とを有する。
を有している。
ルータ50は、被制御機器20からアクセスされる、UPnP(Universal Plug and Play)IGD(Internet Gateway Device)機能のインタフェース[IF−08]を有する。
次に、この実施形態のネットワークシステムの動作を説明する。以下の説明において<X−XX>は要求、<X−XXR>は<X−XX>に対する応答を示す。
[1.制御機器・サービス、被制御機器の登録]
最初に、制御機器10とサービスとの組み合わせ毎に発行される制御機器・サービス管理IDと、ダイレクトアクセス管理サーバ40内で個々の被制御機器20に対してユニークに発行される被制御機器管理IDとの紐付けを行う動作を説明する。
図2は制御機器10とサービスとの組み合わせの登録と被制御機器20の登録を行う際の情報の流れを示すシステム全体のシーケンス図である。図3はこの登録時のインタフェース機能をまとめた図表である。図4はこの登録時の制御機器10のフローチャートである。図5はこの登録時のサービスサーバ30のフローチャートである。図6及び図7は登録時のダイレクトアクセス管理サーバ40のフローチャートである。図8はこの登録時の被制御機器20のフローチャートである。
[1−1.制御機器とサービスとの組み合わせの登録]
まず、制御機器10は、ユーザからの被制御機器登録の指示を受け(図4:ステップS401)、ユーザ識別情報を含む被制御機器登録要求<R−1>をサービスサーバ30に発行する(図4:ステップS402)。
サービスサーバ30は、ユーザ識別情報を含む被制御機器登録要求<R−1>を受信すると(図5:ステップS501)、そのユーザ識別情報に対応する制御機器・サービス管理IDが記憶部31に記憶されているかどうかを判断する(図5:ステップS502)。
ユーザ識別情報に対応する制御機器・サービス管理IDが記憶されていない場合、サービスサーバ30は、ユーザ識別情報を記憶部31に保存し(図5:ステップS503)、あらかじめ自身に割り当てられているサービスIDを含む制御機器・サービス管理ID取得要求<R−2>をダイレクトアクセス管理サーバ40内のSOAPサーバ42に対して発行する(図5:ステップS504)。制御機器・サービス管理IDは、サービス事業者が提供する個々のサービスと制御機器との組み合わせに対してユニークに割り当てられるIDである。
SOAPサーバ42は、制御機器・サービス管理ID取得要求<R−2>を受信すると(図6:ステップS601)、これに含まれているサービスIDが、ダイレクトアクセス管理サーバ40の記憶部41にあらかじめ登録されているサービスIDと一致するかどうかを調べ(図6:ステップS602)、一致しない場合には、サービスサーバ30にサービスIDが未登録であることを示すエラーコードを制御機器・サービス管理ID取得応答<R−2R>として送信する(図6:ステップS606)。サービスIDが一致する場合には、SOAPサーバ42は、新規の制御機器・サービス管理IDを発行して(図6:ステップS603)、この制御機器・サービス管理IDとサービスIDとの対応関係を記憶部41に登録し(図6:ステップS604)、その制御機器・サービス管理IDをサービスサーバ30に制御機器・サービス管理ID取得応答<R−2R>として送信する(図6:ステップS605)。これにより、ダイレクトアクセス管理サーバ40は、ダイレクトアクセス管理サーバ40からみて制御側を、制御機器10と、制御機器10が利用するサービスサーバ30のサービスとを組み合わせで識別することができるようになる。
なお、ダイレクトアクセス管理サーバ40は、記憶部41に、制御機器・サービス管理IDおよびサービスIDに対応付けて、サービスサーバ30のURIなどの場所情報を保存して管理することとしている。
サービスサーバ30は、制御機器・サービス管理ID取得応答<R−2R>として制御機器・サービス管理IDを受信すると(図5:ステップS505)、この制御機器・サービス管理IDをユーザ識別情報と対応付けて記憶部31に登録する(図5:ステップS506)。制御機器・サービス管理IDをユーザ識別情報と対応付けて記憶することにより、サービスサーバ30は、以降、制御機器10からアクセスされた際に、制御機器10のユーザ識別情報に対応する制御機器・サービス管理IDを用いて、ダイレクトアクセス管理サーバ40に処理を要求することにより、制御機器10とサービスサーバ30のサービスとの組み合わせの制御側として、ダイレクトアクセス管理サーバ40に制御要求元を一意に識別させることが可能となる。
サービスサーバ30は、制御機器・サービス管理IDをユーザ識別情報と対応付けて記憶部31に登録した後、または、制御機器10から受信した被制御機器登録要求<R−1>に含まれるユーザ識別情報に対応する制御機器・サービス管理IDが記憶部31に登録されている場合、それら制御機器・サービス管理IDおよびサービスIDを含む被制御機器登録用パスワード取得要求<R−3>をダイレクトアクセス管理サーバ40内のSOAPサーバ42に対して発行する(図5:ステップS507)。
ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、被制御機器登録用パスワード取得要求<R−3>を受信すると(図6:ステップS607)、これに含まれている制御機器・サービス管理IDおよびサービスIDの組み合わせが記憶部41に登録されているかどうかを判断する(図6:ステップS608)。登録されていない場合、SOAPサーバ42は、サービスサーバ30に制御機器・サービス管理IDとサービスIDの組み合わせが未登録であることを示すエラーコードを被制御機器登録用パスワード取得応答<R−3R>として送信する(図6:ステップS612)。また、被制御機器登録用パスワード取得要求<R−3>に含まれている制御機器・サービス管理IDおよびサービスIDの組み合わせが記憶部41に既に登録されている場合、SOAPサーバ42は、被制御機器登録用パスワードを新たに生成し(図6:ステップS609)、この被制御機器登録用パスワードとこの被制御機器登録用パスワードに対して決められた有効期限に関する情報を被制御機器登録用パスワード取得要求<R−3>に含まれていた制御機器・サービス管理IDおよびサービスIDと対応付けて記憶部41に登録する(図6:ステップS610)。この後、SOAPサーバ42は、被制御機器登録用パスワードと、この被制御機器登録用パスワードの有効期限の情報を被制御機器登録用パスワード取得応答<R−3R>としてサービスサーバ30に送信する(図6:ステップS611)。
サービスサーバ30は、被制御機器登録用パスワード取得応答<R−3R>を受信すると(図5:ステップS508)、この被制御機器登録用パスワード取得応答<R−3R>に含まれている被制御機器登録用パスワードとその有効期限の情報を被制御機器登録応答<R−1R>として制御機器10に送信する(図5:ステップS509)。
制御機器10は、この被制御機器登録応答<R−1R>を受信すると(図4:ステップS403)、これに含まれている被制御機器登録用パスワードとその有効期限の情報を記憶部11に保存する(図4:ステップS404)。
以上により、制御機器10とサービスとの組み合わせに対する制御機器・サービス管理IDの登録処理と被制御機器20を制御機器10に関連付けるために用いられる被制御機器登録用パスワードの発行処理が完了となる。
[1−2.被制御機器の登録]
次に、被制御機器20の登録時の動作を説明する。
被制御機器20は、ユーザによる利用前にダイレクトアクセス管理サーバ40において自身の機器認証を次のように行う。
まず、被制御機器20は自動接続フラグの値をチェックする(図8:ステップS801)。被制御機器のダイレクトアクセス管理サーバ40への登録前には自動接続フラグの値はオフである。この場合被制御機器20は自身に予め設定されている認証方式の情報および機器認証情報を含む機器認証要求<R−0>をダイレクトアクセス管理サーバ40内のSOAPサーバ42に送信する(図8:ステップS802)。
ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、被制御機器20からの機器認証要求<R−0>を受信すると(図6:ステップS613)、この被制御機器20が正当な機器であるかどうかを、機器認証要求<R−0>に含まれる認証方式の情報および機器認証情報に基づき判定する(図6:ステップS614)。不当な機器として判定された場合、すなわち、認証方式があらかじめ決められている認証方式と異なる場合や機器認証情報があらかじめ決められている認証方式の形式と異なる場合等には、SOAPサーバ42は、ダイレクトアクセス管理サーバ40へのエラーコードを示す旨を機器認証応答<R−0R>として被制御機器20に送信する(図6:ステップS615)。正当な機器であることが判定された場合、すなわち、認証方式があらかじめ決められている認証方式と一致し、かつ機器認証情報があらかじめ決められている認証方式の形式である場合には、SOAPサーバ42は、その被制御機器20に対して割り当てる機器認証継続IDを生成して(図6:ステップS616)、この機器認証継続IDと、機器認証要求<R−0>に含まれる機器認証情報とを対応付けて記憶部41に保存する(図6:ステップS617)。この後、SOAPサーバ42は、上記の生成した機器認証継続IDとその有効期限の情報を含む機器認証応答<R−0R>を被制御機器20へ送信する(図6:ステップS618)。機器認証継続IDは、ダイレクトアクセス管理サーバ40で機器認証が完了している機器に対して割り当てられる識別情報であり、この識別情報によって、ダイレクトアクセス管理サーバ40は、被制御機器20の機器の認証状況を確認することが可能となる。
被制御機器20は、ダイレクトアクセス管理サーバ40内のSOAPサーバ42から、機器認証継続IDとその有効期限の情報とを含む機器認証応答<R−0R>を受信すると(図8:ステップS803)、この機器認証応答<R−0R>に含まれる機器認証継続ID、その有効期限の情報を機器認証情報と対応付けて記憶部21に保存する(図8:ステップS804)。
この後、被制御機器20は、記憶部21に被制御機器登録用パスワードが保存されているかどうかを判断する(図8:ステップS805)。被制御機器登録用パスワードが保存されていない場合には動作を終了し、被制御機器登録用パスワードが保存されている場合にはステップS809へ移行する。機器認証継続IDを取得した直後は被制御機器登録用パスワードが保存されていないので、この場合には動作を終了することとなる。
ここまでにおいて、被制御機器20には機器認証継続ID、機器認証継続IDの有効期限の情報、機器認証情報の組み合わせが記憶部21に記憶され、ダイレクトアクセス管理サーバ40には機器認証継続IDと機器認証情報との組み合わせが記憶部41に記憶され、被制御機器20のダイレクトアクセス管理サーバ40への登録が完了したことになる。
以上の被制御機器20の登録のための処理は個々の被制御機器20A,20B毎に行われる。
[1−3.制御機器・サービス管理IDと被制御機器管理IDとの紐付け]
次に、制御機器・サービス管理IDと被制御機器管理IDとを関連付けてダイレクトアクセス管理サーバ40に登録する動作を行う。制御機器10において、ユーザからのワンタイムパスワード送信要求が入力される(図4:ステップS405)。制御機器10は、このユーザからのワンタイムパスワード送信要求を受けると記憶部11に記憶されている被制御機器登録用パスワードを、例えば、赤外線やUSBなどのインタフェース[IF−03]を使って、被制御機器20にワンタイムパスワード<R−5>として渡す(図4:ステップS406)。被制御機器登録用パスワードの渡し方は、他にも、非接触ICカードを介した受け渡し、Bluetooth(商標)、無線LANなどによる無線伝送など様々な方式が想定されるが、制御機器である制御機器10から被制御機器20に対して被制御機器登録用パスワードを渡すことができさえすればどのような渡し方であっても構わない。この後、制御機器10は記憶部11から被制御機器登録用パスワードを消去する(図4:ステップS407)。
被制御機器20は、制御機器10から被制御機器登録用パスワード<R−5>を受信すると(図8:ステップS807)、この被制御機器登録用パスワードを記憶部21に保存する(図8:ステップS808)。続いて、被制御機器20は、記憶部21に記憶されている機器認証継続IDと、制御機器10より受信した被制御機器登録用パスワードを含む被制御機器登録要求<R−6>をダイレクトアクセス管理サーバ40内のSOAPサーバ42に送信する(図8:ステップS809)。これにより被制御機器20は、ダイレクトアクセス管理サーバ40に、被制御機器登録用パスワードを送信してきた制御機器10と関連付けて登録することを要求する。
ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、被制御機器20から被制御機器登録要求<R−6>を受信すると(図7:ステップS619)、この被制御機器登録要求<R−6>に含まれる機器認証継続IDが記憶部41に保存されているものと一致するかどうかのチェックと機器認証継続IDの有効期限のチェックを行う(図7:ステップS620)。これらのチェックでNGが判定された場合、すなわち機器認証継続IDが一致しないか、もしくは機器認証継続IDの有効期限が切れている場合には、機器認証が必要であることを示すエラーコードを含む被制御機器登録応答<R−6R>を被制御機器20へ送信する(図7:ステップS630)。被制御機器20は、このエラーコードを含む被制御機器登録応答<R−6R>を受信すると(図8:ステップS822)、ステップS802に戻って機器認証のための処理を繰り返す。
また、SOAPサーバ42は、ステップS620のチェック結果がOKの場合、すなわち機器認証継続IDが記憶部41に記憶されているものと一致し、かつ機器認証継続IDの有効期限が切れていない場合、被制御機器20から受信した被制御機器登録要求<R−6>に含まれる被制御機器登録用パスワードが記憶部41に保存されているものと一致するかどうかのチェックとその被制御機器登録用パスワードの有効期限のチェックを行う(図7:ステップS621)。これらのチェックでNGが判定された場合、すなわち被制御機器登録用パスワードが一致しないか、もしくは被制御機器登録用パスワードの有効期限が切れている場合、SOAPサーバ42は、被制御機器登録要求<R−6>に含まれる被制御機器登録用パスワードが無効であることを示すエラーコードを被制御機器登録応答<R−6R>として被制御機器20へ送信する(図7:ステップS629)。被制御機器20は、このエラーコードを被制御機器登録応答<R−6R>として受信すると(図8:ステップS820)、被制御機器20に接続されたTVの画面等を通して、被制御機器登録用パスワードの再取得を行うように、ユーザに対してエラーメッセージの表示を行って(図8:ステップS821)、処理を終了する。
また、SOAPサーバ42は、ステップS621のチェック結果がOKの場合、すなわち被制御機器登録用パスワードが記憶部41に記憶されているものと一致し、かつ被制御機器登録用パスワードの有効期限が切れていない場合には、記憶部41に記憶されている情報を参照して、被制御機器登録要求<R−6>に含まれている機器認証継続IDに被制御機器管理IDが割り当てられているかどうかの判断を行う(図7:ステップS622)。機器認証継続IDに対応する被制御機器管理IDがまだ割り当てられていない場合、SOAPサーバ42は、その被制御機器20に対して被制御機器管理IDを割り当て(図7:ステップS623)、この割り当てた被制御機器管理IDを、その被制御機器20の機器認証情報および機器認証継続IDと対応付けて記憶部41に保存する(図7:ステップS624)。被制御機器登録要求<R−6>に含まれている機器認証継続IDに被制御機器管理IDがすでに割り当てられている場合には、SOAPサーバ42は被制御機器管理IDを、記憶部41に該被制御機器登録用パスワードと対応付けられて保存されている制御機器・サービス管理IDと関連付けて記憶部41に保存する(図7:ステップS625)。ここで、被制御機器管理IDとは、被制御機器に対してダイレクトアクセス管理サーバ40内でユニークに割り当てられる識別情報である。これによって、制御機器とサービスとの組み合わせに対して割り当てられた制御機器・サービス管理IDと、被制御機器に対して割り当てられた被制御機器管理IDとの紐付けが行われる。この紐付けは、1つの制御機器・サービス管理IDに対して複数の被制御機器管理IDが紐付けされても、逆に複数の制御機器・サービス管理IDが1つの被制御機器管理IDに紐付けされても構わない。
次にSOAPサーバ42は、現在紐付けが完了しているサービスの数を被制御機器登録応答<R−6R>として被制御機器20へ送信する(図7:ステップS626)。次に、SOAPサーバ42は、記憶部41に保存されているサービスID、制御機器・サービス管理ID、被制御機器登録用パスワードを含む被制御機器登録完了通知<R−7>をサービスサーバ30に送信する(図7:ステップS627)。この後、SOAPサーバ42は、記憶部41の被制御機器登録用パスワードを消去し(図7:ステップS628)、処理を終了する。一方、サービスサーバ30はSOAPサーバ42より被制御機器登録完了通知<R−7>を受信すると(図5:ステップS510)、被制御機器の登録が完了したことを、制御機器10のユーザに電子メールなどによって通知する(図5:ステップS511)。
被制御機器20は、SOAPサーバ42より現在紐付けが完了しているサービスの数を被制御機器登録応答<R−6R>として受信すると(図8:ステップS810)、自動接続フラグをオンにセットし(図8:ステップS811)、被制御機器の登録が完了したことを表すメッセージを表示する(図8:ステップS812)。続いて、被制御機器20は、記憶部21に保存されている被制御機器登録用パスワードを消去する(図8:ステップS813)。その後、被制御機器20は、ダイレクトアクセス管理サーバ40内のXMPPサーバ43との間で常時接続セッションを確立するために、機器認証継続IDを含むXMPPログイン情報取得要求<D−0−1>をダイレクトアクセス管理サーバ40内のSOAPサーバ42に送信する(図8:ステップS814)。
以上の制御機器・サービス管理IDと被制御機器管理IDとを紐付けるための処理は個々の被制御機器20A,20B毎に行われる。
[2.被制御機器のXMPPログイン]
このネットワークシステムでは、ダイレクトアクセス管理サーバ40に、被制御機器20との間で双方向の常時接続セッションを設定するためのXMPPサーバ43を置いている。制御機器である制御機器10から被制御機器20にネットワークを通じてアクセスするために、その前に被制御機器20がXMPPサーバ43にログインしてXMPPサーバ43の間で常時接続セッションを確立しておく。これにより、サービスサーバ30や制御機器10は、必要なときには、被制御機器20から必要な情報を取得できる。また、この際のサービスサーバ30の設計を簡単にするために、XMPPプロトコルをダイレクトアクセス管理サーバ40内に隠蔽し、SOAPインタフェースだけで、被制御機器20と双方向の常時接続セッションを設定しているXMPPサーバ43との情報のやり取りを行えるようにしている。
図9は被制御機器20のXMPPログインに関する情報の流れを示すシステム全体のシーケンス図である。図10は被制御機器20のXMPPログイン時のインタフェース機能をまとめた図表である。図11は被制御機器20のXMPPログイン時のダイレクトアクセス管理サーバ40の動作を示すフローチャートである。
まず、一方の被制御機器20Aより機器認証継続IDを含むXMPPログイン情報取得要求<D−0−1>がダイレクトアクセス管理サーバ40に送信されたこととする。ダイレクトアクセス管理サーバ40は、被制御機器20Aより機器認証継続IDを含むXMPPログイン情報取得要求<D−0−1>を受信すると(図11:ステップS1101)、このXMPPログイン情報取得要求<D−0−1>に含まれている機器認証継続IDと機器認証継続IDの有効期限のチェックを行う(図11:ステップS1102)。このチェックでXMPPログイン情報取得要求<D−0−1>に含まれている機器認証継続IDが、ダイレクトアクセス管理サーバ40の記憶部41に記憶されているものと一致しない場合、もしくは、有効期限が切れている場合には、被制御機器20Aが正常にダイレクトアクセス管理サーバ40に登録されていないか、もしくは、過去に登録されていたが登録時の機器認証継続IDの有効期限が切れているのかであるため、機器認証が必要であることを示すエラーコードをXMPPログイン情報取得応答<D−0−1R>として被制御機器20に送信する(図11:ステップS1103)。機器認証継続IDが記憶部41に記憶されており、かつ機器認証継続IDの有効期限が切れていない場合、ダイレクトアクセス管理サーバ40は、記憶部41から、当該機器認証継続IDに紐付けられている被制御機器管理ID及び機器認証情報を検索し(図11:ステップS1104)、これら被制御機器管理IDと機器認証情報から、被制御機器20AがXMPPサーバ43にログインするために必要なXMPPログインIDであるFullJID(D)、XMPPログインパスワードおよびXMPPログインパスワードの有効期限の情報を生成し(図11:ステップS1105)、これらを記憶部41に保存する(図11:ステップS1106)。そして、ダイレクトアクセス管理サーバ40は、生成したFullJID(D)、XMPPログインパスワードおよびその有効期限の情報に、XMPPアドレスおよびポート番号、認証方式の情報、SSL(Secure Socket Layer)オプション、暗号キーを加えた情報をXMPPログイン情報取得応答<D−0−1R>として被制御機器20Aに送信する(図11:ステップS1107)。
被制御機器20Aは、ダイレクトアクセス管理サーバ40内のSOAPサーバ42からFullJID(D)、XMPPログインパスワード、暗号キー等を含むXMPPログイン情報取得応答<D−0−1R>を受信すると(図8:ステップS815)、FullJID(D)、暗号キーを記憶部21に保存し(ステップS815−1)、FullJID(D)、XMPPログインパスワードを含むXMPPログイン認証要求<D−0−2>を、ダイレクトアクセス管理サーバ40内のXMPPサーバ43に送信する(図8:ステップS816)。
ダイレクトアクセス管理サーバ40内のXMPPサーバ43は、被制御機器20AよりXMPPログイン認証要求<D−0−2>を受信すると(図11:ステップS1108)、このXMPPログイン認証要求<D−0−2>に含まれているFullJID(D)、XMPPログインパスワードおよびXMPPログインパスワードの有効期限のチェックを行い(図11:ステップS1109)、FullJID(D)が記憶部41に記憶されているものと一致しない、または、XMPPログインパスワードが記憶部41に記憶されているものと一致しない、または、XMPPログインパスワードの有効期限が切れている場合には、XMPPログイン失敗を示すエラーコードをXMPPログイン認証応答<D−0−2R>として被制御機器20に送信する(図11:ステップS1110)。また、FullJID(D)。XMPPログインパスワードおよび有効期限のチェックの結果がすべてOKならば、ダイレクトアクセス管理サーバ40内のXMPPサーバ43は、XMPPログイン許可を示すコードをXMPPログイン認証応答<D−0−2R>として被制御機器20Aに送信する(図11:ステップS1111)。
被制御機器20Aは、ダイレクトアクセス管理サーバ40よりXMPPログイン失敗を示すエラーコードをXMPPログイン認証応答<D−0−2R>として受信すると(図8:ステップS819)、ステップS814に戻って、再度XMPPログイン情報の取得要求を行う。すなわち、XMPPログインパスワードの有効期限が切れている可能性があるため、再度、XMPPログイン情報の取得要求処理を行う。また、ダイレクトアクセス管理サーバ40よりXMPPログイン許可を示すコードをXMPPログイン認証応答<D−0−2R>として受信すると(図8:ステップS818)、被制御機器20Aは、XMPPログイン処理が完了する。
なお、被制御機器20Aは、ダイレクトアクセス管理サーバ40内のSOAPサーバ42より、機器認証が必要であることを示すエラーコードをXMPPログイン情報取得応答<D−0−1R>として受信した場合には(図8:ステップS817)、自機が正常にダイレクトアクセス管理サーバ40に登録されていないか、もしくは、機器認証継続IDの有効期限が切れている可能性があるため、再度、自身に予め設定されている認証方式の情報および機器認証情報を含む機器認証要求<R−0>をダイレクトアクセス管理サーバ40内のSOAPサーバ42に送信して自身の機器認証をやりなおす(図8:ステップS802)。
上記のように、このネットワークシステムでは、ダイレクトアクセス管理サーバ40にて、被制御機器20がXMPPサーバ43にログインするために必要なXMPPログインID及びXMPPログインパスワードをそれぞれ生成し、被制御機器20へ配布している。ここで、XMPPログインIDにはFullJID(D)などが使用される。このFullJID(D)は、例えば図53に示すように、Bare JID部とResource部とで構成される。Bare JID部には被制御機器に割り当てられた被制御機器管理IDが用いられ、Resource部には機器認証情報から得た製品コード及びシリアルナンバーが用いられている。また、図54に示すように、Resource部には制御機器とサービスの組み合わせを識別するための制御機器・サービス管理IDを用いてもよい。
ところで、図8のステップS811で自動接続フラグがオンにセットすることにより、被制御機器20は次回の接続時、例えば被制御機器20の電源が一旦オフされ、その後に再投入された時、或いはXMPPサーバ43とのセッション切断後のセッション確立の時には、図8のステップS801の自動接続フラグのチェックの後、ステップS814のXMPPログイン情報取得要求<D−0−1>の送信から処理を開始する。すなわち、被制御機器20は再接続時には機器認証のための処理、制御機器10からの被制御機器登録用パスワードの取得、被制御機器登録のための処理をスキップしてXMPPログインのための処理に入る。これにより、被制御機器20Aは再接続時には、XMPPログインのための処理を行うだけで、XMPPサーバ43との間での接続セッションを確立することができる。
さて、被制御機器20Aは、ダイレクトアクセス管理サーバ40よりXMPPログイン許可を示すコードをXMPPログイン認証応答<D−0−2R>として受信した場合(図8:ステップS818)、自身が接続中のLANに接続されている他の被制御機器20の検索を開始する。
図12は被制御機器20による機器検出要求の送信側の処理と受信側の処理のフローチャートである。
ここでは被制御機器20Aを機器検出要求の送信側とし、被制御機器20Bを機器検出要求の受信側として説明する。
まず、機器検出要求の送信側である被制御機器20Aはナンス(nonce)をランダムに生成し、記憶部21に保存する(図12:ステップS1201)。ナンスとは、ハッシュを用いた認証で、なりすましを防ぐために使われる文字列または数字列である。次に、被制御機器20Aは、記憶部21に保存したナンスと、既に記憶部21に保存されている暗号キーとを用いて、既に記憶部21に保存されている自身のFullJID(D)を暗号化して保存する(図12:ステップS1202)。続いて、被制御機器20Aは、ナンスと暗号化されたFullJID(D)を含む機器検出要求<DM−0>を、自身が接続中のLANにおいて予め設定されているマルチキャストアドレスに宛て送信する(図12:ステップS1203)。
一方、機器検出要求の受信側である被制御機器20Bは、LANにマルチキャスト送信された機器検出要求<DM−0>を受信すると(図12:ステップS1211)、自身が既にXMPPログインしているかどうかを判断し(図12:ステップS1212)、XMPPログインしていなければ、機器検出要求の受信側としての処理を終了する。図9のAの部分は、被制御機器20Aからの機器検出要求<DM−0>を被制御機器20Bが受信した時点で被制御機器20BはXMPPログインしていない状態であったため、被制御機器20Aが被制御機器20Bからの応答を受けることができない場合を示している。
機器検出要求の送信側である被制御機器20Aは、一定時間待っても被制御機器20Bからの応答がなければ(ステップS1204)、機器検出要求の送信側としての処理を終了する。
ここまで被制御機器20Aが機器検出要求を送信する側となり、被制御機器20Bがその機器検出要求を受信する側であったが、被制御機器20BはXMPPログインした後、逆に機器検出要求を送信する側となり、被制御機器20Aが機器検出要求を受信する側となる。
この場合、図9のBの部分に示すように、被制御機器20Aが、既にXMPPログインしている場合には、被制御機器20Aは被制御機器20Bより受信した機器検出要求<DM−0>に含まれるナンスと記憶部21に保存されている暗号キーと用いて、機器検出要求<DM−0>に含まれている暗号化されたFullJID(D)を復号し、機器検出要求の送信元である被制御機器20BのFullJID(D)を取得する(図12:ステップS1213)。この後、被制御機器20Aは、取得した送信元である被制御機器20BのFullJID(D)を記憶部21に保存する(図12:ステップS1214)。この後、被制御機器20Aは、ナンスと記憶部21に保存された暗号キーとを用いて、記憶部21に保存された自身のFullJID(D)を暗号化し(図12:ステップS1215)、この暗号化されたFullJID(D)を機器検出応答<DM−0R>としてLANを通じて被制御機器20Bに送信する(図12:ステップS1216)。
機器検出要求の送信側である被制御機器20Bは、機器検出要求の受信側である被制御機器20Aより機器検出応答<DM−0R>を受信すると(図12:ステップS1205)、この機器検出応答<DM−0R>に含まれる暗号化されたFullJID(D)を、記憶部21に保存されたナンスと暗号キーと用いて復号し(図12:ステップS1206)、これを自身が接続中のLANに接続されている他の被制御機器20AのFullJID(D)として記憶部21に保存する(図12:ステップS1207)。
以上の処理により、同一LANに接続されている各被制御機器20A,20Bにそれぞれ、同一LANに接続され、かつXMPPログイン済みである他の被制御機器のFullJID(D)が保存される。
図13は各被制御機器20A,20Bが同一のLANを通じて接続されておらず、インターネットを介して接続されている場合の、被制御機器20のXMPPログインに関する情報の流れを示すシステム全体のシーケンス図である。この場合、各々の被制御機器20の機器検出要求<DM−0>は相手の被制御機器20に到達しないために、各被制御機器20A,20Bは相手の被制御機器のFullJID(D)を取得できないことになる。
以上で、制御機器10とこの制御機器10の制御対象としての被制御機器20A,20Bとを関連付けるための処理が完了する。
次に、制御機器10が被制御機器20からダイレクトアクセスによりコンテンツのデータを取得する際の具体的な処理に関して説明する。
[3.サービスサーバ30が被制御機器20からダイレクトアクセスによりコンテンツリストを取得する処理]
図14はサービスサーバ30が被制御機器20からダイレクトアクセスによりコンテンツリストを取得する処理に関するシステム全体のシーケンス図である。図15および図16は同コンテンツリスト取得処理時のインタフェース機能をまとめた図表である。図17は同コンテンツリスト取得処理時の制御機器10の動作を示すフローチャートである。図18、図19および図20は同コンテンツリスト取得処理時のサービスサーバ30の動作を示すフローチャートである。図11、図21および図22は同コンテンツリスト取得処理時のダイレクトアクセス管理サーバ40の動作を示すフローチャートである。図23および図24は同コンテンツリスト取得処理時の被制御機器20の動作を示すフローチャートである。
まず、制御機器10のユーザがコンテンツリストを取得するためのダイレクトアクセスの利用開始の指示を制御機器10に与えると(図17:ステップS1701)、制御機器10は自身に予め設定されているユーザ識別情報を含む被制御機器リスト取得要求<D−1>をサービスサーバ30に送信する(図17:ステップS1702)。
サービスサーバ30は、制御機器10より被制御機器リスト取得要求<D−1>を受信すると(図18:ステップS1801)、この被制御機器リスト取得要求<D−1>に含まれるユーザ識別情報に対応する制御機器・サービス管理IDが記憶部31に記憶されているかどうかを判定する(図18:ステップS1802)。ユーザ識別情報に対応する制御機器・サービス管理IDが記憶部31に記憶されていない場合、被制御機器の登録が必要であることを示すエラーコードを被制御機器リスト取得応答<D−3>として制御機器10に送信する(図18:ステップS1803)。
一方、被制御機器リスト取得要求<D−1>に含まれるユーザ識別情報に対応する制御機器・サービス管理IDが記憶部31に記憶されている場合、サービスサーバ30は、サービスを識別する情報であるサービスIDおよび制御機器・サービス管理IDを含む被制御機器リスト取得要求<D−2>をダイレクトアクセス管理サーバ40内のSOAPサーバ42に送信する(図18:ステップS1804)。
ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、サービスサーバ30からの被制御機器リスト取得要求<D−2>を受信すると(図11:ステップS1112)、この被制御機器リスト取得要求<D−2>に含まれるサービスIDと制御機器・サービス管理IDとの組み合わせがダイレクトアクセス管理サーバ40の記憶部41に記憶されているかどうかを判定し(図11:ステップS1113)、記憶されていない場合には、被制御機器の登録が必要であることを示すエラーコードを被制御機器リスト取得応答<D−2R>としてサービスサーバ30に送信する(図11:ステップS1114)。
サービスサーバ30は、ダイレクトアクセス管理サーバ40内のSOAPサーバ42から、上記のエラーコードを被制御機器リスト取得応答<D−2R>として受信した場合は(図18:ステップS1805)、そのエラーコードを被制御機器リスト取得応答<D−3>として制御機器10に送信する(図18:ステップS1806)。制御機器10は、サービスサーバ30よりエラーコードを被制御機器リスト取得応答<D−3>として受信した場合(図17:ステップS1703)、エラーコードに対応するメッセージを、表示部を通じてユーザに表示する(図17:ステップS1704)。
また、図11のステップS1113のチェックで、ダイレクトアクセス管理サーバ40内のSOAPサーバ42が、被制御機器リスト取得要求<D−2>に含まれるサービスIDと制御機器・サービス管理IDとの組み合わせがダイレクトアクセス管理サーバ40の記憶部41に記憶されていることを判定した場合には、記憶部41に記憶されている制御機器・サービス管理IDと被制御機器管理IDとの紐付け内容に従って、制御機器10から制御可能な被制御機器の被制御機器管理IDに対して改めて振り直した番号と被制御機器の機器認証情報に含まれる機器名称等からなる一覧を被制御機器リストとして生成し、この被制御機器リストを制御機器・サービス管理IDと対応付けて記憶部41に保存するとともに、この被制御機器リストを含む被制御機器リスト取得応答<D−2R>をサービスサーバ30に送信する(図11:ステップS1115)。
サービスサーバ30は、ダイレクトアクセス管理サーバ40内のSOAPサーバ42から被制御機器リストを含む被制御機器リスト取得応答<D−2R>を受信した場合は(図18:ステップS1807)、この被制御機器リストを含む被制御機器リスト取得応答<D−3>を制御機器10に送信する(図18:ステップS1808)。
制御機器10は、被制御機器リストを含む被制御機器リスト取得応答<D−3>を受信した場合(図17:ステップS1705)、その被制御機器リストに複数の被制御機器の番号が存在するかどうかを判定する(図17:ステップS1706)。複数の被制御機器の番号が存在する場合には、制御機器10は、その被制御機器リストの内容を表示部に表示して(図17:ステップS1707)、ユーザにその中から1つの被制御機器の番号を選択させ(図17:ステップS1708)、その選択された被制御機器の番号を記憶部11に保存する(図17:ステップS1709,S1710)。ここでは仮に「被制御機器20B」が選択されてその被制御機器20Bの番号が記憶部11に保存されたこととする。また、図17のステップS1706で、複数の被制御機器が存在しないことが判定された場合には、制御機器10は、その旨を示すエラーメッセージを、表示部を通じてユーザに表示する(図17:ステップS1711)。
次に、制御機器10は、被制御機器20Bに保存されたコンテンツのタイトル、時間、コンテンツIDを含むコンテンツリストを取得するために、記憶部11に記憶されているユーザ識別情報, 被制御機器の番号(ここでは被制御機器20Bの番号)と 検索条件を含むコンテンツリスト取得要求<D−4>をサービスサーバ30に送信する(図17:ステップS1712)。ここで、検索条件とは、ユーザが転送したいコンテンツを絞り込むためにユーザによって指定された条件である。
サービスサーバ30は、制御機器10からコンテンツリスト取得要求<D−4>を受信すると(図19:ステップS1909)、このコンテンツリスト取得要求<D−4>に含まれるユーザ識別情報, 被制御機器の番号, 検索条件を記憶部31に保存した後、サービスサーバ30が被制御機器20にダイレクトアクセスするときに利用可能なXMPPセッションIDが記憶部31に記憶されているか否かを調べる(図19:ステップS1910)。XMPPセッションIDが記憶されていない場合には、サービスサーバ30はそのXMPPセッションIDを取得するために、サービスID、制御機器・サービス管理ID、被制御機器の番号を含むXMPPログイン要求<D−5>をダイレクトアクセス管理サーバ40内のSOAPサーバ42に送信する(図19:ステップS1911)。
ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、サービスサーバ30からのXMPPログイン要求<D−5>を受信すると(図11:ステップS1116)、このXMPPログイン要求<D−5>に含まれるサービスID、制御機器・サービス管理ID、および被制御機器の番号の組み合わせが記憶部41に記憶されているかどうかを判定する(図11:ステップS1117)。記憶されていない場合、ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、対応するサービス対象の被制御機器の登録が必要であることを示すエラーコードをXMPPログイン応答<D−5R>としてサービスサーバ30に送信する(図11:ステップS1118)。この後、ダイレクトアクセス管理サーバ40の動作は終了となる。
サービスサーバ30は、ダイレクトアクセス管理サーバ40内のSOAPサーバ42より、対応するサービス対象の被制御機器の登録が必要であることを示すエラーコードをXMPPログイン応答<D−5R>として受信すると(図19:ステップS1912)、そのエラーコードをコンテンツリスト取得応答<D−4R>として制御機器10に送信する(図19:ステップS1913)。制御機器10は、このエラーコードをコンテンツリスト取得要求応答<D−4R>として受信すると(図17:ステップS1713)、サービス対象の被制御機器20の登録が必要であることを示すエラーメッセージを、表示部を通じてユーザに表示する(図17:ステップS1714)。
一方、ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、図11:ステップS1117の判定で、サービスサーバ30からのXMPPログイン要求<D−5>に含まれるサービスID、制御機器・サービス管理ID、および被制御機器の番号の組み合わせが記憶部41に記憶されていることを判定した場合には、サービス対象の被制御機器20が登録済みであることを示すので、サービスサーバ30がXMPPサーバ43と被制御機器20Bとの間に確立されている常時接続セッションを利用して被制御機器20Bにダイレクトアクセスするために必要なXMPPセッションIDを生成し、このXMPPセッションIDを、XMPPログイン要求<D−5>に含まれるサービスID、制御機器・サービス管理ID、被制御機器の番号と対応付けて記憶部41に保存する(図11:ステップS1119)。そしてサービスサーバ30は、このXMPPセッションIDを含むXMPPログイン応答<D−5R>をサービスサーバ30に送信する(図11:ステップS1120)。これにより、サービスサーバ30がXMPPサーバ43と被制御機器20Bとの間に確立されている常時接続セッションを利用して被制御機器20Bに、サービスサーバ30がXMPPサーバ43と被制御機器20Bとの間に確立されている常時接続セッションを利用して被制御機器20BにダイレクトアクセスするためのXMPPログインが完了する。
サービスサーバ30は、ダイレクトアクセス管理サーバ40内のSOAPサーバ42からXMPPセッションIDを含むXMPPログイン応答<D−5R>を受信すると(図19:ステップS1914)、このXMPPログイン応答<D−5R>に含まれるXMPPセッションIDをサービスID、制御機器・サービス管理ID、被制御機器の番号と対応付けて記憶部31に保存する(図19:ステップS1915)。
XMPPセッションIDの保存後、または、図19:ステップS1910で利用可能なXMPPセッションIDが既に記憶部31に記憶されていることが判定された場合、サービスサーバ30は、サービスID、制御機器・サービス管理ID、XMPPセッションID、サービスURN(Uniform Resource Name)を含むダイレクトアクセス開始要求<D−6>をダイレクトアクセス管理サーバ40内のSOAPサーバ42に送信する(図19:ステップS1916)。ここで、サービスURNとは、被制御機器20が提供可能サービス(アプリケーション)の一つを指定する情報である。この例では、コンテンツリスト取得サービスとしている。
ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、サービスサーバ30からのダイレクトアクセス開始要求<D−6>を受信すると(図21:ステップS2121)、このダイレクトアクセス開始要求<D−6>に含まれるサービスIDと制御機器・サービス管理IDとの組み合わせが記憶部41に記憶されているかどうかを判定し(図21:ステップS2122)、記憶されていない場合には、対応するサービス対象の被制御機器の登録が必要であることを示すエラーコードをダイレクトアクセス開始応答<D−6R>としてサービスサーバ30に送信する(図21:ステップS2123)。
サービスサーバ30は、ダイレクトアクセス管理サーバ40内のSOAPサーバ42より、対応するサービス対象の被制御機器の登録が必要であることを示すエラーコードをダイレクトアクセス開始応答<D−6R>として受信した場合には(図19:ステップS1917)、そのエラーコードをコンテンツリスト取得応答<D−4R>として制御機器10に送信する(図19:ステップS1918)。制御機器10が、対応するサービス対象の被制御機器の登録が必要であることを示すエラーコードをコンテンツリスト視聴要求応答<D−4R>として受信した場合の動作は既に説明したとおりである。
また、ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、図21:ステップS2122の判定で、ダイレクトアクセス開始要求<D−6>に含まれるサービスIDと制御機器・サービス管理IDとの組み合わせが記憶部41に記憶されていることを判定した場合には、そのダイレクトアクセス開始要求<D−6>に含まれるXMPPセッションIDのチェックを行う。このチェックは、ダイレクトアクセス開始要求<D−6>に含まれるXMPPセッションID、サービスID、制御機器・サービス管理IDの組み合わせが記憶部41に登録されているかどうかを判定することによって行われる(図21:ステップS2124)。このチェックでNGが判定された場合、ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、不正なXMPPセッションIDが使用されたことを示すエラーコードをダイレクトアクセス開始応答<D−6R>としてサービスサーバ30に送信し(図21:ステップS2125)、処理を終了する。
サービスサーバ30は、ダイレクトアクセス管理サーバ40内のSOAPサーバ42より、不正なXMPPセッションIDが使用されたことを示すエラーコードをダイレクトアクセス開始応答<D−6R>として受信した場合(図19:ステップS1919)、XMPPログイン要求<D−5>をダイレクトアクセス管理サーバ40内のXMPPサーバ43に送信するところから処理をやりなおす。
図21:ステップS2124のXMPPセッションIDのチェックで、ダイレクトアクセス管理サーバ40内のSOAPサーバ42がOKを判定した場合には、サービスサーバ30より受信したダイレクトアクセス開始要求<D−6>からサービスURN(コンテンツリスト取得)を取り出し、これを含むダイレクトアクセス用URI取得要求<D−7>をダイレクトアクセス管理サーバ40内のXMPPサーバ43と被制御機器20との間で確立されている常時接続セッションを通じて被制御機器20に送信する(図21:ステップS2126)。
被制御機器20Bは、ダイレクトアクセス用URI取得要求<D−7>をダイレクトアクセス管理サーバ40内のXMPPサーバ43より受信すると(図23:ステップS2301)、ダイレクトアクセス用のローカルポートの割り当てを行う(図23:ステップS2302)。次に、被制御機器20Bは、被制御機器20Bにあらかじめ割り当てられたローカルIPアドレスおよびダイレクトアクセス用のローカルポートのポート番号を含む、ダイレクトアクセス用ポートのNAT(Network Address Translation)設定要求<D−8>をルータ50に送信して、ローカルIPアドレス及びポート番号に、インターネットからアクセス可能なグローバルIPアドレスおよびポート番号をマッピングすることをルータ50に要求する(図23:ステップS2303)。たとえば、被制御機器20Bは、ダイレクトアクセス用URIの割り当てを行うために、ルータ50にUPnP IGD DCP(Device Control Protocol)などによってアクセスし、インターネットからアクセス可能なグローバルIPアドレスおよびポート番号をあらかじめ確保しておく。
被制御機器20Bは、図23:ステップS2303のダイレクトアクセス用ポートのNAT設定要求<D−8>に対して、ルータ50より、被制御機器20BのローカルIPアドレス及びポート番号に対応付けられたグローバルIPアドレスおよびポート番号をNAT設定応答<D−8R>として受信した場合には(図23:ステップS2304)、これらのグローバルIPアドレスおよびポート番号を用いてダイレクトアクセス用URIを作成し、このダイレクトアクセス用URIをダイレクトアクセス用URI取得応答<D−7R>としてダイレクトアクセス管理サーバ40に送信する(図23:ステップS2305)。ダイレクトアクセス用URIとは、サービスサーバ30または携帯電話10からネットワークを通じてその被制御機器に直接アクセスするためのURIである。ここでは被制御機器20BのURIがダイレクトアクセス用URIとなる。
ダイレクトアクセス管理サーバ40のSOAPサーバ42は、XMPPサーバ43と被制御機器20Bとの間で確立されている常時接続セッションを通じてダイレクトアクセス用URIリストをダイレクトアクセス用URI取得応答<D−7R>として受信すると(図21:ステップS2127)、そのダイレクトアクセス用URIをダイレクトアクセス開始応答<D−6R>としてサービスサーバ30に送信する(図21:ステップS2128)。
サービスサーバ30は、ダイレクトアクセス管理サーバ40のSOAPサーバ42よりダイレクトアクセス用URIリストをダイレクトアクセス開始応答<D−6R>として受信すると(図19:ステップS1920)、制御機器10からのコンテンツリスト取得要求<D−4>の受信時に記憶部31に保存された検索条件を含むコンテンツリスト取得要求<D−19>を、ダイレクトアクセス開始応答<D−6R>に含まれるダイレクトアクセス用URIをもとに被制御機器20Bに送信する(図19:ステップS1921)。
被制御機器20Bは、サービスサーバ30よりコンテンツリスト取得要求<D−19>を受信すると(図23:ステップS2306)、このコンテンツリスト取得要求<D−19>に含まれるダイレクトアクセス用URIの正当性チェックを行い(図23:ステップS2307)、不正なURIであるなら、不正なURIであることを示すエラーコードをコンテンツリスト取得要求<D−19R>としてサービスサーバ30に送信する(図23:ステップS2309)。正当なURIである場合は、被制御機器20Bは、そのコンテンツリスト取得要求<D−19>に含まれる検索条件をもとに記憶部21から該当するコンテンツリストを読み出し、このコンテンツリストをコンテンツリスト取得応答<D−19R>として、ダイレクトアクセスセッションを通じてサービスサーバ30に送信する(図23:ステップS2308)。
なお、ダイレクトアクセス用URIの正当性をチェックする方法としては、例えば、ダイレクトアクセス用URIの発行時に容易に真似のできない乱数を付加し、この乱数がコンテンツリスト取得要求<D−19>のダイレクトアクセス用URIに含まれているかどうかをチェックする方法などがある。
サービスサーバ30は、コンテンツリストを含むコンテンツリスト取得応答<D−19R>を受信すると(図19:ステップS1922)、そのコンテンツリストをコンテンツリスト取得応答<D−4R>として制御機器10に送信する(図19:ステップS1923)。また、サービスサーバ30は、不正URIのエラーコードをコンテンツリスト取得応答<D−19R>として受信した場合には(図19:ステップS1924)、そのエラーコードをコンテンツリスト取得応答<D−4R>として制御機器10に送信する(図19:ステップS1925)。
この後、サービスサーバ30は、サービスID、制御機器・サービス管理ID、XMPPセッションID、サービスURN、ダイレクトアクセス用URIを含むダイレクトアクセス終了通知<C−2>をダイレクトアクセス管理サーバ40のSOAPサーバ42に送信する(図20:ステップS2026)。ダイレクトアクセス管理サーバ40のSOAPサーバ42は、サービスサーバ30からのダイレクトアクセス終了通知<C−2>を受信すると(図22:ステップS2229)、その中のサービスURNとダイレクトアクセス用URIを含むダイレクトアクセス終了通知<C−3>をXMPPサーバ43と被制御機器20との間で確立されている常時接続セッションを通じて被制御機器20Bに送信する(図22:ステップS2230)。
被制御機器20Bは、ダイレクトアクセス管理サーバ40からのダイレクトアクセス終了通知<C−3>を受信すると(図24:ステップS2410)、これに含まれるダイレクトアクセス用URIに関するグローバルIPアドレスおよびポート番号を含むダイレクトアクセス用ポートをクローズ<C−4>する(図24:ステップS2411)。
一方、ダイレクトアクセス管理サーバ40のSOAPサーバ42は、ダイレクトアクセス終了通知<C−3>を送信後、ダイレクトアクセス終了通知応答<C−2R>をサービスサーバ30に送信する(図22:ステップS2231)。サービスサーバ30はダイレクトアクセス終了通知応答<C−2R>を受信すると(図20:ステップS2027)、サービスID、制御機器・サービス管理ID、XMPPセッションIDを含むXMPPログアウト通知<C−5>をダイレクトアクセス管理サーバ40のSOAPサーバ42に送信する(図20:ステップS2028)。
ダイレクトアクセス管理サーバ40のSOAPサーバ42は、サービスサーバ30からのXMPPログアウト通知<C−5>を受信すると(図22:ステップS2232)、当該XMPPセッションIDに関するすべてのサービスURNのダイレクトアクセスの終了通知を被制御機器20Bに発行したかどうかを判断する(図22:ステップS2233)。ダイレクトアクセスの終了を通知すべきサービスURNが残っている場合には、ダイレクトアクセス管理サーバ40のSOAPサーバ42は、サービスURNのみが指定された(ダイレクトアクセス用URIの指定がされていない)ダイレクトアクセス終了通知<C−3>をXMPPサーバ43と被制御機器20Bとの間で確立されている常時接続セッションを通じて被制御機器20Bへ送信し(図22:ステップS2234)、全てのダイレクトアクセス終了通知を発行したら、XMPPログアウト通知応答<C−5R>をサービスサーバ30に送信する(図22:ステップS2235)。この後、ダイレクトアクセス管理サーバ40のSOAPサーバ42は、記憶部41に保存されているXMPPセッションIDを消去する(図22:ステップS2236)。
サービスサーバ30は、ダイレクトアクセス管理サーバ40のSOAPサーバ42からのXMPPログアウト通知応答<C−5R>を受信すると(ステップS2029)、サービスサーバ30が被制御機器20Bにダイレクトアクセスするために必要なXMPPセッションIDのエントリを記憶部31から消去する(ステップS2030)。
被制御機器20Bは、ダイレクトアクセス管理サーバ40からダイレクトアクセス用URIの指定されていないダイレクトアクセス終了通知<C−3>を受信すると(図24:ステップS2412)、このダイレクトアクセス終了通知<C−3>で指定されているサービスURNに関するすべてのダイレクトアクセス用ポートをクローズする(図24:ステップS2413、S2414)。
以上が、制御機器10がサービスサーバ30を介して、被制御機器20Bに蓄積されているコンテンツのリストをダイレクトアクセスによって取得する場合の動作の説明である。
[4.コンテンツデータのコピー処理(その1)]
次に、被制御機器20A,20Bが同一のLANに接続されている場合に、制御機器10からの指示により被制御機器20Bに記録されているコンテンツデータを被制御機器20Aにコピーする場合の動作を説明する。
図25はコンテンツデータのコピー処理(その1)に関するシステム全体のシーケンス図である。図26から図29はコンテンツデータのコピー処理に関するインタフェース機能をまとめた図表である。図30および図31はコンテンツデータのコピー処理に関する制御機器10の動作を示すフローチャートである。図32から図34はコンテンツデータのコピー処理に関するサービスサーバ30の動作を示すフローチャートである。図35から図37はコンテンツデータのコピー処理に関するダイレクトアクセス管理サーバ40の動作を示すフローチャートである。図38はコンテンツデータのコピー処理に関する被制御機器20の動作を示すフローチャートである。
まず、制御機器10のユーザより、ダイレクトアクセスの利用開始の指示が制御機器10に与えられると(図30:ステップS3001)、制御機器10は、自身に予め設定されているユーザ識別情報、2つの被制御機器20A,20Bの番号(A),(B)、ダイレクトアクセス指示内容を含むダイレクトアクセス指示<DM−1>をサービスサーバ30に送信する(図30:ステップS3002)。ここで、2つの被制御機器20A,20Bの番号とダイレクトアクセス指示内容は制御機器10のユーザより指示されたものである。ダイレクトアクセス指示内容には、コンテンツデータのコピーのサービスを指定するサービスURN、指定された2つの被制御機器20A,20Bのうちどちらをコピー元とし、どちらをコピー先とするかを指定する情報、コピー元のコンテンツデータの置き場所を示す情報などが含まれている。ここでは、仮に被制御機器20Aをコピー先、被制御機器20Bをコピー元とする。
サービスサーバ30は、制御機器10からのダイレクトアクセス指示<DM−1>を受信すると(図32:ステップS3201)、この被制御機器リスト取得要求<DM−1>に含まれるユーザ識別情報に対応する制御機器・サービス管理IDが記憶部31に記憶されているかどうかを判定する(図32:ステップS3202)。ユーザ識別情報に対応する制御機器・サービス管理IDが記憶部31に記憶されていない場合、被制御機器の登録が必要であることを示すエラーコードをダイレクトアクセス指示応答<DM−1R>として制御機器10に送信する(図32:ステップS3203)。
制御機器10は、サービスサーバ30よりエラーコードをダイレクトアクセス指示応答<DM−1R>として受信した場合(図30:ステップS3003)、エラーコードに対応するメッセージを、表示部を通じてユーザに表示する(図30:ステップS3004)。
一方、図32:ステップS3202のチェックで、被制御機器リスト取得要求<DM−1>に含まれるユーザ識別情報に対応する制御機器・サービス管理IDが記憶部31に記憶されている場合、サービスサーバ30は、サービスを識別する情報であるサービスID、制御機器・サービス管理ID、2つの被制御機器20A,20Bの番号(A),(B)、ダイレクトアクセス指示内容を含むダイレクトアクセス指示<DM−2>をダイレクトアクセス管理サーバ40内のSOAPサーバ42に送信する(図32:ステップS3204)。
ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、サービスサーバ30からのダイレクトアクセス指示要求<DM−2>を受信すると(図35:ステップS3501)、このダイレクトアクセス指示<DM−2>に含まれるサービスID、制御機器・サービス管理IDおよび被制御機器20Aの番号(A)の組み合わせ、同じくサービスID、制御機器・サービス管理IDおよび被制御機器20Bの番号(B)の組み合わせがともに記憶部41に記憶されているかどうかを判定し(図35:ステップS3502)、記憶されていない場合には、被制御機器の登録が必要であることを示すエラーコードをダイレクトアクセス指示応答<DM−2R>としてサービスサーバ30に送信する(図35:ステップS3503)。
サービスサーバ30は、ダイレクトアクセス管理サーバ40内のSOAPサーバ42から、上記のエラーコードをダイレクトアクセス指示応答<DM−2R>として受信すると(図32:ステップS3205)、そのエラーコードをダイレクトアクセス指示応答<DM−1R>として制御機器10に送信する(図32:ステップS3206)。
制御機器10は、サービスサーバ30よりエラーコードをダイレクトアクセス指示応答<DM−1R>として受信した場合(図30:ステップS3003)、そのエラーコードに対応するメッセージを、表示部を通じてユーザに表示する(図30:ステップS3004)。
また、図35:ステップS3502のチェックの結果がOKである場合、ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、ダイレクトアクセス指示要求<DM−2>に含まれる制御機器・サービス管理IDと被制御機器20Aの番号(A)をもとに記憶部41から、被制御機器20Aの番号(A)に対応する被制御機器管理IDを検索する(図35:ステップS3504)。続いて、ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、サービスサーバ30が被制御機器20Aにダイレクトアクセスするときに利用可能なXMPPセッションIDを生成し、このXMPPセッションIDを、ダイレクトアクセス指示要求<DM−2>に含まれるサービスID、制御機器・サービス管理ID、被制御機器20Aの番号(A)に対応する被制御機器管理IDと対応付けて記憶部41に保存する(図35:ステップS3505)。
次に、ダイレクトアクセス管理サーバ40内のSOAPサーバ42はトランザクションIDを生成し、このトランザクションIDをダイレクトアクセス指示要求<DM−2>に含まれるサービスID、制御機器・サービス管理ID、被制御機器20Aの番号(A)に対応する被制御機器管理IDと対応付けて記憶部41に保存する(図35:ステップS3506)。
続いて、ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、ダイレクトアクセス指示要求<DM−2>に含まれる制御機器・サービス管理IDと被制御機器の番号(B)をもとに記憶部41から、被制御機器20BがXMPPサーバ43にログインするために必要なXMPPログインIDであるFullJID(D)を検索する(図35:ステップS3507)。
そして、ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、ダイレクトアクセス指示内容、トランザクションID、被制御機器20BのFullJID(D)を含むダイレクトアクセス指示要求<DM−3>を、XMPPサーバ43と被制御機器20Aとの間で確立されている常時接続セッションを通じて被制御機器20Aに送信する(図35:ステップS3508)。
被制御機器20Aは、ダイレクトアクセス指示要求<DM−3>を受信すると(図38:ステップS3801)、これに含まれるトランザクションIDを記憶部21に保存する(図38:ステップS3802)。続いて、被制御機器20Aは、ダイレクトアクセス指示要求<DM−3>に含まれる被制御機器20BのFullJID(D)が、同一LAN上の他の被制御機器のFullJID(D)として既に記憶部21に保存されている被制御機器20BのFullJID(D)と一致するかどうかを判定する(図38:ステップS3803)。
ここで、2つの被制御機器20A,20Bが同一のLANを通じて接続されているならば2つのFullJID(D)は一致し、同一のLANを通じて接続されていない場合、つまり2つの被制御機器20A,20Bがインターネットを通じて接続されている場合には一致しないことになる。今回は2つの被制御機器20A,20Bが同一のLANを通じて接続されている場合を前提して説明を行い、不一致の場合の動作説明は後で行うこととする。
被制御機器20Aは、ダイレクトアクセス指示要求<DM−3>に含まれる被制御機器20BのFullJID(D)と記憶部21に保存されている被制御機器20BのFullJID(D)とが一致することを判定した場合、2つの被制御機器20A,20B間でのアクセスが同一LANを介して行われることを示すアクセス経路情報を含むダイレクトアクセス指示応答<DM−3R>を、XMPPサーバ43と被制御機器20Aとの間で確立されている常時接続セッションを通じてダイレクトアクセス管理サーバ40のSOAPサーバ42に送信する(図38:ステップS3804)。
ダイレクトアクセス指示応答<DM−3R>には、アクセス経路情報のみならず、被制御機器20AのグローバルIPアドレスとポート番号、OTP(ワンタイムパスワード)が含まれる。ただし、アクセス経路情報が同一LANを示す値である場合には、被制御機器20AのグローバルIPアドレスとポート番号、OTP(ワンタイムパスワード)にはそれぞれNULL値が設定される。アクセス経路情報がインターネットを示す値であって、かつ、被制御機器20Aがルータ50よりグローバルIPアドレスおよびポート番号をNAT設定応答<D−8R>として取得することができた場合には、グローバルIPアドレスとポート番号、OTP(ワンタイムパスワード)として有意な値が設定される。また、アクセス経路情報がインターネットを示す値であっても、被制御機器20Aがルータ50よりグローバルIPアドレスおよびポート番号をNAT設定応答<D−8R>として取得できなかった場合にも、グローバルIPアドレスとポート番号、OTP(ワンタイムパスワード)にはそれぞれNULL値が設定される。
ダイレクトアクセス管理サーバ40のSOAPサーバ42は、同一LANのアクセス経路情報を含むダイレクトアクセス指示応答<DM−3R>を受信した場合(図36:ステップS3601)、このダイレクトアクセス指示応答<DM−3R>に含まれるアクセス経路情報を確認し(図36:ステップS3602)、このアクセス経路情報が同一LANである場合には、記憶部41に保存されているトランザクションIDとダイレクトアクセス指示応答<DM−3R>に含まれるアクセス経路情報とを含むダイレクトアクセス指示応答<DM−2R>をサービスサーバ30に送信する(図36:ステップS3603)。
サービスサーバ30は、トランザクションIDとアクセス経路情報を含むダイレクトアクセス指示応答<DM−2R>を受信すると(図32:ステップS3207)、このダイレクトアクセス指示応答<DM−2R>に含まれるトランザクションIDと「未完了」のステータスとを記憶部31に対応付けて保存する(図32:ステップS3208)。この後、サービスサーバ30は、そのトランザクションIDを含むダイレクトアクセス指示応答<DM−1R>を制御機器10に送信する(図32:ステップS3209)。
制御機器10は、サービスサーバ30からのトランザクションIDを含むダイレクトアクセス指示応答<DM−1R>を受信すると(図30:ステップS3005)、そのトランザクションIDを記憶部11に保存し、コンテンツデータのコピー指示の完了を表示部を通じてユーザに表示する(図30:ステップS3006)。
一方、ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、トランザクションIDと同一LANのアクセス経路情報とを含むダイレクトアクセス指示応答<DM−2R>をサービスサーバ30に送信した後、サービスサーバ30が被制御機器20Aにダイレクトアクセスするときに利用可能なXMPPセッションIDを含むXMPPログアウト要求<C−5>をXMPPサーバ43に送信し、その応答<C−5R>を受信した後、記憶部41に保存されている、そのXMPPセッションIDを消去する(図36:ステップS3604)。これによりサービスサーバ30のXMPPログアウトが完了する。
一方、被制御機器20Aは、アクセス経路情報を含むダイレクトアクセス指示応答<DM−3R>をダイレクトアクセス管理サーバ40のSOAPサーバ42に送信した後、ダイレクトアクセス指示要求<DM−3>に含まれるダイレクトアクセス指示内容のサービスURN(コンテンツデータコピー)を含むURI取得要求<DM−4>を、LANを通じて被制御機器20Bに送信し(図38:ステップS3805)、被制御機器20BのローカルURIをURI取得応答<DM−4R>として受信する(図38:ステップS3806)。続いて、被制御機器20Aは、そのURI取得応答<DM−4R>として受信したローカルURIをもとに、ダイレクトアクセス指示要求<DM−3>に含まれるダイレクトアクセス指示内容内のコンテンツパスを含むダイレクトアクセス要求<DM−5>を被制御機器20Bに送信する(図38:ステップS3807)。コンテンツパスとは、そのコンテンツデータが置かれた場所を示す文字列情報である。
被制御機器20Bは被制御機器20Aよりコンテンツパスを含むダイレクトアクセス要求<DM−5>を受信すると(図38:ステップS3901)、このダイレクトアクセス要求<DM−5>に含まれるコンテンツパスに対応するコンテンツデータが存在するかどうかをチェックし(図38:ステップS3902)、存在しない場合にはこの旨を示すエラーコードをダイレクトアクセス応答<DM−5R>として被制御機器20Aに送信する(図38:ステップS3903)。被制御機器20Aは、被制御機器20Bよりエラーコードをダイレクトアクセス応答<DM−5R>として受信した場合には(図38:ステップS3808)、エラーを示すステータスと、記憶部21に保存されている機器認証継続IDおよびトランザクションIDを含むステータス通知<DM−6>をダイレクトアクセス管理サーバ40内のSOAPサーバ42に送信する(図38:ステップS3810)。
また、図38:ステップS3902で、コンテンツパスに対応するコンテンツデータが存在するならば、被制御機器20Bはそのコンテンツデータを被制御機器20Aにコピーさせるためにダイレクトアクセス応答<DM−5R>としてLANを通じて被制御機器20Aに送信する(図38:ステップS3904)。被制御機器20Aは、LANを通じて被制御機器20Bよりコンテンツデータをダイレクトアクセス応答<DM−5R>として受信する(図38:ステップS3809)。これにより、被制御機器20Bから被制御機器20Aへのコンテンツデータのコピーが行われる。被制御機器20Aは、コンテンツデータのコピー完了後、「完了(成功)」を示すステータスと、記憶部21に保存されている機器認証継続IDおよびトランザクションIDを含むステータス通知<DM−6>をダイレクトアクセス管理サーバ40内のSOAPサーバ42に送信する(図38:ステップS3810)。
ダイレクトアクセス管理サーバ40のSOAPサーバ42は、被制御機器20Aからのステータス通知<DM−6>を受信すると(図37:ステップS3701)、このステータス通知<DM−6>に含まれる機器認証継続IDと機器認証継続IDの有効期限のチェックを行う(図37:ステップS3702)。このチェックでステータス通知<DM−6>に含まれている機器認証継続IDが、ダイレクトアクセス管理サーバ40の記憶部41に記憶されているものと一致しない場合、もしくは、有効期限が切れている場合には、被制御機器20Aが正常にダイレクトアクセス管理サーバ40に登録されていないか、もしくは、過去に登録されていたが登録時の機器認証継続IDの有効期限が切れているのかであるため、機器認証が必要であることを示すエラーコードをステータス通知応答<DM−6R>として被制御機器20Aに送信する(図37:ステップS3703)。
また、被制御機器20Aは、ダイレクトアクセス管理サーバ40のSOAPサーバ42より機器認証が必要であることを示すエラーコードをステータス通知応答<DM−6R>として受信すると(図38:ステップS3811)、自身に予め設定されている認証方式の情報および機器認証情報を含む機器認証要求<R−0>をダイレクトアクセス管理サーバ40内のSOAPサーバ42に送信して自身の機器認証をやりなおし(図38:ステップS3812,S3813,S3814)、自身の機器認証の完了後、ステップS3810に戻って、再度、「完了(成功)」を示すステータスと、記憶部21に保存されている機器認証継続IDおよびトランザクションIDを含むステータス通知<DM−6>をダイレクトアクセス管理サーバ40内のSOAPサーバ42に送信する。
また、ダイレクトアクセス管理サーバ40のSOAPサーバ42は、図37:ステップS3702で、ステータス通知<DM−6>に含まれる機器認証継続IDが記憶部41に記憶されており、かつその機器認証継続IDの有効期限が切れていない場合、ステータス通知<DM−6>に含まれるトランザクションIDが記憶部41に保存しているトランザクションIDと一致するかどうかを調べる(図37:ステップS3704)。各トランザクションIDが一致しない場合には、ダイレクトアクセス管理サーバ40のSOAPサーバ42は、不正なトランザクションIDであることを示すエラーコードをステータス通知応答<DM−6R>として被制御機器20Aに送信する(図37:ステップS3705)。
ダイレクトアクセス管理サーバ40のSOAPサーバ42は、図37:ステップS3704で、ステータス通知<DM−6>に含まれるトランザクションIDが記憶部41に保存しているトランザクションIDと一致することを判定した場合には、記憶部41から、ステータス通知<DM−6>に含まれる機器認証継続IDに対応付けて保存されている被制御機器管理IDを検索し(図37:ステップS3706)、この被制御機器管理IDが、ステータス通知<DM−6>に含まれるトランザクションIDに対応付けて記憶部41に保存されている被制御機器管理IDと一致するかどうかを判定する(図37:ステップS3707)。各被制御機器管理IDが不一致ならば、ダイレクトアクセス管理サーバ40のSOAPサーバ42は、不正なトランザクションIDであることを示すエラーコードをステータス通知応答<DM−6R>として被制御機器20Aに送信する(図37:ステップS3705)。
ダイレクトアクセス管理サーバ40のSOAPサーバ42は、図37:ステップS3707のチェックで、各被制御機器管理IDが一致することを判定したならば、ステータス通知<DM−6>に含まれるトランザクションIDが正当なものとみなし、記憶部41から、当該トランザクションIDに対応するサービスID、制御機器・サービス管理IDを検索する(図37:ステップS3708)。次に、ダイレクトアクセス管理サーバ40のSOAPサーバ42は、ステータス通知<DM−6>に含まれるステータスの内容を調べ(図37:ステップS3709、その内容が「完了(成功)」または「完了(失敗)」であれば、記憶部41から該当するトランザクションIDを削除する(図37:ステップS3710)。ステータス通知<DM−6>に含まれるステータスの内容が「完了(成功)」または「完了(失敗)」以外の場合、または、ステップS3710でトランザクションIDを削除した後、ダイレクトアクセス管理サーバ40のSOAPサーバ42は、ステップS3708で検索したサービスIDから該当するサービスサーバ30のURIを特定する(図37:ステップS3711)。ここで、ダイレクトアクセス管理サーバ40の記憶部41には、予め、サービスサーバ毎にサービスIDとURIとが対応付けて記憶されているので、ステップS3708で検索したサービスIDから該当するサービスサーバ30のURIを特定することができる。
この後、ダイレクトアクセス管理サーバ40のSOAPサーバ42は、ステップS3711で特定したURIをもとに、被制御機器20Aより取得したステータス通知<DM−6>内のトランザクションIDとステータスの内容を含むステータス通知<DM−7>をサービスサーバ30に送信する(図37:ステップS3712)。
サービスサーバ30は、ダイレクトアクセス管理サーバ40のSOAPサーバ42からのステータス通知<DM−7>を受信すると(図33:ステップS3301)、このステータス通知<DM−7>に含まれるトランザクションIDが記憶部31に保存されているトランザクションIDと一致するかどうかを調べ(図33:ステップS3302)、不一致ならば、不正なトランザクションIDであることを示すエラーコードをステータス通知応答<DM−7R>としてダイレクトアクセス管理サーバ40のSOAPサーバ42に送信する(図33:ステップS3303)。
ダイレクトアクセス管理サーバ40のSOAPサーバ42は、サービスサーバ30から不正なトランザクションIDであることを示すエラーコードをステータス通知応答<DM−7R>を受信すると(図37:ステップS3713)、このエラーコードのステータス通知応答<DM−6R>を被制御機器20Aに送信する(図37:ステップS3714)。
また、サービスサーバ30は、図33:ステップS3302で、ステータス通知<DM−7>に含まれるトランザクションIDが記憶部31に保存されているトランザクションIDと一致することを判断した場合には、記憶部31に保存しているトランザクションIDに対応するステータスの内容を、ステータス通知<DM−7>に含まれるステータスの内容で更新する(図33:ステップS3304)。すなわち、この例では、ステータス通知<DM−7>に含まれるステータスの内容は「完了(成功)」であることから、記憶部31に保存しているトランザクションIDに対応するステータスの内容も「完了(成功)」となる。この後、サービスサーバ30は、ステータスの更新を示すコードをステータス通知応答<DM−7R>としてダイレクトアクセス管理サーバ40のSOAPサーバ42に送信する(図33:ステップS3305)。
ダイレクトアクセス管理サーバ40のSOAPサーバ42は、サービスサーバ30からステータスの更新を示すコードをステータス通知応答<DM−7R>として受信すると(図37:ステップS3715)、ステータスの更新を示すコードをステータス通知応答<DM−6R>として、被制御機器20Aに送信する(図37:ステップS3716)。被制御機器20Aは、ダイレクトアクセス管理サーバ40のSOAPサーバ42から「完了(成功)」を示すコードをステータス通知応答<DM−6R>として受信すると(図38:ステップS3815)、記憶部21に保存されているトランザクションIDを消去する(図38:ステップS3816)。これによりコンテンツデータのコピー処理に関する一回のトランザクションが完了となる。
ところで、制御機器10は、任意のタイミングで、サービスサーバ30に対して、ダイレクトアクセス指示内容のステータスを確認することができる。
すなわち、制御機器10はユーザよりステータス確認の指示が与えられると(図31:ステップS3101)、自身に予め設定されているユーザ識別情報と、記憶部11に保存されているトランザクションIDを含むステータス確認<DM−8>をサービスサーバ30に送信する(図31:ステップS3102)。サービスサーバ30は、制御機器10よりステータス確認<DM−8>を受信すると(図34:ステップS3401)、このステータス確認<DM−8>に含まれるユーザ識別情報に対応する制御機器・サービス管理IDが記憶部31に存在するかどうかを判定する(図34:ステップS3402)。対応する制御機器・サービス管理IDが記憶部31に存在しない場合、サービスサーバ30は、被制御機器の登録が必要であることを示すエラーコードをステータス確認応答<DM−8R>として制御機器10に送信する(図34:ステップS3403)。制御機器10は、サービスサーバ30より被制御機器の登録が必要であることを示すエラーコードをステータス確認応答<DM−8R>として受信すると(図31:ステップS3103)、エラーコードに対応するメッセージを、表示部を通じてユーザに表示する(図31:ステップS3104)。
また、サービスサーバ30は、図34:ステップS3402で、対応する制御機器・サービス管理IDが記憶部31に存在することを判定した場合には、ステータス確認<DM−8>に含まれるトランザクションIDが記憶部31に保存されているトランザクションIDと一致するかどうかを判定する(図34:ステップS3404)。各トランザクションIDが不一致である場合には、不正なトランザクションIDであることを示すエラーコードをステータス確認応答<DM−8R>として制御機器10に送信する(図34:ステップS3405)。制御機器10は、サービスサーバ30より不正なトランザクションIDであることを示すエラーコードをステータス確認応答<DM−8R>として受信すると(図31:ステップS3103)、このエラーコードに対応するエラーメッセージを表示部を通じてユーザに通知する(図31:ステップS3104)。
さらに、サービスサーバ30は、図34:ステップS3404で、ステータス確認<DM−8>に含まれるトランザクションIDが記憶部31に保存されているトランザクションIDと一致することを判断した場合には、このトランザクションIDに対応付けて記憶部31に保存されているステータスの内容を取得し(図34:ステップS3406)、このステータスの内容をステータス確認応答<DM−8R>として制御機器10に送信する(図34:ステップS3407)。制御機器10は、サービスサーバ30よりステータスの内容をステータス確認応答<DM−8R>として受信すると(図31:ステップS3105)、このステータスの内容を表示部を通じてユーザに表示する(図31:ステップS3106)。この場合のステータスの内容には「完了(成功)」「完了(失敗)」「未完了」「「進捗率」などがある。
図25のシーケンスの例では、サービスサーバ30に「完了(成功)」のステータス通知<DM−7>が送られて記憶部31に保存される時点の前と後に、制御機器10からサービスサーバ30にステータス確認<DM−8>が送信された場合を示している。ここで、制御機器10からサービスサーバ30へのステータス確認<DM−8>の送信が、サービスサーバ30に「完了(成功)」のステータス通知<DM−7>が送られる前に発生した場合には、サービスサーバ30の記憶部31に保存されているステータスは「未完了」であるから、サービスサーバ30から制御機器10へは「未完了」がステータス確認応答<DM−8R>として送信される。制御機器10からサービスサーバ30へのステータス確認<DM−8>の送信が、サービスサーバ30にコピー完了のステータス通知<DM−7>が送られた後に発生した場合には、サービスサーバ30の記憶部31に保存されているステータスは「完了(成功)」に更新されているので、サービスサーバ30から制御機器10へは「完了(成功)」がステータス確認応答<DM−8R>として送信される。
[5.コンテンツデータのコピー処理(その2)]
次に、被制御機器20A,20Bが同一のLANに接続されておらずインターネットを通じて接続されている場合に、制御機器10からの指示により、被制御機器20Bに記録されているコンテンツのデータを被制御機器20Aにコピーするときの動作を説明する。
図39はコンテンツデータのコピー処理(その2)に関するシステム全体のシーケンス図である。図40および図41はコンテンツデータのコピー処理(その2)に関する被制御機器20の動作を示すフローチャートである。図42はコンテンツデータのコピー処理(その2)に関するダイレクトアクセス管理サーバ40の動作を示すフローチャートである。
制御機器10からサービスサーバ30へのダイレクトアクセス指示<DM−1>の送信から、ダイレクトアクセス管理サーバ40内のSOAPサーバ42から被制御機器20Aへダイレクトアクセス指示要求<DM−3>が送信されるまでの動作は、上記の[4.コンテンツデータのコピー処理(その1)」と同じである。
図38:ステップS3801で、被制御機器20Aは、ダイレクトアクセス指示要求<DM−3>を受信すると、これに含まれるトランザクションIDを記憶部21に保存する(図38:ステップS3802)。続いて、図38:ステップS3803で、被制御機器20Aは、ダイレクトアクセス指示要求<DM−3>に含まれる被制御機器20BのFullJID(D)が、同一LAN上の他の被制御機器のFullJID(D)として既に記憶部21に保存されている被制御機器20BのFullJID(D)と一致するかどうかを判定する。この動作も上記の[4.コンテンツデータのコピー処理(その1)」と同じである。
ここで、2つの被制御機器20A,20Bが同一のLANを通じて接続されている場合には2つのFullJID(D)が一致し、2つの被制御機器20A,20Bが同一のLANを通じて接続されていない場合、つまり2つの被制御機器20A,20Bがインターネットを通じて接続されている場合には一致しないことになる。今回の例では2つの被制御機器20A,20Bが同一のLANを通じて接続されていないので、2つのFullJID(D)は一致しないことが判定される。この場合、被制御機器20Aは、被制御機器20にあらかじめ割り当てられたローカルIPアドレスおよびダイレクトアクセス用のローカルポートのポート番号を含む、ダイレクトアクセス用ポートのNAT設定要求<D−8>をルータ50に送信して、ローカルIPアドレス及びポート番号に、インターネットからアクセス可能なグローバルIPアドレスおよびポート番号をマッピングすることをルータ50に要求する(図38:ステップS3817)。
被制御機器20Aは、ダイレクトアクセス用ポートのNAT設定要求<D−8>に対して、ルータ50より、被制御機器20AのローカルIPアドレス及びポート番号に対応付けられたグローバルIPアドレスおよびポート番号をNAT設定応答<D−8R>として受信した場合には(図38:ステップS3818)、OTPを生成し、このOTPを記憶部21に保存されているトランザクションIDと対応付けて保存する(図38:ステップS3819)。続いて、被制御機器20Aは、2つの被制御機器20A,20B間でのアクセスがインターネットを介して行われることを示すアクセス経路情報と、ルータ50より取得したグローバルIPアドレスおよびポート番号と、OTPとを含むダイレクトアクセス指示応答<DM−3R>を、XMPPサーバ43と被制御機器20Aとの間で確立されている常時接続セッションを通じてダイレクトアクセス管理サーバ40のSOAPサーバ42に送信する(図38:ステップS3820)。
被制御機器20Aは、ダイレクトアクセス用ポートのNAT設定要求<D−8>に対して、ルータ50より、NAT設定が失敗したことを示すエラーコードをNAT設定応答<D−8R>として受信した場合には(図38:ステップS3821)、2つの被制御機器20A,20B間でのアクセスがインターネットを介して行われることを示すアクセス経路情報と、グローバルIPアドレス、ポート番号、およびOTPのそれぞれの値としてNULL値を設定したダイレクトアクセス指示応答<DM−3R>を、XMPPサーバ43と被制御機器20Aとの間で確立されている常時接続セッションを通じてダイレクトアクセス管理サーバ40のSOAPサーバ42に送信する(図38:ステップS3822)。
なお、ここでは、被制御機器20Aがルータ50よりグローバルIPアドレスおよびポート番号を取得できた場合について説明をすることとし、グローバルIPアドレスおよびポート番号を取得できなかった場合の動作は後で説明する。
ダイレクトアクセス管理サーバ40のSOAPサーバ42は被制御機器20Aよりダイレクトアクセス指示応答<DM−3R>を受信し(図36:ステップS3601)、このダイレクトアクセス指示応答<DM−3R>に含まれるアクセス経路情報をチェックする(図36:ステップS3602)。ダイレクトアクセス管理サーバ40のSOAPサーバ42は、アクセス経路情報がインターネットであることを判断すると、サービスサーバ30が被制御機器20Bにダイレクトアクセスするときに利用可能なXMPPセッションIDを生成し、このXMPPセッションIDを、ダイレクトアクセス指示要求<DM−2>に含まれるサービスID、制御機器・サービス管理ID、被制御機器20Bの番号(B)に対応する被制御機器管理IDと対応付けて記憶部41に保存する(図36:ステップS3605)。
次に、ダイレクトアクセス管理サーバ40のSOAPサーバ42は、ダイレクトアクセス指示応答<DM−3R>に含まれるグローバルIPアドレス、ポート番号、およびOTPのそれぞれの値がNULL値であるかどうかを調べる(図36:ステップS3606)。ここでは、被制御機器20Aがルータ50よりグローバルIPアドレスおよびポート番号を取得できた場合を想定しているため、グローバルIPアドレス、ポート番号、およびOTPのそれぞれの値がNULL値でないことが判定される。
この判定結果に従ってダイレクトアクセス管理サーバ40のSOAPサーバ42は、サービスURN(コンテンツデータのコピー)と、被制御機器20Aからのダイレクトアクセス指示応答<DM−3R>に含まれるグローバルIPアドレス、ポート番号、およびOTPを含むコールバック要求<S−4>を、XMPPサーバ43と被制御機器20Bとの間に確立されている常時接続セッションを通じて被制御機器20Bに送信する(図36:ステップS3607)。
被制御機器20Bは、ダイレクトアクセス管理サーバ40のSOAPサーバ42からのコールバック要求<S−4>を受信すると(図40:ステップS4001)、このコールバック要求<S−4>に含まれるグローバルIPアドレス、ポート番号、およびOTPを記憶部21に保存する(図40:ステップS4002)。次に、被制御機器20Bは、コールバック要求<S−4>に含まれるサービスURN(コンテンツデータのコピー)に対応するリクエストパスを取得する(図40:ステップS4003)。ここで、サービスURNに対応するリクエストパスとは、例えば、図52に示すように、被制御機器20がリクエストを受け付けるローカルURIの一部を成す情報であり、リクエストパスによりサービスの種別が特定される。被制御機器20A,20Bの記憶部21には、サービスURNとリクエストパスが対応付けて記憶されている。
この後、被制御機器20Bは、リクエストパスをNULL値としてこれを含めたコールバック応答<S−4R>をダイレクトアクセス管理サーバ40のSOAPサーバ42に常時接続セッションを通じて送信する(図40:ステップS4004)。ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、被制御機器20BよりNULL値のリクエストパスを含むコールバック応答<S−4R>を受信した場合には(図42:ステップS4201)、記憶部41に記憶されているトランザクションID、アクセス経路情報(=インターネット経由)を含むダイレクトアクセス指示応答<DM−2R>をサービスサーバ30に送信する(図42:ステップS4202)。
サービスサーバ30は、トランザクションIDとアクセス経路情報(=インターネット経由)を含むダイレクトアクセス指示応答<DM−2R>を受信すると(図32:ステップS3207)、このダイレクトアクセス指示応答<DM−2R>に含まれるトランザクションIDと「未完了」のステータスとを記憶部31に対応付けて保存する(図32:ステップS3208)。この後、サービスサーバ30は、そのトランザクションIDを含むダイレクトアクセス指示応答<DM−1R>を制御機器10に送信する(図32:ステップS3209)。制御機器10は、サービスサーバ30からのトランザクションIDを含むダイレクトアクセス指示応答<DM−1R>を受信すると(図30:ステップS3005)、そのトランザクションIDを記憶部11に保存し、コンテンツデータのコピー指示の完了を表示部を通じてユーザに表示する(図30:ステップS3006)。
一方、ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、トランザクションIDとアクセス経路がインターネットであることを示すアクセス経路情報とを含むダイレクトアクセス指示応答<DM−2R>をサービスサーバ30に送信した後、サービスサーバ30が被制御機器20Aにダイレクトアクセスするときに利用可能なXMPPセッションIDを含むXMPPログアウト要求<C−5>をXMPPサーバ43に送信し、その応答<C−5R>を受信した後、そのXMPPセッションIDを記憶部41から消去する(図42:ステップS4203)。続いて、ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、サービスサーバ30が被制御機器20Bにダイレクトアクセスするときに利用可能なXMPPセッションIDを含むXMPPログアウト要求<C−5>をXMPPサーバ43に送信し、その応答<C−5R>を受信した後、そのXMPPセッションIDを記憶部41から消去する(図42:ステップS4204)。これによりサービスサーバ30のXMPPログアウトが完了する。
被制御機器20Bは、図40:ステップS4004で、NULL値のリクエストパスを含むコールバック応答<S−4R>をダイレクトアクセス管理サーバ40内のSOAPサーバ42に送信した後、図40:ステップS4001で受信したコールバック要求<S−4>に含まれるグローバルIPアドレスおよびポート番号をもとに、コールバック要求<S−4>に含まれるOTPと、図40:ステップS4003で取得した有意なリクエストパスを含むダイレクトアクセスセッション確立要求<S−6>をインターネットを介して被制御機器20Aに送信する(図40:ステップS4005)。
被制御機器20Aは、インターネットを介して被制御機器20Bよりダイレクトアクセスセッション確立要求<S−6>を受信すると(図41:ステップS4101)、被制御機器20Bとの間でダイレクトアクセスセッションを確立し、このダイレクトアクセスセッション確立要求<S−6>に含まれるOTPと一致するものが記憶部21に保存されているかどうかを調べる(図41:ステップS4102)。ここで、被制御機器20Aの記憶部21には、被制御機器20Aがルータ50よりグローバルIPアドレスおよびポート番号を含むダイレクトアクセス用ポートのNAT設定応答<D−8R>を受信したときに図38:ステップS3819で生成されたOTPが保存されている。したがって、ダイレクトアクセスセッション確立要求<S−6>に含まれるOTPが記憶部21に保存されているどのOTPとも一致しない場合、被制御機器20Aは認証結果がNGであることを判定し、これを示すエラーコードをダイレクトアクセスセッション確立応答<S−6R>としてインターネットを介して被制御機器20Bに送信する(図41:ステップS4103)。そして、被制御機器20Aは被制御機器20Bとのダイレクトアクセスセッションを切断する(図41:ステップS4104)。
被制御機器20Bは、被制御機器20Aより認証結果がNGであることを示すエラーコードをダイレクトアクセスセッション確立応答<S−6R>として受信すると(図40:ステップS4006)、コールバック要求<S−4>により取得して記憶部21に保存されている被制御機器20AのグローバルIPアドレスおよびポート番号と、OTPを消去して処理を終了する(図40:ステップS4007)。
また、図41:ステップS4102で、被制御機器20Aは、ダイレクトアクセスセッション確立要求<S−6>に含まれるOTPが記憶部21に保存されているOTPと一致することを判定した場合、被制御機器20Bとの間で確立したダイレクトアクセスセッションに、そのOTPに対応するトランザクションIDを対応付けて記憶部21に保存する(図41:ステップS4105)。続いて、被制御機器20Aは、認証結果がOKであることを示すコードをダイレクトアクセスセッション確立応答<S−6R>としてインターネットを介して被制御機器20Bに送信する(図41:ステップS4106)。
被制御機器20Bは、被制御機器20Aより認証結果がOKであることを示すコードをダイレクトアクセスセッション確立応答<S−6R>として受信すると(図40:ステップS4008)、被制御機器20Aからのダイレクトアクセス要求<DM−5>の受信に待機する。
一方、被制御機器20Aは、認証結果がOKであることを示すコードをダイレクトアクセスセッション確立応答<S−6R>として被制御機器20Bに送信した後、ダイレクトアクセスセッションを保持し(図41:ステップS4107)、ダイレクトアクセスセッション確立要求<S−6>に含まれるOTPと一致したOTPを記憶部21から消去する(図41:ステップS4108)。この後、被制御機器20Aは、被制御機器20Bより受信したダイレクトアクセスセッション確立要求<S−6>に含まれるリクエストパスと、サービスサーバ30からのダイレクトアクセス指示要求<DM−3>に含まれるダイレクトアクセス指示内容のコンテンツパスとを含むダイレクトアクセス要求<DM−5>をダイレクトアクセスセッションを通じて被制御機器20Bに送信する(図41:ステップS4109)。
被制御機器20Bは、ダイレクトアクセスセッションを通じて被制御機器20Aからのダイレクトアクセス要求<DM−5>を受信すると(図40:ステップS4009)、このダイレクトアクセス要求<DM−5>に含まれるリクエストパスが記憶部21に保存されているリクエストパスと一致するかどうかのチェックと、ダイレクトアクセス要求<DM−5>に含まれるコンテンツパスに対応するコンテンツデータが存在するかどうかのチェックを行う(図40:ステップS4010)。両方のリクエストパスが一致しない、または、該当するコンテンツデータが存在しない場合には、被制御機器20Bは、その旨を示すエラーコードをダイレクトアクセス応答<DM−5R>として被制御機器20Aにダイレクトアクセスセッションを通じて送信する(図40:ステップS4011)。被制御機器20Aは、被制御機器20Bよりエラーコードをダイレクトアクセス応答<DM−5R>として受信すると(図41:ステップS4110)、被制御機器20Bとの間で確立していたダイレクトアクセスセッションを切断する(図41:ステップS4112)。
また、被制御機器20Bは、図40:ステップS4010のチェックでOKを判定した場合、すなわち、ダイレクトアクセス要求<DM−5>に含まれるリクエストパスが記憶部21に保存されているリクエストパスと一致し、かつ、ダイレクトアクセス要求<DM−5>に含まれるコンテンツパスに対応するコンテンツデータが存在する場合には、そのコンテンツデータをダイレクトアクセス応答<DM−5R>として被制御機器20Aにダイレクトアクセスセッションを通じて送信する(図40:ステップS4012)。被制御機器20Aは被制御機器20Bよりダイレクトアクセスセッションを通じてコンテンツデータをダイレクトアクセス応答<DM−5R>として受信し(図41:ステップS4111)、コンテンツデータを受信し終えたなら被制御機器20Bとの間で確立していたダイレクトアクセスセッションを切断する(図41:ステップS4112)。
被制御機器20Bは、コンテンツデータをダイレクトアクセス応答<DM−5R>として被制御機器20Aへ送信し終えた後、コールバック要求<S−4>により取得して記憶部21に保存されている被制御機器20AのグローバルIPアドレスおよびポート番号と、OTPを消去して処理を終了する(図40:ステップS4007)。
被制御機器20Aは、被制御機器20Bよりコンテンツデータをダイレクトアクセス応答<DM−5R>として受信した場合には、被制御機器20Bとの間で確立していたダイレクトアクセスセッションを切断した後、「完了(成功)」のステータスと、記憶部21に保存されている機器認証継続IDおよびトランザクションIDを含むステータス通知<DM−6>をダイレクトアクセス管理サーバ40内のSOAPサーバ42に送信する(図38:ステップS3810)。また、被制御機器20Aは、被制御機器20Bよりエラーコードをダイレクトアクセス応答<DM−5R>として受信した場合には、「完了(失敗)」のステータスと、記憶部21に保存されている機器認証継続IDおよびトランザクションIDを含むステータス通知<DM−6>をダイレクトアクセス管理サーバ40内のSOAPサーバ42に送信する(図38:ステップS3810)。以後の動作は、上記の[4.コンテンツデータのコピー処理(その1)」と同じである。また、制御機器10が、任意のタイミングで、サービスサーバ30に対して、ダイレクトアクセス指示内容のステータスを確認する場合の動作も、上記の[4.コンテンツデータのコピー処理(その1)」と同じである。
[6.コンテンツデータのコピー処理(その3)]
上記の[5.コンテンツデータのコピー処理(その2)]は、被制御機器20Aがルータ50よりグローバルIPアドレスおよびポート番号を取得できた場合のシーケンスであるが、次に、被制御機器20Aがルータ50よりグローバルIPアドレスおよびポート番号を取得することに失敗したが、被制御機器20Bがその取得に成功した場合のコピー処理の動作を説明する。
図43はコンテンツデータのコピー処理(その3)に関するシステム全体のシーケンス図である。図44はコンテンツデータのコピー処理(その3)に関する被制御機器20の動作を示すフローチャートである。
制御機器10からサービスサーバ30へのダイレクトアクセス指示<DM−1>の送信から、ダイレクトアクセス管理サーバ40内のSOAPサーバ42から被制御機器20Aへダイレクトアクセス指示要求<DM−3>が送信されるまでの動作は、上記の[4.コンテンツデータのコピー処理(その1)」および「5.コンテンツデータのコピー処理(その2)」と同じである。
2つの被制御機器20A,20Bは同一のLANを通じて接続されていないので、図38:ステップS3803で、被制御機器20Aは、ダイレクトアクセス指示要求<DM−3>に含まれる被制御機器20BのFullJID(D)が、同一LAN上の他の被制御機器のFullJID(D)として既に記憶部21に保存されている被制御機器20BのFullJID(D)と一致しないことを判定する。被制御機器20Aは、ダイレクトアクセス用ポートのNAT設定要求<D−8>をルータ50に送信し(図38:ステップS3817)、ルータ50からNAT設定が失敗したことを示すエラーコードをNAT設定応答<D−8R>として受信する(図38:ステップS3821)。このため被制御機器20Aは、アクセス経路情報(インターネット径由)と、それぞれNULL値としたグローバルIPアドレス、ポート番号、OTPとを含むダイレクトアクセス指示応答<DM−3R>を、XMPPサーバ43と被制御機器20Aとの間で確立されている常時接続セッションを通じてダイレクトアクセス管理サーバ40のSOAPサーバ42に送信する(図38:ステップS3822)。
このことにより、ダイレクトアクセス管理サーバ40のSOAPサーバ42は、図36:ステップ3606で、ダイレクトアクセス指示応答<DM−3R>に含まれるグローバルIPアドレス、ポート番号、OTPがそれぞれNULL値であることを検出して、被制御機器20Aがルータ50からグローバルIPアドレスおよびポート番号を取得することに失敗したことを判定し、上記「5.コンテンツデータのコピー処理(その2)」とは異なる処理に移行する。
すなわち、ダイレクトアクセス管理サーバ40のSOAPサーバ42は、サービスURN(コンテンツデータのコピー)を含むダイレクトアクセス用URI取得要求<D−7>を、XMPPサーバ43と被制御機器20Bとの間で確立されている常時接続セッションを通じて被制御機器20Bに送信する(図36:ステップS3608)。
被制御機器20Bは、ダイレクトアクセス管理サーバ40のSOAPサーバ42からのダイレクトアクセス用URI取得要求<D−7>を受信すると(図44:ステップS4401)、ダイレクトアクセス用のローカルポートのポート番号の割り当てを行う(図44:ステップS4402)。続いて、被制御機器20Bは、あらかじめ割り当てられているローカルIPアドレスおよび上記のダイレクトアクセス用のローカルポートのポート番号を含む、ダイレクトアクセス用ポートのNAT設定要求<D−8>をルータ50に送信して、ローカルIPアドレス及びポート番号に、インターネットからアクセス可能なグローバルIPアドレスおよびポート番号をマッピングすることをルータ50に要求する(図44:ステップS4403)。
被制御機器20Bは、ダイレクトアクセス用ポートのNAT設定要求<D−8>に対して、ルータ50より、被制御機器20BのローカルIPアドレス及びポート番号に対応付けられたグローバルIPアドレスおよびポート番号をNAT設定応答<D−8R>として受信した場合には(図44:ステップS4404)、これらのグローバルIPアドレスおよびポート番号と、OTPを用いてダイレクトアクセス用URIを作成し、このダイレクトアクセス用URIをダイレクトアクセス用URI取得応答<D−7R>としてダイレクトアクセス管理サーバ40のSOAPサーバ42に送信する(図44:ステップS4405)。
また、被制御機器20Bは、ダイレクトアクセス用ポートのNAT設定要求<D−8>に対して、ルータ50より、NAT設定が失敗したことを示すエラーコードをNAT設定応答<D−8R>として受信した場合には(図44:ステップS4406)、ダイレクトアクセス管理サーバ40に設定されたトンネリング用ポートを経由してトンネリングモードでのデータ伝送を行うことを指示するエラーコードをダイレクトアクセス用URI取得応答<D−7R>としてダイレクトアクセス管理サーバ40のSOAPサーバ42に送信する(図44:ステップS4407)。
なお、ここでは、被制御機器20BがグローバルIPアドレスおよびポート番号の取得に成功し、ダイレクトアクセス用URIをダイレクトアクセス用URI取得応答<D−7R>としてダイレクトアクセス管理サーバ40のSOAPサーバ42に送信した場合について説明を進めることとする。被制御機器20BがグローバルIPアドレスおよびポート番号の取得に失敗してトンネリング指示のエラーコードをダイレクトアクセス用URI取得応答<D−7R>としてダイレクトアクセス管理サーバ40のSOAPサーバ42に送信した場合の以降の動作は後で説明する。
さて、ダイレクトアクセス管理サーバ40のSOAPサーバ42は、被制御機器20Bよりダイレクトアクセス用URIをダイレクトアクセス用URI取得応答<D−7R>として受信すると(図42:ステップS4205)、図35:ステップS3501でサービスサーバ30からのダイレクトアクセス指示要求<DM−2>により取得したダイレクトアクセス指示内容、トランザクションIDと、ダイレクトアクセス用URIから抽出したグローバルURIとOTPとを含むダイレクトアクセス指示2<DM−9>を、ダイレクトアクセス管理サーバ40内のXMPPサーバ43と被制御機器20Aとの間で確立されている常時接続セッションを通じて被制御機器20Aに送信する(図42:ステップS4206)。なお、ここで、グローバルURIとは、グローバルIPアドレス、ポート番号、リクエストパスで構成されたURIである。
被制御機器20Aは、ダイレクトアクセス管理サーバ40のSOAPサーバ42よりダイレクトアクセス指示2<DM−9>を受信すると(図41:ステップS4113)、ダイレクトアクセス指示2応答<DM−9R>をダイレクトアクセス管理サーバ40のSOAPサーバ42に送信する(図41:ステップS4114)。続いて、被制御機器20Aは、ダイレクトアクセス指示2<DM−9>に含まれるグローバルURI、およびダイレクトアクセス指示内容をもとに、OTPとコンテンツパスを含むダイレクトアクセス要求<DM−5>をインターネットを通じて被制御機器20Bに送信する(図41:ステップS4115)。被制御機器20Bがダイレクトアクセス要求<DM−5>を受信した後の動作は後で説明する。
ダイレクトアクセス管理サーバ40のSOAPサーバ42は、被制御機器20Aからのダイレクトアクセス指示2応答<DM−9R>を受信すると(図42:ステップS4209)、記憶部41に記憶されているトランザクションID、アクセス経路情報(インターネット経由)を含むダイレクトアクセス指示応答<DM−2R>をサービスサーバ30に送信する(図42:ステップS4202)。
サービスサーバ30は、トランザクションIDとアクセス経路情報(インターネット経由)を含むダイレクトアクセス指示応答<DM−2R>を受信すると(図32:ステップS3207)、このダイレクトアクセス指示応答<DM−2R>に含まれるトランザクションIDと「開始」のステータスとを記憶部31に対応付けて保存する(図32:ステップS3208)。この後、サービスサーバ30は、そのトランザクションIDを含むダイレクトアクセス指示応答<DM−1R>を制御機器10に送信する(図32:ステップS3209)。制御機器10は、サービスサーバ30からのトランザクションIDを含むダイレクトアクセス指示応答<DM−1R>を受信すると(図30:ステップS3005)、そのトランザクションIDを記憶部11に保存し、コンテンツデータのコピー指示の完了を表示部を通じてユーザに表示する(図30:ステップS3006)。
ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、トランザクションIDとアクセス経路がインターネットであることを示すアクセス経路情報とを含むダイレクトアクセス指示応答<DM−2R>をサービスサーバ30に送信した後、サービスサーバ30が被制御機器20Aにダイレクトアクセスするときに利用可能なXMPPセッションIDを含むXMPPログアウト要求<C−5>をXMPPサーバ43に送信し、その応答<C−5R>を受信した後、記憶部41に保存されている、そのXMPPセッションIDを消去する(図42:ステップS4203)。続いて、ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、サービスサーバ30が被制御機器20Bにダイレクトアクセスするときに利用可能なXMPPセッションIDを含むXMPPログアウト要求<C−5>をXMPPサーバ43に送信し、その応答<C−5R>を受信した後、そのXMPPセッションIDを記憶部41から消去する(図42:ステップS4204)。これによりサービスサーバ30のXMPPログアウトが完了する。
一方、被制御機器20Bは、被制御機器20Aからのダイレクトアクセス要求<DM−5>を受信すると(図44:ステップS4408)、これに含まれる被制御機器20BのグローバルURI、OTP、コンテンツパスのチェックを行う(図44:ステップS4409)。ここで、受信したダイレクトアクセス要求<DM−5>に含まれるグローバルURI、OTPがそれぞれ記憶部21に保存されているものと一致し、かつコンテンツパスに対応するコンテンツデータが存在する場合をOKとして、OKが判定されたならば、被制御機器20Bは、そのコンテンツデータを被制御機器20Aにコピーさせるために該当するコンテンツデータをダイレクトアクセス応答<DM−5R>として、グローバルURIをもとに被制御機器20Aにインターネットを通じて送信する(図44:ステップS4410)。また、図44:ステップS4409のチェックでNGが判定された場合には、エラーコードをダイレクトアクセス応答<DM−5R>として被制御機器20Aにインターネットを通じて送信する(図44:ステップS4411)。
被制御機器20Aは、インターネットを通じて被制御機器20Bよりコンテンツデータをダイレクトアクセス応答<DM−5R>として受信して(図41:ステップS4116)、記憶部21へ保存(コピー)した後、図38:ステップS3810のステータス通知<DM−6>の処理へ移行し、「完了(成功)」のステータスと、記憶部21に保存されている機器認証継続IDおよびトランザクションIDを含むステータス通知<DM−6>をダイレクトアクセス管理サーバ40内のSOAPサーバ42に送信する(図38:ステップS3810)。以後の動作は、前述したコピー処理と同じである。また、被制御機器20Aは、インターネットを通じて被制御機器20Bよりエラーコードをダイレクトアクセス応答<DM−5R>として受信した場合には(図41:ステップS4117)、「完了(失敗)」のステータスと、記憶部21に保存されている機器認証継続IDおよびトランザクションIDを含むステータス通知<DM−6>をダイレクトアクセス管理サーバ40内のSOAPサーバ42に送信する(図38:ステップS3810)。以後の動作は、前述したコピー処理と同じである。また、制御機器10が、任意のタイミングで、サービスサーバ30に対して、ダイレクトアクセス指示内容のステータスを確認する場合の動作も、前述したコピー処理と同じである。
[7.コンテンツデータのコピー処理(その4)]
次に、上記の[6.コンテンツデータのコピー処理(その3)]のシーケンスにおいて、各被制御機器20A、20Bとも、ダイレクトアクセス用ポートのNAT設定要求に対してグローバルIPアドレスおよびポート番号の取得できなかった場合の動作を説明する。
図45はコンテンツデータのコピー処理(その4)に関するシステム全体のシーケンス図である。図46はコンテンツデータのコピー処理(その4)に関するダイレクトアクセス管理サーバ40の動作を示すフローチャートである。
制御機器10がサービスサーバ30にダイレクトアクセス指示<DM−1>を送信してから、被制御機器20Bがダイレクトアクセス用ポートのNAT設定要求<D−8>をルータ50に送信するまでの動作は、上記の「6.コンテンツデータのコピー処理(その3)」と同じである。
図44:ステップS4406にて、被制御機器20Bは、ダイレクトアクセス用ポートのNAT設定要求<D−8>に対して、ルータ50より、NAT設定が失敗したことを示すエラーコードをNAT設定応答<D−8R>として受信した場合には、ダイレクトアクセス管理サーバ40に設定されたトンネリング用ポートを経由してトンネリングモードでのデータ伝送を指示するエラーコードをダイレクトアクセス用URI取得応答<D−7R>としてダイレクトアクセス管理サーバ40のSOAPサーバ42に送信する(図44:ステップS4407)。
ダイレクトアクセス管理サーバ40のSOAPサーバ42は、被制御機器20Bよりトンネリングモードでのデータ伝送を指示するエラーコードをダイレクトアクセス用URI取得応答<D−7R>として受信すると(図42:ステップS4210)、ダイレクトアクセス管理サーバ40内にトンネリング用のポートを割り当て、ダイレクトアクセス管理サーバ40のグローバルIPアドレスと、割り当てられたトンネリング用のポートのポート番号とで構成されるグローバルURIを、後述するダイレクトアクセス要求<DM−5>の宛先のグローバルURIとして設定するとともに、OTPを設定する(図42:ステップS4211)。設定されたグローバルURIとOTPとは互いに対応付けて記憶部41に保存される。
続いて、ダイレクトアクセス管理サーバ40のSOAPサーバ42は、図35:ステップS3501でサービスサーバ30からのダイレクトアクセス指示要求<DM−2>により取得したダイレクトアクセス指示内容、トランザクションID、図42:ステップS4211で設定されたグローバルURIおよびOTPを含むダイレクトアクセス指示2<DM−9>を、ダイレクトアクセス管理サーバ40内のXMPPサーバ43と被制御機器20Aとの間で確立されている常時接続セッションを通じて被制御機器20Aに送信する(図42:ステップS4206)。
被制御機器20Aは、ダイレクトアクセス管理サーバ40のSOAPサーバ42よりダイレクトアクセス指示2<DM−9>を受信すると(図41:ステップS4113)、ダイレクトアクセス指示2応答<DM−9R>をダイレクトアクセス管理サーバ40のSOAPサーバ42に送信する(図41:ステップS4114)。
ダイレクトアクセス管理サーバ40のSOAPサーバ42は、被制御機器20Aからのダイレクトアクセス指示2応答<DM−9R>を受信すると(図42:ステップS4209)、記憶部41に記憶されているトランザクションID、アクセス経路情報(インターネット経由)を含むダイレクトアクセス指示応答<DM−2R>をサービスサーバ30に送信する(図42:ステップS4202)。
サービスサーバ30は、トランザクションIDとアクセス経路情報(インターネット経由)を含むダイレクトアクセス指示応答<DM−2R>を受信すると(図32:ステップS3207)、このダイレクトアクセス指示応答<DM−2R>に含まれるトランザクションIDと「開始」のステータスとを記憶部31に対応付けて保存する(図32:ステップS3208)。この後、サービスサーバ30は、そのトランザクションIDを含むダイレクトアクセス指示応答<DM−1R>を制御機器10に送信する(図32:ステップS3209)。制御機器10は、サービスサーバ30からのトランザクションIDを含むダイレクトアクセス指示応答<DM−1R>を受信すると(図30:ステップS3005)、そのトランザクションIDを記憶部11に保存し、コンテンツデータのコピー指示の完了を表示部を通じてユーザに表示する(図30:ステップS3006)。
一方、被制御機器20Aは、図41:ステップS4114にてダイレクトアクセス指示2応答<DM−9R>をダイレクトアクセス管理サーバ40のSOAPサーバ42に送信した後、ダイレクトアクセス指示2<DM−9>に含まれるグローバルURIに宛て、OTPとコンテンツパスを含むダイレクトアクセス要求<DM−5>の送信を行う(図41:ステップS4115)。ここで、ダイレクトアクセス指示2<DM−9>に含まれるグローバルURIは、ダイレクトアクセス管理サーバ40のグローバルIPアドレスとトンネリング用のポートのポート番号とで構成されたものである。したがって、ダイレクトアクセス要求<DM−5>は、ダイレクトアクセス管理サーバ40内のトンネリングモジュール45にて受信される。ここで、トンネリングモジュール45とは、トンネリング用のポートを用いてトンネリングによるデータの送受信を制御するモジュールである。
ダイレクトアクセス管理サーバ40内のトンネリングモジュール45は、被制御機器20Aからのダイレクトアクセス要求<DM−5>を受信すると(図46:ステップS4601)、これに含まれるグローバルURI、OTPのチェックを行う(図46:ステップS4602)。このチェックでは、受信したダイレクトアクセス要求<DM−5>に含まれるグローバルURIとOTPとの組み合わせが記憶部41に保存されている場合にOKと判定され、保存されていない場合にはNGと判定される。このチェックでNGが判定された場合、ダイレクトアクセス管理サーバ40内のトンネリングモジュール45は、エラーコードをダイレクトアクセス応答<DM−5R>として被制御機器20Aに送信する(図46:ステップS4603)。
被制御機器20Aは、ダイレクトアクセス管理サーバ40内のトンネリングモジュール45よりエラーコードをダイレクトアクセス応答<DM−5R>として受信すると(図41:ステップS4117)、「完了(失敗)」のステータスと、記憶部21に保存されている機器認証継続IDおよびトランザクションIDを含むステータス通知<DM−6>をダイレクトアクセス管理サーバ40内のSOAPサーバ42に送信する(図38:ステップS3810)。以後の動作は、前述したコピー処理と同じである。
また、ダイレクトアクセス管理サーバ40内のトンネリングモジュール45は、図46:ステップS4602のチェックでOKを判定した場合には、記憶部41に保存されたコンテンツパスを含むダイレクトアクセス要求<DM−5>を、XMPPサーバ43と被制御機器20Bとの間で確立されている常時接続セッションを通じて被制御機器20Bに送信する(図46:ステップS4604)。
被制御機器20Bは、ダイレクトアクセス管理サーバ40内のトンネリングモジュール45より常時接続セッションを通じてコンテンツパスを含むダイレクトアクセス要求<DM−5>を受信すると(図44:ステップS4412)、このダイレクトアクセス要求<DM−5>に含まれるコンテンツパスに対応するコンテンツデータが存在するかどうかをチェックし(図44:ステップS4413)。存在しない場合にはこの旨を示すエラーコードをダイレクトアクセス応答<DM−5R>として、ダイレクトアクセス管理サーバ40内のトンネリングモジュール45に常時接続セッションを通じて送信する(図44:ステップS4414)。
ダイレクトアクセス管理サーバ40内のトンネリングモジュール45は、被制御機器20Bよりエラーコードをダイレクトアクセス応答<DM−5R>として受信すると(図46:ステップS4605)、ダイレクトアクセス管理サーバ40内に設定されたトンネリングポートを消去し(図46:ステップS4606)、この後、エラーコードをダイレクトアクセス応答<DM−5R>として被制御機器20Aに送信する(図46:ステップS4603)。
被制御機器20Aは、ダイレクトアクセス管理サーバ40内のトンネリングモジュール45よりエラーコードをダイレクトアクセス応答<DM−5R>として受信した場合には(図41:ステップS4117)、「完了(失敗)」のステータスと、記憶部21に保存されている機器認証継続IDおよびトランザクションIDを含むステータス通知<DM−6>をダイレクトアクセス管理サーバ40内のSOAPサーバ42に送信する(図38:ステップS3810)。以後の動作は、前述したコピー処理と同じである。
また、図44:ステップS4413のチェックで、コンテンツパスに対応するコンテンツデータが存在する場合には、被制御機器20Bは、そのコンテンツデータをダイレクトアクセス応答<DM−5R>としてダイレクトアクセス管理サーバ40内のトンネリングモジュール45に送信する(図44:ステップS4415)。
ダイレクトアクセス管理サーバ40内のトンネリングモジュール45は、被制御機器20Bからのコンテンツデータをダイレクトアクセス応答<DM−5R>として受信すると(図46:ステップS4607)、ダイレクトアクセス管理サーバ40内に設定されたトンネリング用のポートを消去し(図46:ステップS4608)、そのコンテンツデータをダイレクトアクセス応答<DM−5R>として被制御機器20Aに送信する(図46:ステップS4609)。
被制御機器20Aは、ダイレクトアクセス管理サーバ40内のトンネリングモジュール45よりコンテンツデータをダイレクトアクセス応答<DM−5R>として受信し(図41:ステップS4116)、記憶部21へ保存する。これにより、被制御機器20Bから被制御機器20Aへのコンテンツデータのコピーが完了する。
一方、ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、コンテンツデータをダイレクトアクセス応答<DM−5R>として被制御機器20Aに送信した後、サービスサーバ30が被制御機器20Aにダイレクトアクセスするときに利用可能なXMPPセッションIDを含むXMPPログアウト要求<C−5>をXMPPサーバ43に送信し、その応答<C−5R>を受信した後、記憶部41に保存されている、そのXMPPセッションIDを消去する。続いて、ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、サービスサーバ30が被制御機器20Bにダイレクトアクセスするときに利用可能なXMPPセッションIDを含むXMPPログアウト要求<C−5>をXMPPサーバ43に送信し、その応答<C−5R>を受信した後、そのXMPPセッションIDを記憶部41から消去する。これによりサービスサーバ30のXMPPログアウトが完了する。
この後、被制御機器20Aは、図38:ステップS3810のステータス通知<DM−6>の処理へ移行し、「完了(成功)」のステータスと、記憶部21に保存されている機器認証継続IDおよびトランザクションIDを含むステータス通知<DM−6>をダイレクトアクセス管理サーバ40内のSOAPサーバ42に送信する(図38:ステップS3810)。以後の動作は、前述したコピー処理と同じである。また、制御機器10が、任意のタイミングで、サービスサーバ30に対して、ダイレクトアクセス指示内容のステータスを確認する場合の動作も、前述したコピー処理と同じである。
[8.コンテンツデータのコピー処理のキャンセル]
次に、被制御機器20A,20Bが同一のLANに接続されている場合において、ユーザからのダイレクトアクセス制御により、コンテンツデータのコピー処理をキャンセル、一時停止、再開させるときの動作を説明する。
図47はこのダイレクトアクセス制御に関するシステム全体のシーケンス図である。図48はダイレクトアクセス制御に関する制御機器10の動作を示すフローチャートである。図49はダイレクトアクセス制御に関するサービスサーバ30の動作を示すフローチャートである。図50はダイレクトアクセス制御に関するダイレクトアクセス管理サーバ40の動作を示すフローチャートである。図51はダイレクトアクセス制御に関する被制御機器20の動作を示すフローチャートである。
制御機器10が、サービスサーバ30にダイレクトアクセス指示<DM−1>を送信してから、サービスサーバ30より、トランザクションIDを含むダイレクトアクセス指示応答<DM−1R>を受信して、そのトランザクションIDを記憶部11に保存し、コンテンツデータのコピー指示の完了を表示部を通じてユーザに表示するまでのシステム全体の動作は、上記の「4.コンテンツデータのコピー処理(その1)」と同じである。
この後、制御機器10のユーザより、ダイレクトアクセス制御の指示が制御機器10に与えられると(図48:ステップS4801)、制御機器10は、自身に予め設定されているユーザ識別情報、ダイレクトアクセス制御内容、トランザクションIDを含むダイレクトアクセス制御要求<DM−11>をサービスサーバ30に送信する(図48:ステップS4802)。ここで、ダイレクトアクセス制御内容は、コピー処理に関する「キャンセル」「一時停止」「再開」などの中からユーザにより選択されたものである。トランザクションIDは、現在実行中のコピー処理においてダイレクトアクセス制御の対象とするコピー処理に対応するトランザクションIDである。
サービスサーバ30は、制御機器10からのダイレクトアクセス制御要求<DM−11>を受信すると(図49:ステップS4901)、このダイレクトアクセス制御要求<DM−11>に含まれるユーザ識別情報に対応した制御機器・サービス管理IDが記憶部31に存在するかどうかを判定する(図49:ステップS4902)。存在しない場合、被制御機器の登録が必要であることを示すエラーコードをダイレクトアクセス制御応答<DM−11R>として制御機器10に送信する(図49:ステップS4903)。
制御機器10は、サービスサーバ30よりエラーコードをダイレクトアクセス指示応答<DM−1R>として受信した場合(図48:ステップS4803)、エラーコードに対応するメッセージを、表示部を通じてユーザに表示する(図48:ステップS4804)。
また、サービスサーバ30は、図49:ステップS4902のチェックで、ダイレクトアクセス制御要求<DM−11>に含まれるユーザ識別情報に対応した制御機器・サービス管理IDが記憶部31に存在することを判定した場合には、ダイレクトアクセス制御要求<DM−11>に含まれるトランザクションIDが記憶部31に保存されているトランザクションIDと一致するかどうかを判定する(図49:ステップS4904)。一致しない場合には、サービスサーバ30は、不正なトランザクションIDであることを示すエーコードをダイレクトアクセス制御応答<DM−11R>として制御機器10に送信する(図49:ステップS4905)。
また、サービスサーバ30は、図49:ステップS4904のチェックで、ダイレクトアクセス制御要求<DM−11>に含まれるユーザ識別情報に対応した制御機器・サービス管理IDが記憶部31に存在することを判定した場合には。サービスを識別する情報であるサービスID、制御機器・サービス管理ID、ダイレクトアクセス制御内容、トランザクションIDを含むダイレクトアクセス制御要求<DM−12>をダイレクトアクセス管理サーバ40内のSOAPサーバ42に送信する(図49:ステップS4906)。
ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、サービスサーバ30からのダイレクトアクセス制御要求<DM−12>を受信すると(図50:ステップS5001)、このダイレクトアクセス制御要求<DM−12>に含まれるサービスIDと制御機器・サービス管理IDとの組み合わせが記憶部41に記憶されているかどうかを判定する(図50:ステップS5002)。記憶されていない場合、ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、被制御機器の登録が必要であることを示すエラーコードをダイレクトアクセス制御応答<DM−12R>としてサービスサーバ30に送信する(図50:ステップS5003)。
サービスサーバ30は、ダイレクトアクセス管理サーバ40内のSOAPサーバ42から、上記のエラーコードをダイレクトアクセス制御応答<DM−12R>として受信した場合は(図49:ステップS4907)、そのエラーコードをダイレクトアクセス制御応答<DM−11R>として制御機器10に送信する(図49:ステップS4908)。
制御機器10は、サービスサーバ30よりエラーコードをダイレクトアクセス制御応答<DM−11R>として受信した場合(図48:ステップS4803)、エラーコードに対応するメッセージを、表示部を通じてユーザに表示する(図48:ステップS4804)。
また、ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、図50:ステップS5002のチェックの結果、ダイレクトアクセス制御要求<DM−12>に含まれるサービスIDと制御機器・サービス管理IDとの組み合わせが記憶部41に記憶されていることを判定した場合には、ダイレクトアクセス制御要求<DM−12>に含まれるトランザクションIDが記憶部41に保存されているトランザクションIDと一致するかどうかを判定する(図50:ステップS5004)。一致しない場合、ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、不正なトランザクションIDであることを示すエーコードをダイレクトアクセス制御応答<DM−12R>としてサービスサーバ30に送信する(図50:ステップS5005)。
サービスサーバ30は、ダイレクトアクセス管理サーバ40内のSOAPサーバ42より不正なトランザクションIDであることを示すエーコードをダイレクトアクセス制御応答<DM−12R>として受信すると(図49:ステップS4909)、そのエラーコードをダイレクトアクセス制御応答<DM−11R>として制御機器10に送信する(図49:ステップS4910)。
制御機器10は、サービスサーバ30よりエラーコードをダイレクトアクセス制御応答<DM−11R>として受信した場合(図48:ステップS4803)、エラーコードに対応するメッセージを、表示部を通じてユーザに表示する(図48:ステップS4804)。
また、ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、図50:ステップS5004でのチェックの結果、ダイレクトアクセス制御要求<DM−12>に含まれるトランザクションIDが記憶部41に保存されているトランザクションIDと一致することを判定した場合、ダイレクトアクセス制御要求<DM−12>に含まれる該制御機器・サービス管理IDが、トランザクションIDに対応する制御機器・サービス管理IDと一致するとがどうかを判定する(図50:ステップS5006)。一致しない場合、ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、不正なトランザクションIDであることを示すエーコードをダイレクトアクセス制御応答<DM−12R>としてサービスサーバ30に送信する(図50:ステップS5005)。一致する場合には、ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、そのトランザクションIDに対応する制御機器管理IDを記憶部41から検索する(図50:ステップS5007)。
続いて、ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、サービスサーバ30が被制御機器20Aにダイレクトアクセスするときに利用可能なXMPPセッションIDを生成し、このXMPPセッションIDを、ダイレクトアクセス制御要求<DM−12>に含まれるサービスID、制御機器・サービス管理ID、被制御機器管理IDと対応付けて記憶部41に保存する(図50:ステップS5008)。この後、ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、ダイレクトアクセス制御要求<DM−12>から得られたダイレクトアクセス制御内容、トランザクションIDを含むダイレクトアクセス制御要求<DM−13>を、XMPPサーバ43と被制御機器20Aとの間で確立されている常時接続セッションを通じて被制御機器20Aに送信する(図50:ステップS5009)。
被制御機器20Aは、ダイレクトアクセス管理サーバ40内のSOAPサーバ42からのダイレクトアクセス制御要求<DM−13>を受信すると(図51:ステップS51001)、このダイレクトアクセス制御要求<DM−13>に含まれるトランザクションIDに対応するダイレクトアクセスセッションを検索する(図51:ステップS5102)。トランザクションIDに対応するダイレクトアクセスセッションが存在しない場合(図51:ステップS5103のNO)、被制御機器20Aは、ダイレクトアクセス制御要求<DM−13>に含まれるトランザクションIDが不正なトランザクションIDであると判定して、この旨を示すエラーコードをダイレクトアクセス制御応答<DM−13R>として、XMPPサーバ43と被制御機器20Aとの間で確立されている常時接続セッションを通じてダイレクトアクセス管理サーバ40内のSOAPサーバ42に送信する(図51:ステップS5104)。
ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、被制御機器20Aから不正なトランザクションIDであることを示すエラーコードをダイレクトアクセス制御応答<DM−13R>として受信すると(図50:ステップS5010)、不正なトランザクションIDであることを示すエラーコードをダイレクトアクセス制御応答<DM−12R>としてサービスサーバ30に送信する(図50:ステップS5011)。この後、ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、サービスサーバ30が被制御機器20Aにダイレクトアクセスするときに利用可能なXMPPセッションIDを含むXMPPログアウト要求<C−5>をXMPPサーバ43に送信し、その応答<C−5R>を受信した後、記憶部41に保存されている、そのXMPPセッションIDを消去する(図50:ステップS5016)。
サービスサーバ30は、ダイレクトアクセス管理サーバ40内のSOAPサーバ42から、不正なトランザクションIDであることを示すエラーコードをダイレクトアクセス制御応答<DM−12R>として受信すると(図49:ステップS4909)、そのエラーコードをダイレクトアクセス制御応答<DM−11R>として制御機器10に送信する(図49:ステップS4910)。
制御機器10は、サービスサーバ30よりエラーコードをダイレクトアクセス制御応答<DM−11R>として受信した場合(図48:ステップS4803)、エラーコードに対応するメッセージを、表示部を通じてユーザに表示する(図48:ステップS4804)。
また、図51:ステップS5102で、被制御機器20Aは、トランザクションIDに対応するダイレクトアクセスセッションが存在することを判定した場合(図51:ステップS5103のYES)、そのダイレクトアクセスセッションについて、ダイレクトアクセス制御要求<DM−13>に含まれるダイレクトアクセス制御内容に従って制御を実行する(図51:ステップS5105)。ダイレクトアクセス制御内容にはコピー処理の「キャンセル」「一時停止」「再開」などがあるが、図47のシーケンスではダイレクトアクセス制御内容が「キャンセル」の場合を示している。この場合、ダイレクトアクセスセッションにより実行中のコピー処理をキャンセルするように制御が行われる。
被制御機器20Aは、ダイレクトアクセス制御の完了後、ダイレクトアクセス制御結果とステータスを含むダイレクトアクセス制御応答<DM−13R>を、XMPPサーバ43と被制御機器20Aとの間で確立されている常時接続セッションを通じてダイレクトアクセス管理サーバ40内のSOAPサーバ42に送信する(図51:ステップS5106)。ここで、ダイレクトアクセス制御結果はダイレクトアクセス制御内容に対応する。例えば、ダイレクトアクセス制御内容が「キャンセル」ならダイレクトアクセス制御結果は「キャンセル完了」となる。ステータスはキャンセルした時点でのコピー処理に関するステータスを示す情報であり、キャンセルした時点でコピー処理が既に完了していたならば「完了(成功)」または「完了(失敗)」、コピー処理が完了していなければ「未完了」となる。この後、被制御機器20Aは、ステータスが「完了(成功)」または「完了(失敗)」ならば(図51:ステップS5107のYES)、記憶部21から、その完了したダイレクトアクセスセッションに対応するトランザクションIDを消去する(図51:ステップS5108)。また、ステータスが「完了(成功)」または「完了(失敗)」以外ならば(図51:ステップS5107のNO)、そのトランザクションIDを記憶部21に残したまま処理を終える。
一方、ダイレクトアクセス管理サーバ40内のSOAPサーバ42は、被制御機器20Aより、ダイレクトアクセス制御結果とステータスを含むダイレクトアクセス制御応答<DM−13R>を受信すると(図50:ステップS5012)、そのダイレクトアクセス制御結果とステータスを含むダイレクトアクセス制御応答<DM−12R>をサービスサーバ30に送信する(図50:ステップS5013)。
サービスサーバ30は、ダイレクトアクセス管理サーバ40内のSOAPサーバ42から、ダイレクトアクセス制御結果とステータスを含むダイレクトアクセス制御応答<DM−12R>を受信すると(図49:ステップS4911)、記憶部31に保存しているトランザクションIDに対応するステータスの内容を、ダイレクトアクセス制御応答<DM−12R>内のステータスの内容により更新する(図49:ステップS4912)。この後、サービスサーバ30は、ダイレクトアクセス制御結果とステータスを含むダイレクトアクセス制御応答<DM−11R>を制御機器10に送信する(図49:ステップS4913)。
制御機器10は、サービスサーバ30より、ダイレクトアクセス制御結果とステータスを含むダイレクトアクセス制御応答<DM−11R>を受信すると(図48:ステップS4805)、そのダイレクトアクセス制御結果とステータスの内容を表示部を通じてユーザに表示する(図48:ステップS4806)。
一方、サービスサーバ30は、ダイレクトアクセス制御応答<DM−11R>を制御機器10に送信した後、ステータスの内容を確認し、これが「完了(成功)」または「完了(失敗)」ならば(図50:ステップS5014のYES)、記憶部31から、そのコピー処理が完了したダイレクトアクセスセッションに対応するトランザクションIDを消去する(図50:ステップS5016)。また、ステータスが「完了(成功)」または「完了(失敗)」以外ならば(図50:ステップS5014のNO)、そのトランザクションIDを記憶部21に残したまま処理を終える。
以上は被制御機器20A,20Bが同一のLANに接続されている場合において、ユーザからのダイレクトアクセス制御により、コンテンツデータのコピー処理をキャンセル、一時停止、再開させるときの動作を説明したが、被制御機器20A,20Bがインターネットを通じて接続されている場合も同様である。
以上説明したように、本実施形態によれば、制御機器10からの操作で、一方の被制御機器20から他方の被制御機器20へコンテンツデータを直接転送してコピーすることができる。これにより、各被制御機器20間でコンテンツデータのコピーを行う際のデータ転送を効率的に行うことができる。
また、本実施形態によれば、各被制御機器20A,20B間でのアクセス経路が同一LANとインターネットのいずれの場合であっても、制御機器10のユーザがその違いを意識することなく、制御機器10のからの同じ操作で一方の被制御機器20から他方の被制御機器20へコンテンツデータをコピーすることができる。
さらに、本実施形態によれば、各被制御機器20A,20Bともルータ50よりグローバルIPアドレスおよびポート番号の取得に失敗した場合には、ダイレクトアクセス管理サーバ40内にトンネリング用のポートを設定することによって、トンネリングモードで一方の被制御機器20から他方の被制御機器20へコンテンツデータを転送することができる。
さらに、本実施形態によれば、制御機器10からの操作で随時、コンテンツデータのコピーの完了/未完了などの状況を確認したり、実行中のコピーをキャンセルしたり再開させたりすることができる。
なお、本発明は、上述の実施形態にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。