いくつか構成は考えられます。
もっともオーソドックスなのは、家庭内LANにWANから接続して、ターミナル操作で部屋の「子機」を制御する方法。部屋のルーターの「ポートを開放」することで、外部からのアクセスが可能になります。
ID、パスワードのセキュリティをかけることになりますが、物理的に外部からの接触が可能になるということで、セキュリティのレベルは一段下がることになります。
なので、なんとなくこの方法はやめることにしました。
あとは、メールとか、SMS、電話、ツイッターなどの通信を受けて、その内容に含まれる「トリガー」を見て、特定パターンの信号を送信するという構成を考えました。
こちらは、外部と直接的な接続をするわけではないので、少し安全度が増すかなと。
もちろん通信先のアドレスとか番号、「トリガー」の中身とかを知られると、「なりすまし」で乗っ取られる可能性はありますが、まあ公開するものでもないので、ほとんどリスクはありません。
ネット上には、ツイッターを利用した事例が紹介されていましたが、tweetを読みにいかなければならないというツイッターの性質上、何分に一回確認に行くというルーチンを組まなければならず、なんとなく美しくないなと感じました。
好みの問題ですね。
で、選んだ方法がこちら。
GMAILに特定の「トリガー」を含むメールを送信すると、それを受信したAndroid端末で、該当する赤外線信号ファイルが再生される。
つまり、たとえば「エアコンを入れろ」というキーワードを含んだメールを自分のGMAILアドレス宛に送ると、その内容に従って、「エアコンON」の信号が再生されるという格好です。
これを実現する方法を、またまたつらつらと考えて、絞り込んだ結果が次の3パターンになります。
1.GMAILの「設定」により、「トリガー」を含むメールを受信したら、そのトリガーを「ラベル」に設定する。Android端末側の設定では、ある「ラベル」のついたメールをGMAILに受信したら、それに対応した音声ファイルを通知と一緒に再生する。(つまりは「着信音」として再生する)
2.WEBサービス「IFTTT」を利用し、ある「ラベル」のついたメールを受信したら、Android端末上のアプリ「IF」により、特定の音声ファイルを再生する。
3.Androidアプリ「Tasker」を利用し、「トリガー」を含む「通知」がステータス・バーに表示されたら、特定の音声ファイルを再生する。
というものです。
1.はGMAILの機能だけで完結するので、構成がすっきりしているのですが、若干制約があります。
Android端末が古いと、GMAILアプリのバージョンが低くて、任意の音声ファイルを着信音として再生させることができません。
手持ちの機器は、タッチパッド端末が故障してしまったので、残るは古いスマホのみ。
バージョンの関係で、この方法は使えないことがわかりました。
(タッチパッドが回復すれば、利用可能なので、可能性が全くないわけではありませんが……)
2.の方法については、「IFTTT」がトリガーの存在をチェックする頻度が15分間に1回程度と、ある程度タイムラグが生じてしまいます。
また、テストしてみたら15分どころか1時間以上かかったケースもあり、どうもそのときの状況に左右されるようです。
即時に命令を実行させる方法として、「trigger@ifttt.com」宛に登録アドレスからメールを送るという方法がありますが、それにしてもAndroid端末上にアプリ「IF」が稼働している必要があります。
この「IF」も古いスマホではインストールできません。
そこで、3.の方法が一番安定しているという結論になりました。
「Tasker」なら古いスマホでも走るので。
GMAILの「通知」を読み取って、トリガーの判定を行うルーチンも書き込みました。
Xperia Sol23での動作確認はできましたので、あとはロートル・スマホでの実機テストができれば、ソフト的な構成は完成です。
今度の休みにでも、仕上げたいと思います。