記事一覧

iRemoconを使用して声で家電を操作する手順

  • このエントリーをはてなブックマークに追加

ファイル 468-1.jpg

iRemoconを購入して以来、WindowsパソコンからiRemoconを使用して声で家電を操作することを目指して以下の記事を書いてきました。

スマホで家電を操作するiRemoconを購入、スマホ持ってないけど
Windows PCからiRemoconを使用する(IP確認・Telnet操作編)
Windows PCからiRemoconを使用する(Delphiテストプログラム編)
Windows PCからiRemoconを使用する(iRemoconオブジェクト作成編)
Windows PCからiRemoconを使用する(音声認識テスト編)

これにより、これまでに作成したサンプルをアプリケーションを使用すれば、iPhone、Androidなどの携帯端末を使わずとも、Windowsパソコン上から、「iRemoconにリモコンの登録」「iRemoconの設定」「音声コマンドの登録」ができるようになったので、そのやり方を以下にまとめておきます。(※プログラム能力も必要ありません。)


音声認識エンジンの準備

音声認識エンジンは、SAPI5.1を使用します。とりあえずインストールしなければならないので、ダウンロード・インストール方法は以下を参照してください。

音声認識準備
今回は、「音声認識」タブの「言語」を「Microsoft Japanese Recoginizer v5.1」に設定して使用します。


次に、初期設定をします。規定の設定でも、出来ないことはないので、わざわざ設定する必要もないといえばないかもしれませんが、リモコンコマンド用の音声認識プロファイルを作成しておいた方が、のちのち色々と捗るかもしれません。

音声認識からiRemoconを操作するのにお薦めの設定

準備は以上です。


iRemoconにリモコンの登録

もう既に、スマートフォンとUIデザイナーを利用して、リモコンが登録されている場合は.この作業は必要ありません。この項目は読み飛ばしてください。

では、手順を追って説明します。

①、iRemoconオブジェクト作成編で作成したiRemoconオブジェクトを利用したテストプログラムのダウンロードからファイルをダウンロードしてください。
②、iRemoconObject.zipを解凍し、解凍フォルダにある中の「Project1.exe」を起動してください。

以下起動画面。

③、まず「Host」にお使いのiRemoconのIPアドレスを入力してください。IPアドレスの取得方法はこちら

④、スピンボックスで、登録したいリモコン番号を選択します。リモコン番号は1~1,500までの数字です。

⑤、icボタンを押すと学習が開始されますので、リモコンをiRemoconに向け登録したいボタンを押してください。
リモコン番号1番に学習させた場合、以下のようにログに出力されれば登録は成功です。

*ic;1
ic;ok

⑥、ccボタンは、リモコン学習をキャンセルします。何をしないで15秒たっても学習はキャンセルされます。

後は、④~⑤の手順を登録したいボタンの数だけ繰り返しください。どのリモコンが何番か、ごっちゃにならないようにメモをしておくといいかもしれません。


UIデザイナーからボタン番号の確認(スマートフォンでもう登録してある場合)

①、UIデザイナーにログインします。

②、UIデザイナーを起動し、リモコン画面のデザインを選択してください。

③、デザインから目的のボタンを選択すると.「ボタンプロパティ」の「リモコン番号」に番号が表示されます。

このリモコン番号を何かにメモっておきます。

リモコン番号の取得方法は以下にも書かれています。
i-リモコンを外部から操作して遊ぼう。 - お前の血は何色だ!! 4
iRemocon 音声操作設定 - ジグソー


音声コマンドの登録

あとは、音声コマンドの登録です。

①、音声認識テスト編からiRemocon音声認識テストプログラムをダウンロードしてください。

②、iRemoconRcgTest.zipを解凍し、中にある「SpeechGrammer.xml」をエディタか何かで開きます。

とりあえず、初期状態は以下。

