ESPHomeでのNECフォーマットの赤外線リモコン制御

赤外線(IR)リモコン制御をESPHomeを使ったデバイスで行う際に、IRrecvDemoV3 で解析したデータをどのように記述すべきかで手間取ったので、記録を残しておく。

IRrecvDemoV3

手元にあるリモコンの電源をM5Stack Atom Lite で制御しようとして、まず、リモコンの赤外線の信号を解析した。解析には、よく使われているような IRremoteESP8266  ( https://github.com/crankyoldgit/IRremoteESP8266 ) ライブラリを使うことにした。

IRremoteESP8266に含まれる IRrecvDumpV3 を使って赤外線信号を解析した。

電源ボタンの解析結果

解析をしたところ次の結果が得られた。NECフォーマットであることが解析からわかった。

ESPhome の transmit_necのパラメータ

NECフォーマットであることが解析からわかったので、ESPHome では、remote_transmitter.transmit_nec を利用すればよいことがわかった。

しかし、ここからaddress:、 command: にどのように指定すべきかに試行錯誤と時間を要した。

結果的には次のように指定すればよかった。

アドレス、コマンドをそれぞれ1バイトの a, c とすると address: には ((~a<<8) | a)、command: には ((~c<<8)|c)を指定すればよいことがわかった。

上記の電源ボタンの場合には、uint32_t address = 0x80; uint32_t command = 0x81; であることから a=0x80、c=0x81 として上記のように指定すればよいことになる。