前回、Windows PCからiRemoconへの接続を確認できたので、今回はWindowsプログラムからiRemoconを操作してみたいと思います。利用するプログラム言語はDelphi(Pascal)IDEはDelphi7でいきたいと思います。
![]() | Glamo スマートフォンを利用して家の中や外出先から様々なリモコン対応家電をコントロールできます。 |
DelphiでiRemoconを操作するには、とりあえずIndyのTelnetコンポーネントを利用するのが一番手っ取り早いのかなと思ったので、TIdTelnetを使用することにしました。使い方をググったら、それらしいものが1件見付かったので以下を参考にしました。
とりあえず上のTelnetプログラムで一番のポイントとなるのは、Telnetでコマンドを送った後のレスポンスを受けるDataAvailableイベントの処理のようです。とりあえず、そのまま使えそうなのでコードをコピペして流用することにしました。
で、とりあえず作ってみたテストプログラムが以下。
iRemoconテストプログラムのダウンロード
※iRemoconを持っていないと動作しません。
※このプログラムを使用してiRemoconに不具合が出ても保証はできません。IRM-01Lコマンド仕様書(PDF)に書かれた内容を守ってお使いください。
インターフェースはこんな感じ。
DelphiのiRemoconテストプログラムのソース
Hostに取得したIPを入力して、ボタンに割り当てたコマンドを送信する単純なプログラムです。
タイマー系のコマンドは、ややこしいので省いてあります。そもそも、Windowsプログラムから操作するのであれば、何もiRemoconのタイマー機能使わなくても、タイマー機能をプログラムで書いてしまった方が楽なような気がします。
タイマーコンポーネントを使用しているのは、iRemoconでは300秒の間、無通信状態が継続するとiRemocon側から接続を切断するので「*au\r\n」コマンドを299秒ごとに送って接続を維持しています。
あと、このテストプログラムを作っていて気づいたのですが、製品仕様に同時接続数(ローカル側:1、グローバル側:1)とあるように、ローカル側から一つの接続しか受けない仕様なので、このテストプログラムが起動している間は、他のローカルからのコマンド受け付けなくなります。
ですのでLANにある複数のパソコンからリモコンをアプリとして家電を操作するには、コマンド送信する前に接続して、コマンド送信後に、接続を切るといったような工夫が必要そうです。もちろんそのときに「IRM-01Lコマンド仕様書」に書かれている、注意点も考慮しなくてはいけません。
次回は上に書いたような事を考慮しつつ、コードの再利用ができるよう「iRemocon操作オブジェクト」を作りたいと思います。音声認識家電操作アプリへの道はまだまだ遠そうです。