<GRAMMAR LANGID="411">
<RULE NAME="iRemocon" TOPLEVEL="ACTIVE">
<L>
<P><RULEREF NAME="IREMOCON"/></P>
</L>
</RULE>
<RULE NAME="IREMOCON" >
<L PROPNAME="COMPUTER_NAME_CMD">
<P VAL="100">/コンピューター/こんぴゅーたー/コンピューター;</P>
<P VAL="200">/Caspar/きゃすぱー/キャスパー;</P>
<P VAL="200">/Caspar/かすぱー/カスパー;</P>
</L>
<L PROPNAME="REMOCON_CMD">
<P VAL="1">/エアコン点けて/えあこんつけて/エアコンツケテ;</P>
<P VAL="1">/暑い/あつい/アツイ;</P>
<P VAL="2">/エアコン消して/えあこんけして/エアコンケシテ;</P>
<P VAL="2">/寒い/さむい/サムイ;</P>
<P VAL="5">/電気点けて/でんきつけて/デンキツケテ;</P>
<P VAL="5">/明るくして/あかるくして/アカルクシテ;</P>
<P VAL="5">/暗い/くらい/クライ;</P>
<P VAL="6">/電気消して/でんきけして/デンキケシテ;</P>
<P VAL="6">/暗くして/くらくして/クラクシテ;</P>
</L>
</RULE>
</GRAMMAR>

③、コンピューター名の変更。とりあえず以下の項目を

<L PROPNAME="COMPUTER_NAME_CMD">
<P VAL="100">/コンピューター/こんぴゅーたー/コンピューター;</P>
<P VAL="200">/Caspar/きゃすぱー/キャスパー;</P>
<P VAL="200">/Caspar/かすぱー/カスパー;</P>
</L>

※上記のものは例のためコンピューター名を二つ記入してありますが、一つで十分なのでCasperは消します。

以下のようにして、お好きなコンピューター名に書き換えてください。どうせなら、中2な名前にした方が、言ってて楽しいと思います。

<L PROPNAME="COMPUTER_NAME_CMD">
<P VAL="100">/ベルゼブブ/べるぜぶぶ/ベルゼブブ;</P>
</L>

ただ、言い終わった後、ものすごい脱力感に襲われたり、他人に聞かれようものなら恥ずかしさのあまり心臓発作を起こしても責任は持てません。

コンピューター名は誤認識防止のために、プレフィックスとして

[コンピューター名] + [音声コマンド]

という形で使用するためです。


④、音声コマンドの変更。とりあえず以下の項目を

<L PROPNAME="REMOCON_CMD">
<P VAL="1">/エアコン点けて/えあこんつけて/エアコンツケテ;</P>
<P VAL="1">/暑い/あつい/アツイ;</P>
<P VAL="2">/エアコン消して/えあこんけして/エアコンケシテ;</P>
<P VAL="2">/寒い/さむい/サムイ;</P>
<P VAL="5">/電気点けて/でんきつけて/デンキツケテ;</P>
<P VAL="5">/明るくして/あかるくして/アカルクシテ;</P>
<P VAL="5">/暗い/くらい/クライ;</P>
<P VAL="6">/電気消して/でんきけして/デンキケシテ;</P>
<P VAL="6">/暗くして/くらくして/クラクシテ;</P>
</L>

先程とったメモを元に以下のように書き換えます。
リモコンナンバー1番にエアコンONを割り当てたい時は以下のように書くことができます。

<L PROPNAME="REMOCON_CMD">
<P VAL="1">/エアコンを点けろ/えあこんをつけろ/エアコンヲツケロ;</P>
<P VAL="2">/エアコンを消せ/えあこんをけせ/エアコンヲケセ;</P>
<!-- これ以降↑と同様にしてコマンドを追加していく -->
</L>

コマンドの書き方は以下のようになります。

<P VAL="{リモコン番号}">/{音声コマンド}/{音声コマンドの読み方}/{音声コマンドの他の読み方};</P>


最終的な「SpeechGrammer.xml」は以下のようになりました。

<GRAMMAR LANGID="411">
<RULE NAME="iRemocon" TOPLEVEL="ACTIVE">
<L>
<P><RULEREF NAME="IREMOCON"/></P>
</L>
</RULE>
<RULE NAME="IREMOCON" >
<L PROPNAME="COMPUTER_NAME_CMD">
<P VAL="100">/ベルゼブブ/べるぜぶぶ/ベルゼブブ;</P>
</L>
<L PROPNAME="REMOCON_CMD">
<P VAL="1">/エアコンを点けろ/えあこんをつけろ/エアコンヲツケロ;</P>
<P VAL="2">/エアコンを消せ/えあこんをけせ/エアコンヲケセ;</P>
<!-- これ以降↑と同様にしてコマンドを追加していく -->
</L>
</RULE>
</GRAMMAR>

これで、音声認識の準備は整いました。

