(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-05-06
(45)【発行日】2022-05-16
(54)【発明の名称】機器制御システム、機器制御方法、及びプログラム
(51)【国際特許分類】
H04Q 9/00 20060101AFI20220509BHJP
H04L 67/125 20220101ALI20220509BHJP
H04M 11/00 20060101ALI20220509BHJP
H04R 3/00 20060101ALI20220509BHJP
【FI】
H04Q9/00 301E
H04L67/125
H04M11/00 301
H04R3/00 320
(21)【出願番号】P 2018009918
(22)【出願日】2018-01-24
【審査請求日】2020-11-20
(73)【特許権者】
【識別番号】000004075
【氏名又は名称】ヤマハ株式会社
(74)【代理人】
【識別番号】110000154
【氏名又は名称】特許業務法人はるか国際特許事務所
(72)【発明者】
【氏名】須山 明彦
【審査官】今川 悟
(56)【参考文献】
【文献】特開2017-167627(JP,A)
【文献】特開2013-258536(JP,A)
【文献】特開2006-345240(JP,A)
【文献】特開2007-184745(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04Q 9/00
H04L 67/125
H04M 11/00
H04R 3/00
(57)【特許請求の範囲】
【請求項1】
動作指示を取得する動作指示取得手段
、および
前記動作指示に基づいて生成されたコマンドを1または複数のデバイスへ送信する送信手段
を含むサーバと、
前記1または複数のデバイスの1つの動作状況に基づいて、前記1つのデバイスが、
予め定められた前記サーバに配置される前記送信手段と他のデバイスを経由せずに通信する第1のモードと、前記送信手段と他のデバイスを経由して通信する第2のモードとのうち一方で通信するよう制御する通信制御手段と、
を含む機器制御システム。
【請求項2】
請求項1に記載の機器制御システムにおいて、
前記1または複数のデバイスは同じローカルエリアネットワーク内に配置され、
前記通信制御手段は、前記1または複数のデバイスの動作状況に基づいて、前記1または複数のデバイスのうち少なくとも1つを除くデバイスが前記第2のモードで通信するよう制御する、
機器制御システム。
【請求項3】
請求項1に記載の機器制御システムにおいて、
前記通信制御手段は、前記1または複数のデバイスのうち1つの動作状況に基づいて、前記1つのデバイスに向けて前記第2のモードで通信させるコマンドを送信する、
機器制御システム。
【請求項4】
請求項1から3のいずれかに記載の機器制御システムにおいて、
前記送信手段は、前記デバイスのうち1つが前記第2のモードで通信する場合に、前記第1のモードで通信する他のデバイスへ向けて、前記第2のモードで通信する1つのデバイスへのコマンドを送信する、
機器制御システム。
【請求項5】
請求項4に記載の機器制御システムにおいて、
前記送信手段は、前記デバイスのうち1つが前記第2のモードで通信する場合に、前記第1のモードで通信し、かつ音楽を再生していないデバイスへ向けて、前記第2のモードで通信する前記1つのデバイスへのコマンドを送信する、
機器制御システム。
【請求項6】
請求項1から5のいずれかに記載の機器制御システムにおいて、
前記通信制御手段は、前記1または複数のデバイスのうち前記第2のモードで通信する1つのデバイスの動作状況に基づいて、前記1つのデバイスが前記第1のモードで通信するよう制御する、
機器制御システム。
【請求項7】
請求項6に記載の機器制御システムにおいて、
前記通信制御手段は、前記第2のモードで通信するデバイスを制御するコマンドが、前記第1のモードで通信するデバイスへ向けて送信された場合に、前記第2のモードで通信するデバイスが前記第1のモードで通信するよう制御する、
機器制御システム。
【請求項8】
請求項7に記載の機器制御システムにおいて、
前記通信制御手段は、前記第1のモードで通信するデバイスへ向けて、前記第2
のモードで
通信するデバイスへのコマンドが送信される頻度に基づいて、前記第2
のモードで
通信するデバイスが前記第1のモードで通信するよう制御する、
機器制御システム。
【請求項9】
請求項6に記載の機器制御システムにおいて、
前記通信制御手段は、前記第1のモードで通信するデバイスが音楽データを再生する処理を実行している場合に、前記処理を実行するデバイスと異なるデバイスが前記第1のモードで通信するよう制御する、
機器制御システム。
【請求項10】
サーバが、動作指示を取得するステップと、
前記サーバが、前記動作指示に基づいて生成されたコマンドを1または複数のデバイスへ送信するステップと、
前記1または複数のデバイスの1つの動作状況に基づいて、前記1つのデバイスが、
予め定められた前記
サーバと他のデバイスを経由せずに通信する第1のモードと、前記
サーバと他のデバイスを経由して通信する第2のモードとのうち一方で通信するよう制御するステップと、
を含む機器制御方法。
【請求項11】
サーバに配置され動作指示を取得する動作指示取得手段、
前記サーバに配置され前記動作指示に基づいて生成されたコマンドを1または複数のデバイスへ送信する送信手段、および、
前記1または複数のデバイスの1つの動作状況に基づいて、前記1つのデバイスが、
予め定められた前記サーバに配置される前記送信手段と他のデバイスを経由せずに通信する第1のモードと、前記送信手段と他のデバイスを経由して通信する第2のモードとのうち一方で通信するよう制御する通信制御手段、
としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は機器制御システム、機器制御方法、及びプログラムに関する。
【背景技術】
【0002】
家電製品やオーディオ機器など、汎用的なコンピュータ機器と異なるデバイスにネットワーク等への接続機能を付加し、それらのデバイスから情報を得たり、それらのデバイスをリモート制御することが盛んに行われている。これらのデバイスは、インターネットを介してサーバと通信している。
【0003】
特許文献1には、ネットワークを通じてAV機器を遠隔制御するシステムが開示されている。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
ネットワーク接続機能を有するデバイスと、そのデバイスとネットワークを介して接続されるサーバとの間では、定期的にデータの送受信をする必要がある。すると、ネットワーク接続機能を有するデバイスの数の増加により、サーバと直接的に接続するデバイスが増加し、これにより接続コストが増大する恐れがある。
【0006】
本発明は上記課題を鑑みてなされたものであって、その目的は、ネットワーク接続機能を有するデバイスと、それらとネットワークを介して接続されるサーバとの間の接続コストの増大を抑制する技術を提供することにある。
【課題を解決するための手段】
【0007】
上記課題を解決するために、本発明に係る機器制御システムは、動作指示を取得する動作指示取得手段と、前記動作指示に基づいて生成されたコマンドを1または複数のデバイスへ送信する送信手段と、前記1または複数のデバイスの1つの動作状況に基づいて、前記1つのデバイスが、前記送信手段と他のデバイスを経由せずに通信する第1のモードと、前記送信手段と他のデバイスを経由して通信する第2のモードとのうち一方で通信するよう制御する通信制御手段と、を含む。
【0008】
また、本発明に係る機器制御方法は、動作指示を取得するステップと、前記動作指示に基づいて生成されたコマンドを1または複数のデバイスへ送信するステップと、前記1または複数のデバイスの1つの動作状況に基づいて、前記1つのデバイスが、前記送信手段と他のデバイスを経由せずに通信する第1のモードと、前記送信手段と他のデバイスを経由して通信する第2のモードとのうち一方で通信するよう制御するステップと、を含む。
【0009】
また、本発明に係るプログラムは、動作指示を取得する動作指示取得手段、前記動作指示に基づいて生成されたコマンドを1または複数のデバイスへ送信する送信手段、および、前記1または複数のデバイスの1つの動作状況に基づいて、前記1つのデバイスが、前記送信手段と他のデバイスを経由せずに通信する第1のモードと、前記送信手段と他のデバイスを経由して通信する第2のモードとのうち一方で通信するよう制御する通信制御手段、としてコンピュータを機能させる。
【発明の効果】
【0010】
本発明によれば、ネットワーク接続機能を有するデバイスと、それらとネットワークを介して接続されるサーバとの間の接続コストの増大を抑制することができる。
【図面の簡単な説明】
【0011】
【
図1】本発明の実施形態にかかる機器制御システムの構成を示す図である。
【
図3】音声認識装置、コマンドデータ送信装置および機器により実現される機能を示すブロック図である。
【
図5】MQTTサーバによる通信を説明する図である。
【
図6】対象機器へ送信される再送信メッセージの一例を示す図である。
【
図7】動作指示受付部、送信先決定部、メッセージ生成部、メッセージ送信部の処理の一例を示すフロー図である。
【
図8】送信先決定部の処理の一例を示すフロー図である。
【
図10】通信モード制御部の処理の一例を示すフロー図である。
【
図11】メッセージ受信部、コマンド再送信部、コマンド実行部の処理の一例を示すフロー図である。
【
図12】状態メッセージを送受信する処理の一例を示すフロー図である。
【発明を実施するための形態】
【0012】
以下、本発明の実施形態の例を図面に基づいて説明する。
【0013】
[1.システム構成]
図1は、本発明の実施形態に係る機器制御システム1の構成を示す。
図1に示すように、機器制御システム1は、第1機器20-1、第2機器20-2、第3機器20-3、音声入力装置30、音声認識装置40、及びコマンド処理システム50を含む。以下では、第1機器20-1、第2機器20-2、および第3機器20-3を総称して「機器20」と記載する場合がある。
【0014】
機器20および音声入力装置30はローカルエリアに設置され、LAN2に接続される。LAN2は有線LANであってもよいし、無線LANであってもよい。LAN2はルータ4を介してインターネット6に接続される。音声認識装置40及びコマンド処理システム50はローカルエリア外に設置される。すなわち、機器20及び音声入力装置30から見て、音声認識装置40及びコマンド処理システム50はインターネット6側に設置される。なお、「ローカルエリア」とは、LAN2を介した通信が可能な限られた範囲のエリアである。
【0015】
機器20は機器制御システム1による制御の対象となる機器20である。
図1では、3台の機器20が示されているが、4台以上の機器20が含まれていてもよいし、2台以下の機器20のみが含まれていてもよい。以下では機器20は同じLAN2に接続されているものとする。
【0016】
例えば、機器20はオーディオ装置又はオーディオビジュアル装置である。具体的には、機器20は、AVレシーバ、AVアンプ、スピーカ、光ディスク再生装置(ブルーレイディスク(登録商標)プレーヤ又はDVD(登録商標)プレーヤ等)、又はテレビジョン受像機である。また例えば、機器20は楽器(電子楽器又は電気楽器等)であってもよい。なお、機器20はこれら以外の装置であってもよい。
【0017】
以下では、第1機器20-1がAVレシーバであり、第2機器20-2がテレビジョン受像機であり、第3機器20-3が他の部屋(キッチン)に設置されスピーカを有する装置である例を想定する。第2機器20-2はHDMI(High-Definition Multimedia Interface:登録商標)ケーブルを介して第1機器20-1の第1のHDMI端子(HDMI1)に接続されている。また、プライベートIPアドレス「192.168.0.2」、「192.168.0.3」、「192.168.0.4」がそれぞれ第1機器20-1、第2機器20-2、第3機器20-3に対して設定されている。
【0018】
図1に示すように、第1機器20-1は制御部21、記憶部22、及び通信部23を含む。制御部21は少なくとも一つのマイクロプロセッサ(CPU)を含み、記憶部22に記憶されたプログラムに従って処理を実行する。記憶部22は、主記憶部(例えばRAM)及び補助記憶部(例えば、不揮発性の半導体メモリ、またはハードディスクドライブ)を含む。記憶部22はプログラムやデータを記憶するためのものである。通信部23は他の装置との間でデータを送受信するためのものである。
図1では省略されているが、第2機器20-2、および第3機器20-3も制御部21、記憶部22、及び通信部23を含む。
【0019】
なお、機器20は、情報記憶媒体(例えば光ディスク又はメモリカード等)に記憶されたプログラムやデータを読み取るための構成(例えば光ディスクドライブ又はメモリーカードスロット等)を備えてもよい。そして、プログラムが情報記憶媒体を介して機器20に供給されてもよい。プログラムはインターネット6を介して機器20に供給されてもよい。
【0020】
音声入力装置30はマイクロフォンを含み、音声入力を受け付ける。本実施形態では、ユーザが機器20への動作指示を音声入力するために音声入力装置30が使用される。例えば、X社が提供するコマンド処理システム50を介して、居間に設置された機器20をスタンバイ状態から起動させたい場合、ユーザは「AAA ask MC to turn on the Living Room」等を音声入力装置30に入力する。ここで、「AAA」は音声入力装置30に対する音声入力を開始させるための言葉(Wake word)であって、例えば音声入力装置30の名称であり、「MC」は、コマンド処理システム50の名称である。
【0021】
音声入力装置30に入力された音声(フレーズ)を示す音声データはユーザIDとともにインターネット6を介して音声認識装置40に送信される。音声認識装置40は例えばサーバコンピュータによって実現される。音声認識装置40はいわゆるクラウドコンピューティングにより、複数のサーバによって実現されてもよい。音声認識装置40は音声認識処理を実行することによって、音声データを、プログラム(コマンド処理システム50)によって理解しやすい形式のデータに変換する。例えば、音声認識装置40は、フレーズの音声データから、そのユーザの指示の種類と指示の対象とを示す文字列を含む所定形式の動作指示を生成する。そして、動作指示はユーザIDとともにコマンド処理システム50に送信される。なお、ユーザIDは、音声データがコマンド処理システム50に送信されるまでの間に、いずれかのインターネット6側の装置(処理)によって付与されてもよい。
【0022】
ここで、音声認識装置40は、ユーザから送信される音声の内容、例えばフレーズ中の特定の単語群に応じて、そのフレーズの内容を処理できるコマンド処理システム50に対して動作指示を送信することができる。
【0023】
図1に示すように、コマンド処理システム50は、コマンドデータ送信装置10、データベース52、及びMQTT(Message Queueing Telemetry Transport)サーバ53を含む。
【0024】
データベース52は各種データを記憶する。例えば、データベース52は各ユーザの所有している機器20の情報を記憶する。
図2はデータベース52に記憶される機器テーブルT1の一例を示す。機器テーブルT1はユーザごとに(ユーザIDと関連付けて)記憶される。なお、コマンド処理システム50(データベース52)、機器20で使用されるユーザIDは、音声入力装置30及び音声認識装置40で使用されるユーザIDと異なっていてもよいし、同じであってもよい。
【0025】
図2に示すように、機器テーブルT1は「ID」、「名称」、「機器ID」、「IPアドレス」、「コマンド種類」、「端子」、「信号接続先」、「受信機能」、「接続状態」「受付可能コマンド」フィールドを含む。
【0026】
「ID」フィールドは、ユーザの所有している各機器20を一意に識別する情報を示す。
図2では、第1機器20-1がID「1」に相当し、第2機器20-2がID「2」に相当する。
【0027】
「名称」フィールドは機器20の名称を示す。この名称はユーザが動作指示の対象の機器20を指定するために使用される。名称としては、ユーザによって設定された任意の名称が使用されてよいし、例えば機器20の製造元等によって設定された初期名称が使用され、ユーザにより修正が可能になっていてもよい。
【0028】
「機器ID」フィールドは、これのみで機器20を一意に特定する機器IDである。機器IDは、機器20のMACアドレスであってもよいし、MACアドレスに基づいて生成されたIDであってもよい。「IPアドレス」フィールドは、機器20が備えている有線又は無線ネットワークインタフェースカードに対して設定されたIPアドレスを示す。「コマンド種類」フィールドは、機器20で使用されているコマンドの種類(体系)を示す。「端子」フィールドは、機器20が備えている入力端子のリストを示す。「信号接続先」フィールドは、機器20が他の機器20の入力端子に接続されて、機器20から出力される音声が他の機器20に入力される場合に、機器20が接続された他の機器20の入力端子を示す。
【0029】
「受信機能」フィールドは、インターネット6を介してコマンドを含むメッセージを受信する機能を有するか否かを示す。メッセージについては後述する。例えば、「0」又は「1」が「受信機能」フィールドに登録される。「0」は、この機器20がインターネット6を介してメッセージを受信する機能がないことを示し、「1」は、この機器20がインターネット6を介してメッセージを受信できる機能を有することを示す。
【0030】
「接続状態」フィールドは、機器20とコマンド処理システム50とが直接的に通信可能であるか否かを示す。例えば、「0」又は「1」が「接続状態」フィールドに登録される。「0」は、この機器20とコマンド処理システム50のMQTTサーバ53とが通信接続されておらず、この機器20が他の機器20を介さずにコマンド処理システム50と通信する状態にないこと(以下では「通信接続されていない状態」とも記載する)を示し、「1」は、この機器20とコマンド処理システム50のMQTTサーバ53とが通信接続されており、この機器20が他の機器20を介さずにコマンド処理システム50と通信する状態にある(以下では「通信接続されている状態」とも記載する)ことを示す。通信接続の詳細については後述する。
【0031】
「受付可能コマンド」フィールドは、機器20が受付可能なコマンドのリストを示す。「受付可能コマンド」フィールドのリスト中に「Power」が設定されていれば、その機器は外部からのコマンドによりスタンバイ状態から起動することが可能であることを示し、設定されていなければスタンバイ状態から起動することができないことを示す。また、「受付可能コマンド」フィールドのリスト中に「Volume」が設定されていれば、その機器は外部からのコマンドにより音量を制御することが可能であることを示し、設定されていなければ音量を制御することができないことを示す。
【0032】
機器テーブルT1のデータは各ユーザによる入力によってデータベース52に登録される。なお、データベース52には機器テーブルT1以外のデータも記憶される。例えば、データベース52にはユーザと、機器20のためにそのユーザが入力可能なフレーズの種類を示すデータとが関連付けて記憶されている。他にも、動作指示とコマンドとの対応関係を示すデータ(言い換えれば、動作指示をコマンドに変換するためのデータ)がデータベース52に記憶されてもよい。
【0033】
コマンドデータ送信装置10は例えばサーバコンピュータによって実現される。
図1に示すように、コマンドデータ送信装置10は制御部11、記憶部12、及び通信部13を含む。制御部11、記憶部12、及び通信部13は制御部21、記憶部22、及び通信部23と同様である。なお、コマンドデータ送信装置10は、情報記憶媒体(例えば光ディスク又はメモリカード等)に記憶されたプログラムやデータを読み取るための構成要素(例えば光ディスクドライブ又はメモリーカードスロット等)を備えてもよい。そして、プログラムが情報記憶媒体を介してコマンドデータ送信装置10に供給されてもよい。プログラムはインターネット6を介してコマンドデータ送信装置10に供給されてもよい。
【0034】
コマンドデータ送信装置10はデータベース52にアクセス可能である。コマンドデータ送信装置10とデータベース52とは一つのサーバコンピュータによって実現されてもよいし、別のサーバコンピュータによって実現されてもよい。
【0035】
コマンドデータ送信装置10は、音声認識装置40から送信される、機器20に対する動作指示を受け付け、当該動作指示に基づいてコマンドを含むメッセージを生成し、当該メッセージを当該機器20へ向けて送信する。より具体的には、メッセージはMQTTサーバ53を介して機器20へ向けて送信される。なお、メッセージはMQTTサーバ53を介して直接的に動作指示の対象となる機器20へ送信されてもよいし、他の機器20を介して対象の機器20へメッセージが送信されてもよい。MQTTサーバ53は、MQTTプロトコルを使用してデータを送受信するためのものである。コマンドデータ送信装置10とMQTTサーバ53とは一つのサーバコンピュータによって実現されてもよいし、別のサーバコンピュータによって実現されてもよい。
【0036】
[2.機能ブロック]
図3は、コマンドデータ送信装置10および機器20により実現される機能を示すブロック図である。
【0037】
図3に示すように、コマンドデータ送信装置10は動作指示受付部110、送信先決定部120、メッセージ生成部130、メッセージ送信部140、通信モード制御部160、および機器情報取得部180を含む。動作指示受付部110、送信先決定部120、メッセージ生成部130、メッセージ送信部140、通信モード制御部160、および機器情報取得部180は、制御部11が記憶部12に格納された各機能のプログラムを実行することによって実現される。
【0038】
また
図3に示すように、機器20はメッセージ受信部210、コマンド再送信部220、コマンド受信部230、コマンド実行部240、および機器情報送信部280を含む。メッセージ受信部210、コマンド再送信部220、コマンド受信部230、コマンド実行部240、および機器情報送信部280は制御部21が記憶部22に格納された各機能のプログラムを実行することによって実現される。
【0039】
[2-1]まず、動作指示受付部110、送信先決定部120、通信モード制御部160、メッセージ生成部130、メッセージ送信部140、メッセージ受信部210、コマンド再送信部220、コマンド受信部230、コマンド実行部240について説明する。
【0040】
動作指示受付部110は、ある機器20に対する動作指示を受け付ける。例えば、動作指示受付部110は、音声認識装置40によってテキストデータ等のプログラムにとって理解可能な形式のデータに変換された動作指示を音声認識装置40から受信する。
【0041】
送信先決定部120は、その動作指示から、その動作指示の対象となる機器20(対象機器)を特定し、さらに、メッセージ生成部130が動作指示に基づいて生成するメッセージの送信先となる機器20を決定する。動作指示の対象となる機器20と、メッセージの送信先となる機器20とは必ずしも異なっていない。
【0042】
メッセージ生成部130は、動作指示受付部110が対象機器に対する動作指示を受信した場合に、動作指示に対応するコマンドを含むメッセージを生成する。コマンドは、動作指示に応じた動作を行わせるためのテキスト等のデータである。
【0043】
図4はメッセージD1,D2の一例を示す図である。
図4に示されるメッセージD1は、第1機器20-1をスタンバイ状態から起動する旨の動作指示が受け付けられた場合に生成されるメッセージの一例であり、メッセージD2は、第3機器20-3をスタンバイ状態から起動する旨の動作指示が受け付けられた場合に生成されるメッセージの一例である。
【0044】
メッセージD1,D2は項目「type」,「id」,「command」を含む。項目「type」はデータの種別を示す。
図5に示す例では「cmd」が項目「type」に設定されている。これはメッセージ中にコマンドが含まれることを示している。項目「id」はメッセージを一意に識別する識別情報を示す。項目「command」に設定されるデータはコマンドの内容を示す。項目「command」は項目「ip」,「path」,「method」を含む。項目「ip」はコマンドの宛先を示す。
図5のメッセージD1では第1機器20-1のIPアドレスが項目「ip」に設定され、メッセージD2で第3機器20-3のIPアドレスが項目「ip」に設定されている。項目「path」はコマンド本体に相当する。項目「method」は、コマンド本体をLAN2内で送信する際に使用されるHTTPプロトコルのメソッドを示す。
【0045】
メッセージ送信部140は、動作指示に基づいてメッセージ生成部130によって生成されたメッセージを1または複数の機器20へ向けて送信する。なお、メッセージ送信部140は、動作指示の対象となる機器20がインターネット6経由でメッセージを受信する状態にない場合(接続状態に「0」が設定されている場合)には、他の機器20へメッセージを送信し、その他の機器20に対象の機器20へメッセージの内容を転送させる。
【0046】
このメッセージは、MQTTプロトコルを使用して機器20へ送信される。言い換えると、メッセージ送信部140はMQTTサーバ53を介してメッセージを機器20へ送信する。
図5は、MQTTサーバ53による通信を説明する図である。
図5は第1機器20-1との間でMQTTプロトコルを用いて通信を行う場合の例について説明している。
【0047】
図5に示すように、MQTTサーバ53には第1トピックTP1が設定される。第1トピックTP1は、コマンドデータ送信装置10から第1機器20-1へデータを送信するためのトピックである。第1トピックTP1の識別情報は機器20を識別する機器IDに基づいて設定される。例えば、第1機器20-1の機器IDと、コマンド処理システム50の外にある第1機器20-1へデータを送信するためのトピックであることを示す「OUT」の文字列とを組み合わせてなる「aabbccddee11_OUT」という識別情報が第1トピックTP1に対して設定される。
【0048】
また
図5に示すように、MQTTサーバ53には第2トピックTP2も設定される。第2トピックTP2は、第1機器20-1からコマンドデータ送信装置10へデータを送信するためのトピックである。第2トピックTP2の識別情報(名称)も第1機器20-1の機器IDに基づいて設定される。例えば、第1機器20-1の機器IDと、コマンド処理システム50の内側へデータを送信するためのトピックであることを示す「IN」の文字列とを組み合わせてなる「aabbccddee11_IN」という識別情報が第2トピックTP2に対して設定される。
【0049】
コマンド処理システム50がメッセージを第1機器20-1に送信する場合、メッセージ送信部140はメッセージを第1トピックTP1にパブリッシュする。第1トピックTP1には第1機器20-1がサブスクライバとして登録されており、第1トピックTP1にパブリッシュされたメッセージは、第1トピックTP1をサブスクライブしている第1機器20-1のメッセージ受信部210によりサブスクライブされる。すなわち、第1トピックTP1にパブリッシュされたコマンドデータは第1機器20-1に送信される。このようにして、コマンドデータは第1トピックTP1を介して第1機器20-1に送信される。なお、第1機器20-1が何らかのメッセージをコマンド処理システム50に送信する場合、第1機器20-1の機器情報送信部280はメッセージを第2トピックTP2にパブリッシュする。また第2トピックTP2にパブリッシュされたメッセージは機器情報送信部280によりサブスクライブされる。
【0050】
また、MQTTプロトコルでは、MQTTサーバ53と機器20との間にTCPセッションによる通信接続が確立されており、その接続を維持するために、MQTTサーバ53と機器20との間では一定期間ごとにデータを送受信する(いわゆる「keepalive」)。MQTTプロトコルを用いない場合、いわゆるポーリングを用いることが考えられるが、この場合も、前回の送受信との間隔が所定の期間に収まるようにコマンド処理システム50と機器20との間で送受信することが必要である。このように送受信するよう設定されることは、MQTTプロトコルにおける上記の通信接続に相当する。これらの例からわかるように、一般的に、インターネット6を介してコマンド処理システム50から機器20へのプッシュ的な通信を可能にする場合、送受信するデータがなくても繰り返し送受信することが必要である。したがって、接続する機器20が増えれば、仮にメッセージそのものの通信量が増えなくても、通信コストが増大する。
【0051】
メッセージ受信部210はメッセージ送信部140により送信されたメッセージをインターネット6を介して受信する。
【0052】
ここで、通信モード制御部160は、1または複数の機器20のうち1つの動作状況に基づいて、その1つの機器20(対象機器に相当する)が、コマンドデータ送信装置10のメッセージ送信部140と他の機器20を経由せずに通信する直接通信モードと、メッセージ送信部140と他の機器20を経由して通信する間接通信モードとのうち一方で通信するよう制御する。より具体的には、1または複数の機器20のうち1つの動作状況に基づいて、その機器20が直接通信モードと間接通信モードとのうちいずれにするかを判定し、直接通信モードと判断された場合には、その機器20とコマンド処理システム50とが通信接続された状態となり、間接通信モードと判断された場合には、その機器20とコマンド処理システム50とが通信接続されていない状態になるよう制御する。動作状況は、例えば、その機器20を対象とするコマンドの送信状況(頻度や最後の送信からの経過期間)であり、その機器20における音楽の再生状況である。
【0053】
MQTTプロトコルを用いる場合、直接通信モードでは、メッセージ送信部140から送信されるメッセージはMQTTサーバ53にパブリッシュされ、対象機器はMQTTサーバ53からメッセージをサブスクライブすることでメッセージを受信する。また間接通信モードでは、メッセージ送信部140から送信されるメッセージはMQTTサーバ53にパブリッシュされ、対象機器と異なる送信先となる機器20がMQTTサーバ53からメッセージをサブスクライブする。そして、その送信先となる機器20は対象機器へそのメッセージまたはそのメッセージが変換されたメッセージを送信する。対象機器は、その送信されたメッセージを受信する。直接通信モードは、機器テーブルT1における「接続状態」フィールドに「1」が設定され、通信接続されている状態に対応し、間接通信モードは、「接続状態」フィールドに「0」が設定され、通信接続されていない状態に対応する。
【0054】
コマンド再送信部220は、メッセージ受信部210が受信したメッセージに含まれるコマンドを含む再送信メッセージを、そのコマンドを実行する対象機器のコマンド受信部230へ向けて送信する。対象機器を示す情報はメッセージ中に含まれており、再送信メッセージは例えばHTTPプロトコルにより送信される。またコマンド再送信部220は、対象機器が自らの機器20と異なる場合に再送信メッセージを送信してもよいし、対象機器と自らの機器20との関係に関わらず送信してもよい。
【0055】
コマンド受信部230は、他の機器20またはみずからの機器20のコマンド再送信部220により送信された再送信メッセージを受信する。例えば、コマンド受信部230はHTTPデーモンにより再送信メッセージを受信する。
【0056】
図6は、対象機器へ送信される再送信メッセージの一例を示す図である。
図6の例では、再送信メッセージのそれぞれは1つのコマンドを含んでいる。
図6に示す再送信メッセージC1,C2は第1機器20-1に対するコマンドの例であり、再送信メッセージC3,C4は第3機器20-3に対するコマンドの例である。
【0057】
図6に示す再送信メッセージでは、コマンドとしてURLが設定されている。再送信メッセージC1は第1機器20-1をスタンバイ状態(非起動状態)から起動するコマンドを含む。「スタンバイ状態」とは消費電力が通常状態(起動状態)よりも低減された状態である。すなわち、スタンバイ状態は完全に電源がオフになった状態ではなく、スタンバイ状態でもネットワーク通信機能等は有効になっており、コマンドデータを受信したり、コマンドを実行(送信)したり、コマンドを受け付けたりすることが可能である。再送信メッセージC2は第1機器20-1に音楽再生を開始させるコマンドを含む。再送信メッセージC3は第3機器20-3をスタンバイ状態から起動するコマンドを含む。再送信メッセージC4は第3機器20-3の音楽再生を開始させるコマンドを含む。第1機器20-1、第2機器20-2、第3機器20-3、及び第4機器20-4の間でもコマンドの形式は同じであってもよいし、異なっていてもよい。
【0058】
コマンド実行部240は、メッセージに含まれるコマンドに基づいて、コマンドを実行する。コマンド実行部240は、メッセージ受信部210が受信したメッセージに含まれるコマンドを直接的に解釈して機器20を直接制御してもよい。またコマンド実行部240は、コマンド受信部230が他の機器20のコマンド再送信部220から受信した再送信メッセージに含まれるコマンドを実行してもよい。なお、コマンド実行部240は、コマンド受信部230が自らの機器20のコマンド再送信部220から受信した再送信メッセージに含まれるコマンドを実行してもよい。
【0059】
[2-2]次に、機器情報送信部280および機器情報取得部180について説明する。
【0060】
機器情報送信部280は、自らの機器20の動作状況が変化した場合、または、前回の送信から一定時間が経過した場合に、この機器20の現在情報を含む状態メッセージを、インターネット6を介してコマンドデータ送信装置10に送信する。現在情報は、機器20の現在の状態を示す情報であり、機器20が再生中であるか否かを示す情報を含む。なお、状態メッセージは、さらに、機器20の機種情報、ユーザが機器20を特定する名称、機器ID、IPアドレスといった情報を含んでもよい。なお、機器情報送信部280は状態メッセージをMQTTサーバ53を介してコマンドデータ送信装置10へ送信する。
【0061】
機器情報取得部180は機器20から現在情報を含む状態メッセージを取得する。より具体的には、機器情報取得部180はMQTTサーバ53を介して機器20から送信された状態メッセージを受信する。
【0062】
[3.処理]機器制御システム1で実行される処理について説明する。
【0063】
[3-1]まず、動作指示をコマンド処理システム50が受け付け、機器20を制御する処理について説明する。
図7は、動作指示受付部110、送信先決定部120、メッセージ生成部130、メッセージ送信部140の処理の一例を示すフロー図である。この処理は、制御部11がその機能のプログラムを実行することにより実行される。
【0064】
はじめに、動作指示受付部110は、音声認識装置40から動作指示を取得する(ステップS511)。また動作指示受付部110は、動作指示の対象となる対象機器を特定する(ステップS512)。そして、送信先決定部120は、動作指示に基づくメッセージの送信先となる機器20を決定する(ステップS513)。
【0065】
図8は、送信先決定部120の処理の一例を示すフロー図であり、ステップS513の処理をより詳細に説明する図である。まず、送信先決定部120は、対象機器がコマンド処理システム50と通信接続されている状態か否かを判定する(ステップS521)。そして、対象機器が通信接続されている状態である場合には(ステップS521のY)、送信先決定部120は対象機器が直接通信モードであると判定し、この対象機器を送信先として決定する(ステップS522)。一方、対象機器が通信接続されていない状態である場合には(ステップS521のN)、送信先決定部120は対象機器が間接通信モードであると判定し、対象機器と異なり、かつ通信接続されている状態にある機器20を候補として選択する(ステップS523)。
【0066】
候補が選択されると、送信先決定部120は選択された機器20のうちに、音楽再生されていない機器20が存在するか判定する(ステップS524)。送信先決定部120は、各機器20が音楽再生をしているか否かを、データベース52に機器20と関連づけて格納される再生状態フラグが音楽再生をしていることを示すか否かを確認することで判定する。そして、音楽再生されていない機器20が存在する場合には(ステップS524のY)、音楽再生されていない機器20(の1つ)を送信先として決定する(ステップS525)。一方、音楽再生されていない機器20が存在しない場合には(ステップS524のN)、選択された機器20のうち1つを送信先として決定する(ステップS526)。なお、送信先決定部120は、単に音楽再生をしていない機器20が存在するかではなく、他の機器20へ音楽データをストリーミングしていない機器20が存在するかを判定してもよい。
【0067】
音楽再生をしている機器20、特に音楽データをストリーミングしている機器20は処理負荷が大きいため、ステップS524,S525の処理により、処理負荷に起因するメッセージ関連処理の遅延などの問題を抑えることが可能になる。
【0068】
送信先となる機器20が決定されると、メッセージ生成部130は、取得した動作指示に基づいて、動作指示に対応するコマンドと、対象機器を識別する情報とを含むメッセージを生成する(ステップS514)。メッセージ送信部140は送信先として決定された機器20へ向けて生成されたメッセージを送信し(ステップS515)、送信されたメッセージに関する通信ログを通信ログテーブルに格納する(ステップS516)。
【0069】
図9は、通信ログテーブルに格納される通信ログの一例を示す図である。通信ログテーブルは、「機器ID」フィールドと、「メッセージ送信日時」フィールドと、「コマンド」フィールドとを含む。「ID」フィールドはシーケンス番号である。「機器ID」フィールドは、メッセージに含まれるコマンドを実行する対象機器の機器IDが設定される。「メッセージ送信日時」フィールドは、メッセージがメッセージ送信部140から送信された日時を示す。「コマンド」フィールドは、メッセージに含まれているコマンドを示す。通信ログテーブルに格納された通信ログは、通信モード制御部160の処理で使用される。
【0070】
[3-2]次に、通信モードの制御および機器20の通信接続の制御について説明する。
図10は、通信モード制御部160の処理の一例を示すフロー図である。
図10に示される処理は、例えば一定時間ごとに、各機器20について実行される。ここでは、
図10の処理の対象となる機器20を判定対象機器と記載する。
【0071】
はじめに、通信モード制御部160は、通信ログテーブルに格納された情報に基づいて、判定対象機器に対するコマンドの送信頻度を算出する(ステップS541)。例えば、通信モード制御部160は、判定ログテーブルから、メッセージ送信日時と現在との時間間隔が所定の値より小さく、かつ判定対象機器の機器IDが格納された通信ログを抽出し、抽出された通信ログの件数を送信頻度として算出する。なお、通信モード制御部160は、現在より前のある時点より新しいメッセージ送信日時を有しかつ判定対象機器の機器IDが格納された通信ログを抽出してもよい。また、通信モード制御部160は、通信ログが格納されるごとに、通信ログの機器IDが示す機器20のカウンタを増加させ、ステップS541が処理される時点のカウンタの値を送信頻度として取得してもよい。この場合、カウンタは一定時間ごとにクリアされる。
【0072】
送信頻度が算出されると、通信モード制御部160は、例えば機器テーブルT1のうち、判定対象機器の「接続状態」フィールドに格納された値により、判定対象機器が通信接続された状態であるか判定する(ステップS542)。判定対象機器が通信接続されていない状態の場合には(ステップS542のN)、通信モード制御部160は送信頻度が第1の閾値より大きいか否かを判定する(ステップS543)。第1の閾値は、新たな通信接続を増やすか否かを判定するための閾値である。
【0073】
送信頻度が第1の閾値より大きい場合には(ステップS543)、通信モード制御部160は他の機器20を介して判定対象機器へ接続開始コマンドを送信し、通信接続された状態となった後に、機器テーブルT1の「接続状態」フィールドに「1」を設定することで、判定対象機器の通信モードを直接通信モードに切り替える(ステップS544)。一方で、送信頻度が第1の閾値以下の場合には(ステップS543のN)、通信モード制御部160は判定対象機器と異なり、かつ通信接続されている1または複数の機器20の再生状態を示す情報(再生状態フラグ)を取得する(ステップS545)。そして、再生状態フラグが、通信接続された機器20のすべてが音楽再生をしていることを示す場合には(ステップS546のY)、ステップS544の、直接通信モードに切り替える処理を実行する。再生状態フラグが、通信接続された機器20のいずれかが音楽再生していないことを示す場合には(ステップS546のN)、この判定対象機器についての処理を終了する。
【0074】
一方、判定対象機器が通信接続された状態の場合には(ステップS542のY)、通信モード制御部160は送信頻度が第2の閾値より小さいか否かを判定する(ステップS547)。第2の閾値は、通信接続を切断するか否かを判定するための閾値である。なお、ステップS547では、送信頻度として、前回の送信からの経過時間を用いてもよい。この場合には、通信モード制御部160は経過時間が閾値より長いか否かを判定する。
【0075】
通信モード制御部160は、送信頻度が第2の閾値以上の場合には(ステップS547のN)、この判定対象機器についての処理を終了する。一方、送信頻度が第2の閾値より小さい場合には(ステップS547のY)、通信モード制御部160は通信接続されている他の機器20が存在するか判定する(ステップS547)。通信接続されている他の機器20が存在しない場合には(ステップS547のN)、通信接続がされない状態になると、判定対象機器が属するLAN2に接続される機器20にコマンドを送信できなくなることを防ぐため、通信モード制御部160は処理を終了する。一方、通信接続されている他の機器20が存在する場合には(ステップS547のY)、通信モード制御部160は判定対象機器へ切断コマンドを送信し、通信接続しない状態になったことを確認した後に機器テーブルT1の「接続状態」フィールドに「0」を設定することで、判定対象機器の通信モードを間接通信モードに切り替える(ステップS549)。
【0076】
図10に示される処理により、メッセージの送受信が行われない機器20とコマンド処理システム50との通信接続が減る一方、他の機器20を介してメッセージを送信することが可能な状態が維持される。また多くのコマンドの実行対象となる機器20に対する通信接続が確立され、音楽再生などにより負荷の高い機器20をバイパスするための通信接続も確立される。これにより、コマンドの送信ができなくなることや、コマンドの送信の際の遅延の発生を抑えつつ、通信接続の接続コストを削減することができる。
【0077】
[3-3]次に、機器20がコマンド処理システム50からコマンドを含むメッセージを受信し、コマンドを実行する処理について説明する。
図11は、メッセージ受信部210、コマンド再送信部220、コマンド実行部240の処理の一例を示すフロー図である。メッセージ受信部210、コマンド再送信部220、コマンド受信部230、コマンド実行部240が行う処理は、制御部21がその機能のプログラムを実行することにより実行される。
【0078】
はじめに、メッセージ受信部210は、コマンド処理システム50から送信されたメッセージを受信する(ステップS561)。受信方法の詳細についてはすでに説明しているので省略する、次に、コマンド再送信部220は、受信されたメッセージに含まれる対象機器を識別する情報(たとえば機器ID)と、自らの機器20を識別する情報とが等しいかを判定する(ステップS562)。メッセージに含まれる識別情報が自らの識別情報と同じ場合には(ステップS562のY)、コマンド実行部240はメッセージ受信部210が受信したメッセージに含まれるコマンドを実行する(ステップS563)。一方、メッセージに含まれる機器IDが自らの機器IDと異なる場合には(ステップS562のN)、コマンド再送信部220はメッセージに含まれるコマンドを取得する(ステップS564)。そして、コマンド再送信部220は取得されたコマンドに基づいて、対象機器に対するコマンドを含む再送信メッセージを生成し、その再送信メッセージを対象機器へ送信する(ステップS565)。
【0079】
ここで、
図11には図示されていないが、再送信メッセージが送信された場合には、対象機器のコマンド受信部230は、再送信メッセージを受信し、対象機器のコマンド実行部240は再送信メッセージに含まれるコマンドを実行する。
【0080】
なお、ステップS562,S563の処理の代わりに、コマンド再送信部220は常に対象機器へ再送信メッセージを送信してもよい。この場合には、コマンド再送信部220は対象機器の送信先を特定する情報(たとえばIPアドレス)に基づいて、自らの機器20のコマンド受信部230へ再送信メッセージを送信する(引き渡す)か、他の機器20のコマンド受信部230へ再送信メッセージを送信するかを決定する。また対象機器のコマンド受信部230は、対象機器が自らの機器20である場合にも再送信メッセージを受信し。それを受けてコマンド実行部240が再送信メッセージに含まれるコマンドを実行する。
【0081】
これまでに説明したように、機器20が受信したメッセージに指定された対象機器の機器IDに基づいて他の機器20へ再送信メッセージを送信することにより、一部の機器20がコマンド処理システム50と接続していても、すべての機器20をコマンド処理システム50から制御することができる。
【0082】
[3-4]最後に、機器20の機器情報送信部280が現在情報を含む状態メッセージを送信し、コマンドデータ送信装置10の機器情報取得部180が状態メッセージを受信しデータベース52を更新する処理について説明する。
図12は、状態メッセージを送受信する処理の一例を示すフロー図である。
図12のうち機器20についての処理は、制御部21がその機能のプログラムを実行することにより実行される。また、
図12のうちコマンドデータ送信装置10についての処理は、制御部11がその機能のプログラムを実行することにより実行される。
【0083】
はじめに、機器情報送信部280は、機器20の動作状況の変化を検出する(ステップS611)。動作状況の変化は、機器20における再生の開始や再生の終了、他の機器20への音楽データのストリーミングの開始および終了を含む。動作状況の変化が検出されると、機器情報送信部280は変化した動作状況(現在の状態)を示す現在情報を含む状態メッセージを生成する(ステップS612)。そして、機器情報送信部280はコマンド処理システム50のコマンドデータ送信装置10へ向けて状態メッセージを送信する(ステップS613)。
【0084】
コマンドデータ送信装置10の機器情報取得部180は、送信された状態メッセージを受信する(ステップS631)。状態メッセージはたとえば前述のようにMQTTサーバ53を用いて送受信される。機器情報取得部180は、状態メッセージを受信すると、その状態メッセージを送信した機器のステータスを更新する(ステップS632)。より具体的には機器情報取得部180は、取得した現在情報に基づいて、送信元の機器20と関連付けて、その機器20の現在の状態を示す情報をデータベース52に格納する。
【0085】
このようにして、機器20の現在の状態を示す情報をコマンドデータ送信装置10へ送信する。これにより、コマンドデータ送信装置10でその情報を管理することができ、通信モード制御部160で現在の機器20の状態に応じて通信モードを制御することが可能になる。
【0086】
なお、通信モード制御部160は、機器20に設けられてもよい。この場合、機器20のうちコマンド処理システム50と通信接続されているものが
図10に示される処理を実行してもよい。またこの場合、送信頻度の算出に用いる通信ログとして、機器20がメッセージを受信したログを利用してよいし、接続開始コマンドは判定対象機器へ直接的に送信されてよい。
【0087】
[付記]以上に説明した実施形態についての記載から把握されるように、本明細書では以下に記載の発明を含む多様な技術的思想が開示されている。
【0088】
動作指示を取得する動作指示取得手段と、前記動作指示に基づいて生成されたコマンドを1または複数のデバイスへ送信する送信手段と、前記1または複数のデバイスの1つの動作状況に基づいて、前記1つのデバイスが、前記送信手段と他のデバイスを経由せずに通信する第1のモードと、前記送信手段と他のデバイスを経由して通信する第2のモードとのうち一方で通信するよう制御する通信制御手段と、を含む機器制御システム。
【0089】
動作指示を取得するステップと、前記動作指示に基づいて生成されたコマンドを1または複数のデバイスへ送信するステップと、前記1または複数のデバイスの1つの動作状況に基づいて、前記1つのデバイスが、前記送信手段と他のデバイスを経由せずに通信する第1のモードと、前記送信手段と他のデバイスを経由して通信する第2のモードとのうち一方で通信するよう制御するステップと、を含む機器制御方法。
【0090】
動作指示を取得する動作指示取得手段、前記動作指示に基づいて生成されたコマンドを1または複数のデバイスへ送信する送信手段、および、前記1または複数のデバイスの1つの動作状況に基づいて、前記1つのデバイスが、前記送信手段と他のデバイスを経由せずに通信する第1のモードと、前記送信手段と他のデバイスを経由して通信する第2のモードとのうち一方で通信するよう制御する通信制御手段、としてコンピュータを機能させるためのプログラム。
【0091】
本発明の一形態では、前記1または複数のデバイスは同じローカルエリアネットワーク内に配置され、前記通信制御手段は、前記1または複数のデバイスの動作状況に基づいて、前記1または複数のデバイスのうち少なくとも1つを除くデバイスが前記第2のモードで通信するよう制御してもよい。
【0092】
本発明の一形態では、前記通信制御手段は、前記1または複数のデバイスのうち1つの動作状況に基づいて、前記1つのデバイスに向けて前記第2のモードで通信させるコマンドを送信してもよい。
【0093】
本発明の一形態では、前記送信手段は、前記デバイスのうち1つが前記第2のモードで通信する場合に、前記第1のモードで通信する他のデバイスへ向けて、前記第2のモードで通信する1つのデバイスへのコマンドを送信してもよい。
【0094】
本発明の一形態では、前記送信手段は、前記デバイスのうち1つが前記第2のモードで通信する場合に、前記第1のモードで通信し、かつ音楽を再生していないデバイスへ向けて、前記第2のモードで通信する前記1つのデバイスへのコマンドを送信してもよい。
【0095】
本発明の一形態では、前記通信制御手段は、前記1または複数のデバイスのうち前記第2のモードで通信する1つのデバイスの動作状況に基づいて、前記1つのデバイスが前記第1のモードで通信するよう制御してもよい。
【0096】
本発明の一形態では、前記通信制御手段は、前記第2のモードで通信するデバイスを制御するコマンドが、前記第1のモードで通信するデバイスへ向けて送信された場合に、前記第2のモードで通信するデバイスが前記第1のモードで通信するよう制御してもよい。
【0097】
本発明の一形態では、前記通信制御手段は、前記第1のモードで通信するデバイスへ向けて、前記第2の通信モードで通院するデバイスへのコマンドが送信される頻度に基づいて、前記第2の通信モードで通院するデバイスが前記第1のモードで通信するよう制御してもよい。
【0098】
本発明の一形態では、前記通信制御手段は、前記第1のモードで通信するデバイスが音楽データを再生する処理を実行している場合に、前記処理を実行するデバイスと異なるデバイスが前記第1のモードで通信するよう制御してもよい。
【符号の説明】
【0099】
1 機器制御システム、2 LAN、4 ルータ、6 インターネット、10 コマンドデータ送信装置、11,21 制御部、12,22 記憶部、13,23 通信部、20 機器、20-1 第1機器、20-2 第2機器、20-3 第3機器、30 音声入力装置、40 音声認識装置、50 コマンド処理システム、52 データベース、53 MQTTサーバ、110 動作指示受付部、120 送信先決定部、130 メッセージ生成部、140 メッセージ送信部、160 通信モード制御部、180 機器情報取得部、210 メッセージ受信部、220 コマンド再送信部、230 コマンド受信部、240 コマンド実行部、280 機器情報送信部、C1,C2,C3,C4 再送信メッセージ、D1,D2 メッセージ、TP1 第1トピック、TP2 第2トピック。