(57)【特許請求の範囲】
【請求項１】
ネットワークに接続された機器を制御するサービスを２以上実行する制御装置における制御方法であって、
実行された前記サービスを識別する情報、当該サービスにより制御された機器を識別する情報、及び当該制御の内容に関する情報に基づき、一以上の前記機器の状態情報を管理し、
同一の機器の前記状態情報に基づき、前記同一の機器に対する、第１のサービスによる第１の制御の実行と第２のサービスによる第２の制御の実行との繰り返しによって、前記第１のサービスによる前記第１の制御が所定回数以上実行されていることを検出し、
前記繰り返しによって、前記第１のサービスによる前記第１の制御が所定回数以上実行されていることが検出された場合に、前記第１のサービスと前記第２のサービスの少なくとも一方を終了するための終了要求を発行する、
制御方法。
【請求項２】
前記第１のサービス及び前記第２のサービスのうち、先に起動されたサービスに対して前記終了要求を発行する、
請求項１記載の制御方法。
【請求項３】
前記第１のサービス及び前記第２のサービスのうち、後に起動されたサービスに対して前記終了要求を発行する、
請求項１記載の制御方法。
【請求項４】
前記第１のサービス及び前記第２のサービスのうち、予め設定されたサービス以外のサービスに対して前記終了要求を発行する、
請求項１記載の制御方法。
【請求項５】
前記制御方法は、さらに、
前記繰り返しの発生により前記終了要求が発行された旨をユーザに通知するための通知情報を発行する、
請求項１記載の制御方法。
【請求項６】
前記通知情報は、さらに、前記繰り返しの発生の原因となったサービスを識別するための情報を含む、
請求項５記載の制御方法。
【請求項７】
前記通知情報は、さらに、前記繰り返しが発生している機器及び当該機器における制御内容を含む、
請求項６記載の制御方法。
【請求項８】
起動された前記サービスを識別する情報、当該サービスを起動したユーザを識別する情報、及び当該ユーザに関連づけられた端末を識別する情報を対応づけたサービス管理情報を更に管理し、
前記通知情報は、前記終了要求が発行されたサービスを起動したユーザに関連づけられた端末に対して送信される、
請求項５記載の制御方法。
【請求項９】
前記状態情報として、実行された前記サービスを識別する情報、当該サービスにより制御された機器を識別する情報、当該制御の内容に関する情報、及び当該制御が実行された回数を対応づけた制御情報を管理し、
所定時間が経過する度に、所定のサービスに対応する前記制御情報を削除する、
請求項１記載の制御方法。
【請求項１０】
前記状態情報として、実行された前記サービスを識別する情報、当該サービスにより制御された機器を識別する情報、当該制御の内容に関する情報、及び当該制御が実行された回数を対応づけた制御情報と、前記機器を識別する情報及び当該機器の状態を監視中の一以上の前記サービスを識別する情報を対応づけた状態監視情報と、を管理し、
前記制御情報と前記状態監視情報とに基づき、前記繰り返しが前記所定回数以上発生していることを検出する、
請求項１又は９に記載の制御方法。
【請求項１１】
前記サービスは、ネットワークを介して前記制御装置と接続されたサービス提供装置により提供されており、
前記サービス提供装置から提供される前記サービスを終了するための終了要求を発行することに代えて、当該サービスによって前記機器を制御するための要求を拒否する、
請求項１記載の制御方法。
【請求項１２】
ネットワークに接続された機器を制御するサービスを２以上実行する制御装置であって、
実行された前記サービスを識別する情報、当該サービスにより制御された機器を識別する情報、及び当該制御の内容に関する情報に基づき、一以上の前記機器の状態情報を管理する管理部と、
同一の機器の前記状態情報に基づき、前記同一の機器に対する、第１のサービスによる第１の制御の実行と第２のサービスによる第２の制御の実行との繰り返しによって、前記第１のサービスによる前記第１の制御が所定回数以上実行されていることを検出する検出部と、
前記繰り返しによって、前記第１のサービスによる前記第１の制御が所定回数以上実行されていることが検出された場合に、前記第１のサービスと前記第２のサービスの少なくとも一方を終了するための終了要求を発行する終了部と、
を備える制御装置。
【請求項１３】
コンピュータを、ネットワークに接続された機器を制御するサービスを２以上実行する制御装置として機能させるためのプログラムであって、
前記コンピュータに、
実行された前記サービスを識別する情報、当該サービスにより制御された機器を識別する情報、及び当該制御の内容に関する情報に基づき、一以上の前記機器の状態情報を管理させ、
同一の機器の前記状態情報に基づき、前記同一の機器に対する、第１のサービスによる第１の制御の実行と第２のサービスによる第２の制御の実行との繰り返しによって、前記第１のサービスによる前記第１の制御が所定回数以上実行されていることを検出させ、
前記繰り返しによって、前記第１のサービスによる前記第１の制御が所定回数以上実行されていることが検出された場合に、前記第１のサービスと前記第２のサービスの少なくとも一方を終了するための終了要求を発行させる、
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ホームネットワークに接続された機器を制御するサービスの実行を制御する制御方法、制御装置、及びプログラムに関する。
【背景技術】
【０００２】
従来から、ホームネットワークに接続された機器を遠隔制御する複数のサービスを実行可能なホームコントローラが知られている。しかし、従来のホームコントローラでは、ホームネットワークに接続された機器を制御する複数のサービスによって、同一の機器に対して矛盾した制御（例えば同一機器に対する電源のＯＮ・ＯＦＦ）が同時に行われるという課題があった。
【０００３】
この課題を解決するため、新たなサービスをインストールする際に、インストール済みのサービスに設定されている機器の制御条件と、新たにインストールするサービスに設定される機器の制御条件とを解析し、矛盾した制御条件を検出することで、同一の機器に対して矛盾した制御を行う可能性のあるサービスを検出することが知られている（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００４−２４８０４３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、複数のサービスが同一の機器に対して矛盾した制御を行うことの検出には、さらなる改善が求められている。
【課題を解決するための手段】
【０００６】
本開示の一態様は、ネットワークに接続された機器を制御するサービスを２以上実行する制御装置における制御方法であって、実行された前記サービスを識別する情報、当該サービスにより制御された機器を識別する情報、及び当該制御の内容に関する情報に基づき、一以上の前記機器の状態情報を管理し、同一の機器の前記状態情報に基づき、前記同一の機器に対する、第１のサービスによる第１の制御の実行と第２のサービスによる第２の制御の実行との繰り返しによって、前記第１のサービスによる前記第１の制御が所定回数以上実行されていることを検出し、前記繰り返しによって、前記第１のサービスによる前記第１の制御が所定回数以上実行されていることが検出された場合に、前記第１のサービスと前記第２のサービスの少なくとも一方を終了するための終了要求を発行する。
【発明の効果】
【０００７】
本開示によれば、複数のサービスによる実際の機器の制御内容に基づき、同一の機器に対する矛盾した制御の一形態である、繰り返し制御の検出及び解消が可能となる。
【図面の簡単な説明】
【０００８】
【図１】実施の形態１におけるホームネットワークシステムの全体像を示す図である。
【図２】実施の形態１におけるホームコントローラのハードウェア構成を示す図である。
【図３】実施の形態１におけるホームコントローラの機能構成を示す図である。
【図４】状態監視テーブルの一例を示す図である。
【図５】機器テーブルの一例を示す図である。
【図６】サービステーブルの一例を示す図である。
【図７】実施の形態１において状態監視テーブルに情報を登録する処理フローの一例を示す図である。
【図８】実施の形態１において状態監視テーブルから情報を削除する処理フローの一例を示す図である。
【図９】実施の形態１において機器の状態変化を監視しサービスへ通知する処理フローの一例を示す図である。
【図１０】ループ制御が発生していることを検出する処理フローの一例を示す図である。
【図１１】ループ候補テーブルの一例を示す図である。
【図１２】実施の形態１においてループ制御を解消する処理フローの一例を示す図である。
【図１３】通知画面の一例を示す図である。
【図１４】通知画面の他の一例を示す図である。
【図１５】実施の形態１においてループ候補テーブルを初期化する処理フローの一例を示す図である。
【図１６】実施の形態２におけるホームネットワークシステムの全体像を示す図である。
【図１７】実施の形態２におけるホームコントローラを含むホームネットワークシステムの機能構成を示す図である。
【図１８】サービス管理テーブルの一例を示す図である。
【図１９】実施の形態２においてサービス管理テーブルに情報を登録する処理フローの一例を示す図である。
【図２０】実施の形態２においてループ制御を解消する処理フローの一例を示す図である。
【図２１】サービス管理テーブルの他の一例を示す図である。
【発明を実施するための形態】
【０００９】
（本発明の基礎となった知見）
サードパーティから提供されるサービスも含め、様々なサービスを利用してホームネットワークに接続された機器を制御する技術が検討されている。しかし、ユーザにとって様々なサービスを好みに合わせて利用したいというニーズがある一方で、サービスが制御対象とする機器の設定が、機器本体の純正リモコンによる操作や別サービスによる制御等他の手段により変更される可能性があるという問題もある。この問題に備え、各サービスは、制御対象の機器の状態を監視し、意図しない状態変化が発生した場合にサービスの終了や機器の再設定等の対応を行っている。
【００１０】
機器の状態監視は、機器が各サービスに対して状態の変化を通知することで実現できる。状態変化の通知は、所謂イベント通知のようなもので、例えば、コールバック関数等を用いて実現される。複数のサービスが同一の機器を制御対象とする場合、当該機器の状態変化の通知を受けた各サービスは個々に対応を行う。このとき、各サービスが当該機器の再設定を行うと、複数のサービスにより当該機器の再設定が繰り返されるという所謂ループ制御（繰り返し制御）が発生する可能性がある。
【００１１】
例えば、サービスＡがエアコンを暖房２５℃運転に設定した場合に、エアコンが暖房２５℃運転を行う状態に変化したことの通知を受けて、サービスＢがエアコンの電源をＯＦＦにする再設定を行ったとする。この場合、サービスＡは、エアコンが電源ＯＦＦの状態に変化したことの通知を受けて、再びエアコンを暖房２５℃運転に設定する。このようにして、サービスＡによるエアコンを暖房２５℃運転に設定する制御とサービスＢによるエアコンの電源をＯＦＦにする制御とを繰り返すループ制御が発生する。
【００１２】
このような課題に対し、上記特許文献１には、各制御プログラムの初期設定時に、各制御プログラムに設定された機器の制御条件をチェックし、矛盾した動作が発生するか否かを判定することが開示されている。そして、矛盾した動作が発生すると判定した場合には、ユーザに制御プログラムの優先度を設定させ、当該設定された優先度に基づいて実行する対象の制御プログラムを選択することで、矛盾した動作が発生するのを事前に回避することが開示されている。尚、特許文献１には、制御動作（機器の動作）を直接監視し、矛盾した動作が発生する場合にのみ、当該矛盾を解消するように制御してもよいことが開示されているが、具体的な実現方法については開示されていない。
【００１３】
つまり、従来技術では、複数のサービスによる実際の機器の制御内容に基づき、同一の機器に対する矛盾した制御の検出と解消とを実現することに関して検討はされていなかった。
【００１４】
本開示の目的は、複数のサービスによる実際の機器の制御内容に基づき、同一の機器に対する矛盾した制御の一形態である、繰り返し制御の検出及び解消が可能となる技術を提供することである。
【００１５】
本開示の一態様による制御方法は、ネットワークに接続された機器を制御するサービスを２以上実行する制御装置における制御方法であって、実行された前記サービスを識別する情報、当該サービスにより制御された機器を識別する情報、及び当該制御の内容に関する情報に基づき、一以上の前記機器の状態情報を管理し、同一の機器の前記状態情報に基づき、前記同一の機器に対する、第１のサービスによる第１の制御の実行と第２のサービスによる第２の制御の実行との繰り返しによって、前記第１のサービスによる前記第１の制御が所定回数以上実行されていることを検出し、前記繰り返しによって、前記第１のサービスによる前記第１の制御が所定回数以上実行されていることが検出された場合に、前記第１のサービスと前記第２のサービスの少なくとも一方を終了するための終了要求を発行する。
【００１６】
本構成によれば、サービスの実行によって実際に行われた機器の制御内容に基づき、第１のサービス及び第２のサービスの実行によって、同一機器に対する矛盾した制御の一形態である繰り返し制御が発生していることを検出することができる。
【００１７】
上記繰り返し制御の発生を検出した場合には、第１のサービス及び第２のサービスのうち少なくとも一方を終了するための終了要求を発行することで、当該少なくとも一方のサービスを終了させる。これにより、二個のサービスによって同時に同一機器に対する制御が行われることを解消することができる。その結果、上記繰り返し制御を解消することができる。
【００１８】
また、前記第１のサービス及び前記第２のサービスのうち、先に起動されたサービスに対して前記終了要求を発行することとしてもよい。
【００１９】
第１のサービスの起動後、ユーザが第１のサービスよりも利用したいサービスとして第２のサービスを起動した場合に、第１のサービス及び第２のサービスによる制御の実行によって同一機器に対する繰り返し制御が発生したとする。本構成によれば、このような場合に、先行して起動された第１のサービスを終了させることにより、ユーザが利用したいと考える最近起動した第２のサービスを終了させることなく、上記繰り返し制御を解消することができる。
【００２０】
また、前記第１のサービス及び前記第２のサービスのうち、後に起動されたサービスに対して前記終了要求を発行することとしてもよい。
【００２１】
第１のサービスの起動後に第２のサービスが起動された後、ユーザが引き続き第１のサービスを利用することを望んでいる場合に、第１のサービス及び第２のサービスによる制御の実行によって同一機器に対する繰り返し制御が発生したとする。本構成によれば、このような場合に、ユーザが引き続き利用することを望んでいる第１のサービスを終了させることなく、後に起動された第２のサービスを終了させて、当該繰り返し制御を解消することができる。
【００２２】
このため、ユーザは、望み通り、第１のサービスを引き続き利用しながら、後に起動された第２のサービスによる機器の制御内容を見直したり、今後起動するサービスを見直す等、繰り返し制御を発生させないための対処をとることができる。
【００２３】
また、前記第１のサービス及び前記第２のサービスのうち、予め設定されたサービス以外のサービスに対して前記終了要求を発行することとしてもよい。
【００２４】
本構成によれば、第１（第２）のサービスを終了させたくない場合には、上記の予め設定されたサービスとして第１（第２）のサービスを予め設定しておくことができる。これにより、第１のサービス及び第２のサービスによる制御の実行によって同一機器に対する繰り返し制御が発生した場合でも、当該終了させたくない第１（第２）のサービスに対して終了要求が発行されることを回避することができる。
【００２５】
また、前記制御方法は、さらに、前記繰り返しの発生により前記終了要求が発行された旨をユーザに通知するための通知情報を発行することとしてもよい。
【００２６】
本構成によれば、第１のサービス及び第２のサービスによる制御の実行によって、同一機器に対する繰り返し制御が発生したことにより、サービスが終了された旨をユーザに容易に確認させることができる。
【００２７】
また、前記通知情報は、さらに、前記繰り返しの発生の原因となったサービスを識別するための情報を含むこととしてもよい。
【００２８】
本構成によれば、更に、同一機器に対する繰り返し制御の発生の原因となったサービスをユーザに容易に確認させることができる。
【００２９】
また、前記通知情報は、さらに、前記繰り返しが発生している機器及び当該機器における制御内容を含むこととしてもよい。
【００３０】
本構成によれば、更に、繰り返し制御が行われた機器及び当該制御の内容をユーザに通知することができる。これにより、ユーザは、繰り返し制御の発生の原因となったサービスによる機器の制御の内容の見直しを行うことが容易となる。
【００３１】
また、起動された前記サービスを識別する情報、当該サービスを起動したユーザを識別する情報、及び当該ユーザに関連づけられた端末を識別する情報を対応づけたサービス管理情報を更に管理し、前記通知情報は、前記終了要求が発行されたサービスを起動したユーザに関連づけられた端末に対して送信されることとしてもよい。
【００３２】
本構成によれば、終了要求が発行されたサービスを起動したユーザに対して、第１のサービス及び第２のサービスによる制御の実行によって同一機器に対する繰り返し制御が発生したことにより、当該終了要求が発行された旨が通知される。このため、他のユーザが利用するサービスに影響を与えることなく、終了要求が発行されたサービスを起動したユーザに、終了要求が発行されたサービスによる機器の制御の内容を見直させることができる。
【００３３】
また、前記状態情報として、実行された前記サービスを識別する情報、当該サービスにより制御された機器を識別する情報、当該制御の内容に関する情報、及び当該制御が実行された回数を対応づけた制御情報を管理し、所定時間が経過する度に、所定のサービスに対応する前記制御情報を削除することとしてもよい。
【００３４】
本構成によれば、所定のサービスに対応する制御情報が、所定時間以上、状態情報として管理されることを回避することができる。その結果、状態情報に基づき、当該所定のサービスによる制御の実行が原因で繰り返し制御が発生していると検出される機会を低減することができる。
【００３５】
また、前記状態情報として、実行された前記サービスを識別する情報、当該サービスにより制御された機器を識別する情報、当該制御の内容に関する情報、及び当該制御が実行された回数を対応づけた制御情報と、前記機器を識別する情報及び当該機器の状態を監視中の一以上の前記サービスを識別する情報を対応づけた状態監視情報と、を管理し、前記制御情報と前記状態監視情報とに基づき、前記繰り返しが前記所定回数以上発生していることを検出することとしてもよい。
【００３６】
本構成によれば、実行されたサービスによる機器の制御内容を示している制御情報に基づき、所定回数以上繰り返して制御が行われた機器を精度良く特定することができる。更に、状態監視情報に基づいて、当該特定した機器の状態が、第１のサービス及び第２のサービスによって現在も監視中であるか否かを精度良く判定することができる。
【００３７】
そして、状態監視情報に基づいて当該特定した機器の状態が第１のサービス及び第２のサービスによって現在も監視中であると判定した場合には、第１のサービス及び第２のサービスによって当該特定した機器の制御が現在所定回数以上繰り返して行われているものとして、上述の繰り返し制御が現在発生していることを精度良く検出することができる。
【００３８】
また、前記サービスは、ネットワークを介して前記制御装置と接続されたサービス提供装置により提供されており、前記サービス提供装置から提供される前記サービスを終了するための終了要求を発行することに代えて、当該サービスによって前記機器を制御するための要求を拒否することとしてもよい。
【００３９】
本構成によれば、ネットワークを介してサービス提供装置から提供されるサービス（以下、ネットワークサービス）の実行によって実際に行われた機器の制御内容に基づき、第１のネットワークサービス及び第２のネットワークサービスの実行によって、同一機器に対する矛盾した制御の一形態である繰り返し制御が発生していることを検出することができる。
【００４０】
また、本構成によれば、上記繰り返し制御の発生を検出した場合には、第１のネットワークサービス及び第２のネットワークサービスのうち少なくとも一方を終了するための終了要求を発行することに代えて、当該少なくとも一方のネットワークサービスによる機器を制御するための要求を拒否する。
【００４１】
これにより、サービス提供装置から提供される当該少なくとも一方のネットワークサービスを終了する権限を有していなくても、二個のネットワークサービスによって同時に同一機器に対する制御が行われることを解消することができる。その結果、上記繰り返し制御を解消することができる。
【００４２】
また、本開示は、以上のような特徴的な処理を実行する制御方法だけでなく、制御方法に含まれる特徴的な処理を実行するための処理部を備える制御装置も開示する。また、このような制御方法に含まれる特徴的な各処理をコンピュータに実行させるコンピュータプログラムも開示する。このようなコンピュータプログラムを、ＣＤ−ＲＯＭ等のコンピュータ読取可能な非一時的な記録媒体あるいはインターネット等の通信ネットワークを介して流通させることができるのは、言うまでもない。
【００４３】
尚、以下で説明する実施の形態は、いずれも本開示の一具体例を示すものである。以下の実施の形態で示される数値、形状、構成要素、ステップ、ステップの順序等は、一例であり、本開示を限定する主旨ではない。また、以下の実施の形態における構成要素のうち、最上位概念を示す独立請求項に記載されていない構成要素については、任意の構成要素として説明される。また全ての実施の形態において、各々の内容を組み合わせることも出来る。
【００４４】
（実施の形態１）
図１は、実施の形態１におけるホームネットワークシステムの全体像を示す図である。図１に示すように、ホームコントローラ１００（制御装置）は、ホームネットワーク１２０（ネットワーク）を介してエアコン１５０ａ（機器）及び照明１５０ｂ（機器）と接続されている。ホームコントローラ１００は、更に、広域ネットワーク１３０を介して、アプリケーションサーバ１４０と接続されている。
【００４５】
アプリケーションサーバ１４０には、サードパーティから提供されるサービスも含め様々なサービスのプログラムが記憶されている。ホームコントローラ１００は、アプリケーションサーバ１４０から当該プログラムをダウンロードし、当該プログラムを実行することでサービスを実行することができる。
【００４６】
尚、ホームネットワーク１２０に接続される機器１５０は、エアコン１５０ａと照明１５０ｂに限るものではなく、冷蔵庫、洗濯機、分電盤、太陽光パネル等宅内の家電機器や設備機器であってもよい。また、ホームネットワーク１２０としては、有線ＬＡＮ、無線ＬＡＮ、特定省電力無線等の任意のネットワークを用いることができ、これらを組み合わせて機器１５０間で相互に通信できるようなネットワーク構成であってもよい。また、広域ネットワーク１３０は光ファイバ、無線、公衆電話回線等任意のネットワークを用いることができる。
【００４７】
図２を用いて、ホームコントローラ１００のハードウェア構成について説明する。図２は、実施の形態１におけるホームコントローラ１００のハードウェア構成を示す図である。ホームコントローラ１００は、ＣＰＵ等で構成された中央処理部１０１、ＲＡＭ等で構成された主記憶部１０２（管理部）、ＲＯＭやＨＤＤ等で構成された二次記憶部１０３、表示部１０４、入力部１０５、ホームネットワーク通信部１０６、及び広域ネットワーク通信部１０７を備えている。
【００４８】
中央処理部１０１は、二次記憶部１０３に予め記憶されているプログラムを実行することで、二次記憶部１０３にサービスのプログラムをダウンロードし、また、二次記憶部１０３に記憶したサービスのプログラムを主記憶部１０２にロードする。
【００４９】
主記憶部１０２には、後述する機器テーブルＴ１、サービステーブルＴ２、状態監視テーブル３００及びループ候補テーブル９００を記憶するための記憶領域が設けられている。つまり、主記憶部１０２は、機器テーブルＴ１、サービステーブルＴ２、状態監視テーブル３００及びループ候補テーブル９００を管理する。
【００５０】
表示部１０４は、例えばＬＣＤで構成され、中央処理部１０１がプログラムを実行することにより行った処理の結果を表示する。尚、表示部１０４は、ホームネットワーク１２０を介して接続されるタブレット端末やＤＴＶ等の表示装置で構成してもよい。入力部１０５は、例えばタッチパネルやハードウェアボタン等を備え、ユーザからの操作を受け付ける。
【００５１】
ホームネットワーク通信部１０６は、ホームネットワーク１２０を介してエアコン１５０ａと照明１５０ｂとの通信処理を行う。広域ネットワーク通信部１０７は、広域ネットワーク１３０を介してアプリケーションサーバ１４０と通信処理を行う。
【００５２】
図３は実施の形態１におけるホームコントローラ１００の機能構成を示す図である。図３に示す機能構成は、図３に示す各ブロックとして機能させるためのプログラムを中央処理部１０１に実行させることにより実現できる。尚、図３に示す機能構成は、図３に示す各ブロックとして機能する専用回路を組み合わせることにより実現してもよい。
【００５３】
サービス制御部２１０は、サービス管理部２１１（終了部）、サービス実行部２１２、競合判断部２１３（検出部）、状態監視部２１４、機器制御部２１５、及び表示生成部２１６として動作する。
【００５４】
サービス管理部２１１は、ユーザ操作により入力部１０５からサービスの起動要求を受けると、当該起動要求されたサービスのプログラムを主記憶部１０２にロードした後、当該サービスの起動要求をサービス実行部２１２へ通知する。また、サービス管理部２１１は、後述するように、競合判断部２１３により特定されたループ制御の発生の原因となるサービスの中から終了させる対象のサービスを決定した後、当該終了させる対象のサービスの終了要求を発行し、当該終了要求をサービス実行部２１２へ通知する。
【００５５】
サービス実行部２１２は、サービス管理部２１１からサービスの起動要求を受けると、当該起動要求が示すサービスの起動処理を行う。サービスの起動処理とは、主記憶部１０２に記憶されている当該サービスのプログラムを中央処理部１０１に実行させて、当該サービスによる機器１５０の制御を実行可能にする処理である。
【００５６】
サービス実行部２１２は、サービスの起動処理後、当該サービスから機器１５０の制御要求を受け取ると、当該制御要求を機器制御部２１５へ出力する。これにより、サービス実行部２１２は、後述するように、当該制御要求が示す機器１５０の制御を機器制御部２１５に実行させる。以下、サービス実行部２１２が、サービスから機器１５０の制御要求を受け、当該制御要求が示す機器１５０の制御を機器制御部２１５に実行させることを、サービスを実行すると記載する。
【００５７】
サービス実行部２１２は、サービス管理部２１１からサービスの終了要求を受けると、当該終了要求が示すサービスの終了処理を行う。サービスの終了処理とは、中央処理部１０１に当該サービスのプログラムの実行を終了させ、当該サービスを実行できないようにする処理である。
【００５８】
実施の形態１では、サービス実行部２１２は、図３に示す、快適空調サービス２００ａ、家中省エネサービス２００ｂ、及び快適調光サービス２００ｃの３個のサービス２００を実行可能となっている。
【００５９】
快適空調サービス２００ａは、室内の温度変化によってエアコン１５０ａの自動制御を行うサービスである。家中省エネサービス２００ｂは宅内の消費電力を監視して消費電力を抑えるようにホームネットワーク１２０内に接続される機器１５０を自動制御するサービスである。快適調光サービス２００ｃは室内の照度変化によって照明１５０ｂの自動制御を行うサービスである。サービス２００ａ〜２００ｃは、制御対象の機器１５０の状態変化の通知を受けると、当該機器１５０の再設定を行うサービスである。サービス２００ａ〜２００ｃは、同時に制御対象の機器１５０の制御を実行可能となっている。
【００６０】
尚、サービス２００ａ〜２００ｃは、サービス実行部２１２が実行可能なサービスの一例であって、サービス実行部２１２が実行可能なサービスは、これらのサービス２００ａ〜２００ｃに限らず、サードパーティから提供される様々なサービスであってよい。また、サービス実行部２１２が同時に実行可能なサービスの数も、３個に限定されるものではない。以下では、サービス実行部２１２が実行可能なサービス２００ａ〜２００ｃを総称して、サービス２００と記載する。
【００６１】
競合判断部２１３は、後述の状態監視テーブル３００及びループ候補テーブル９００に登録されている情報（状態情報）に基づき、ループ制御（繰り返し制御）が発生していることを検出する処理を行う。ループ制御が発生しているとは、同一の機器１５０に対して、あるサービス２００（第１のサービス）による制御（第１の制御）の実行と、他のサービス２００（第２のサービス）による他の制御（第２の制御）の実行と、の繰り返しが所定回数以上行われていることを示す。
【００６２】
競合判断部２１３は、ループ制御が発生していることを検出した場合、当該ループ制御の発生の原因となるサービス２００を特定する処理を行う。競合判断部２１３が行う処理の詳細については、図１０のフローチャートを用いて後述する。
【００６３】
状態監視部２１４は、機器１５０の状態を監視し、機器１５０の状態変化の検知と、検知した状態変化をサービス２００へ通知する処理を行う。状態監視部２１４が行う処理の詳細については図７及び図９のフローチャートを用いて後述する。
【００６４】
機器制御部２１５は、サービス２００から受け取った機器１５０の制御要求を解釈し、当該制御要求が示す制御を、例えばＥＣＨＯＮＥＴ  Ｌｉｔｅ等の機器制御プロトコルを用いて当該機器１５０に行わせるための制御コマンドを生成する。つまり、制御コマンドは、機器１５０に行わせる制御内容を示している。機器制御部２１５は、生成した制御コマンドを、ホームネットワーク通信部１０６を介して当該機器１５０へ送信する。これにより、当該機器１５０は、機器制御部２１５から受信した制御コマンドが示す制御内容に従った制御を行う。
【００６５】
表示生成部２１６は、競合判断部２１３によってループ制御の発生が検出されたことにより、サービス管理部２１１によってサービスの終了要求が発行された旨をユーザに通知するためのメッセージ（通知情報）を生成し、当該生成したメッセージを含む通知画面を生成する。当該メッセージ及び通知画面の詳細については、図１３及び図１４を用いて後述する。
【００６６】
次に、上述の状態監視テーブル３００について図４を用いて説明する。図４は、状態監視テーブル３００の一例を示す図である。状態監視テーブル３００は、ホームネットワーク１２０に接続されている機器１５０を識別する機器ＩＤ、及び、当該機器１５０の状態を監視するサービス２００を識別するサービスＩＤを対応づけた状態監視情報を管理するためのテーブルである。
【００６７】
以下、状態監視テーブル３００において管理される機器ＩＤについて説明する。機器１５０が備えるＲＯＭ等の不揮発性メモリーには、当該機器１５０の製造時や出荷時等に、機器１５０を識別するための情報として機器名と機器ＩＤとが記憶される。機器ＩＤは、例えばＭＡＣアドレス等、機器１５０を一意に特定する情報である。そして、機器１５０の動作開始時等に、不揮発性メモリーに記憶されている機器名及び機器ＩＤが、機器１５０が備えるＲＡＭ等のメモリーにロードされる。
【００６８】
尚、機器ＩＤは、ＭＡＣアドレスに限らず、ホームネットワーク１２０に接続されている機器１５０を一意に特定できる情報であればよい。例えば、機器ＩＤは、ホームネットワーク１２０上で遠隔制御を行うための機器通信プロトコルで定義された機器固有の値（例えばＥＣＨＯＮＥＴ  Ｌｉｔｅ規格で機器１５０のプロパティ値として定義される識別番号や製造番号等）であってもよい。
【００６９】
または、ホームコントローラ１００が、ホームネットワーク１２０に機器１５０が接続されていることを認識した時点で、当該認識した機器１５０の種類を示す機器名を生成し、当該認識した機器１５０を一意に特定できる情報（例えば、当該機器１５０を認識した日時等）を機器ＩＤとして生成し、当該生成した機器名及び機器ＩＤを当該機器１５０に送信してもよい。これに合わせて、機器１５０が受信した機器名及び機器ＩＤを自身が備えるＲＡＭ等のメモリーに記憶するようにしてもよい。
【００７０】
図５は、機器テーブルＴ１の一例を示す図である。機器テーブルＴ１は、ホームネットワーク１２０に接続されている機器１５０の機器名及び機器ＩＤを管理するためのテーブルである。ホームコントローラ１００は、ホームネットワーク１２０に機器１５０が接続されていることを認識した時点で、当該機器１５０から機器名及び機器ＩＤを取得し、機器テーブルＴ１に登録する。また、ホームコントローラ１００は、当該機器１５０から機器名及び機器ＩＤを取得できなかった場合、上述のように、機器名及び機器ＩＤを生成し、当該生成した機器名及び機器ＩＤを機器テーブルＴ１に登録するとともに、機器１５０へ送信する。
【００７１】
例えば、図５に示す機器テーブルＴ１には、エアコン１５０ａの機器名として「エアコン」が登録され、エアコン１５０ａの機器ＩＤとして「ａｉｒｃｏｎ＿０ａ１２ａｂ４ｃｂ６１１」が登録されている。以下の説明における機器名及び機器ＩＤは、図５に示す機器名及び機器ＩＤであるとする。
【００７２】
次に、状態監視テーブル３００において管理されるサービスＩＤについて説明する。サービス２００のプログラムには、当該プログラムの開発時に、当該サービス２００を識別するための情報として、当該サービス２００の提供者や開発者等によって生成されたサービス名及びサービスＩＤが組み込まれる。サービスＩＤは、当該サービス２００を一意に特定できる情報である。
【００７３】
尚、サービス２００のプログラムにサービスＩＤが組み込まれていない場合には、ホームコントローラ１００がサービス２００を起動した時点で、当該サービス２００を一意に特定できる情報（例えば、当該サービス２００を起動した日時等）を当該サービス２００のサービスＩＤとして生成してもよい。
【００７４】
図６は、サービステーブルＴ２の一例を示す図である。サービステーブルＴ２は、ホームコントローラ１００によって実行されるサービス２００のサービス名及びサービスＩＤを管理するためのテーブルである。ホームコントローラ１００は、サービス２００を起動した時点で、当該サービス２００のプログラムに組み込まれているサービス名及びサービスＩＤをサービステーブルＴ２に登録する。尚、ホームコントローラ１００は、当該サービス２００のプログラムにサービスＩＤが組み込まれていなかった場合には、上述のように、サービスＩＤを生成し、当該生成したサービスＩＤをサービステーブルＴ２に登録する。
【００７５】
例えば、図６に示すサービステーブルＴ２には、快適空調サービス２００ａのサービス名として「快適空調サービス」が登録され、サービスＩＤとして「Ａ」が登録されている。以下の説明におけるサービス名及びサービスＩＤは、図６に示すサービス名及びサービスＩＤであるとする。
【００７６】
次に、状態監視部２１４による状態監視テーブル３００への情報の登録フローについて図７を用いて説明する。図７は、実施の形態１において状態監視テーブル３００に情報を登録する処理フローの一例を示す図である。サービス実行部２１２によってサービス２００の起動処理が行われると、当該サービス２００は、サービス制御部２１０が提供する機器状態監視ＡＰＩを呼び出す。機器状態監視ＡＰＩは、所謂コールバック関数であり、当該ＡＰＩを呼び出したサービス２００が状態を監視する対象の機器１５０の機器ＩＤと、当該サービス２００のサービスＩＤと、を当該サービス２００から受け取り、当該受け取った機器ＩＤとサービスＩＤとをサービス制御部２１０に通知する。
【００７７】
状態監視部２１４は、機器状態監視ＡＰＩによる機器ＩＤとサービスＩＤの通知を受けると（ステップ４００）、当該通知された機器ＩＤが状態監視テーブル３００に登録されているか否かを検索する（ステップ４０１）。
【００７８】
通知された機器ＩＤが状態監視テーブル３００に登録済の場合（ステップ４０２：ＹＥＳ）、状態監視部２１４は、登録済の当該機器ＩＤに対応するサービスＩＤとして、ステップ４００で通知されたサービスＩＤを追加する（ステップ４０４）。通知された機器ＩＤが状態監視テーブル３００に未登録の場合（ステップ４０２：ＮＯ）、状態監視部２１４は、通知された機器ＩＤを状態監視テーブル３００へ登録し（ステップ４０３）、登録した機器ＩＤに対応するサービスＩＤとして、ステップ４００で通知されたサービスＩＤを追加する（ステップ４０４）。
【００７９】
このようにして、状態監視部２１４は、機器１５０を識別する機器ＩＤ及び当該機器１５０の状態を監視中の一以上のサービス２００を識別するサービスＩＤを対応付けた状態監視情報を、状態監視テーブル３００に登録する。
【００８０】
例えば、図４に示す状態監視テーブル３００では、機器ＩＤ「ａｉｒｃｏｎ＿０ａ１２ａｂ４ｃｂ６１１」と二個のサービスＩＤ「Ａ」「Ｂ」とを対応付けた状態監視情報が登録されている。これは、機器ＩＤ「ａｉｒｃｏｎ＿０ａ１２ａｂ４ｃｂ６１１」の機器１５０の制御を実行する、サービスＩＤ「Ａ」によって識別されるサービス２００の起動処理が行われた場合にステップ４０３が行われ、その後、同一の機器ＩＤの機器１５０の制御を実行するサービスＩＤ「Ｂ」によって識別されるサービス２００の起動処理が行われた場合にステップ４０４が行われた結果を示している。
【００８１】
次に、状態監視部２１４による状態監視テーブル３００からの情報の削除フローについて図８を用いて説明する。図８は、実施の形態１において状態監視テーブル３００から情報を削除する処理フローの一例を示す図である。サービス実行部２１２によってサービス２００の終了処理が行われると（ステップ６００）、状態監視部２１４は、当該終了処理が行われたサービス２００（以下、終了サービス２００）が状態を監視していた機器１５０の機器ＩＤを検索する（ステップ６０１）。具体的には、ステップ６０１において、状態監視部２１４は、状態監視テーブル３００において、当該終了サービス２００のサービスＩＤに対応付けられている機器ＩＤを検索する。
【００８２】
次に、状態監視部２１４は、ステップ６０１で検索された機器ＩＤで識別される機器１５０の状態を監視対象とするサービス２００が、上記終了サービスのみであるか否かを判定する（ステップ６０２）。具体的には、ステップ６０２において、状態監視部２１４は、状態監視テーブル３００においてステップ６０１で検索された機器ＩＤに対応付けられたサービスＩＤが、終了サービス２００のサービスＩＤのみであるか否かを判定する。
【００８３】
ステップ６０１で検索されたサービスＩＤが終了サービス２００のサービスＩＤのみである場合（ステップ６０２：ＹＥＳ）、状態監視部２１４は、当該機器ＩＤ及び当該終了サービス２００のサービスＩＤを対応付けた状態監視情報を、状態監視テーブル３００から削除する（ステップ６０３）。ステップ６０１で検索されたサービスＩＤが終了サービス２００のサービスＩＤのみでない場合（ステップ６０２：ＮＯ）、状態監視部２１４は、当該機器ＩＤに対応付けられたサービスＩＤから、終了サービス２００のサービスＩＤのみを削除する（ステップ６０４）。
【００８４】
例えば、図４に示すように、状態監視テーブル３００に状態監視情報が登録されているとする。つまり、機器ＩＤ「ａｉｒｃｏｎ＿０ａ１２ａｂ４ｃｂ６１１」で識別される機器１５０の状態を、サービスＩＤ「Ａ」及びサービスＩＤ「Ｂ」で識別される二個のサービスが監視中であるとする。また、機器ＩＤ「ｌｉｇｈｔ＿０ｂ２ｃ９９８ａ５ｃ７ａ」で識別される機器１５０の状態を、サービスＩＤ「Ｂ」及びサービスＩＤ「Ｃ」で識別される二個のサービスが監視中であるとする。
【００８５】
ここで、サービスＩＤ「Ａ」によって識別されるサービス２００の終了処理が行われたとする。この場合、ステップ６０１では、サービスＩＤ「Ａ」に対応する機器ＩＤ「ａｉｒｃｏｎ＿０ａ１２ａｂ４ｃｂ６１１」が検索される。ステップ６０２では、当該機器ＩＤに対応付けられたサービスＩＤ「Ａ、Ｂ」が終了サービス２００のサービスＩＤ「Ａ」のみではないと判定される。その結果、ステップ６０４が行われ、機器ＩＤ「ａｉｒｃｏｎ＿０ａ１２ａｂ４ｃｂ６１１」とサービスＩＤ「Ｂ」とを対応付けた状態監視情報が状態監視テーブル３００に登録された状態となる。
【００８６】
これにより、当該状態監視情報から、現在、機器ＩＤ「ａｉｒｃｏｎ＿０ａ１２ａｂ４ｃｂ６１１」で識別される機器１５０の状態が、サービスＩＤ「Ｂ」で識別されるサービス２００のみによって監視されていることを適切に把握できるようになる。
【００８７】
この後、サービスＩＤ「Ｂ」によって識別される家中省エネサービス２００ｂの終了処理が行われたとする。この場合、ステップ６０１では、サービスＩＤ「Ｂ」に対応する二個の機器ＩＤ「ａｉｒｃｏｎ＿０ａ１２ａｂ４ｃｂ６１１」、「ｌｉｇｈｔ＿０ｂ２ｃ９９８ａ５ｃ７ａ」が検索される。このように、ステップ６０１において複数の機器ＩＤが検索された場合は、当該検索された各機器ＩＤについて、それぞれ、ステップ６０２以降の処理が行われる。
【００８８】
機器ＩＤ「ａｉｒｃｏｎ＿０ａ１２ａｂ４ｃｂ６１１」について行われるステップ６０２では、当該機器ＩＤに対応付けられたサービスＩＤが「Ｂ」のみになっているので、ステップ６０３が行われる。これにより、当該機器ＩＤ及び終了サービスのサービスＩＤ「Ｂ」を対応付けた状態監視情報が状態監視テーブル３００から削除される。その結果、状態監視テーブル３００には、機器ＩＤ「ａｉｒｃｏｎ＿０ａ１２ａｂ４ｃｂ６１１」を含む状態監視情報が存在しなくなる。これにより、当該状態監視テーブル３００から、現在、機器ＩＤ「ａｉｒｃｏｎ＿０ａ１２ａｂ４ｃｂ６１１」で識別される機器１５０の状態を監視しているサービス２００が存在しないことを適切に把握できるようになる。
【００８９】
一方、機器ＩＤ「ｌｉｇｈｔ＿０ｂ２ｃ９９８ａ５ｃ７ａ」について行われるステップ６０２では、当該機器ＩＤに対応付けられたサービスＩＤが「Ｃ、Ｂ」であるので、当該機器ＩＤに対応付けられたサービスＩＤが終了サービスのサービスＩＤ「Ｂ」のみではないと判定される。その結果、ステップ６０４が行われ、機器ＩＤ「ｌｉｇｈｔ＿０ｂ２ｃ９９８ａ５ｃ７ａ」とサービスＩＤ「Ｃ」とを対応付けた状態監視情報が状態監視テーブル３００に登録された状態となる。これにより、当該状態監視情報から、現在、機器ＩＤ「ｌｉｇｈｔ＿０ｂ２ｃ９９８ａ５ｃ７ａ」で識別される機器１５０の状態が、サービスＩＤ「Ｃ」で識別されるサービス２００のみによって監視されていることを適切に把握できるようになる。
【００９０】
次に、状態監視部２１４による機器１５０の状態変化の通知フローについて図９を用いて説明する。図９は、実施の形態１において機器１５０の状態変化を監視しサービス２００へ通知する処理フローの一例を示す図である。ホームネットワーク１２０に接続されている機器１５０は、当該機器１５０本体の純正リモコンによる操作や、サービス２００の実行等によって、当該機器１５０の再設定が行われると、当該機器１５０の状態が変化したことをサービス制御部２１０へ通知する。
【００９１】
状態監視部２１４は、ホームネットワーク１２０に接続されている機器１５０の何れかから状態変化の通知を受けるまで受信待ちの状態となる（ステップ５００：ＮＯ）。
【００９２】
状態監視部２１４は、機器１５０から状態変化の通知を受けることで（ステップ５００：ＹＥＳ）、当該機器１５０の状態が変化したことを検知する。この場合、状態監視部２１４は、状態監視テーブル３００を参照し、当該機器１５０の機器ＩＤに対応付けられたサービスＩＤを検索する。これにより、状態監視部２１４は、当該機器１５０の状態変化を通知する対象のサービス２００のサービスＩＤを検索する（ステップ５０１）。
【００９３】
通知対象のサービス２００のサービスＩＤが状態監視テーブル３００に存在した場合（ステップ５０２：ＹＥＳ）、状態監視部２１４は、当該サービスＩＤによって識別される通知対象のサービス２００に対して、機器１５０の状態変化の通知を行う（ステップ５０３）。その後、状態監視部２１４は、ステップ５００へ戻り、何れかの機器１５０から新たな状態変化の通知を受けるまで受信待ちの状態となる。通知対象のサービス２００のサービスＩＤが状態監視テーブル３００に存在しなかった場合（ステップ５０２：ＮＯ）、状態監視部２１４は、ステップ５００へ戻り、何れかの機器１５０から新たな状態変化の通知を受けるまで受信待ちの状態となる。
【００９４】
尚、上述のように、機器１５０が主体となって状態の変化を通知することに代えて、状態監視部２１４が、状態監視テーブル３００に登録されている機器ＩＤによって識別される機器１５０に対し、定期的に状態変化があったか否かを問い合わせるようにしてもよい。これに合わせて、機器１５０が、当該問い合わせを受けた場合、前回問い合わせを受けた後に当該機器１５０の再設定があったときは、状態変化があったことを返信するようにしてもよい。
【００９５】
次に、競合判断部２１３が行う処理のフローについて図１０を用いて説明する。図１０は、ループ制御が発生していることを検出する処理フローの一例を示す図である。サービス実行部２１２が、起動中のサービス２００から機器１５０の制御要求を受け取り、当該サービス２００を実行したとする（ステップ８０１：ＹＥＳ）。この場合、競合判断部２１３は、ループ候補テーブル９００に、当該制御要求に対応する制御情報が登録されているか否かを判定する（ステップ８０２）。
【００９６】
図１１は、ループ候補テーブル９００の一例を示す図である。ループ候補テーブル９００は、制御要求を行うことで実行されたサービス２００を識別するサービスＩＤ９０１、当該サービス２００により制御された機器１５０の機器ＩＤ９０２、当該機器１５０の制御の内容を示す制御コマンド９０３、及び当該制御が実行された回数（以下、繰り返し回数）９０４を対応づけた制御情報を管理するためのテーブルである。
【００９７】
ステップ８０１で受け取られた制御要求に対応する制御情報がループ候補テーブル９００に登録済の場合（ステップ８０２：ＹＥＳ）、競合判断部２１３は、当該登録済の制御情報の繰返し回数９０４を１回インクリメントする（ステップ８０３）。これにより、競合判断部２１３は、当該登録済の制御情報を更新する。
【００９８】
例えば、サービス実行部２１２が、サービスＩＤ「Ａ」の快適空調サービス２００ａから、機器ＩＤ「ａｉｒｃｏｎ＿０ａ１２ａｂ４ｃｂ６１１」のエアコン１５０ａを、暖房２５℃運転にする制御を行わせる制御要求を過去に４回受け取っていたとする。つまり、当該制御要求に対応する制御情報（サービスＩＤ９０１「Ａ」、機器ＩＤ９０２「ａｉｒｃｏｎ＿０ａ１２ａｂ４ｃｂ６１１」、制御コマンド９０３「暖房２５℃」、繰り返し回数９０４「４」）が、ループ候補テーブル９００に登録済であるとする。この場合に、ステップ８０１において、サービス実行部２１２が同じ制御要求を再び受け取ったとする。
【００９９】
この場合、ステップ８０１で受け取られた制御要求に対応する制御情報がループ候補テーブル９００に登録済であるので（ステップ８０２：ＹＥＳ）、ステップ８０３が行われる。つまり、競合判断部２１３によって、ループ候補テーブル９００に登録済の当該制御要求に対応する制御情報が、図１１に示すように、新たな制御情報（サービスＩＤ９０１「Ａ」、機器ＩＤ９０２「ａｉｒｃｏｎ＿０ａ１２ａｂ４ｃｂ６１１」、制御コマンド９０３「暖房２５℃」、繰り返し回数９０４「５」）に更新される。
【０１００】
一方、ステップ８０１で受け取られた制御要求に対応する制御情報が未登録の場合（ステップ８０２：ＮＯ）、競合判断部２１３は、ループ候補テーブル９００に、当該制御要求に対応する制御情報（サービスＩＤ９０１、機器ＩＤ９０２、コマンド９０３、繰り返し回数９０４）を登録する（ステップ８０４）。尚、競合判断部２１３は、ステップ８０４で登録する制御情報の繰り返し回数９０４を１とする。
【０１０１】
例えば、サービス実行部２１２が、サービスＩＤ「Ｃ」の快適調光サービス２００ｃから、機器１５０の制御要求を受け取っていなかったとする。つまり、ループ候補テーブル９００には、サービスＩＤ「Ｃ」を含む制御情報が何ら登録されていなかったとする。この場合に、ステップ８０１において、サービス実行部２１２が、サービスＩＤ「Ｃ」の快適調光サービス２００ｃから、機器ＩＤ「ｌｉｇｈｔ＿０ｂ２ｃ９９８ａ５ｃ７ａ」の照明１５０ｂをＯＮ（点灯）にする制御を行わせる制御要求を受け取ったとする。
【０１０２】
この場合、ステップ８０１で受け取られた制御要求に対応する制御情報がループ候補テーブル９００に未登録であるので（ステップ８０２：ＮＯ）、ステップ８０４が行われる。つまり、競合判断部２１３によって、ループ候補テーブル９００に、当該制御要求に対応する制御情報（サービスＩＤ９０１「Ｃ」、機器ＩＤ９０２「ｌｉｇｈｔ＿０ｂ２ｃ９９８ａ５ｃ７ａ」、制御コマンド９０３「ＯＮ」、繰り返し回数９０４「１」）が登録される。
【０１０３】
競合判断部２１３は、制御情報の登録又は更新後、当該制御情報に含まれる繰り返し回数９０４が予め定められた閾値（所定回数）に達しているか否かを判定する。繰り返し回数９０４が閾値に達していた場合（ステップ８０５：ＹＥＳ）、競合判断部２１３は、当該制御情報の機器ＩＤ９０２と同一の機器ＩＤ９０２を含み、且つ、当該制御情報のサービスＩＤ９０１とは別のサービスＩＤ９０１を含む制御情報（以下、判定対象の制御情報）が、ループ候補テーブル９００に存在するか否かを判定する（ステップ８０６）。これにより、競合判断部２１３は、上記同一の機器ＩＤ９０２で識別される同一の機器１５０の制御を過去に行ったことのあるサービス２００が２以上存在するか否かを判定する。
【０１０４】
例えば、図１１に示すように、ループ候補テーブル９００に制御情報が登録されているとする。また、上記閾値が５回であるとする。そして、ステップ８０１においてサービスＩＤ「Ａ」で識別されるサービス２００が実行され、ステップ８０５において、競合判断部２１３が、サービスＩＤ「Ａ」に対応する制御情報に含まれる繰り返し回数９０４「５」が５回に達していると判定したとする。
【０１０５】
この場合、競合判断部２１３は、ステップ８０６において、図１１の第１行目及び第２行目に示す二つの制御情報に基づき、当該制御情報の機器ＩＤ９０２「ａｉｒｃｏｎ＿０ａ１２ａｂ４ｃｂ６１１」と同一の機器ＩＤ９０２を含み、且つ、当該制御情報のサービスＩＤ９０１「Ａ」とは別のサービスＩＤ９０１「Ｂ」を含む判定対象の制御情報が存在すると判定する（ステップ８０６；ＹＥＳ）。これにより、競合判断部２１３は、機器ＩＤ９０２「ａｉｒｃｏｎ＿０ａ１２ａｂ４ｃｂ６１１」で識別される機器１５０の制御を過去に行ったことのあるサービス２００が、ステップ８０１で実行されたサービスＩＤ「Ａ」で識別されるサービス２００と、サービスＩＤ「Ｂ」で識別されるサービス２００と、の二個存在すると判定する。
【０１０６】
判定対象の制御情報がループ候補テーブル９００に存在しなかった場合（ステップ８０６：ＮＯ）、２以上のサービス２００によって上記同一機器１５０が制御されたことがないので、競合判断部２１３は、ステップ８０５で繰り返し回数９０４が閾値に達した制御情報に対応する、ステップ８０１で実行されたサービス２００により、ループ制御は発生していないと判断する（ステップ８０９）。
【０１０７】
一方、判定対象の制御情報がループ候補テーブル９００に存在していたとする（ステップ８０６：ＹＥＳ）。この場合、競合判断部２１３は、状態監視テーブル３００を参照し、ステップ８０５で繰り返し回数９０４が閾値に達していると判定した制御情報のサービスＩＤ９０１によって特定（識別）されるサービス２００（以下、ステップ８０５で特定したサービス２００）と、判定対象の制御情報のサービスＩＤ９０１によって特定（識別）されるサービス２００（以下、ステップ８０６で特定したサービス２００）との両サービス２００が、上記同一の機器ＩＤ９０２によって識別される機器１５０（以下、同一機器１５０）の状態を監視しているか否かを判定する（ステップ８０７）。これにより、競合判断部２１３は、ステップ８０５で特定したサービス２００とステップ８０６で特定したサービス２００との両サービス２００によって、現在、上記同一機器１５０の制御が同時に行われている可能性があるか否かを判定する。
【０１０８】
具体的には、ステップ８０７において、競合判断部２１３は、状態監視テーブル３００を参照し、ステップ８０５で特定したサービス２００のサービスＩＤを含む状態監視情報に上記同一の機器ＩＤ９０２が含まれ、且つ、ステップ８０６で特定したサービス２００のサービスＩＤを含む状態監視情報にも上記同一の機器ＩＤ９０２が含まれている場合に、上記両サービス２００が上記同一機器１５０の状態を監視していると判定する（ステップ８０７；ＹＥＳ）。
【０１０９】
一方、ステップ８０５で特定したサービス２００のサービスＩＤを含む状態監視情報及びステップ８０６で特定したサービス２００のサービスＩＤを含む状態監視情報のうち、少なくとも一方に、上記同一の機器ＩＤ９０２が含まれていなかった場合、競合判断部２１３は、上記両サービス２００のうちの少なくとも一方が上記同一機器１５０の状態を監視していないと判定する（ステップ８０７；ＮＯ）。
【０１１０】
例えば、図４に示すように、状態監視テーブル３００に状態監視情報が登録されているとする。そして、ステップ８０６について上述した具体例と同様、上記同一の機器ＩＤ９０２が「ａｉｒｃｏｎ＿０ａ１２ａｂ４ｃｂ６１１」であり、ステップ８０５で特定したサービス２００のサービスＩＤが「Ａ」であり、ステップ８０６で特定したサービス２００のサービスＩＤが「Ｂ」であるとする。
【０１１１】
この場合、状態監視テーブル３００には、ステップ８０５で特定したサービス２００のサービスＩＤ「Ａ」を含む状態監視情報（図４の１行目）に、上記同一の機器ＩＤ９０２「ａｉｒｃｏｎ＿０ａ１２ａｂ４ｃｂ６１１」が含まれ、且つ、ステップ８０６で特定したサービス２００のサービスＩＤ「Ｂ」を含む状態監視情報（図４の１行目）にも、上記同一の機器ＩＤ９０２「ａｉｒｃｏｎ＿０ａ１２ａｂ４ｃｂ６１１」が含まれている。このため、競合判断部２１３は、上記両サービス２００が上記同一機器１５０の状態を監視していると判定する。
【０１１２】
競合判断部２１３が、上記両サービス２００のうちの少なくとも一方が上記同一機器１５０の状態を監視していないと判定したとする（ステップ８０７：ＮＯ）。この場合、上記両サービス２００によって上記同一機器１５０の制御が同時に行われている可能性は高くないと考えられる。したがって、この場合、競合判断部２１３は、ステップ８０５で繰り返し回数９０４が閾値に達した制御情報に対応する、ステップ８０１で行われた制御により、ループ制御は発生していないと判断する（ステップ８０９）。
【０１１３】
一方、競合判断部２１３が、上記両サービス２００が上記同一機器１５０の状態を監視していると判定したとする（ステップ８０７：ＹＥＳ）。この場合、上記両サービス２００によって上記同一機器１５０の制御が同時に行われている可能性が高いと考えられる。したがって、この場合、競合判断部２１３は、ステップ８０５で特定したサービス２００（第１のサービス）による上記同一機器１５０の制御（第１の制御）の実行と、ステップ８０６で特定したサービス２００（第２のサービス）による上記同一機器１５０の制御（第２の制御）の実行と、の繰り返しが、上記閾値が示す回数以上行われるループ制御が発生していることを検出する。そして、競合判断部２１３は、ステップ８０５及びステップ８０６で特定した両サービス２００を、ループ制御の発生の原因となるサービス２００として特定する（ステップ８０８）。
【０１１４】
例えば、ステップ８０１において、サービス実行部２１２が、サービスＩＤ「Ａ」の快適空調サービス２００ａから、機器ＩＤ「ａｉｒｃｏｎ＿０ａ１２ａｂ４ｃｂ６１１」のエアコン１５０ａを、暖房２５℃運転にする制御を行わせる制御要求を受け取ったとする。そして、ステップ８０５を実行する直前において、ループ候補テーブル９００には、図１１に示す制御情報が登録され、状態監視テーブル３００には図４に示す状態監視情報が登録されていたとする。また、ステップ８０５で用いる閾値が５回であるとする。
【０１１５】
この場合、ステップ８０５において、ステップ８０１で受け取った制御要求に対応する制御情報（サービスＩＤ９０１「Ａ」を含む制御情報）の繰り返し回数が「５」であるので、競合判断部２１３は閾値に達したと判定する。この場合、競合判断部２１３は、ステップ８０６において、当該制御情報の機器ＩＤ９０２「ａｉｒｃｏｎ＿０ａ１２ａｂ４ｃｂ６１１」と同一の機器ＩＤ９０２を含み、且つ、当該制御情報のサービスＩＤ９０１「Ａ」とは別のサービスＩＤ９０１「Ｂ」を含む判定対象の制御情報が、ループ候補テーブル９００に存在すると判定する。
【０１１６】
そして、競合判断部２１３は、ステップ８０７において、状態監視テーブル３００を参照し、ステップ８０５及びステップ８０６で特定した両サービス２００が、機器ＩＤ「ａｉｒｃｏｎ＿０ａ１２ａｂ４ｃｂ６１１」によって識別される同一の機器１５０の状態を監視していると判定する。
【０１１７】
この場合、競合判断部２１３は、ステップ８０８において、ステップ８０５で特定したサービス２００による制御の実行とステップ８０６で特定したサービス２００による制御の実行との繰り返しが５回以上行われるループ制御が発生していることを検出する。そして、競合判断部２１３は、ステップ８０５及びステップ８０６で特定した両サービス２００を、ループ制御の発生の原因となるサービス２００として特定する。
【０１１８】
競合判断部２１３による処理を上記のように構成することにより、実行されたサービス２００による機器１５０の制御内容を示している制御情報に基づき、閾値以上繰り返して制御が行われた機器１５０を精度良く特定することができる。更に、状態監視情報に基づいて、当該特定した機器１５０の状態が、２以上のサービスによって現在も監視中であるか否かを精度良く判定することができる。
【０１１９】
そして、状態監視情報に基づいて当該特定した機器１５０の状態が２以上のサービス２００によって現在も監視中であると判定した場合には、当該２以上のサービス２００によって当該特定した機器１５０の制御が現在閾値以上繰り返して行われているものとして、上記ループ制御が現在発生していることを精度良く検出することができる。
【０１２０】
次に、競合判断部２１３によってループ制御の発生が検出された場合に行われる処理について図１２を用いて説明する。図１２は、実施の形態１においてループ制御を解消する処理フローの一例を示す図である。
【０１２１】
図１０に示すフローに従って、競合判断部２１３により、ループ制御の発生の原因となるサービス２００が特定された場合（ステップ１０００）、サービス管理部２１１は、当該特定されたサービス２００のうち、競合判断部２１３がステップ８０５で特定したサービス２００を、終了させる対象のサービス２００（以下、終了サービス２００）として決定する。そして、サービス管理部２１１は、当該決定した終了サービス２００の終了要求を発行し、当該終了要求をサービス実行部２１２へ通知する（ステップ１００１）。サービス実行部２１２は、当該終了要求の通知を受けると、当該終了要求が示す終了サービス２００の終了処理を実行する（ステップ１００２）。
【０１２２】
尚、サービス実行部２１２によって終了サービス２００の終了処理が実行されると、上述のように、状態監視部２１４は、図８に示す処理フローに従って、状態監視テーブル３００に登録されている、終了サービス２００のサービスＩＤを含む状態監視情報を削除する（ステップ６０３）、又は、当該状態監視情報から終了サービス２００のサービスＩＤを削除する（ステップ６０４）。
【０１２３】
その後、表示生成部２１６は、サービステーブルＴ２（図６）を参照して、ループ制御の発生が検出されたことにより、上記終了サービス２００を終了した（上記終了サービス２００の終了要求が発行された）旨をユーザに通知するためのメッセージ（通知情報）を生成（発行）する。そして、表示生成部２１６は、図１３に示すような、当該生成したメッセージＭ１を含む通知画面Ｗ１を生成し、当該生成した通知画面Ｗ１を表示部１０４に表示させる（ステップ１００３）。これにより、表示生成部２１６は、ループ制御の発生が検出されたことにより、上記終了サービス２００を終了した旨をユーザに通知する。
【０１２４】
尚、図１３に示す通知画面Ｗ１は一例であって、ループ制御が行われたことにより、上記終了サービス２００を終了した旨をユーザに通知するという効果を発揮する範囲内において適宜画面構成を変更してもよい。例えば、上記メッセージＭ１を含むダイアログ画面やポップアップ画面によって通知画面Ｗ１を構成し、当該通知画面Ｗ１を既に表示されている画面の上に重ねて表示部１０４に表示させてもよい。
【０１２５】
また、ステップ１００１（図１２）において、サービス管理部２１１が、終了サービス２００の終了要求をサービス実行部２１２へ通知する前に、ループ候補テーブル９００（図１１）に登録されている当該終了サービス２００に対応する制御情報を主記憶部１０２に退避するようにしてもよい。
【０１２６】
そして、表示生成部２１６が、ステップ１００３（図１２）において、主記憶部１０２に退避された上記の終了サービス２００に対応する制御情報、機器テーブルＴ１（図５）、サービステーブルＴ２（図６）、ループ候補テーブル９００（図１１）を参照し、上記メッセージＭ１に、更に、競合判断部２１３により特定されたループ制御の発生の原因となるサービス２００のサービス名と、当該特定されたサービス２００により制御された、ループ制御が発生している機器１５０の機器名と、当該機器１５０の制御に用いられた制御コマンドと、を含めたメッセージを生成してもよい。そして、表示生成部２１６が、図１３に示す通知画面Ｗ１に代えて、図１４に示すような、当該生成したメッセージを含む通知画面Ｗ２を生成し、当該生成した通知画面Ｗ２を表示部１０４に表示させるようにしてもよい。
【０１２７】
また、当該変更後のステップ１００３において、表示生成部２１６が生成するメッセージに、ループ制御が発生している機器１５０の機器名と、当該機器１５０の制御に用いられた制御コマンドとを含めないようにしてもよい。これに合わせて、図１４に示す通知画面Ｗ２にループ原因制御欄を設けないようにしてもよい。
【０１２８】
このように構成することにより、ループ制御が発生しないように、終了サービス２００による機器の制御の見直しを行う手がかりをユーザに示すことができる。その結果、ユーザは、サービスによる機器の制御の見直しを容易に行うことができる。
【０１２９】
また、ステップ１００１において、サービス管理部２１１は、競合判断部２１３がステップ８０６で特定したサービス２００を終了サービス２００として決定してもよいし、競合判断部２１３がステップ８０５及び８０６で特定した全てのサービス２００を、終了サービス２００として決定してもよい。
【０１３０】
また、ステップ１００１において、サービス管理部２１１が、サービス２００が起動された順番に基づいて、終了サービス２００を決定するようにしてもよい。
【０１３１】
例えば、最近起動したサービス２００が、ユーザが最も利用したいサービス２００であると仮定し、ステップ１００１において、サービス管理部２１１が、競合判断部２１３によって特定されたサービス２００のうち、先に起動されたサービス２００を優先して終了サービス２００として決定するようにしてもよい。この場合、ユーザが利用したい最近起動したサービス２００を終了することなく、ループ制御を解消することができる。
【０１３２】
又は、現在起動しているサービスを引き続き利用することをユーザが望んでいると仮定し、ステップ１００１において、サービス管理部２１１が、競合判断部２１３によって特定されたサービス２００のうち、後に起動されたサービス２００を優先して終了サービス２００として決定するようにしてもよい。この場合、ユーザが引き続き利用することを望んでいるサービス２００を終了させることなく、ループ制御を解消することができる。このため、当該ユーザは、望み通り、現在起動しているサービス２００を引き続き利用しながら、後に起動されたサービス２００による機器の制御内容を見直したり、今後起動するサービスを見直す等、ループ制御を発生させないための対処をとることができる。
【０１３３】
尚、ステップ１００１において、サービス管理部２１１が、終了サービス２００として決定するサービス２００の優先順位を、例えば入力部１０５を操作すること等によって、ユーザが設定できるようにしてもよい。この場合、ユーザは、終了させたくないサービス２００の優先順位を予め低く設定しておくことで、ループ制御が発生した場合でも、当該終了させたくないサービス２００に対して終了要求が発行されることを回避することができる。
【０１３４】
また、ループ候補テーブル９００を定期的に初期化するようにしてもよい。図１５は、実施の形態１においてループ候補テーブル９００を初期化する処理フローの一例を示す図である。具体的には、図１５に示すように、競合判断部２１３は、予め設定された一定時間が経過する度に（ステップ１１００：ＹＥＳ）、ループ候補テーブル９００を初期化し、ループ候補テーブル９００に登録されている全ての制御情報を削除する（ステップ１１０１）。尚、当該一定時間は、予め決められた固定の値であってもよいし、例えば入力部１０５を操作すること等によって、ユーザが任意の値に変更できるようにしてもよい。
【０１３５】
尚、ステップ１１０１において、ループ候補テーブル９００を初期化することに代えて、予め定められたサービス２００（以下、削除対象サービス２００）に対応する制御情報、つまり、当該削除対象サービス２００を識別するサービスＩＤ９０１を含んだ制御情報だけを削除するようにしてもよい。
【０１３６】
例えば、毎朝６時にエアコン１５０ａの電源をＯＮにするサービス２００や、毎晩２２時にエアコン１５０ａの電源をＯＦＦにするサービス２００のように、起動された後、長時間終了されず、一日一度しか機器１５０の制御を行わないようなサービス２００は、ループ制御の発生の原因とはならないと考えられる。
【０１３７】
したがって、このようなループ制御の発生の原因とはならないと考えられるサービス２００を、予め削除対象サービス２００として設定することで、当該削除対象サービス２００に対応する制御情報が、ループ候補テーブル９００に一定時間以上残存することを回避することができる。これにより、当該削除対象サービス２００に対応する制御情報に含まれる繰り返し回数９０４が閾値以上になることを低減することができる。その結果、当該削除対象サービス２００を、ステップ８０５で特定したサービス２００及びステップ８０６で特定したサービスとする機会、つまり、ループ制御の発生の原因となるサービス２００として特定する機会を低減することができる。
【０１３８】
また、図１０のステップ８０５に示す繰り返し回数９０４が閾値以上であるか否かの判定は、ステップ８０１で実行されたサービス２００に対応する制御情報に含まれる繰り返し回数９０４だけでなく、ループ候補テーブル９００に登録されている全ての制御情報に含まれている繰り返し回数９０４について行ってもよい。これに合わせて、予め定めた所定数以上の制御情報に含まれている繰り返し回数９０４が閾値に達した場合に、ステップ８０６へ遷移するようにしてもよい。
【０１３９】
又は、ステップ８０６において、競合判断部２１３が、ステップ８０５で特定したサービス２００に対応する制御情報に含まれる機器ＩＤ９０２と同一の機器ＩＤ９０２を含み、且つ、当該制御情報に含まれるサービスＩＤ９０１とは別のサービスＩＤ９０１を含み、且つ、繰り返し回数９０４が上記閾値以上となっている制御情報が、ループ候補テーブル９００に存在するか否かを判定するようにしてもよい。このように、ステップ８０６において判定する対象の制御情報を制限することにより、ループ制御が行われていることを、より正確に判断することができる。
【０１４０】
（実施の形態２）
実施の形態１では、ホームコントローラ１００上で実行される複数のサービス２００による同一機器１５０に対するループ制御の検出方法とそのループ制御の解消方法について説明した。実施の形態２では、図１６に示すように、複数のサービスが広域ネットワーク１３０に接続されたクラウドサーバ１２０１やスマートフォン・タブレット等の外部端末１２０２上等、ホームコントローラ１００以外の装置でも実行される場合における、同一機器１５０に対するループ制御の発生の検出方法及びそのループ制御の解消方法について説明する。
【０１４１】
尚、図１６に示す、クラウドサーバ１２０１や外部端末１２０２で実行されるサービスは一例であって、ホームコントローラ１００を介して、ホームネットワーク１２０に接続された機器１５０の制御を行うサービスであれば、ホームネットワーク１２０に接続される装置で実行されるサービスであってもよい。以下、実施の形態２の説明では、特筆しない限り、実施の形態１と異なる部分についてのみ説明する。
【０１４２】
図１７は、実施の形態２におけるホームコントローラ１００を含むホームネットワークシステムの機能構成を示す図である。ホームコントローラ１００のハードウェア構成は、実施の形態１と同じであるため説明を省略する。
【０１４３】
実施の形態２では、快適空調サービス１２００ａはクラウドサーバ１２０１上で実行され、家中省エネサービス１２００ｂはスマートフォン・タブレット等の外部端末１２０２上で実行される。また、快適調光サービス２００ｃは、実施の形態１と同様にホームコントローラ１００上で実行される。以下、広域ネットワーク１３０を介してホームコントローラ１００以外の装置で実行されるサービス１２００ａ、１２００ｂを総称して、サービス１２００と記載する。
【０１４４】
サービス制御部１２１０は、実施の形態１の構成に加えて、コマンド通信部１２１７を備える。コマンド通信部１２１７は、広域ネットワーク１３０に接続された外部装置との間で制御コマンド等の送受信を行う。つまり、状態監視部２１４が、サービス１２００による監視対象の機器１５０の状態変化を通知する場合、サービス管理部２１１がサービス１２００の起動要求及び終了要求を通知する場合、及び、サービス１２００が機器１５０の制御要求を通知する場合等、広域ネットワーク１３０に接続された外部装置との通信は、全てコマンド通信部１２１７を介して行われる。
【０１４５】
図１７に示すホームコントローラ１００の機能構成は、図１７に示す各ブロックとして機能させるためのプログラムを中央処理部１０１に実行させることにより実現できる。尚、図１７に示すホームコントローラ１００の機能構成は、図１７に示す各ブロックとして機能する専用回路を組み合わせることにより実現してもよい。
【０１４６】
図１８は、サービス管理テーブル１４００ａの一例を示す図である。サービス管理テーブル１４００ａは、サービス２００、１２００のサービスＩＤと、当該サービス２００、１２００を実行可能な装置のアドレスと、を対応付けたサービス管理情報を管理するためのテーブルである。サービス管理テーブル１４００ａは、主記憶部１０２に記憶される。
【０１４７】
コマンド通信部１２１７によるサービス管理テーブル１４００ａへのサービスＩＤとアドレスの登録フローについて図１９を用いて説明する。図１９は、実施の形態２においてサービス管理テーブル１４００ａに情報を登録する処理フローの一例を示す図である。
【０１４８】
外部装置においてサービス１２００が起動されると、起動されたサービス１２００は、サービス制御部１２１０へ当該サービス１２００の起動を通知する。当該サービス１２００の起動通知は、外部装置において起動されたサービス１２００が、サービス制御部１２１０が提供する起動通知ＡＰＩを広域ネットワーク１３０を介して呼び出すことによって行われる。これと同様にして、実施の形態２では、サービス実行部２１２によってサービス２００の起動処理が行われると、当該サービス２００は、上記起動通知ＡＰＩを呼び出し、サービス制御部１２１０へ当該サービス２００の起動を通知する。
【０１４９】
上記起動通知ＡＰＩは、当該ＡＰＩを呼び出したサービス２００、１２００のサービスＩＤと、当該サービス２００、１２００が起動され、当該サービス２００、１２００が実行可能になった装置のアドレス（以下、サービス２００、１２００の実行先のアドレス）と、を当該サービス２００、１２００から受け取る。そして、当該受け取ったサービスＩＤと、当該サービス２００、１２００の実行先のアドレスとをサービス制御部２１０に通知する。
【０１５０】
コマンド通信部１２１７は、起動通知ＡＰＩによる、サービス２００、１２００のサービスＩＤとサービス２００、１２００の実行先のアドレスの通知（以下、サービス２００、１２００の起動通知）を受け取ると（ステップ１５００）、当該通知されたサービスＩＤがサービス管理テーブル１４００ａに登録されているか否かを検索する（ステップ１５０１）。
【０１５１】
通知されたサービスＩＤがサービス管理テーブル１４００ａに登録済の場合（ステップ１５０２：ＹＥＳ）、コマンド通信部１２１７は、登録済の当該サービスＩＤに対応するアドレスとして、ステップ１５００で通知されたサービス２００、１２００の実行先のアドレスを登録する（ステップ１５０４）。
【０１５２】
通知されたサービスＩＤがサービス管理テーブル１４００ａに未登録の場合（ステップ１５０２：ＮＯ）、コマンド通信部１２１７は、通知されたサービスＩＤをサービス管理テーブル１４００ａに登録し（ステップ１５０３）、登録したサービスＩＤに対応するアドレスとして、ステップ１５００で通知されたサービス２００、１２００の実行先のアドレスを登録する（ステップ１５０４）。
【０１５３】
実施の形態２における状態監視テーブル３００への機器ＩＤとサービスＩＤの登録及び削除のフローは、サービス１２００の起動及び終了をコマンド通信部１２１７を介して行う点を除き、図７及び図８に示すフローと同様であるので、説明を省略する。また、実施の形態２におけるループ制御を検出するフローは、図１０に示すフローと同様であるため説明を省略する。
【０１５４】
尚、起動通知ＡＰＩにより通知される情報に、サービス２００、１２００が状態を監視する対象の機器１５０の機器ＩＤを含めるようにしてもよい。これに合わせて、コマンド通信部１２１７が、起動通知ＡＰＩにより通知されたサービスＩＤと監視対象の機器ＩＤとを状態監視部２１４へ通知するようにしてもよい。そして、状態監視部２１４が、図７に示すフローに基づき、ステップ４００で機器状態監視ＡＰＩにより通知された機器ＩＤとサービスＩＤと同様、当該コマンド通信部１２１７から通知された機器ＩＤとサービスＩＤとを状態監視テーブル３００に登録するようにしてもよい。
【０１５５】
この場合、外部装置において起動されたサービス１２００が、起動通知ＡＰＩを用いてサービス１２００の起動通知を行った後、更に、図７に示すステップ４００において、広域ネットワーク１３０を介して機器状態監視ＡＰＩを呼び出し、当該サービス１２００が状態の監視する対象の機器１５０の機器ＩＤと当該サービス１２００のサービスＩＤとを通知することを省略することができる。これにより、外部装置との通信回数を低減することができる。
【０１５６】
以下、実施の形態２において、ループ制御を検出した後の処理について、図２０を用いて説明する。図２０は、実施の形態２においてループ制御を解消する処理フローの一例を示す図である。
【０１５７】
図１０に示すフローに従ってループ制御の発生の原因となるサービス２００、１２００が競合判断部２１３によって特定された場合（ステップ１６００）、ステップ１００１と同様にして、サービス管理部２１１は、当該特定されたサービス２００、１２００の中から終了させる対象のサービス２００、１２００（以下、終了サービス２００、１２００）を決定する。そして、サービス管理部２１１は、当該決定した終了サービス２００、１２００の終了要求を発行し、当該終了要求をコマンド通信部１２１７へ通知する（ステップ１６０１）。
【０１５８】
コマンド通信部１２１７は、サービス管理部２１１から終了サービス２００、１２００の終了要求の通知を受けると、サービス管理テーブル１４００ａを参照し、終了サービス２００、１２００のサービスＩＤに対応するアドレスを取得する。コマンド通信部１２１７は、取得したアドレス宛に終了サービス２００、１２００の終了要求を送信する（ステップ１６０２）。
【０１５９】
これにより、ステップ１６０２において、外部装置へ終了サービス１２００の終了要求が送信された場合、当該終了要求を受け取った外部装置は、当該終了サービス１２００の終了処理を行う。一方、ステップ１６０２において、ホームコントローラ１００へ終了サービス２００の終了要求が送信された場合、上述したように、図１２に示すステップ１００２と同様の処理が行われる。
【０１６０】
その後、表示生成部２１６は、図１２に示すステップ１００３と同様にして、図１３に示す通知画面Ｗ１又は図１４に示す通知画面Ｗ２に含めるメッセージを生成し、当該生成したメッセージを含む通知画面Ｗ１又は通知画面Ｗ２を表示部１０４に表示させる（ステップ１６０３）。
【０１６１】
尚、ステップ１６０２において、コマンド通信部１２１７が、外部装置へ終了サービス１２００の終了要求を送信したとしても、当該外部装置において当該終了サービス２００の終了処理を実行する権限が与えられていない、又は、通信障害が発生し、終了サービス１２００の終了要求が当該外部装置において受信されない等の理由によって、当該終了サービス１２００の終了処理が行われない可能性がある。
【０１６２】
このため、ステップ１６０２において、コマンド通信部１２１７が、外部装置へ終了サービス１２００の終了要求を送信することに代えて、コマンド通信部１２１７が、終了サービス１２００から送信される機器１５０の制御要求を拒否するようにし、当該制御要求を拒否する旨を当該終了サービス１２００に返信するようにしてもよい。これにより、当該終了サービス１２００を利用するユーザに、当該終了サービス１２００による機器１５０の制御が拒否されていることを知らせるようにしてもよい。
【０１６３】
当該構成は、以下のようにして実現することができる。サービス管理テーブル１４００ａの構成を、図２１に示すサービス管理テーブル１４００ｂのような構成に変更すればよい。つまり、サービス管理テーブル１４００ａにおいて、起動されたサービス２００、１２００のサービスＩＤと、当該サービス２００、１２００が実行可能な装置のアドレスと、に加え、少なくとも、当該サービス２００、１２００を終了することができる終了権限を有するか否かを示すフラグ（図２１におけるサービス終了権限）と、を対応付けたサービス管理情報を管理するようにすればよい。
【０１６４】
尚、上記フラグは、起動通知ＡＰＩにより通知される情報に更に付加して、サービス２００、１２００から通知されるようにすればよい。そして、図１９に示すステップ１５０４において、ステップ１５００で起動通知ＡＰＩにより通知されたサービス２００、１２００の実行先のアドレスを登録する際に、更に、起動通知ＡＰＩにより通知されるようになった上記フラグを、当該サービス２００、１２００のサービスＩＤと対応付けて登録するようにすればよい。
【０１６５】
そして、ステップ１６０２において、コマンド通信部１２１７が、サービス管理部２１１から終了サービス２００、１２００の終了要求の通知を受けた場合に、当該変更した構成のサービス管理テーブル１４００ａにおいて当該終了サービス２００、１２００のサービスＩＤに対応する上記フラグが終了権限を有しないことを示しているときは、当該終了サービス１２００からの制御要求を拒否するようにすればよい。そして、当該制御要求を拒否する旨を当該終了サービス１２００に返信するようにすればよい。
【０１６６】
尚、ステップ１６０２において、コマンド通信部１２１７が、通信障害の発生等によって、サービス１２００の終了要求を外部装置に正常に送信できなかったときにも、当該サービス１２００からの機器１５０の制御要求を拒否するようにしてもよい。
【０１６７】
これらのように構成することにより、ホームコントローラ１００が終了する権限を持たないサービス１２００による制御の実行によってループ制御が発生した場合でも、当該ループ制御を解消することが可能となる。
【０１６８】
また、サービス管理テーブル１４００ａを、図２１に示すサービス管理テーブル１４００ｂのように、起動されたサービス２００、１２００のサービスＩＤと、当該サービス２００、１２００が実行可能な装置のアドレスと、に加え、少なくとも、当該サービス２００、１２００を起動したユーザを識別するユーザＩＤと、当該ユーザに関連付けられた端末のアドレスと、を対応付けたサービス管理情報を管理する構成に変更してもよい。
【０１６９】
尚、ユーザＩＤは、起動通知ＡＰＩにより通知される情報に更に付加して、サービス２００、１２００から通知されるようにすればよい。ユーザに関連付けられた端末のアドレスは、当該ユーザのユーザＩＤと予め対応付けて二次記憶部１０３に記憶しておけばよい。そして、図１９に示すステップ１５０４において、ステップ１５００で起動通知ＡＰＩにより通知されたサービス２００、１２００の実行先のアドレスを登録する際に、更に、起動通知ＡＰＩにより通知されるようになったユーザＩＤと、当該ユーザＩＤに対応付けて二次記憶部１０３に記憶されている端末のアドレスと、を当該サービス２００、１２００のサービスＩＤと対応付けて登録するようにすればよい。
【０１７０】
これに合わせて、ステップ１６０３の処理に加え、コマンド通信部１２１７が、当該変更した構成のサービス管理テーブル１４００ａにおいて、ステップ１６０２で受け取った終了要求が示す終了サービス２００、１２００のサービスＩＤと対応付けられている端末のアドレスを取得するようにしてもよい。そして、コマンド通信部１２１７が、当該取得したアドレス宛に、ステップ１６０３で表示生成部２１６が生成したメッセージを通知するようにしてもよい。
【０１７１】
このように構成することにより、他のユーザが利用するサービス２００、１２００に影響を与えることなく、終了サービス２００、１２００を起動したユーザに、当該終了サービス２００、１２００による機器１５０の制御の内容を見直させることができる。
【産業上の利用可能性】
【０１７２】
本開示は、ホームネットワークに接続された機器、当該機器を遠隔制御するホームコントローラ及びホームコントローラを介して実行されるサービスにおいて有用である。
【符号の説明】
【０１７３】
１００    ホームコントローラ（制御装置）
１０１    中央処理部
１０２    主記憶部（管理部）
１０３    二次記憶部
１０４    表示部
１０５    入力部
１０６    ホームネットワーク通信部
１０７    広域ネットワーク通信部
１２０    ホームネットワーク
１３０    広域ネットワーク
１４０    アプリケーションサーバ
１５０    機器
１５０ａ  エアコン（機器）
１５０ｂ  照明（機器）
２００    サービス
２００ａ  快適空調サービス（サービス）
２００ｂ  家中省エネサービス（サービス）
２００ｃ  快適調光サービス（サービス）
２１０，１２１０    サービス制御部
２１１    サービス管理部（終了部）
２１２    サービス実行部
２１３    競合判断部（検出部）
２１４    状態監視部
２１５    機器制御部
２１６    表示生成部
１２００    サービス
１２００ａ  快適空調サービス
１２００ｂ  家中省エネサービス
１２０１    クラウドサーバ
１２０２    外部端末
１２１７    コマンド通信部
【図１】
0006615628.tif 000002
【図２】
0006615628.tif 000003
【図３】
0006615628.tif 000004
【図４】
0006615628.tif 000005
【図５】
0006615628.tif 000006
【図６】
0006615628.tif 000007
【図７】
0006615628.tif 000008
【図８】
0006615628.tif 000009
【図９】
0006615628.tif 000010
【図１０】
0006615628.tif 000011
【図１１】
0006615628.tif 000012
【図１２】
0006615628.tif 000013
【図１３】
0006615628.tif 000014
【図１４】
0006615628.tif 000015
【図１５】
0006615628.tif 000016
【図１６】
0006615628.tif 000017
【図１７】
0006615628.tif 000018
【図１８】
0006615628.tif 000019
【図１９】
0006615628.tif 000020
【図２０】
0006615628.tif 000021
【図２１】
0006615628.tif 000022