⑤、後は先程ダウンロードして解凍した「iRemoconRcgTest」フォルダ内の「Project1.exe」を起動してください。

⑥、あとは登録した[コンピューター名] + [音声コマンド]を発声して動作を確認してください。

試しに「ベルゼブブ、エアコンを点けろ」と発声してみた例。

「エアコンを点けろ」音声コマンドの値(VAL="1")のリモコン番号に登録された赤外線信号がiRemoconから発信されてエアコンが点きます。

「ベルゼブブ、エアコンを消せ」

「エアコンを消せ」音声コマンドの値(VAL="2")のリモコン番号が適用されエアコンが消されました。


まあ!、まるで使い魔を従えている気分!

・・・・

言っているうちに情けなくなっても、ほんと責任は持てません。


とりあえず今回作成したサンプルプログラムは以下に置いておきます。
ダウンロード


これにて、WindowsからiRemoconを操作する大体の方法は分かったので、「夢の、声で家電を操作するお部屋」に一歩近づきました。この後は、リモコン登録やグラマーファイル編集がGUIで楽にできるように、もう少ししっかりとしたアプリケーションを作りたいと思います。作る過程で必要な機能は出来れば付けていきたいと思います。

では次回、いつになるかわかりませんがiRemocon操作アプリケーションを作れればと思います。

続き:ついに念願の声で家電をコントロールできる夢のお部屋を手に入れた

タグ:iRemocon リモコン 環境制御 実験 プログラム

  • このエントリーをはてなブックマークに追加

Windows PCからiRemoconを使用する(音声認識テスト編)

  • このエントリーをはてなブックマークに追加

ファイル 467-1.jpg

前回はiRemoconを手軽に操作できるようにiRemoconオブジェクトを作成しました。今回は、そのiRemoconオブジェクトを利用して、音声認識でiRemoconを操作するテストプログラムを作りたいと思います。

ここで書くプログラムを利用するには以下のiRemoconが必要です。

Glamo
スマートフォンを利用して家の中や外出先から様々なリモコン対応家電をコントロールできます。

さて、音声認識を利用するにはプログラムから利用できる音声認識エンジンが必要です。しかも、自分のような個人が使うには、フリーなものが望ましいということで、フリーで使える音声認識エンジンを探してみたところ、JuliusSAPI 5.1の二つがありました。


Juliusは、公式サイトによると数万語の語彙を対象とした文章発声の認識を行う能力を持つ高性能音声認識ソフトウェアということですが、以下のブログ記事を読む限り、結構設定が面倒くさそうなので、自分のレベルには少し高度そうに感じました。

「Julius」の検索結果一覧 - 凹みTips
「Julius」の検索結果一覧 - お前の血は何色だ!! 4

なので、今回はJuliusの使用は見合わせ。SAPI 5.1を利用することに。


SAPI 5.1は、Speech Application Programming Interface(Speech API、SAPI)の略で、Windowsアプリケーションで音声認識や音声合成を使うためにマイクロソフトが開発したAPIのことです。

SAPI 5.1については、自分が以前から「リモコンを音声コマンド操作したい」と思っていたこともあり、過去に日本語音声認識サンプル(SAPI 5.1)などを作成して使い方を調べていたので、こちらならある程度使い方も分るかなと。

SAPI 5.1自体、2001年後半に出されたもので結構古いものっちゃー古いものなんですが、リモコン操作ぐらいの音声コマンド利用でしたら、これで十分な気もします。てか、リリースされてから10年以上、サンプルを作ってからも3、4年経っているので、「新しいフリーの日本語音声認識エンジンのとか、もう出ているのでは?」と調べてみたんですが、結局SAPI 5.1ぐらいしかないっぽいです。


ということで、音声認識エンジンが決定しところでSAPI 5.1を利用する準備です。

SAPI 5.1を利用する準備

SAPI 5.1のダウンロードからインストール方法、設定については以下で説明しています。

音声認識準備
こちらを参考にSAPI 5.1の初期設定をします。

次は、Delphiで利用する方法です。

EmbarcaderoからSAPI 5.1 sample programs & support packages for Delphiをダウンロードします。(※要ユーザー登録)

ダウンロードした物の中の「support packages」中の「SpeechLib_TLB.pas」と「SpeechLib_TLB.dcr」をDelphiのライブラリパスの通ったフォルダにコピーし、オブジェクト(TSpSharedRecoContext)をコード側で作成して使います。IDEにコンポーネントをインストールして使用しても、どちらでも構いません。


