はじめに
こんな記事をご存知でしょうか。
すげぇぇぇええええ!!!!!
特に、この音声認識システム。だって「テレビ付けて」とか「エアコン付けて」とかいうだけで家電操作できちゃうんですよ。まじ半端ない。やりたい。
ということで、早速 iRemocon を購入してしまいました。
Glamo 【自宅や外出先から、お使いの家電をコントロールできる学習リモコンの決定版! 】 iRemocon(アイリモコン) IRM-01L
- 出版社/メーカー: Glamo
- メディア: エレクトロニクス
- 購入: 1人 クリック: 735回
- この商品を含むブログ (8件) を見る
eneloop は大きさ比較用です。思ってたより小型でしかも軽い。要はコレは据え置き型の学習リモコンです。しかし普通の学習リモコンとは一味もふた味も違います。iRemocon に LAN ケーブルをつなぐことで、iPhone や iPad から専用アプリで、家ではもちろん外出先でも操作できちゃうんです。
これだけでもかなり便利なのですが、更にすごい点は、メーカーのサイト(iRemoconトップページ)で開発者向け情報が公開されている点です。
ここにあるコマンド仕様書を見れば、なんと! PC から iRemocon を操作出来るわけですね。つまるところ、PC から各家電を操作できると。凄い!
iRemocon の仕様
外出先からは Glamo inc.社のサーバを経由して iRemocon へコマンドを送信するのですが、こちらの仕様に関しては法人のみ公開となっているようです。しかしながらローカルネットワーク内での仕様については詳細に公開されています。主な仕様は次のような感じです。
接続先:
-通信方法 : TCP/IP -IPアドレス: iPhone or iPad からアプリで確認(直接取得する方法は非公開) -接続ポート: 51013
コマンド:
*XX;yyyy\r\n XX : コマンド部 (e.g. au:接続確認; is:赤外線発信; tm:タイマーセット;) yyyy: パラメータ部(e.g. is 時は 1〜1500 が学習させた信号に対応)
これに従ってコマンドを送ってあげれば iRemocon が操作できます。
実際に操作してみた
Boost.Asio を使うと C++ から簡単に TCP/IP 通信できちゃいます。次のようなプログラムを書きました。
プログラム
#include <iostream> #include <boost/asio.hpp> int main(int argc, char const* argv[]) { using namespace boost::asio; using namespace std; // iRemocon の ip と port を指定 const std::string ip = "192.168.0.3"; const int port = 51013; // エンドポイントを作成 ip::address addr = ip::address::from_string(ip); ip::tcp::endpoint ep(addr, port); for (;;) { // iRemocon へ送るコマンドを入力 (q: 終了) std::string command; std::cout << "INPUT COMMAND: "; std::cin >> command; if (command == "q") break; std::cout << "SEND: *" + command << "\\r\\n" << std::endl; // iRemocon へコマンドを送信 ip::tcp::iostream s(ep); s.expires_from_now(boost::posix_time::seconds(5)); s << "*" << command << "\r\n" << std::flush; // iRemocon からの応答を書きだす std::string line; getline(s, line); std::cout << "REPLY: " << ((line != "") ? line : "Timeout") << std::endl; } return 0; }
コンパイル
g++ client.cpp -o client -lboost_system -lboost_thread -lpthread
今後の展望
全部の家電を音声入力対応できるようにしたいです。あと出来れば Kinect とか買ってジェスチャーでチャンネル切り替えとか出来たら良いなぁ。夢が広がりますね!!