リモコンを「偽造」して、ホームオートメーションを行い、テレビの STB をオンにしたいと考えています。これは「受け取る」ことではなく、受信者に「送信する」ことです。
関連するリモコンのコードを見つけたところ、うまくいきました。ただし、テレビのセットトップボックスは、キーの実際のコードなしで、事前データを再度送信してから送信を停止することにより、ボタンの押下 (および複数回のボタンの押下) の終了を検出するようです。
これを説明するために、mode2 を使用して、電源を 2 回続けて押すと (ただし、その間にボタンを放すと)、次の一連のパルスとスペースを受け取ります。
277 682 597 703 256 362 277 362 597 703 256 362 597 362 256 703 597 362 277 682 597 362 277 682 619 16275
256 703 597 703 256 362 277 362 597 682 277 362 597 362 256 703 597 362 256 703 597 362 277 682 597 16275
277 682 597 703 277 362 256 362 619 682 256 362 597 16957
256 703 597 703 256 362 256 362 597 703 256 362 619 362 256 703 597 362 256 703 597 362 256 703 597 16275
256 703 597 703 256 362 256 362 597 703 277 362 597 362 256 703 597 362 256 703 597 362 256 703 597 16275
277 703 597 682 277 362 256 362 597 703 256 362 597 362 277 682 619 362 256 703 597 362 256 703 597 16275
256 703 597 703 256 362 277 362 597 682 277 362 597 16957
各行はコードの繰り返しです。オシロスコープでギャップを測定すると、はるかに大きくなります (約 120ms)。
これについて興味深いのは、トグル ビットがないように見えますが、送信はワード全体の終わりではなく、7 番目のパルスで終了するように見えることです。これはすべてのキーで同じです。
前述したように、TV ボックスをオンにしたり (電源を 2 回続けて押したり)、チャンネル 11 または 22 に変更したりできないため、これは関連しているようです。
どうすればこれを実装できますか? 何か案は?
私のlircファイルは次のようになります。
begin remote
name leunet
bits 10
flags SHIFT_ENC|CONST_LENGTH
eps 30
aeps 100
header 343 343
one 343 343
zero 343 343
gap 118000
# min_repeat 2
pre_data_bits 8
pre_data 0xbb
begin codes
power 0x092
key_1 0x091
......
end codes
end remote
事前データと同じ方法で「投稿データ」を定義して実験しようとしましたが、ギャップが長く、「投稿データ」が繰り返しの一部であってはならないため、これは正しく機能しません。
Lirc を変更して再コンパイルするのは、常に更新やシステムの変更などで大騒ぎになるので、正直に言って、それほど深く入り込むのは避けたいと思います。
これは、待ち時間をあまり導入せずにスクリプトで実行できますか (たとえば、pre_data のみを送信する「停止コード」リモートを定義します)。「リモートのふりをしている」ボックスは、Debian (Allwinner A20 プロセッサ) を搭載したかなり強力なアーム プロセッサです。どんな助けでも大歓迎です