iRemocon音声認識操作サンプルの作成

とりあえず以前作成した日本語音声認識サンプル(SAPI 5.1)がそのまま使えそうなので、これのグラマーファイルとコードを少し変更して利用したいと思います。ダウンロードからサンプルファイルをダウンロードします。

グラマー(Grammer)ファイルの作成

サンプルファイルをダウンロードしたら、解凍してまず中のグラマー(文法)ファイルを変更したいと思います。中にある「SpeechGrammer.xml」をエディタか何かで開いて中を以下のように変更します。

<GRAMMAR LANGID="411">
<RULE NAME="iRemocon" TOPLEVEL="ACTIVE">
<L>
<P><RULEREF NAME="IREMOCON"/></P>
</L>
</RULE>
<RULE NAME="IREMOCON" >
<L PROPNAME="COMPUTER_NAME_CMD">
<P VAL="100">/コンピューター/こんぴゅーたー/コンピューター;</P>
<P VAL="200">/Caspar/きゃすぱー/キャスパー;</P>
<P VAL="200">/Caspar/かすぱー/カスパー;</P>
</L>
<L PROPNAME="REMOCON_CMD">
<P VAL="1">/エアコン点けて/えあこんつけて/エアコンツケテ;</P>
<P VAL="1">/暑い/あつい/アツイ;</P>
<P VAL="2">/エアコン消して/えあこんけして/エアコンケシテ;</P>
<P VAL="2">/寒い/さむい/サムイ;</P>
<P VAL="5">/電気点けて/でんきつけて/デンキツケテ;</P>
<P VAL="5">/明るくして/あかるくして/アカルクシテ;</P>
<P VAL="5">/暗い/くらい/クライ;</P>
<P VAL="6">/電気消して/でんきけして/デンキケシテ;</P>
<P VAL="6">/暗くして/くらくして/クラクシテ;</P>
</L>
</RULE>
</GRAMMAR>

今回利用するコマンドは誤認識防止のために、音声コマンドの前にコンピューター名を付けて

[コンピューター名] + [音声コマンド]

という形で使用したいと思います。

なので<L PROPNAME="COMPUTER_NAME_CMD"></L>タグの中にはコンピューター名、<L PROPNAME="REMOCON_CMD"></L>タグの中にはリモコン用の音声コマンドを書きました。

リモコン用の音声コマンドの書き方としては、

<P VAL="{リモコン番号}">/{音声コマンド}/{音声コマンドの読み方}/{音声コマンドの他の読み方};</P>

といった具合に書きます。グラマーファイルの書き方について詳しくはVB.NETで音声認識(その1:音声認識ライブラリを作る)にて丁寧に解説されています。


日本語音声認識サンプルの修正

グラマーファイルの設定を変更したら日本語音声認識サンプル(SAPI 5.1)のコードも修正したいと思います。とはいっても、ほとんどそのまま使用できそうだったので、フォームを少しと、コードを数行変更するだけで、目的のものは作成できました。

で、作成したものが以下。

iRemocon音声認識テストプログラムのダウンロード
※iRemoconを持っていないと動作しません。
※このプログラムを使用してiRemoconに不具合が出ても保証はできません。IRM-01Lコマンド仕様書(PDF)に書かれた内容を守ってお使いください。


インターフェースは以下のような感じ。

iRemocon音声認識テスト全ソース

主に変更したところといえば、フォームにIPを入力するエディットボックスを付けたことと、プログラムを数行追加したくらいです。

コンストラクタでiRemoconオブジェクトを作成。IPの登録。

  IRemocon := TIRemocon.Create(Self);
IRemocon.Host := HostEdit.Text;

デストラクタでiRemoconオブジェクトを破棄。

  IRemocon.Free;

音声認識が成功したときのRecoContextRecognitionイベントでiRemoconの赤外線コマンドを送信するコードを書く。

//Grammerファイルに設定したリモコン番号を取得
RemoconNo := Props.Item(1).Value;
(中略)
//取得したリモコン番号を元にiRemoconから赤外線発信
IRemocon.TransmitInfrared(RemoconNo);

iRemoconオブジェクトの作成&昔の音声認識サンプルプログラムの再利用のおかげで主な変更はこれだけで、思ったより簡単に書けました。昔、音声認識サンプルプログラムを作った自分ナイス。


