Aladdin X2 Plus の赤外線リモコンコードを調べて Nature Remo から操作してみた

我が家では IKEA の電球やプラグを中心にスマートホームを実現しています。操作は主にIKEAの物理スイッチのほか Amazon Echo (Alexa) への音声入力と、Appleホームアプリ (HomeKit) に設定したアクセサリを iPhone / iPadウィジェットに配置したショートカットから行っています。

先日、子供部屋の照明をIKEAのスマート電球から Aladdin X2 Plus に交換したのですが、スマートホーム対応していない同製品をこれまで通り物理スイッチや音声アシスタント、各種デバイスから操作できるようにしていきます。そのために必要な赤外線リモコンコードを調べました。

前提として Aladdin 付属のリモコンで操作した場合にはスマートホームアプリに表示される電源状態が本体の状態と一致しなくなるのはどうしようもないということで(物理スイッチと音声、ウィジェットからの操作であればアプリ上の電源状態を目にすることもないため)そこは全く気にせず、これまで通り「違和感なく」操作できることを目標にしています。

「違和感なく」の定義

  • 気になるほどの遅延がない
  • 意図した操作と逆の動きにならない
  • アプリと本体の電源状態を一致させないと動かないなどの無駄がない

赤外線リモコン検討

赤外線リモコンは元々 Nature Remo mini 2 を別の部屋で利用しており Homebridge からAppleホームアプリにも連携していて、今回やりたいことが実現出来そうなため Nature Remo を採用することにしました。

2023年7月に Nature Remo nano というエントリーモデルが発売されシリーズで初めて Matter にも(条件付きですが)対応しているものの、残念ながら「Nature Remo nano は Local API 非対応*1で遅延が気になったため実際に試してみました。

ちなみに Nature Remo nano はめちゃくちゃ小さいです。

Nature Remo Cloud API と Local API の比較

以下の2パターンでAppleホームアプリから扇風機を操作して遅延の比較をしました。

  1. Nature Remo nano   : Nature Remoアプリから Matter 連携 (Cloud API)
  2. Nature Remo mini 2 : homebridge-nremo からアクセサリ追加 (Local API)

結果は想定通りと言えますが Local API では操作した瞬間に動く感覚が得られるのに対して、Cloud API はどうしてもワンテンポ遅れる感じがあります。時間にすると約1秒前後で十分使える印象ですが、回線やサーバの状況次第では更に遅延する/動かなくなることもあり得るため、今回は Local API を利用することにしました。

とはいえ、Matter 連携は非常に簡単に設定できますし Homebridge なども不要で遅延も最小限のため、これからスマートホーム化を進める人にとっては非常によい選択肢になりそうです。

赤外線リモコンコード

Aladdin X2 Plus に付属のリモコンは以下のボタン構成です。

このうち赤外線でコントロールしているのは以下の3つになります。

 (2) プロジェクター電源ボタン
 (5) ライト切り替えボタン
 (6) ライトオンオフボタン

このような、ひとつのボタンでオンオフを切り替える方式は違和感のない操作には最大の敵になりえますが、幸いなことに付属のリモコンにボタンがないだけで以下の個別操作に対応していることは事前に調べがついていました。

 (a) プロジェクターON
 (b) プロジェクターOFF
 (c) 常夜灯ON
 (d) ライトON
 (e) ライトOFF

8種類の赤外線リモコンコード

私の環境で実際に動作を確認した赤外線リモコンコードは下記の通りです。

(2) プロジェクター電源ボタン

{"format":"us","freq":38,"data":[8982,4537,571,554,545,591,571,554,545,592,539,594,569,554,545,594,569,1684,571,1695,541,1725,536,1725,562,1699,562,1700,570,1685,545,1723,564,569,537,1725,536,1725,570,1683,577,1684,579,1685,545,1723,538,1722,541,1721,539,595,536,593,538,594,537,592,539,594,569,554,546,593,538,590,539,39755,8978,2303,540]}

(5) ライト切り替えボタン

{"format":"us","freq":38,"data":[8957,4545,530,594,570,570,520,605,515,605,541,579,530,593,569,568,548,1697,540,1699,551,1688,538,1709,541,1725,515,1725,514,1726,516,1723,560,565,572,565,555,1687,521,605,515,605,536,1703,545,1720,519,1725,546,1687,547,1698,539,585,539,1724,542,1702,546,568,552,567,543,588,570,567,540]}

(6) ライトオンオフボタン

{"format":"us","freq":38,"data":[9012,4499,570,568,538,594,568,554,570,568,570,554,576,554,571,567,538,1722,573,1685,546,1720,573,1683,547,1722,570,1686,570,1698,570,1684,547,591,563,1697,564,569,570,553,571,570,536,1724,538,1722,572,1683,579,1684,546,592,538,1722,540,1725,538,1721,564,568,538,594,536,592,572,554,576,39715,8986,2301,540]}

(a) プロジェクターON

{"format":"us","freq":38,"data":[8966,4534,562,561,537,605,540,579,549,567,534,594,571,568,553,567,547,1699,515,1724,532,1707,543,1722,551,1686,521,1725,540,1699,536,1708,572,567,553,1686,521,605,516,1723,536,588,541,605,547,565,555,1685,547,581,566,548,548,1724,516,603,541,1699,517,1723,570,1665,581,565,555,1685,540]}

(b) プロジェクターOFF

{"format":"us","freq":38,"data":[9011,4506,553,567,521,605,515,605,531,591,564,579,549,567,520,603,517,1725,536,1704,574,1687,520,1723,551,1685,555,1685,542,1706,541,1725,546,567,521,1725,515,1725,536,1702,543,603,517,607,539,581,515,1725,536,588,538,603,517,603,517,602,543,1697,541,1703,541,1725,515,605,541,1698,540]}

