2016年08月25日
エアコンのリモコンの解析
はじめに
これからエアコンのリモコンについて話をしよう。
普通の家電のリモコンは、すごくシンプルな作りになっている。
例えばテレビのリモコンでONというボタンを押したら、1種類の赤外線データしか飛ばないようになっている。
もしかしたら、リモコンによってはON/OFFが同じボタンかもしれない。
それでもやはり同じで、基本的には一つのキーに1種類のデータしか割り当てられていない。
学習リモコンで簡単にキーを割り当てられる。
しかし、エアコンのリモコンは違う。
冷房の電源をONした場合、温度設定が25Cの時と26Cの時では出力されるデータが若干違ってくる。
仮に同じ25Cの時でも、風向きが上と下の時ではやはり異なる。
つまり冷暖房の種類、風量、温度、風向き、その他諸々の設定によって電源ONのデータは何種類も存在する。
この煩わしい問題にXBeeシステムでは冷房ONと各温度設定のコードを用意していて、以下のように2種類のリモコンデータを送っていた。
1.冷房の電源をON (風量・風向きは全て自動に固定)
2.冷房の28C設定 (風量・風向きは全て自動に固定)
温度だけは変えられるけど、それ以外の設定(風向き・風量・その他)は決め打ちであったので、本物のリモコンにはかなわなかった。
基本ソフトウェアなので全ての組み合わせをキャプチャしてテーブル化するというのも一つの手段だが、今回は実際に解析をして本物のリモコンをエミュレーションするようなソフトウェアを作成することにした。
私の家では、2006年の三菱製と2011のシャープ製の2種類のエアコンを使っている
2006年三菱製
ここからは本当に地道な作業なのだが、何パターンもデータを取ってエクセルシートにまとめ、そこから法則性を見つける。
上記のデータから以下のような法則性がわかる。
1) データが必ず0~17の18byteの固定長であること。
2) 最後の17byte目がCheck Sum(0~16byte目の足し算の合計)になっていること。
3) 冷房の電源ON、暖房から冷房、温度切り替えの3種類の動作において、最終設定が同じであればリモコンコードは同じになる。(B,D,E)
4) 電源OFFの時は5 Byte目が変わる。(F)
5) 風速切り替えは9 Byte目の下3bitに割り当てられている(F,G,H,I)
6) 風上下は同じく9 Byte目の上5bitに割り当てられている(J,K)
7) 風左右は8 Byte目の上位4bitに割り当てられている(K,O,P)
8) 温度は7 Byte目に割り当てられておいる。(W,X,Y)
というような具合にルールを見つけ、コツコツとSWを作っていく。
実は、こんな地味な作業をするよりテーブル化した方が早いかもしれない。。
2011年シャープ製
前述した三菱とやはりルールが異なり、ざっと書くとこんな感じだ。
1) 0~12 byteの13byteの固定長。
2) 12byte目の上位4bitが0~12byte(下位4bit)のXORになる。
3) 最終設定が同じでも、OFF->ON、温度切り替え、風量変更、風向き変更など動作によってデータが異なる。(C,D,E,F,G,H)
4) 5 byte目と10byte目が動作に関係してそう。(C,D,E,F,G,H)
5) 温度設定は4byte目に割り当てられている。(J,K)
というような具合になる。
さいごに
そんなこんなでインプリするとこんな感じ。
エアコンのリモコンのメニューに風向きや風量などの設定が追加されて使い勝手がよくなった。
これからエアコンのリモコンについて話をしよう。
普通の家電のリモコンは、すごくシンプルな作りになっている。
例えばテレビのリモコンでONというボタンを押したら、1種類の赤外線データしか飛ばないようになっている。
もしかしたら、リモコンによってはON/OFFが同じボタンかもしれない。
それでもやはり同じで、基本的には一つのキーに1種類のデータしか割り当てられていない。
学習リモコンで簡単にキーを割り当てられる。
しかし、エアコンのリモコンは違う。
冷房の電源をONした場合、温度設定が25Cの時と26Cの時では出力されるデータが若干違ってくる。
仮に同じ25Cの時でも、風向きが上と下の時ではやはり異なる。
つまり冷暖房の種類、風量、温度、風向き、その他諸々の設定によって電源ONのデータは何種類も存在する。
この煩わしい問題にXBeeシステムでは冷房ONと各温度設定のコードを用意していて、以下のように2種類のリモコンデータを送っていた。
1.冷房の電源をON (風量・風向きは全て自動に固定)
2.冷房の28C設定 (風量・風向きは全て自動に固定)
温度だけは変えられるけど、それ以外の設定(風向き・風量・その他)は決め打ちであったので、本物のリモコンにはかなわなかった。
基本ソフトウェアなので全ての組み合わせをキャプチャしてテーブル化するというのも一つの手段だが、今回は実際に解析をして本物のリモコンをエミュレーションするようなソフトウェアを作成することにした。
私の家では、2006年の三菱製と2011のシャープ製の2種類のエアコンを使っている
2006年三菱製
ここからは本当に地道な作業なのだが、何パターンもデータを取ってエクセルシートにまとめ、そこから法則性を見つける。
上記のデータから以下のような法則性がわかる。
1) データが必ず0~17の18byteの固定長であること。
2) 最後の17byte目がCheck Sum(0~16byte目の足し算の合計)になっていること。
3) 冷房の電源ON、暖房から冷房、温度切り替えの3種類の動作において、最終設定が同じであればリモコンコードは同じになる。(B,D,E)
4) 電源OFFの時は5 Byte目が変わる。(F)
5) 風速切り替えは9 Byte目の下3bitに割り当てられている(F,G,H,I)
6) 風上下は同じく9 Byte目の上5bitに割り当てられている(J,K)
7) 風左右は8 Byte目の上位4bitに割り当てられている(K,O,P)
8) 温度は7 Byte目に割り当てられておいる。(W,X,Y)
というような具合にルールを見つけ、コツコツとSWを作っていく。
実は、こんな地味な作業をするよりテーブル化した方が早いかもしれない。。
2011年シャープ製
前述した三菱とやはりルールが異なり、ざっと書くとこんな感じだ。
1) 0~12 byteの13byteの固定長。
2) 12byte目の上位4bitが0~12byte(下位4bit)のXORになる。
3) 最終設定が同じでも、OFF->ON、温度切り替え、風量変更、風向き変更など動作によってデータが異なる。(C,D,E,F,G,H)
4) 5 byte目と10byte目が動作に関係してそう。(C,D,E,F,G,H)
5) 温度設定は4byte目に割り当てられている。(J,K)
というような具合になる。
さいごに
そんなこんなでインプリするとこんな感じ。
エアコンのリモコンのメニューに風向きや風量などの設定が追加されて使い勝手がよくなった。
この記事へのコメント