iRemocon音声認識テストプログラムを利用してみる

まずはProject1.exeを起動し、エディットボックスに使っているiRemoconのIPを入力します。ITの確認方法はIP確認方法を参照してください。

次にグラマーファイルに入力したコンピューター名に続けて、音声コマンドを発声してください。

「コンピューター、エアコン点けて」

コンピューター名に続き、音声コマンドが表示され、音声コマンドに関連づけられたリモコン番号1を元に、iRemoconの赤外線信号が発信されます。


「コンピューター、エアコン消して」

valueにエアコンを消すリモコン番号の2が表示され、iRemoconのリモコン番号2に登録された「エアコン停止」赤外線信号が発信されます。


「コンピューター、電気点けて」


「コンピューター、電気消して」

認識率は初期設定状態で85~90%とSAPIの説明にありましたが、実際にそれくらいの信頼度はあると思います。発声している途中で噛んだりしない限りかなりの確率で認識してくれます。


今回はコンピューター名に「コンピューター」を使用しましたが、グラマーファイルを書き変えれば、好きな呼び方に変更することも可能です。

以下は試しにコンピューター名「Caspar」としたときの設定例。
SpeechGrammer.xml

 <P VAL="200">/Caspar/きゃすぱー/キャスパー;</P>
<P VAL="200">/Caspar/かすぱー/カスパー;</P>

また、グラマーファイル中の音声コマンドを追加していけば、好きなだけ命令を登録することができます。

<L PROPNAME="REMOCON_CMD">
<P VAL="1">/エアコン点けて/えあこんつけて/エアコンツケテ;</P>
<P VAL="1">/暑い/あつい/アツイ;</P>
<P VAL="2">/エアコン消して/えあこんけして/エアコンケシテ;</P>
<P VAL="2">/寒い/さむい/サムイ;</P>
<P VAL="5">/電気点けて/でんきつけて/デンキツケテ;</P>
<P VAL="5">/明るくして/あかるくして/アカルクシテ;</P>
<P VAL="5">/暗い/くらい/クライ;</P>
<P VAL="6">/電気消して/でんきけして/デンキケシテ;</P>
<P VAL="6">/暗くして/くらくして/クラクシテ;</P>
(これ以降追加していく)
</L>


さて、これまでに作ったもので、Delphiなどのプログラムを使用しなくてもリモコンを登録し、
音声コマンドを作成できるようになりました。次回は、プログラムの必要ない音声コマンド利用方法を書きたいと思います。その後、今まで作成したものを応用して、iRemoconを音声認識で利用するアプリケーションを作成出来ればと思います。

続き:iRemoconを使用して声で家電を操作する手順

タグ:iRemocon リモコン 環境制御 実験 プログラム

  • このエントリーをはてなブックマークに追加

Windows PCからiRemoconを使用する(iRemoconオブジェクト作成編)

  • このエントリーをはてなブックマークに追加

ファイル 465-1.jpg

前回のiRemoconをDelphiで操作からの続きです。

Glamo
スマートフォンを利用して家の中や外出先から様々なリモコン対応家電をコントロールできます。

前回は、1回1回Telnetコマンドを文字列で送信していましたが、アプリケーション作成時に毎回毎回文字列を入力するのは使い勝手が悪いので、今回はiRemoconをDelphiから、もっと手軽に使用できるようにiRemoconのオブジェクト化をしたいと思います。

オブジェクト化することにより、iRemoconのコマンドを知らなくても、手続き・メソッドを使用して操作できるようになり、以前より手軽にコードが書けるようになります。

で、いろいろ試行錯誤しながら何とか作成したiRemoconオブジェクト(TIRemocon)が以下。

TIRemoconオブジェクト
前回は、タイマーに関するコマンドは面倒くさかったので書きませんでしたが、TIRemoconには一応その機能も実装しました。ただ、Windowsプログラムから使うには、プログラム側からタイマー機能を作った方が手軽ではあると思います。
※後々、コンポーネントとして使えるようにTComponentを継承して作っています。ただ、まだ改良の余地があると思っているので、IDEにはインストールして試してはいません。なのでインストールして使おうとすると不具合があるかもしれません。


オブジェクトさえ作ってしまえば後は、これを利用するプログラムを書くだけです。

で、作成したプログラムのインターフェースは以下。

TIRemoconオブジェクト使用サンプルのソースコード

