以下、図面を参照しつつ、本開示の各実施の形態に係る制御システムについて説明する。また、以下の説明では、同一の部材には同一の参照符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
[実施の形態1]
<システム構成>
図1は、実施の形態1に係る制御システム1の概略構成を表した図である。図1を参照して、制御システム1は、サーバ100と、情報端末としてのスマートフォン200A,200Bと、家庭用電気機器(以下、「機器」と略す。)310,320とを含む。
サーバ100は、ホームサーバとして機能する。機器310,320は、家庭用電気機器の一例である。より具体的には、機器310は、宅内に配置されたエアコンディショナである。機器320は、宅内に配置された空気清浄機である。機器310,320は、必要に応じて、操作対象として、機器300と総称される。エアコンディショナおよび空気清浄機は、制御システム1において操作対象となる機器の単なる例示である。制御システム1において操作対象となる機器の配置や種類は、図1に示されたものに限定されない。
本明細書では、「エアコンディショナ」は、「エアコン」と略記される場合がある。
スマートフォン200A,200Bのそれぞれは、サーバ100と通信可能である。スマートフォン200A,200Bは、必要に応じて、スマートフォン200と総称される。
サーバ100は、機器300と通信可能である。サーバ100は、一例として、XML(Extensible Markup Language)等のマークアップ言語を用いた通信仕様に基づき、スマートフォン200および機器300と通信する。なお、サーバ100は、JSON(JavaScript(登録商標) Object Notation)等の非マークアップ言語を用いた通信仕様に基づき、スマートフォン200および機器300と通信してもよい。通信に用いるデータの形式は、特に限定されるものではない。
スマートフォン200A,200Bのそれぞれは、サーバ100に対して、機器300を制御するための信号を送信する。サーバ100は、当該信号を機器300との通信が可能な形式の情報に変換し、機器300に、変換後の情報を送信する。
機器300は、たとえばECHONET Lite(登録商標)のような汎用の通信プロトコルに従って送受信されるデータに基づいて、動作し得る。つまり、機器300は、サーバ100との間ではマークアップ言語で通信し、当該通信データから上記汎用の通信プロトコルに従ったデータを抽出し、そして、当該抽出したデータに基づいて自装置の動作を制御する。この場合、機器300は、サーバ100とのマークアップ言語での通信を実現するためのアダプタに接続されていても良い。当該アダプタは、機器300に関するデータをサーバ100と送受信するために、機器300に接続される。本明細書では、このようなアダプタを機器300の一部とみなす。つまり、当該アダプタがサーバ100との間で機器300に関する情報を送受信することを、機器300自体がサーバ100と当該情報を送信することと同じこととして取り扱う。
<制御システムの動作の概要>
図2は、制御システム1の機能的な構成を模式的に示す図である。図2を参照して、制御システム1の動作の概要を説明する。
サーバ100には、制御システム1の機器300に関する情報が格納されている。当該情報は、たとえば、機器300の種別およびデータの送受信用のアドレスを含む。本明細書において機器の「種別」とは、「エアコンディショナ」「空気清浄機」「テレビ」「照明器具」等のように、機器300の本質的な機能に基づいた区別を意味する。
機器300は、サーバ100に、任意の時間(たとえば15分)ごとに、自装置の状態を特定する情報を送信する。これは、図2において、「A.機器状態送信」として示される。「状態を特定する情報」は、機器300の電源の状態(ONまたはOFF)、機器300における実行中の動作の種類、および、機器300において設定されている内容の中の、少なくとも一つを含み得る。
サーバ100は、スマートフォン200に、機器300から受信した当該機器300の状態を送信する。これは、図2において、「B.機器状態送信」として示される。これにより、任意の時間ごとの機器300の状態が、スマートフォン200に提供される。
スマートフォン200は、ユーザ操作に基づき、機器300を制御するための制御指令の入力を受け付け、当該制御指令をサーバ100に送信する。これは、図2において、「C.制御指令」として示される。
サーバ100は、スマートフォン200から受信した制御指令において指定される送信先(機器300)へ、当該制御指令を送信する。これは、図2において、「D.制御指令」として示される。
機器300は、サーバ100から受信した制御指令に基づいて、自装置の動作を制御する。たとえば、「電源ON」の制御指令を受信すれば、自装置の電源をONに切り替える。
サーバ100は、機器300へ制御指令を送信してから一定時間後に、機器300に、当該機器300の状態を送信することを要求する信号を送信する。これは、図2において、「E.状態要求」として示される。
サーバ100からの上記要求に応じて、機器300は、サーバ100に、自装置の状態を送信する。これは、図2において、「F.機器状態送信」として示される。
サーバ100に送信される状態は、少なくともサーバ100から受信した制御指令に対応する状態を含む。たとえば、サーバ100から受信した制御指令が電源の状態を指定する指令(たとえば、「電源ON」または「電源OFF」)であった場合には、機器300が送信する当該機器300の状態は、機器300のその時点での電源の状態を含む。機器300の電源の状態は、「電源ON」および「電源OFF」のいずれかである。なお、機器300の電源の状態は、「電源ON」と「電源OFF」と「スタンバイ」との中から選択された1つである場合もある。「スタンバイ」とは、省エネルギモードに属する電源の状態の一例である。
また、サーバ100から受信した制御指令が、「冷房」、「暖房」または「除湿」のような動作モードを指定する指令であった場合には、機器300が送信する当該機器300の状態は、機器300のその時点での動作モードを含む。
「F.機器状態送信」における機器300の状態の送信は、サーバ100からの制御指令の送信に対応して行なわれるのに対し、「A.機器状態送信」における機器300の状態の送信は、任意の時間ごとに、定期的に、行なわれる。
サーバ100は、機器300から受信した当該機器300の状態が、スマートフォン200から受信した制御指令に対応する状態であるか否かを判断する。そして、サーバ100は、スマートフォン200に、当該判断の結果を送信する。これは、図2において、「G.結果送信」として示される。スマートフォン200に送信される結果は、たとえば、「成功」または「状態不一致」である。
サーバ100は、機器300の状態が当該制御指令に対応する状態であると判断すると、判断の結果として「成功」を送信する。たとえば、機器300の状態と当該制御指令によって指定される状態とが一致する場合、機器300の状態は、当該制御指令に対応する状態であると判断される。制御指令によって指定される状態は、制御指令そのものを意味する。より具体的には、スマートフォン200からサーバ100に送信された制御指令が「電源ON」であり、機器300からサーバ100に送信された当該機器300の状態が「電源ON」である場合、制御指令と機器300の状態とが一致する。したがって、この場合、サーバ100は、スマートフォン200に、上記判断の結果として、「成功」を送信する。
一方、サーバ100は、機器300の状態が当該制御指令に対応しない状態であると判断すると、判断の結果として「状態不一致」を送信する。たとえば、機器300の状態と当該制御指令によって指定される状態が一致しない場合、機器300の状態は、当該制御指令に対応しない状態であると判断される。
より具体的には、スマートフォン200からサーバ100に送信された制御指令が「電源ON」であり、機器300からサーバ100に送信された当該機器300の状態が「電源OFF」または「スタンバイ」である場合には、サーバ100は、スマートフォン200に、上記判断の結果として、「状態不一致」を送信する。たとえば、サーバ100が機器300にスマートフォン200から受信した制御信号「電源ON」を送信した直後、機器300が直接「電源OFF」のための操作をなされた場合、上記判断の結果として「状態不一致」が送信される。
機器300は、サーバ100から受信した制御指令に対応できない状態にある場合もあり得る。この場合、「G.結果送信」において送信される結果の候補は、上記「成功」および「状態不一致」に加えて、「失敗」を含む。
「G.結果送信」において、サーバ100が、スマートフォン200に、判断の結果として「失敗」を送信する場合としては、たとえば、ルータの故障などにより、ネットワークが遮断されており、サーバ100から機器300に制御指令を送信できない場合が挙げられる。より具体的には、サーバ100は、機器300へ制御信号を送信した後、所定時間、機器300から制御指令を受信したことを示す信号(たとえば、ACK信号)を待つ。そして、サーバ100は、上記所定時間以内に機器300から上記信号を受信しない場合、スマートフォン200に、判断の結果として「失敗」を送信する。
以上、図2を参照して説明したように、制御システム1では、スマートフォン200は、サーバ100を介して機器300に制御指令を送信し、当該制御指令の結果をサーバ100から受信する。より具体的には、サーバ100は、スマートフォン200から制御指令を受信すると(「C.制御指令」)、機器300へ当該制御指令を送信する(「D.制御指令」)。その後、機器300は、サーバ100に、自装置の状態を送信する(「F.機器状態送信」)。サーバ100は、機器300から受信した当該機器300の状態とスマートフォン200から受信した制御指令とに基づいて、スマートフォン200からの制御指令に対する結果を判断する。そして、サーバ100は、スマートフォン200に、判断の結果を送信する(「G.結果送信」)。
<ハードウエア構成>
(1)サーバ100
図3は、サーバ100のハードウエア構成の典型例を表した図である。図3に示されるように、サーバ100は、主たる構成要素として、プログラムを実行するプロセッサ151と、データを不揮発的に格納するROM(Read Only Memory)152と、プロセッサ151によるプログラムの実行により生成されたデータ、又は入力装置(図示せず)を介して入力されたデータを揮発的に格納するRAM(Random Access Memory)153と、データを不揮発的に格納するHDD(Hard Disk Driver)154と、LED(Light Emitting Diode)155と、スイッチ156と、通信IF(Interface)157と、電源回路158と、モニタ159と、操作キー160とを含む。各構成要素は、相互にデータバスによって接続されている。
HDD154は、テンプレートDB110および情報DB120を格納する。電源回路158は、コンセントを介して受信した商用電源の電圧を降圧し、サーバ100の各部に電源供給を行なう。スイッチ156は、電源回路158に給電を行なうか否かを切替えるための主電源用のスイッチ、およびその他の各種の押しボタンスイッチである。モニタ159は、各種のデータを表示するためのデバイスである。通信IF157は、機器300とのデータの送受信処理、および、スマートフォン200とのデータの送受信処理を行なう。
LED155は、サーバ100の動作状態を表す各種の表示ランプである。たとえば、LED155は、サーバ100の主電源のオンまたはオフ状態、およびHDD154への読み出しまたは書き込み状態等を表す。操作キー160は、サーバ100のユーザがサーバ100へデータを入力するための用いるキー(キーボード)である。
サーバ100における処理は、ハードウエアおよびプロセッサ151により実行されるソフトウエアによって実現される。このようなソフトウエアは、HDD154に予め記憶されている場合がある。また、ソフトウエアは、その他の記憶媒体に格納されて、プログラムプロダクトとして流通している場合もある。あるいは、ソフトウエアは、いわゆるインターネットに接続されている情報提供事業者によってダウンロード可能なプログラムプロダクトとして提供される場合もある。このようなソフトウエアは、読取装置によりその記憶媒体から読み取られて、あるいは、通信IF157等を介してダウンロードされた後、HDD154に一時的に格納される。そのソフトウエアは、プロセッサ151によってHDD154から読み出され、RAM153に実行可能なプログラムの形式で格納される。プロセッサ151は、そのプログラムを実行する。
図3に示されるサーバ100を構成する各構成要素は、一般的なものである。したがって、本開示の本質的な部分は、RAM153、HDD154、記憶媒体に格納されたソフトウエア、あるいはネットワークを介してダウンロード可能なソフトウエアであるともいえる。なお、サーバ100のハードウエアの動作は周知であるので、詳細な説明は繰り返さない。
なお、記録媒体としては、DVD(Digital Versatile Disc)−RAMに限られず、DVD−ROM、CD−ROM、フレキシブルディスク、ハードディスク、磁気テープ、カセットテープ、光ディスク、EEPROM(Electronically Erasable and Programmable Read Only Memory)、フラッシュROMなどの半導体メモリ等の固定的にプログラムを担持する媒体でもよい。また、記録媒体は、当該プログラム等をコンピュータが読取可能な一時的でない媒体である。また、ここでいうプログラムとは、プロセッサにより直接実行可能なプログラムだけでなく、ソースプログラム形式のプログラム、圧縮処理されたプログラム、暗号化されたプログラム等を含む。
(2)スマートフォン200
図4は、スマートフォン200のハードウエア構成の典型例を表した図である。図4に示されるように、スマートフォン200は、主たる構成要素として、プログラムを実行するプロセッサ251と、データを不揮発的に格納するROM252と、プロセッサ251によるプログラムの実行により生成されたデータ、又は入力装置(図示せず)を介して入力されたデータを揮発的に格納するRAM253と、データを不揮発的に格納するメモリ254と、タッチパネル255と、スイッチ256と、通信IF(Interface)257と、電源回路258とを含む。各構成要素は、相互にデータバスによって接続されている。
電源回路258は、スマートフォン200に内蔵される電池等の電源の電圧を降圧し、スマートフォン200の各部に電源供給を行なう回路である。スイッチ256は、電源回路258に給電を行なうか否かを切替えるための主電源用のスイッチ、およびその他の各種の押しボタンスイッチである。通信IF257は、サーバ100とのデータの送受信処理を行なう。メモリ254は、たとえばフラッシュメモリである。
タッチパネル255は、情報を表示し、かつ情報の入力を受け付ける。つまり、タッチパネル255は、情報の表示部(タッチパネル255)の機能と入力部の機能とを有する。なお、スマートフォン200では、両機能は、タッチパネル255として一体の部材として実現されても良いし、「モニタ」と「キーボードおよび/またはタッチパッド」というように、複数の部材として実現されても良い。
スマートフォン200における処理は、ハードウエアおよびプロセッサ251により実行されるソフトウエアによって実現される。このようなソフトウエアは、メモリ254に予め記憶されている場合がある。また、ソフトウエアは、その他の記憶媒体に格納されて、プログラムプロダクトとして流通している場合もある。あるいは、ソフトウエアは、いわゆるインターネットに接続されている情報提供事業者によってダウンロード可能なプログラムプロダクトとして提供される場合もある。このようなソフトウエアは、読取装置によりその記憶媒体から読み取られて、あるいは、通信IF257等を介してダウンロードされた後、メモリ254に一旦格納される。そのソフトウエアは、プロセッサ251によってメモリ254から読み出され、RAM253に実行可能なプログラムの形式で格納される。プロセッサ251は、そのプログラムを実行する。
図4に示されるスマートフォン200を構成する各構成要素は、一般的なものである。したがって、実施の形態1の本質的な部分は、RAM253、メモリ254、記憶媒体に格納されたソフトウエア、あるいはネットワークを介してダウンロード可能なソフトウエアであるともいえる。なお、スマートフォン200のハードウエアの動作は周知であるので、詳細な説明は繰り返さない。
なお、記録媒体としては、DVD−RAMに限られず、DVD−ROM、CD−ROM、フレキシブルディスク、ハードディスク、磁気テープ、カセットテープ、光ディスク、EEPROM、フラッシュROMなどの半導体メモリ等の固定的にプログラムを担持する媒体でもよい。また、記録媒体は、当該プログラム等をコンピュータが読取可能な一時的でない媒体である。また、ここでいうプログラムとは、プロセッサにより直接実行可能なプログラムだけでなく、ソースプログラム形式のプログラム、圧縮処理されたプログラム、暗号化されたプログラム等を含む。
<データの格納態様>
制御システム1において、サーバ100は、スマートフォン200から受信した制御指令と、当該制御指令を機器300へ送信した後に受信する機器300の状態とに基づいて、制御指令の結果を判断する。このため、サーバ100は、制御指令を格納し、また、機器300の状態を格納する。これらが格納される態様の具体例を、以下に説明する。
(制御指令の格納態様)
図5は、サーバ100において、制御指令が格納される態様の具体例を示す図である。スマートフォン200から送信された制御指令は、図5に示された制御データベースとして、たとえばHDD154に格納される。また、本明細書および図面では、データベースは、「DB」と略記される。
図5に示されるように、制御DBは、7つの項目のデータを含む。7つの項目とは、「制御ID」、「機器名」、「制御指令者」、「制御内容」、「結果」、「結果状態」、および「制御時間」である。
「制御ID」は、制御指令のそれぞれに割り振られるIDである。各制御指令は、唯一の制御IDを割り振られる。図5では、「制御ID」の一例として、「1」「2」等の番号が示されている。
「機器名」は、制御システム1において、制御対象となる機器300を特定する情報である。図5では、「機器名」の一例として、「リビングエアコン」、「空気清浄機」のような、機器300に対してユーザ等によって付された名称が示されている。
「制御指令者」は、制御指令をサーバ100へ送信したユーザを特定する情報である。図5では、「制御指令者」の一例として、「A」「B」等の、制御システム1における各ユーザの名称が示されている。
「制御内容」は、機器300に対して指示される動作の内容である。図5では、「制御内容」の一例として、「電源:OFF」「電源:ON」「モード:暖房」「モード:冷房」が示されている。「電源:OFF」は、機器300の電源をOFFする動作を意味する。「電源:ON」は、機器300の電源をONする動作を意味する。「モード:暖房」は、機器300の運転モードを「暖房」へ切り替える動作を意味する。「モード:冷房」は、機器300の運転モードを「冷房」へ切り替える動作を意味する。
「結果」は、制御指令と機器300の状態との比較の結果である。図5では、「結果」の例として、「状態不一致」、「成功」、「失敗」、および、「結果待ち」が示されている。「状態不一致」、「成功」、および、「失敗」のそれぞれは、図2を参照して説明された判断結果「状態不一致」、「成功」、および、「失敗」のそれぞれに対応する。「結果待ち」は、機器300に制御指令が送信されてからサーバ100が機器300の状態を未だ受信していないことを意味する。
「結果状態」は、制御指令を受信してから一定時間後に機器300から送信された当該機器300の状態である。図5では、「結果状態」の例として、「電源:ON」が示されている。
「制御時刻」は、サーバ100がスマートフォン200から制御指令を受信した時刻である。
サーバ100は、スマートフォン200から制御指令を受信すると、当該制御指令に「制御ID」を割り当て、当該制御指令の「制御時刻」を特定し、当該制御指令から「機器名」「制御指令者」「制御内容」を抽出し、そして、制御DBに、これらの情報を登録する。また、当該制御指令についての「結果」として、制御DBに、「結果待ち」を登録する。そして、サーバ100は、制御指令を機器300に送信する。その後、サーバ100は、機器300から当該機器300の状態を受信すると、「結果状態」に当該状態を登録する。また、サーバ100は、機器300の状態と「制御内容」とを比較して、制御指令の「結果」を特定する。そして、サーバ100は、特定した「結果」を、制御DBへ登録する。
(状態DB)
図6は、サーバ100において、機器300の状態が格納される態様の具体例を示す図である。機器300から送信された当該機器300の状態は、図6に示された状態DBとして、たとえばHDD154に格納される。
図6に示されるように、状態DBは、3つの項目のデータを含む。3つの項目とは、「機器名」「状態」「通知時刻」である。
「機器名」は、制御システム1において機器300を特定する情報であり、図5の「機器名」と同じである。「状態」は、機器300から送信された状態である。図5の「結果状態」と同じである。「通知時刻」は、サーバ100からスマートフォン200に最新の「結果」が送信された時刻である。サーバ100は、スマートフォン200からの制御指令と機器300の状態とに基づいて当該制御指令の「結果」を特定し、当該「結果」をスマートフォン200へ送信する(図2の「G.結果送信」)。「通知時刻」は、機器300からサーバ100に、当該機器300の状態が送信された、最新の時刻である。
<処理の流れ>
制御システム1では、スマートフォン200からの制御指令がサーバ100を介して機器300へ送信される。そして、スマートフォン200からの制御指令と機器300の状態とに基づいて当該制御指令の結果が特定され、当該結果がスマートフォン200へ送信される。このような制御システム1における処理の流れを、図7を参照してより具体的に説明する。図7は、サーバ100、スマートフォン200および機器300において実行される処理のフローチャートである。サーバ100における処理は、プロセッサ151によって実行される。スマートフォン200における処理は、プロセッサ251によって実行される。
まず、ステップP10で、スマートフォン200は、サーバ100に、機器300に対する制御指令を送信する。たとえば、スマートフォン200では、タッチパネル255に対するユーザの操作に応じて、プロセッサ251は、サーバ100に、当該操作に応じた制御指令を送信する。スマートフォン200におけるユーザの操作について、図8を参照して説明する。図8は、スマートフォン200のタッチパネル255に表示されるユーザインタフェース(以下、「UI」と称する。)の一例を示す図である。
スマートフォン200では、機器300に制御指令を送信するためのアプリケーションの実行によって、図8に示されるようなUI600が表示される。UI600は、フィールド610,620,630,640を含む。フィールド610は、制御対象の機器300の機器名を表示する。フィールド620は、3つの表示モードを表示する。フィールド630は、機器300の状態を表示する。フィールド640は、制御指令を選択するためのボタン(ボタン641,642)を表示する。
UI600は、機器300の電源状態を切り替える制御指示を送信する表示モードを表示する。フィールド630は、スマートフォン200に格納されている、機器300の最新の状態を表示する。当該最新の状態は、事前にサーバ100から送信されて、メモリ254に格納されている。サーバ100は、たとえば、図2において「A.機器状態送信」による機器300からの定期的な状態の送信によって機器300の最新の状態を取得し、スマートフォン200に、当該最新の情報を送信する。
ボタン641は、制御指令「電源ON」を送信するためのボタンである。ボタン642は、制御指令「電源OFF」を送信するためのボタンである。2つのボタン641,642のうち、フィールド630に表示された状態に対応する方のボタン(ボタン641)は、UI600における背景とは異なる色で、目立つように表示されている。そして、ボタン641またはボタン642のいずれかが操作されると、プロセッサ251は、サーバ100に、操作されたボタンに対応する制御指令を送信する。
図7に戻って、ステップP10においてスマートフォン200から制御指令が送信された後、ステップS10で、サーバ100は、スマートフォン200から送信された制御指令を受信し、当該制御指令を制御DB(図5参照)に格納する。なお、制御DBにおいて、格納される当該制御指令の「結果」の欄には、「結果待ち」が格納される。そして、制御は、ステップS20へ進められる。
ステップS20では、サーバ100は、受信した制御指令に制御IDを割り当て、当該制御指令の送信元であるスマートフォン200に当該制御IDを送信する。そして、制御は、ステップS30へ進められる。
なお、ステップS20でサーバ100から制御IDが送信された後、ステップP20で、スマートフォン200は、送信された制御IDを受信する。スマートフォン200では、ステップP10で送信された制御指令は、ステップP20で受信された制御IDと関連付けられる。
ステップS30では、サーバ100は、機器300に、ステップS10で受信した制御指令を送信する。なお、制御指令の送信先は、当該制御指令において制御対象として指定されている機器300を含む。制御指令の送信先は、当該制御指令において制御対象として指定されている機器300のみである場合もある。
ステップS30におけるサーバ100からの制御指令の送信の後、ステップD10では、機器300は、制御指令を受信し、当該制御指令を実行する。たとえば、制御指令が「電源OFF」であれば、機器300は、当該機器300の電源をOFFへと切り替える。制御指令が「モード:暖房」であれば、機器300は、当該機器300の動作モードを「暖房」へと切り替える。
一方、ステップS30で制御指令を送信してから一定時間が経過すると、ステップS40で、サーバ100は、ステップS30における制御指令の送信先である機器300に、当該機器300の状態の送信を要求する信号を送信する。
ステップS30におけるサーバ100からの状態の送信を要求する信号の送信の後、ステップD20で、機器300は、当該信号を受信し、当該信号に応じて当該機器300の状態を送信する。このとき送信される状態は、ステップD10で受信した制御命令によって指示される動作に対応する状態である。たとえば、受信した制御指令が電源の切り替えを指示するものであれば、ステップD20で送信される状態は、機器300の電源状態である。受信した制御指令が動作モードの切り替えを指示するものであれば、ステップD20で送信される状態は、機器300の動作モードである。
ステップD20における機器300からの状態の送信の後、ステップS50で、サーバ100は、当該状態を受信し、状態DB(図6参照)に当該状態を格納する。そして、制御は、ステップS60へ進められる。
ステップS60で、サーバ100は、ステップS50において機器300から受信した状態を、制御DB(図5参照)に格納する。
ステップS60では、サーバ100は、さらに、ステップS50で機器300から受信した状態と、ステップS10でスマートフォン200から受信した制御指令とに基づいて、制御指令が成功したかどうかを判断する。より具体的には、プロセッサ151は、ステップS50で機器300から受信した状態が、ステップS10でスマートフォン200から受信した制御指令に対応する状態と一致するかどうかを判断する。なお、ここで判断対象となる「ステップS10でスマートフォン200から受信した制御指令」は、制御DB(図5参照)において、「結果」の値が「結果待ち」である制御指令である。判断の結果は、「成功」、「状態不一致」、および「失敗」の中の1つである。前者の状態と後者の状態が一致した場合、結果は「成功」である。
前者の状態と後者の状態とが一致しない場合、結果は「状態不一致」または「失敗」である。機器300がスマートフォン200から受信した制御指令を実行できない処理を実行中であるために前者の状態と後者の状態が一致しない場合には、結果は「失敗」である。電源状態の切り替えや動作モードの変更についての制御指令について、当該制御指令を実行できない処理の一例としては、清掃処理が挙げられる。そして、機器300から受信した状態が「清掃処理の実行中」であり、制御指令が「電源ON」である場合には、結果は「失敗」である。
機器300がスマートフォン200から受信した制御指令を実行できる状態であるにも関わらず前者の状態と後者の状態が一致しない場合には、結果は「状態不一致」である。たとえば、機器300から受信した状態が「動作モード:冷房」であり、制御指令が「動作モード:暖房」である場合、結果は「状態不一致」である。機器300の動作モードが「冷房」である場合、機器300は、「暖房」の動作モードでも運転可能な状態であると考えられる。
ステップS60では、サーバ100は、さらに、制御DB(図5参照)中の、判断対象となっている制御指令に対応する「結果」として、上記判断の結果を格納する。
一方、ステップP30で、スマートフォン200は、ステップP20でサーバ100から制御IDを受信してから一定時間後、サーバ100に、ステップP10において送信した制御指令の結果を確認するための信号を送信する。当該信号は、たとえば、ステップP20で受信された制御IDと、制御指令の結果を確認するためのメッセージとを含む。
サーバ100は、ステップP30においてスマートフォン200が送信した信号を受信すると、ステップS70において、スマートフォン200に、ステップS60における判断の「結果」を送信する。ステップS70における「結果」の送信と、ステップS60における制御DBへの上記判断の結果の格納とは、同時に行われる場合もある。また、サーバ100は、「結果」の送信の後に、上記判断の結果を制御DBへ格納する場合もある。
スマートフォン200は、ステップS70において送信された「結果」を受信すると、ステップP40で、当該「結果」をタッチパネル255に表示する。図9および図10を参照して、「結果」の表示の具体例を説明する。
図9は、結果「成功」の表示例を示す図である。図10は、結果「状態不一致」の表示例を示す図である。
図9に示されたUI600Aは、電源をONすることを指示する制御指令が送信され、機器300が当該制御指令に従って当該機器300の動作を制御したときに表示される。UI600Aは、図8を参照して説明したUI600に重ねられた、ボックス651を含む。ボックス651は、結果「成功」を示す文字列を含む。ボックス651は、さらに、制御指令の内容に関する文字列([制御内容]「電源:ON」)と、機器300の状態に関する文字列([結果]「電源:ON」)を含む。
図10に示されたUI600Bは、電源をOFFすることを指示する制御信号が送信されたにも関わらず、機器300の動作が電源をONし続けたときに表示される。UI600Bは、図8を参照して説明したUI600に重ねられた、ボックス652を含む。ボックス652は、結果「状態不一致」を示す文字列を含む。ボックス652は、さらに、制御指令の内容に関する文字列([制御内容]「電源:OFF」)と、機器300の状態に関する文字列([結果]「電源:ON」)を含む。
<処理の具体例>
図7を参照して説明された処理では、処理の進行に伴って、制御DB(図5参照)および状態DB(図6参照)に格納されるデータが変化する。ここで、図11〜図17を参照して、制御DBおよび状態DBに格納されるデータの内容が、処理の進行に伴ってどのように変化するかについて、さらに具体的に説明する。なお、以下の例では、サーバ100は、2台のスマートフォン200のそれぞれから制御指令を受信する。2台のスマートフォン200のうち、1台は、ユーザAによって操作されるスマートフォン200である。もう1台は、ユーザBによって操作されるスマートフォン200である。
図11は、サーバ100の動作の流れの一例を時間軸に沿って示す図である。また、図12、図14〜図16は、制御DBにおけるデータの格納態様の具体例を示す図である。図13および図17は、状態DBにおけるデータの格納態様の具体例を示す図である。
図12は、制御DBの初期状態を示す。図13は、状態DBの初期状態を示す。初期状態では、制御DBおよび状態DBのいずれにおいても、すべての項目においてデータが登録されていない。図14〜図16には、制御DBにおけるデータの格納態様の遷移が、テーブルSC01〜SC11の順序で示されている。図17には、状態DBにおけるデータの格納態様の遷移が、テーブルST01〜ST02の順序で示されている。以下の説明では、図11に示された動作の流れに沿って、図14〜図17のそれぞれに示されたデータの格納態様の変化を説明する。
図11において「T11」として示されるように、ある日の12時00分00秒に、サーバ100は、スマートフォン200から制御指令を受信する。このスマートフォン200は、ユーザAによって操作される。サーバ100は、制御指令を受信すると、当該制御指令に制御IDを割り当て、そして、制御DBに当該制御指令を格納する。当該制御指令の格納は、図7のステップS10に対応する。図14のテーブルSC01は、このときの制御DBにおけるデータの格納態様を示す。テーブルSC01には、制御ID「1」について、機器名(リビングエアコン)、制御指示者(A)、および制御内容(電源:OFF)が格納されている。
その後、図11において「T12」として示されるように、サーバ100は、T11でスマートフォン200から受信した制御指令を機器300へ送信する。説明の便宜上、機器300への制御指令の送信も、12時00分00秒に行われたものとする。サーバ100は、機器300に制御指令を送信した時刻を、制御DBへ格納する。図14のテーブルSC02は、制御指令を送信した時刻(「制御時刻」)を格納された制御DBが示されている。
機器300への制御指令の送信から10秒間が経過した後、つまり、12時00分10秒に、サーバ100は、機器300に、状態の送信の要求を送信する(図11の「T13」)。ここでの「10秒間」とは、ステップS30における機器300への制御指令の送信が行われた後、ステップS40における機器300への状態の送信が要求されるまでの「一定時間」の一例である。
その後、図11において「T14」として示されるように、サーバ100は、機器300から当該機器300の状態を受信する。そして、サーバ100は、受信した状態とスマートフォン200から受信した制御指令によって特定される状態とが一致するかどうかに基づいて、制御指令が成功したかどうかを判断する。そして、サーバ100は、機器300から受信した当該機器300の状態と判断の結果を、制御DBに登録する。このときの制御DBは、図14のテーブルSC03に対応する。テーブルSC03では、テーブルSC02に対して、制御ID「1」について、「結果」が「状態不一致」へと変更され、「結果状態」(電源ON)が追加されている。また、サーバ100は、機器300から受信した当該機器300の状態(電源ON)を、状態DBへ登録する。また、サーバ100は、機器300から当該機器300の状態を受信した時刻を、状態DBへ登録する。このときの状態DBは、図17のテーブルST01に対応する。テーブルST01では、図13に示された初期状態と比較して、機器名「リビングエアコン」と、当該リビングエアコンの状態「電源:ON」と、通知時刻「2013/7/1_12:00:10」が追加されている。
その後、図11において「T15」として示されるように、サーバ100は、スマートフォン200に、上記した判断の結果を送信する。T13〜T15は、12時00分10秒に行なわれたものとする。
次に、図11において「T21」として示されるように、13時00分00秒に、サーバ100は、スマートフォン200から制御指令を受信する。このスマートフォン200は、ユーザBによって操作される。サーバ100は、制御指令を受信すると、当該制御指令に制御IDを割り当て、そして、制御DBに当該制御指令を格納する。当該制御指令の格納は、図7のステップS10に対応する。図14のテーブルSC04は、このときの制御DBにおけるデータの格納態様を示す。テーブルSC04には、テーブルSC03と比較して、制御ID「2」について、機器名(空気清浄機)、制御指示者(B)、制御内容(電源:ON)、および結果(結果待ち)がさらに格納されている。
その後、図11において「T22」として示されるように、サーバ100は、T21でスマートフォン200から受信した制御指令を機器300へ送信する。説明の便宜上、機器300への制御指令の送信も、13時00分00秒に行われたものとする。サーバ100は、機器300に制御指令を送信した時刻を、制御DBへ格納する。図14のテーブルSC05は、テーブルSC04に対して、制御ID「2」についての「制御時刻」をさらに格納されている。
機器300への制御指令の送信から10秒間が経過した後、つまり、13時00分10秒に、サーバ100は、機器300に、状態の送信の要求を送信する(図11の「T23」)。ここでの「10秒間」とは、ステップS30における機器300への制御指令の送信が行われた後、ステップS40における機器300への状態の送信が要求されるまでの「一定時間」の一例である。
その後、図11において「T24」として示されるように、サーバ100は、機器300から当該機器300の状態を受信する。そして、サーバ100は、受信した状態とスマートフォン200から受信した制御指令によって特定される状態とが一致するかどうかに基づいて、制御指令が成功したかどうかを判断する。そして、サーバ100は、機器300から受信した当該機器300の状態と判断の結果を、制御DBに登録する。このときの制御DBは、図14のテーブルSC06に対応する。テーブルSC06では、テーブルSC05に対して、制御ID「2」について、「結果」が「成功」へと変更され、「結果状態」(電源ON)が追加されている。また、サーバ100は、機器300から受信した当該機器300の状態を、状態DBへ登録する。このときの状態DBは、図17のテーブルST02に対応する。テーブルST02では、テーブルST01と比較して、機器名「空気清浄機」と、当該空気清浄機の状態「電源:ON」と、通知時刻「2013/7/1_13:00:10」が追加されている。
その後、図11において「T25」として示されるように、サーバ100は、スマートフォン200に、上記した判断の結果を送信する。T23〜T25は、13時00分10秒に行なわれたものとする。
次に、図11において「T31」として示されるように、14時00分00秒に、サーバ100は、スマートフォン200から制御指令を受信する。当該スマートフォン200は、ユーザAによって操作される。サーバ100は、制御指令を受信すると、当該制御指令に制御IDを割り当て、そして、制御DBに当該制御指令を格納する。当該制御指令の格納は、図7のステップS10に対応する。図15のテーブルSC07は、このときの制御DBにおけるデータの格納態様を示す。テーブルSC07には、制御ID「3」について、機器名(リビングエアコン)、制御指示者(A)、制御内容(モード:暖房)、および結果(結果待ち)が格納されている。
その後、図11において「T32」として示されるように、サーバ100は、スマートフォン200から受信した制御指令を機器300へ送信する。説明の便宜上、機器300への制御指令の送信も、12時00分00秒に行われたものとする。サーバ100は、機器300に制御指令を送信した時刻を、制御DBへ格納する。図15のテーブルSC08は、このときの制御DBにおけるデータの格納態様を示す。テーブルSC08には、テーブルSC07と比較して、制御ID「3」の制御指令を送信した時刻(「制御時刻」)がさらに格納されている。
ここで、T32における機器300への制御指令の送信が失敗したとする。送信の失敗例としては、たとえば、サーバ100から機器300へ制御指令を送信したにもかかわらず、サーバ100が当該送信から所定時間以内に機器300から制御指令を受信したことを示す信号(たとえば、ACK信号)を受信しない場合が挙げられる。
図11における「T33」は、サーバ100が上記のように制御指令の送信を失敗したことを示す。このとき、サーバ100は、制御DBに送信の失敗を登録する。テーブルSC09は、テーブルSC08と比較して、制御ID「3」の結果が「失敗」へと変更されている。
制御ID「3」については、これ以降、機器300への状態送信の要求などが行われない。したがって、制御ID「3」が処理されても、状態IDは更新されない。
次に、図11において「T41」として示されるように、15時00分00秒に、サーバ100は、スマートフォン200から制御指令を受信する。このスマートフォン200は、ユーザBによって操作される。サーバ100は、制御指令を受信すると、当該制御指令に制御IDを割り当て、そして、制御DBに当該制御指令を格納する。当該制御指令の格納は、図7のステップS10に対応する。図16のテーブルSC10は、このときの制御DBにおけるデータの格納態様を示す。テーブルSC010には、テーブルSC09と比較して、制御ID「4」について、機器名(リビングエアコン)、制御指示者(A)、制御内容(モード:冷房)、および結果(結果待ち)がさらに格納されている。
その後、図11において「T42」として示されるように、サーバ100は、T41でスマートフォン200から受信した制御指令を機器300へ送信する。説明の便宜上、機器300への制御指令の送信も、15時00分00秒に行われたものとする。サーバ100は、機器300に制御指令を送信した時刻を、制御DBへ格納する。図16のテーブルSC11は、テーブルSC10に対して、制御ID「4」についての「制御時刻」をさらに格納されている。
これ以降、サーバ100は、機器300への状態の送信の要求等を実行する。これ以降の処理による制御DBおよび状態DBの更新態様については、上記の説明内容と同様とすることができるため、ここでは、説明を繰り返さない。
<まとめ>
以上説明された実施の形態1によれば、サーバ100は、スマートフォン200から受信した制御指令を格納し、また、当該制御指令を機器300へ送信する。その後、サーバ100は、機器300から当該機器300の状態を受信する。そして、サーバ100は、機器300の状態とスマートフォン200から受信した制御指令によって特定される状態とを比較することにより、制御指令が成功したかどうかを判断する。そして、サーバ100は、スマートフォン200に、当該判断の結果を送信する。
[実施の形態2]
実施の形態2では、実施の形態1でサーバ100が行っていた判断を、スマートフォン200が行う。つまり、実施の形態2では、サーバ100は、スマートフォン200から受信した制御指令を機器300へ送信する。その後、サーバ100は、機器300から当該機器300の状態を受信する。そして、実施の形態2では、サーバ100は、スマートフォン200に、機器300の状態を送信する。スマートフォン200は、サーバ100から受信した機器300の状態と、サーバ100に送信した制御指令によって特定される状態とを比較することにより、制御指令が成功したかどうかを判断する。そして、スマートフォン200は、当該判断の結果を表示する。
図18は、実施の形態2のサーバ100、スマートフォン200および機器300において実行される処理のフローチャートである。図18に示された処理は、図7に示された実施の形態1の処理と比較すると、ステップS50より後の制御が異なる。
図18に示されるように、ステップS50での機器300の状態の格納の後、ステップP32で、スマートフォン200は、サーバ100に対して機器300の状態の送信を要求する。
ステップP32の要求に応じて、ステップS62で、サーバ100は、スマートフォン200に、状態DBに格納した機器300の状態を送信する。
ステップP34で、スマートフォン200は、サーバ100から機器300の状態を受信する。そして、ステップP34で、スマートフォン200は、サーバ100から受信した機器300の状態と、ステップP10でサーバ100に送信した制御指令とに基づいて、当該制御指令が成功したかどうかを判断する。より具体的には、プロセッサ251は、機器300の状態が、サーバ100に送信した制御指令に対応する状態と一致するかどうかを判断する。判断の結果は、「成功」、「状態不一致」、および「失敗」の中の1つである。具体的な判断の態様は、実施の形態1のステップS60におけるプロセッサ151による判断の態様と同様であるため、ここでは説明を繰り返さない。
[実施の形態3]
実施の形態3では、「一定時間」の長さが、制御指令において特定される動作の内容に応じて変化し得る。実施の形態1では、サーバ100は、ステップS30(図7参照)で機器300に制御指令が送信してから、一定時間後に、ステップS40で、機器300に状態の送信を要求した。実施の形態3では、このときの「一定時間」は、制御指令の内容、より具体的には制御指令によって特定される動作(図5等における「制御内容」)、に応じて変更される。
たとえば、「一定時間」は、制御指令によって特定される動作が、その指示から実行までに要することが予想される時間が長いほど、長く設定される。より具体的には、運転モードの切り替えが指示されてから実行されるまでに要する時間は、電源のON/OFFの切り替えが指示されてから実行されるまでに要する時間よりも、長くなることが予想される。電源のON/OFFの切り替えのための処理は、機器300における電源供給状態を変更することのみを含むのに対し、運転モードの切り替えのための処理は、実行中の運転モードを停止するための処理と別の運転モードでの運転を開始するための処理とを含む場合があるからである。したがって、上記「一定時間」は、たとえば、制御指令によって特定される動作が動作モードを切り替えるものである場合には、制御指令によって特定される動作が電源のON/OFFの切り替えである場合よりも長く設定される。
2以上の制御内容のそれぞれの「一定時間」は、たとえばHDD154に格納される。「一定時間」は、さらに、制御指令の対象となる機器300の種別ごとに設定されても良い。
実施の形態3によれば、制御指令の内容に応じて、なるべく早期にかつ確実に、機器300が当該制御指令に応じて動作しているか否かをスマートフォン200に送信できる。
[実施の形態4]
実施の形態4では、「一定時間」の長さが、制御指令による制御の対象の機器300の種別に応じて変化し得る。実施の形態3では、上記「一定時間」は、制御指令の内容に応じて変更される。実施の形態4では、上記「一定時間」は、制御指令の対象となる機器の種別に応じて変更される。
たとえば、「一定時間」は、制御指令の対象となる機器が制御指令を受信してから動作を実行するまでに要する時間が長くなることが予想される種別であるほど、長く設定される。
より具体的には、機器300が「ハードディスク内蔵のテレビ」である場合、電源のONの指令を受けてから当該テレビの起動が完了するまでにはある程度の時間を要する。一方、機器300が「照明器具」である場合、電源のONの指令を受けてから当該照明器具が点灯するまでに要する時間は、一般的には、上記テレビの起動の完了と比較して短い。したがって、たとえば、制御指令の対象となる機器の種別が「ハードディスク内蔵のテレビ」である場合には、制御指令の対象となる機器の種別が「照明器具」である場合よりも、上記「一定時間」は長く設定される。2以上の機器の種別のそれぞれの「一定時間」は、たとえばHDD154に格納される。
これにより、制御指令によって特定される機器300の種別に応じて、なるべく早期にかつ確実に、機器300が当該制御指令に応じて動作しているか否かをスマートフォン200に送信できる。
[実施の形態5]
実施の形態5では、サーバ100から機器300への要求が省略される。実施の形態1では、サーバ100は、ステップS30(図7参照)で機器300に制御指令が送信してから、一定時間後に、ステップS40で、機器300に状態の送信を要求した。そして、機器300は、当該要求に応じて、サーバ100に、当該機器300の状態を送信した。実施の形態5では、機器300は、サーバ100からの要求に応じるのではなく、制御指令を受信した後、当該機器300の状態が変更されたことを条件として、サーバ100に当該機器300の状態を送信する。
図19は、実施の形態5のサーバ100、スマートフォン200および機器300において実行される処理のフローチャートである。図19に示された処理は、図7に示された実施の形態1の処理と比較すると、サーバ100によるステップS40が、機器300によるステップD12に置換されている。
より具体的には、図19に示されるように、ステップD10で制御指令を実行した後、機器300では、ステップD12に制御が進められる。
ステップD12では、機器300は、機器300において、ステップD10で実行した制御指令に対応する状態が変更されたかどうかを判断する。そして、機器300は、当該状態が変更されたと判断すると、ステップD20へ制御を進める。
より具体的には、機器300の種別が「エアコンディショナ」である場合であって、制御指令が運転モードを「冷房」に切り替えるものである場合、機器300は、自装置が冷房運転を開始したか、つまり、たとえば冷風の出力が開始されたかどうかを判断する。
実施の形態5では、実施の形態1と比較して、制御システム1においてサーバ100から機器300への信号の送信の回数を、ステップS40の分だけ削減できる。
[実施の形態6]
実施の形態6では、機器300の状態が制御指令によって特定される状態と一致しない場合、スマートフォン200は、結果「状態不一致」とともに、当該結果の原因を表示する。
図20は、実施の形態6に係る制御システム1の概略構成を表した図である。図20に示された制御システム1は、図1に示された制御システム1と比較して、機器310(エアコンディショナ)を操作するためのリモートコントローラ(以下、「リモコン」と略す)400を含む。リモコン400は、ユーザからの指示に基づき、たとえば赤外線で、機器300に対して制御信号を送信する。
図21は、実施の形態6に係る制御システム1の機能的な構成を模式的に示す図である。図2と比較して、図21では、「F.機器状態送信」において、機器300からサーバ100へ、当該機器300の状態とともに、当該機器300の状態の原因となる制御指令の送信元を特定する情報(「状態の原因」)を送信する。このために、実施の形態6では、サーバ100から機器300に、制御指令とともに当該制御指令の送信元(たとえば、ユーザ名)が送信される。そして、機器300は、当該機器300が受信した制御指令の送信元を特定する情報を格納する。そして、機器300からサーバ100へは、当該機器300の状態とともに当該状態の原因となった制御指令の送信元を特定する情報が送信される。実施の形態6では、機器300において格納される送信元は、スマートフォン200だけでなくリモコン400を含む。
図22は、実施の形態6の制御DBにおけるデータの格納態様の一例を模式的に示す図である。実施の形態6では、制御DBの各制御IDのデータは、「原因」の項目を含む。「原因」として登録されている「リモコン」は、リモコン400に対応する。
図23は、実施の形態6の状態DBにおけるデータの格納態様の一例を模式的に示す図である。実施の形態の状態DBにおける各機器のデータは、「状態」の「原因」の項目を含む。「原因」として登録されている「リモコン」は、リモコン400に対応する。
図24は、実施の形態6のサーバ100、スマートフォン200および機器300において実行される処理のフローチャートである。図24に示された処理は、図7に示された処理に対して、機器300によるステップD22以降の制御が変更されている。
より具体的には、機器300は、ステップS40におけるサーバ100からの状態の送信の要求に対して、ステップD22で、当該機器300の状態に加えて、当該状態の原因を送信する。より具体的には、機器300は、上記したように制御指令の送信元を特定する情報が格納されている。そして、機器300は、「状態」として、当該機器300において実行されている動作(状態)の内容を送信し、そして、「原因」として、実行中の動作(状態)が基づく制御指令の送信元を特定する情報を送信する。たとえば、機器300は、たとえば、リモコン400からの制御指令に基づく動作を実行中の場合、「原因」として「リモコン」を送信する。また、機器300は、たとえば、スマートフォン200が機器300に向けて(サーバ100を介して)送信した制御指令に基づく動作を実行中の場合、当該制御指令の「原因」として制御IDを送信する。
これに応じて、ステップS52で、サーバ100は、機器300から「状態」と「原因」を受信し、これらを状態DBに登録する。これにより、実施の形態6の状態DBは、図23に示されるように「原因」の項目のデータを含む。そして、制御はステップS64へ進められる。
ステップS64では、サーバ100は、ステップS52で受信した「状態」と「原因」と、ステップS52で機器300から受信した状態と、ステップS10でスマートフォン200から受信した制御指令とに基づいて、制御指令が成功したかどうかを判断する。より具体的には、プロセッサ151は、ステップS52で機器300から受信した状態が、ステップS10でスマートフォン200から受信した制御指令に対応する状態と一致するかどうかを判断する。なお、ここで判断対象となる「ステップS10でスマートフォン200から受信した制御指令」は、制御DB(図22参照)において、「結果」の値が「結果待ち」である制御指令である。
ステップS64では、サーバ100は、さらに、制御DB(図22参照)中の、判断対象となっている制御指令に対応する「結果」として、上記判断の結果を格納する。また、「原因」として、ステップS52で機器300から受信した「原因」を格納する。なお、「結果」が「状態不一致」である場合であって、「原因」が「リモコン」ではなく制御IDであった場合には、制御DBの「結果」の欄には当該制御IDに対応する「制御指示者」が格納されても良い。
そして、サーバ100は、ステップP30におけるスマートフォン200からの結果確認に応じて、ステップS66の制御を実行する。ステップS66では、サーバ100は、スマートフォン200に、「結果」と「原因」を送信(通知)する。このとき、「原因」は、「結果」が「状態不一致」である場合にのみ、送信されても良い。送信される「原因」は、たとえば、「リモコン」または「制御指示者」である。
ステップS66によるサーバ100の「結果」等の送信(通知)の後、ステップP42で、スマートフォン200は、サーバ100から送信(通知)された内容を表示する。より具体的には、「結果」のみが送信された場合には、スマートフォン200は、「結果」を表示する。「結果」と「原因」が送信された場合には、スマートフォン200は、当該「結果」と当該「原因」とを表示する。
図25と図26のそれぞれは、実施の形態6のスマートフォン200におけるUIの表示例を示す図である。図25のUI600Cは、ボックス653を含む。ボックス653は、結果を表す文字列「状態不一致」を含む。ボックス653は、さらに、原因「リモコン」を含む文章「リモコン操作が発生したため、…」を含む。
図26のUI600Dは、ボックス654を含む。ボックス654は、結果を表す文字列「状態不一致」を含む。ボックス653は、さらに、原因「B」(制御指示者)を含む文章「Bさんのリモート操作が発生したため、…」を含む。
[実施の形態7]
実施の形態7は、機器300が実行中の制御指令がスマートフォン200から送信されたものである場合には、実施の形態6のステップD22において、機器300がサーバ100に「原因」を送信することを省略する。つまり、実施の形態7では、機器300が実行中の制御指令がスマートフォン200から送信されたものである場合には、ステップD22で、機器300は、サーバ100に、「状態」のみを送信する。
実施の形態7では、機器300が実行中の制御指令がスマートフォン200から送信されたものである場合には、機器300が「原因」を送信する代わりに、ステップS66で、サーバ100が、「原因」を特定する。サーバ100による「原因」の特定について、図27を参照して説明する。図27は、ステップS66のサブルーチンに相当する処理のフローチャートである。
ステップS802では、サーバ100は、ステップS64における判断によって導出された「結果」が「状態不一致」であるか否かを判断する。「結果」が「状態不一致」以外であると判断すると、サーバ100は、ステップS804へ制御を進める。「結果」が「状態不一致」であると判断すると、サーバ100は、ステップS806へ制御を進める。
ステップS804では、サーバ100は、スマートフォン200へ「結果」のみを送信して、処理を終了させる。
ステップS806では、サーバ100は、「状態」が「自動運転」であるか、または、機器300から「原因」として「リモコン」が送信されたかを判断する。そして、サーバ100は、「状態」が「自動運転」であると判断するか、または、機器300から「原因」として「リモコン」が送信されたと判断した場合(ステップS806でYES)、ステップS808へ制御を進める。また、サーバ100は、「状態」が「自動運転」ではなく、かつ、機器300から送信された「原因」が「リモコン」ではない(または「原因」が送信されてこなかった)と判断した場合(ステップS806でNO)、ステップS810へ制御を進める。
ステップS808では、サーバ100は、スマートフォン200に、ステップS64における判断の「結果」と、機器300の「状態」と、「原因」とを送信する。そして、サーバ100は、処理を終了させる。
ステップS810では、サーバ100は、制御DBから、次の(1)〜(3)のすべての条件に当てはまる制御指令を検索する。
(1)制御時刻が、処理対象の制御指令の制御時刻よりも後
(2)制御結果が、「成功」である
(3)結果状態が、処理対象の制御指令の制御内容から期待される結果状態と異なる
「処理対象」とは、スマートフォン200への「結果」等の送信の対象となっていることを意味する。(1)〜(3)の条件に基づく判断について、図28を参照してより具体的に説明する。図28は、実施の形態6における制御DBの一例を示す図である。
図28に示された制御DBは、制御ID「91」〜「94」の制御指令のデータを含む。そして、制御ID「91」の制御指令が処理対象とされた場合を考える。
条件(1)については、制御ID「92」〜「94」の制御指令が条件を満たす。
条件(2)については、制御ID「94」の制御指令のみが条件を満たす。
条件(3)については、制御ID「94」の制御指令のみが条件を満たす。制御ID「91」の制御指令の制御内容「モード:冷房」から期待される結果状態は、「モード:冷房」であり、そして、当該結果状態は、制御ID「94」の結果状態「モード:ドライ」と異なるからである。
図27に戻って、サーバ100は、ステップS810で制御指令の検索結果を取得すると、ステップS812へ制御を進める。
ステップS812では、サーバ100は、スマートフォン200に、ステップS64における判断の「結果」と、機器300の「状態」と、ステップS810で検索結果として取得した制御指令の「制御指示者」とを送信する。この「制御指示者」は、「原因」に相当する。そして、サーバ100は、処理を終了させる。
実施の形態7では、機器300は、機器300が実行中の制御指令がスマートフォン200から送信されたものである場合には、「原因」を送信する必要がない。このため、機器300は、スマートフォン200からサーバ100を介して送信された制御指令については、送信元や制御IDを格納しておく必要がない。
[実施の形態のまとめ]
本開示のある局面に従うと、機器300と通信するための通信装置(通信IF157,257)と、プロセッサ151,251と、機器300に対する制御指令を格納するための記憶装置とを備える情報処理装置が提供される。プロセッサ151,251は、機器300に向けて、制御指令を送信し、機器300への制御指令の送信後に、制御指令に対応する機器300の状態が機器300から送信された情報によって特定される当該機器300の状態と一致するか否かを判断し、判断の結果を出力するように構成されている。
これにより、制御対象の機器が制御命令に応じた動作を実行しているかどうかが、機器自体から送信された情報に基づいて判断される。これにより、当該判断の結果が制御対象の機器以外の装置の影響を受けることを回避できる。また、制御対象の機器が制御命令に応じた動作を実行しているかどうかが、制御対象の機器以外の検出装置の検出結果を用いることなく、判断される。制御システムは、当該検出装置を必要としない。したがって、当該検出装置が必要とされることによって制御システムを実装するためのコストが上昇することを回避できる。
好ましくは、通信装置(サーバ100の通信IF157)は、制御指令を出力可能な1以上の情報端末(スマートフォン200)と通信するように構成されている。記憶装置に格納される制御指令は、通信装置(通信IF157)を介して情報端末(スマートフォン200)から受信した制御指令である。判断の結果の出力することは、情報端末(スマートフォン200)に判断の結果を送信することを含む。
これにより、上記判断の処理がサーバでなされる。つまり、当該判断のための処理の負荷をスマートフォンに負わせることを回避できる。
好ましくは、通信装置(通信IF157)は、第1の情報端末(スマートフォン200A)および第2の情報端末(スマートフォン200B)と通信するように構成されている。記憶装置に格納される制御指令は、第1の情報端末(スマートフォン200A)から受信した第1の制御指令と、第2の情報端末(スマートフォン200B)から受信した第2の制御指令を含む。記憶装置は、第1の制御指令の送信元である第1の情報端末(スマートフォン200A)を特定する情報と、第2の制御指令の送信元である第2の情報端末(スマートフォン200B)を特定する情報とをさらに格納するように構成されている。
プロセッサ151は、第1の制御指令に対応する機器300の状態が機器300から送信された情報によって特定される当該機器300の状態と一致しないと判断し、第2の制御指令に対応する機器300の状態が機器300から送信された情報によって特定される当該機器300の状態と一致すると判断した場合に、第1の情報端末(スマートフォン200A)に、判断の結果に加えて、第2の情報端末(スマートフォン200B)を特定する情報を送信するように構成されている。
これにより、第1の情報端末から送信された制御指令による制御が失敗した場合に、第1の情報端末のユーザに、その原因を提供できる。
好ましくは、通信装置(スマートフォン200の通信IF257)は、機器300と通信可能なサーバ100と通信可能に構成されている。情報処理装置(スマートフォン200)は、判断の結果を表示するための表示部(タッチパネル255)をさらに備える。機器300に制御指令を送信することは、サーバ100に制御指令を送信することを含む。通信装置(通信IF257)は、機器300から送信された情報を、サーバ100を介して受信するように構成されている。
これにより、スマートフォン側のアプリケーションとして、上記判断を実装できる。したがって、上記判断をより容易に実装できる。
好ましくは、通信装置(通信IF157,257)は、機器300から、機器300が実行している動作の指示を出力した主体を特定する情報(実施の形態6の「リモコン」等)を受信する。プロセッサ151,251は、主体を特定する情報(実施の形態6の「リモコン」等)を、機器300から送信された当該機器300の状態の原因としてさらに出力するように構成されている。
これにより、より多くの情報をユーザに提供できる。
本開示のある局面に従うと、機器300に制御指令を出力するためのコンピュータによって実行される情報提供方法が提供される。コンピュータは、機器300に対する制御指令を格納するための記憶装置を備える。情報提供方法は、機器300に、制御指令を送信するステップ(ステップS30/ステップP10およびステップS30)と、機器300への制御指令の送信後に、制御指令に対応する機器300の状態が機器300から送信された情報によって特定される当該機器300の状態と一致するか否かを判断するステップ(ステップS60/ステップP34)と、判断するステップにおける判断の結果を出力するステップ(ステップS70/ステップP34)とを備える。
これにより、制御対象の機器が制御命令に応じた動作を実行しているかどうかが、機器自体から送信された情報に基づいて判断される。これにより、当該判断の結果が制御対象の機器以外の装置の影響を受けることを回避できる。また、制御対象の機器が制御命令に応じた動作を実行しているかどうかが、制御対象の機器以外の検出装置の検出結果を用いることなく、判断される。制御システムは、当該検出装置を必要としない。したがって、当該検出装置が必要とされることによって制御システムを実装するためのコストが上昇することを回避できる。
本開示のある局面に従うと、機器300に制御指令を出力するためのコンピュータによって読取可能なプログラムが提供される。コンピュータは、機器300に対する制御指令を格納するための記憶装置を備える。プログラムは、コンピュータに、機器300に、制御指令を送信するステップ(ステップS30/ステップP10およびステップS30)と、機器300への制御指令の送信後に、制御指令に対応する機器300の状態が機器300から送信された情報によって特定される当該機器300の状態と一致するか否かを判断するステップ(ステップS60/ステップP34)と、判断するステップにおける判断の結果を出力するステップ(ステップS70/ステップP34)とを実行させる。
これにより、制御対象の機器が制御命令に応じた動作を実行しているかどうかが、機器自体から送信された情報に基づいて判断される。これにより、当該判断の結果が制御対象の機器以外の装置の影響を受けることを回避できる。また、制御対象の機器が制御命令に応じた動作を実行しているかどうかが、制御対象の機器以外の検出装置の検出結果を用いることなく、判断される。制御システムは、当該検出装置を必要としない。したがって、当該検出装置が必要とされることによって制御システムを実装するためのコストが上昇することを回避できる。
本開示のある局面に従うと、機器300と、機器300に対する制御指令を出力するための情報端末(スマートフォン200)と、機器300および情報端末(スマートフォン200)と通信可能なサーバ100とを備える制御システムが提供される。情報端末(スマートフォン200)は、サーバ100に制御指令を送信するための送信部を含む。サーバ100は、機器300と通信するための通信装置(通信IF157)と、プロセッサ151と、情報端末(スマートフォン200)から送信された制御指令を格納するための記憶装置とを含む。プロセッサ151は、機器300に、制御指令を送信し、機器300への制御指令の送信後に、制御指令に対応する機器300の状態が機器300から送信された情報によって特定される当該機器300の状態と一致するか否かを判断し、情報端末(スマートフォン200)に、判断の結果を出力するように構成されている。情報端末(スマートフォン200)は、判断の結果を表示するための表示部(タッチパネル255)をさらに含む。
これにより、制御対象の機器が制御命令に応じた動作を実行しているかどうかが、機器自体から送信された情報に基づいて判断される。これにより、当該判断の結果が制御対象の機器以外の装置の影響を受けることを回避できる。また、制御対象の機器が制御命令に応じた動作を実行しているかどうかが、制御対象の機器以外の検出装置の検出結果を用いることなく、判断される。制御システムは、当該検出装置を必要としない。したがって、当該検出装置が必要とされることによって制御システムを実装するためのコストが上昇することを回避できる。
今回開示された実施の形態およびその変形例はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。実施の形態のそれぞれにおいて開示された技術は、可能な限り、単独でも組み合わせても実施され得ることが意図される。