(c) 常夜灯ON

{"format":"us","freq":38,"data":[8985,4505,575,542,583,567,544,579,549,566,555,565,568,560,541,605,538,1698,549,1686,534,1709,543,1701,565,1696,519,1720,519,1724,530,1708,541,583,538,1723,549,567,521,603,532,1711,539,1701,564,582,546,567,521,605,530,590,541,1724,515,1725,546,567,547,579,532,1707,541,1724,547,1687,540]}

(d) ライトON

{"format":"us","freq":38,"data":[8977,4540,549,567,553,566,553,567,540,588,570,567,555,565,552,567,553,1687,566,1677,575,1684,523,1723,547,1687,544,1698,538,1706,570,1687,521,603,516,1723,516,603,539,1703,541,1723,547,567,546,579,526,594,562,562,536,606,546,1687,521,605,528,592,571,1663,547,1726,546,1685,553,1687,540]}

(e) ライトOFF

{"format":"us","freq":38,"data":[9008,4506,553,567,521,605,528,592,570,542,548,605,515,605,517,603,564,1670,546,1726,546,1687,521,1720,519,1724,532,1707,566,1699,515,1725,540,579,541,579,534,1705,575,1685,553,567,521,1724,547,567,541,585,573,568,521,1724,547,566,547,580,534,1705,573,565,547,1697,517,1723,549,1685,540]} 

Homebridge への設定

homebridge-nremo を用いて下記のように設定しています。

{
	"name": "子供部屋照明",
	"accessory": "NatureRemo",
	"host": "xxx.xxx.xxx.xxx",
	"path": "/messages",
	"delayBefore": 0,
	"delayAfter": 0,
	"timeout": 2000,
	"retry_interval": 500,
	"retry": 3,
	"on": {"format":"us","freq":38,"data":[8977,4540,549,567,553,566,553,567,540,588,570,567,555,565,552,567,553,1687,566,1677,575,1684,523,1723,547,1687,544,1698,538,1706,570,1687,521,603,516,1723,516,603,539,1703,541,1723,547,567,546,579,526,594,562,562,536,606,546,1687,521,605,528,592,571,1663,547,1726,546,1685,553,1687,540]},
	"off": {"format":"us","freq":38,"data":[9008,4506,553,567,521,605,528,592,570,542,548,605,515,605,517,603,564,1670,546,1726,546,1687,521,1720,519,1724,532,1707,566,1699,515,1725,540,579,541,579,534,1705,575,1685,553,567,521,1724,547,567,541,585,573,568,521,1724,547,566,547,580,534,1705,573,565,547,1697,517,1723,549,1685,540]},
	"command_order": [{ "on": ["on"] },{ "off": ["off"] }]
},
{
	"name": "常夜灯",
	"accessory": "NatureRemo",
	"host": "xxx.xxx.xxx.xxx",
	"path": "/messages",
	"delayBefore": 0,
	"delayAfter": 0,
	"timeout": 2000,
	"retry_interval": 500,
	"retry": 3,
	"on": {"format":"us","freq":38,"data":[8985,4505,575,542,583,567,544,579,549,566,555,565,568,560,541,605,538,1698,549,1686,534,1709,543,1701,565,1696,519,1720,519,1724,530,1708,541,583,538,1723,549,567,521,603,532,1711,539,1701,564,582,546,567,521,605,530,590,541,1724,515,1725,546,567,547,579,532,1707,541,1724,547,1687,540]},
	"off": {"format":"us","freq":38,"data":[9008,4506,553,567,521,605,528,592,570,542,548,605,515,605,517,603,564,1670,546,1726,546,1687,521,1720,519,1724,532,1707,566,1699,515,1725,540,579,541,579,534,1705,575,1685,553,567,521,1724,547,567,541,585,573,568,521,1724,547,566,547,580,534,1705,573,565,547,1697,517,1723,549,1685,540]},
	"command_order": [{ "on": ["on"] },{ "off": ["off"] }]
},
{
	"name": "プロジェクター",
	"accessory": "NatureRemo",
	"host": "xxx.xxx.xxx.xxx",
	"path": "/messages",
	"delayBefore": 0,
	"delayAfter": 0,
	"timeout": 2000,
	"retry_interval": 500,
	"retry": 3,
	"on": {"format":"us","freq":38,"data":[8966,4534,562,561,537,605,540,579,549,567,534,594,571,568,553,567,547,1699,515,1724,532,1707,543,1722,551,1686,521,1725,540,1699,536,1708,572,567,553,1686,521,605,516,1723,536,588,541,605,547,565,555,1685,547,581,566,548,548,1724,516,603,541,1699,517,1723,570,1665,581,565,555,1685,540]},
	"off": {"format":"us","freq":38,"data":[9011,4506,553,567,521,605,515,605,531,591,564,579,549,567,520,603,517,1725,536,1704,574,1687,520,1723,551,1685,555,1685,542,1706,541,1725,546,567,521,1725,515,1725,536,1702,543,603,517,607,539,581,515,1725,536,588,538,603,517,603,517,602,543,1697,541,1703,541,1725,515,605,541,1698,540]},
	"command_order": [{ "on": ["on"] },{ "off": ["off"] }]
}

(追記)現在は下記のように設定を変更して運用中です。

最後に

付属のリモコンにボタンがない個別操作の赤外線リモコンコードが見つからなかったので誰かのお役に立てば幸いです。