使用しているiRemoconのIPを入力して、コマンド文字列が書かれたボタン押すと、そのコマンドが実行されるだけというシンプルなプログラムです。(iRemoconのIPを取得するにはIP確認を参照)

使用すると以下のようになります。

一番上の出力欄にコマンドのログが表示されます。真ん中の出力欄にはエラーが表示されます。一番下の出力欄にはタイマーの予約リストが表示されるように出来ています。

試しに適当にボタン押してみると以下のような入出力コマンドが表示されます。

*au
ok
*is;4
is;ok
*is;17
is;err;002
*ic;17
*cc
cc;ok
ic;err;002
*tm;3;1334777518;0
tm;ok
*tm;1;1334604560;0
tm;err;002
*tm;27;1334777548;0
tm;err;006
*tl
tl;ok;9;1;3;1334777518;0;3;3;1335735018;604800;4;4;1345827271;86400;5;3;1334958961;0;6;3;1335563774;0;8;3;1338501414;0;9;4;1335477441;0;10;4;1335736653;0;11;3;1337983081;604800
*td;1
td;ok
*td;29
td;err;002
*ts;1334777411
ts;ok
*tg
tg;ok;1334777414
*vr
1.0.0

全てのソースコードは以下からダウンロードしてください。

iRemoconオブジェクトを利用したテストプログラムのダウンロード
※iRemoconを持っていないと動作しません。
※このプログラムを使用してiRemoconに不具合が出ても保証はできません。IRM-01Lコマンド仕様書(PDF)に書かれた内容を守ってお使いください。


これで、ある程度手軽にiRemoconを操作できる準備は整いました。さて次からは、いよいよ音声認識とiRemoconを組み合わせたプログラムを作って声で操作できるようにしてみたいと思います。

ただ、音声認識エンジンもいろいろあるので、以前書いた「iRemocon」をパソコンから操作する方法まとめ(+音声認識操作手順)にある記事をもう一度しっかりと読んだりして、音声認識エンジン選びから始めないと。

では次回は、いつになるかはわかりませんが音声認識を使ったiRemocon操作です。

続き:Windows PCからiRemoconを使用する(音声認識テスト編)

タグ:iRemocon リモコン 環境制御 実験 プログラム

  • このエントリーをはてなブックマークに追加

Windows PCからiRemoconを使用する(Delphiテストプログラム編)

  • このエントリーをはてなブックマークに追加

ファイル 461-1.jpg

前回、Windows PCからiRemoconへの接続を確認できたので、今回はWindowsプログラムからiRemoconを操作してみたいと思います。利用するプログラム言語はDelphi(Pascal)IDEはDelphi7でいきたいと思います。

Glamo
スマートフォンを利用して家の中や外出先から様々なリモコン対応家電をコントロールできます。

DelphiでiRemoconを操作するには、とりあえずIndyのTelnetコンポーネントを利用するのが一番手っ取り早いのかなと思ったので、TIdTelnetを使用することにしました。使い方をググったら、それらしいものが1件見付かったので以下を参考にしました。

Borland Newsgroup Archive :: borland.public.delphi.internet.winsock :: Telnet Indy + Delphi, how to send commands via example

とりあえず上の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操作オブジェクト」を作りたいと思います。音声認識家電操作アプリへの道はまだまだ遠そうです。

続き:Windows PCからiRemoconを使用する(iRemoconオブジェクト作成編)

タグ:iRemocon リモコン 環境制御 実験 プログラム

  • このエントリーをはてなブックマークに追加

Windows PCからiRemoconを使用する(IP確認・Telnet操作編)

  • このエントリーをはてなブックマークに追加

ファイル 460-1.jpg

先日購入したiRemoconを、今回はWindowsPCから使用してみたいと思います。

Glamo
スマートフォンを利用して家の中や外出先から様々なリモコン対応家電をコントロールできます。

そもそも、iRemoconは今のところスマートフォン向けのデバイスなので、本家WEBサイトのIPの確認方法にもスマートフォンを使った方法しか書いてないのですが、先日PCからの確認方法を問い合わせたところ、丁寧に以下のように教えてくれました。

iRemoconのIPアドレスを調べるためには、iPhoneをご利用頂く他に、Router等のネットワーク機器の管理画面やネットワークツールを使ってIPやMACアドレスの情報が確認できるものが必要になります。

