リモコン解析 - ADIR01P
前の投稿でも書きましたが、最近、私事ながら引越しました。
それで待ち受けていたのが、富士通ゼネラルのエアコン、2021年式と結構新しいのにWiFiが接続できない代物。
スマートホーム化するにはリモコン解析が必須なのですが、エアコンはリモコンコードからルールを見つけないといけないので、かなり大変です。。
今まで、(既に発売中止になっている)以下のツールで解析を行なっていたのですが・・・
コードが一定しないこともあり、しっかりと取得できているのか不安でした。
特にスタートコードの開始位置から100usecのサンプリングで480byteのデータを取得するので、時間にして480 x 8 x 100usec = 384msec。エアコンのリモコンには短いのでは?と懸念していました。
(普通のライトなどのリモコンコードであれば、384msecで十分なのですが・・)
BUFFALO PCastTV2対応 PC用学習リモコンキット PC-OP-RS1 中古価格 |
○ADIR01Pを購入
そんなわけでネットを探していたら、以下のツールが良さそうだったので購入しました。
BitTradeOne 赤外線リモコンアドバンス ADIR01P 新品価格 |
特に私が目を引いたのは、以下の二点です。
- 受信した赤外線信号をそのまま記録、送信する
- 赤外線記録時間:1つの信号につき約3秒
リモコン解析では、受信したデータを何も加工せずに保存してほしいのです。
しかも3秒と長い時間であれば、有難い話です。参考までにメーカのHPはこちらです。
ただし・・残念なことも。。
実は一番知りたい取得したリモコンデータのフォーマットが公開されていないのです。
○ADIR01Pで保存したデータを解析
このツールを使うとどのようなデータが保存されるのか調査します。
一番の近道は、既に知っているリモコンコードを学習させて、どのように保存されるか確認することです。
今回、PanasonicのLEDライトの"全灯"信号を学習させました。
このコードは私の理解(既存のシステム)では、LSB firstで以下のようになっており、
2C 52 09 2C 25
また、Data bitのパルス幅は100usec単位で以下の通りです。
start_h 0x23
start_l 0x12
data0_h 0x4
data0_l 0xd
data1_h 0x4
data1_l 0xd
stop_h 0x4
リモコンフォーマットの技術的な内容はこちらのHPが参考になります。
これをADIR01PとWindowsのGUIツールを使用して以下のように読ませると、
以下のようなデータがキャプチャできます。
0x00,0x86,0x00,0x43,0x00,0x11,0x00,0x11,
0x00,0x12,0x00,0x10,0x00,0x14,0x00,0x31,
0x00,0x13,0x00,0x31,0x00,0x13,0x00,0x0F,
0x00,0x12,0x00,0x33,0x00,0x12,0x00,0x10,
0x00,0x13,0x00,0x0F,0x00,0x14,0x00,0x0F,
0x00,0x14,0x00,0x31,0x00,0x13,0x00,0x0F,
0x00,0x13,0x00,0x10,0x00,0x13,0x00,0x32,
0x00,0x12,0x00,0x0F,0x00,0x14,0x00,0x31,
0x00,0x13,0x00,0x0F,0x00,0x14,0x00,0x31,
0x00,0x13,0x00,0x0F,0x00,0x13,0x00,0x10,
0x00,0x13,0x00,0x31,0x00,0x13,0x00,0x0F,
0x00,0x14,0x00,0x0F,0x00,0x14,0x00,0x0F,
0x00,0x14,0x00,0x0F,0x00,0x14,0x00,0x0F,
0x00,0x13,0x00,0x0F,0x00,0x14,0x00,0x31,
0x00,0x13,0x00,0x31,0x00,0x13,0x00,0x0F,
0x00,0x14,0x00,0x31,0x00,0x13,0x00,0x0F,
0x00,0x13,0x00,0x10,0x00,0x14,0x00,0x30,
0x00,0x13,0x00,0x0F,0x00,0x15,0x00,0x30,
0x00,0x13,0x00,0x0F,0x00,0x14,0x00,0x0F,
0x00,0x13,0x00,0x32,0x00,0x13,0x00,0x0E,
0x00,0x14,0x00,0x0F,0x00,0x15,0x0B,0x10
これを以下のように4byteごとに並べると、数値から最初の2ByteがHIGH信号の時間、最後の2ByteがLOW信号のData bitであることが推測できます。
実際、リモコンコード(2C 52 09...)と照らし合わせるとMSBですが一致することがわかります。
またパルス幅は、data0_h=data0_l=data1_h=0x000F~0x0014、data1_l=0x31~0x33であることから、単位は25usec強であることがわかります。
0x00,0x86, 0x00,0x43, - start bit
0x00,0x11, 0x00,0x11, - 0
0x00,0x12, 0x00,0x10, - 0
0x00,0x14, 0x00,0x31, - 1
0x00,0x13, 0x00,0x31, - 1
0x00,0x13, 0x00,0x0F, - 0
0x00,0x12, 0x00,0x33, - 1
0x00,0x12, 0x00,0x10, - 0
0x00,0x13, 0x00,0x0F, - 0
0x00,0x14, 0x00,0x0F, - 0
0x00,0x14, 0x00,0x31, - 1
0x00,0x13, 0x00,0x0F, - 0
0x00,0x13, 0x00,0x10, - 0
0x00,0x13, 0x00,0x32, - 1
0x00,0x12, 0x00,0x0F, - 0
0x00,0x14, 0x00,0x31, - 1
0x00,0x13, 0x00,0x0F, - 0
0x00,0x14, 0x00,0x31, - 1
0x00,0x13, 0x00,0x0F, - 0
0x00,0x13, 0x00,0x10, - 0
0x00,0x13, 0x00,0x31, - 1
0x00,0x13, 0x00,0x0F, - 0
0x00,0x14, 0x00,0x0F, - 0
0x00,0x14, 0x00,0x0F, - 0
0x00,0x14, 0x00,0x0F, - 0
0x00,0x14, 0x00,0x0F, - 0
0x00,0x13, 0x00,0x0F, - 0
0x00,0x14, 0x00,0x31, - 1
0x00,0x13, 0x00,0x31, - 1
0x00,0x13, 0x00,0x0F, - 0
0x00,0x14, 0x00,0x31, - 1
0x00,0x13, 0x00,0x0F, - 0
0x00,0x13, 0x00,0x10, - 0
というわけで、 ADIR01Pで保存されるデータは、25usec強単位の16bitでData bitのパルス幅を表していると言えます。
これにより、今問題となっているエアコンのリモコンが解析できそうです。
また、このツールの売りだった受信した赤外線信号をそのまま記録という言葉が正しかったこともわかります。
参考までに。