ということで、今回はルーターを使った方法と、ネットワークツールを使った方法の2つを試したいと思います。(※ネットワーク関連のこととか、あまり詳しくないので間違っていたらごめんなさい。)

まずは、ルーターを使ったiRemoconをIPアドレスの確認方法です。

ルーターを使ったIP確認方法

うちではCoregaのルーターを使用しているので、その方法を書きます。

まず、現在使用しているブラウザからルーターのIPを入力し、設定画面を出します。

(ルーターのIPは環境毎に違うので、お使いの環境に合ったものを入力してください。)

ログイン画面が表示されるのでログインする。

今回見るのはLAN設定のDHCPの設定を見るので、ルーターの設定画面のそれらしいところ開く。

iRemoconをルーターに接続した時点で、DHCPプロトコルによりIPが自動的に割り当てられるはずなので、今までなかったIPが割り当てられていないか確認。

iRemocon全てがそうなのかわかりませんが、おそらくWIZ120SR~となっているのがiRemoconのIP。

自分の環境では192.168.1.14が割り当てられていました。


ネットワークツールを使ったIP確認方法

ルーターの管理権限がなくて、ルータからIPを確認できない場合、ネットワークツールを使ってでもIPを確認することができます。

とりあえず、自分はIP Scannerというツールを使ってiRemoconのIPを確認してみることにします。

まず、IP Scannerダウンロード先からIP Scannerをダウンロード。

とりあえず起動するとこんな感じ。

今現在のIPが192.168.1.111なのでIP Rangeにセットされています。

とりあえず、ここは適当に192.168.1.1~192.168.1.255でスキャンしてみたいと思います。

IP Rangeに値をセット。

iRemoconで使用するポートは51013なので、IP Scannerの「Tools/Preferences/Ports/Port selection」に51013を入力。

Startボタンを押してしばらく待つ。

しばらくすると、以下のような結果が表示されます。

とりあえず、ネットワークに繋がっているルーターやパソコンのIPは青色ので表示されます。

で、ポート番号51013が有効なiRemoconのIPは緑色ので表示されます。

これでiRemoconのIPは、192.168.1.14ということが確認できました。

もし、IP Scannerでスキャンしても表示されなかった場合は、IP Rangeの値を色々変更してみてください。


さて、iRemoconのIPが確認できたら次はTelnetにより機器がちゃんと動作するか確認をします。


TelnetによるiRemocon動作の確認

自分はデフォルト設定でTelnet通信が出来ましたが、これ以降の操作について環境によっては、

#Vista以降だとTelnetを解放する
#PCのファイヤーウォールのポート(51013)を開ける
#ルーターのポートを開ける

等の設定をする必要があるかもしれません。やり方はGoogle先生に聞けばわかると思います。
※ポートを開けることにより、セキュリティーが脆弱になる恐れがあります。そこらへんの設定は自己責任でお願いします。


まずは、コマンドプロンプトを開きます。

先程取得したIP番号でTelnet接続。

telnet 192.168.1.14 51013

以下のように入力し

*au[改行]

次のように出たら接続は成功しています。

ok

あとは、iRemocon開発者向け情報ページのIRM-01Lコマンド仕様書(PDF)を参考に、いろいろなコマンドを試してみます。

ok
ic;ic;err;010
*ic;ic;err;020
*ic;1
ic;ok
*is;1
is;ok
*ic;1
ic;ok
*is;1
is;ok
*ic;2
ic;ok
*is;2
is;ok
is;1
is;err;010
*is;is;err;020
*is;1
is;ok
*vr
1.0.0

仕様書通りに動いているので、どうやら正常に動作しているようです。


これで、Windows PCからiRemoconが正常に動作することが確認できました。次はいよいよWindowsアプリからiRemoconを動作させてみたいと思います。

ただ、いきなりちゃんとしたものは作れないので、まずはテストプログラムから。プログラム言語は、どれを使うかいろいろ検討しましたが、結局自分が最も使い慣れているDelphiで作ることにしました。C#とか使ってみたいけど、ほとんど触った事がないのでプログラム時間が通常の5倍以上とかかかりそうだし。

ということで、次回はDelphiによるiRemocon動作サンプルです。

続き:WindowsPCからiRemoconを使用する(Delphiテストプログラム編)

タグ:iRemocon リモコン 環境制御 実験

  • このエントリーをはてなブックマークに追加

ページ移動