みなさん、こんにちは。
今回は、メーカーサポートが終了してしまったスマート学習リモコン「eRemote RJ-3」をPythonから操作する方法についてご紹介します。私も2017年に購入して以来、このeRemote RJ-3を愛用してきたのですが、残念ながら2024年11月30日にサポートが終了してしまいました。
リンクジャパンのリリース:eRemote RJ-3、eCameraのサポート終了のお知らせ
サポート終了はピンチじゃない!
サポート終了と聞くと、「もう使えなくなるの?」と不安に思うかもしれません。現に、スマートフォン用アプリも近い将来使えなくなる可能性も考えられます。しかし、ご安心ください! 実はeRemoteシリーズは、中国のBroadlink社が開発元で、Broadlinkデバイスをプログラムで操作できる素晴らしいツールがGitHubで有志によって公開されています。
python-broadlink: https://github.com/mjg59/python-broadlink
このツールは現在も開発が続いているようなので、これを使えば、ソフトウェア面でのサポート切れの心配は当面しなくても大丈夫でしょう。もちろん、ハードウェアが故障してしまった場合は潔く諦めるしかありませんが、ソフトウェアで延命できるなら試す価値は大いにあります。
今回は、このpython-broadlinkツールのセットアップから基本的な使い方までを解説していきます。
eRemote RJ-3 のセットアップを始めよう!
今回ご紹介する方法はPython3で動作しますので、お手持ちのパソコンにPython3がインストールされている必要があります。
broadlinkのインストール
まず、broadlinkライブラリをインストールします。以下のコマンドをターミナルで実行してください。
pip3 install broadlink
デバイスのセットアップ(APモードへの切り替えと接続)
もしeRemote RJ-3がすでにリンクジャパンの公式アプリで設定されている場合は、このステップは不要です。そうでない場合は、以下の手順でデバイスをAP(アクセスポイント)モードにしてネットワークに接続します。
- APモードにする
eRemote RJ-3のリセットボタンを、素早く青く点滅するまで長押しします。次に、ゆっくり青く点滅するまで再度長押しします。 - Wi-Fiに接続する
パソコンから「BroadlinkProv」という名前のWi-Fi SSIDを手動で選択し、eRemote RJ-3に接続します。
setup関数を使ってデバイスをローカルネットワークに接続する
次に、Pythonの対話型インタープリタを使ってeRemote RJ-3をローカルネットワークに接続します。
python3
Pythonのプロンプトが表示されたら、以下のコマンドを入力します。
import broadlink
broadlink.setup('myssid', 'mynetworkpass', 3)
'myssid'
にはご自宅のWi-FiのSSIDを、'mynetworkpass'
にはパスワードを、そして3
にはセキュリティモードを指定して実行します。セキュリティモードのオプションは以下の通りです。
0
: none1
: WEP2
: WPA13
: WPA24
: WPA1/2
もしセットアップがうまくいかない場合は、オプションとしてブロードキャストアドレスを指定して実行してみてください。
broadlink.setup('myssid', 'mynetworkpass', 3, ip_address='192.168.0.255') # IPアドレスは環境に合わせて調整してください
設定が終わったら、exit()
と入力してPythonの対話型インタープリタを終了します。
exit()
コマンドラインツールの使い方
ここからは、コマンドラインツールを使って、IR(赤外線)コマンドの学習と送信を行います。
コマンドラインツールのダウンロード
以下のコマンドを実行して、GitHubからツールをクローンします。
git clone https://github.com/mjg59/python-broadlink.git
デバイス情報の取得
まず、ネットワーク上のBroadlinkデバイスを探索し、その情報を取得します。
cd python-broadlink/cli
broadlink_discovery
実行すると、以下のようなデバイス情報が表示されます。
Discovering...
###########################################
RMPRO
# broadlink_cli --type 0x272a --host 192.168.0.XX --mac XXXXXXXXXXXX
Device file data (to be used with --device @filename in broadlink_cli) :
0x272a 192.168.0.XX XXXXXXXXXXXX
temperature = 29.2
この出力の下から2行目にある0x272a 192.168.0.XX XXXXXXXXXXXX
のような情報が、これ以降の作業で使うデバイス情報です。デバイス情報はご自身の環境によって異なりますので、表示された値を控えておきましょう。
IRコマンドの学習
次に、リモコンのボタンをeRemote RJ-3に学習させます。ここでは、テレビの電源ボタンを学習し、「TV.power」というファイルに保存する例です。
broadlink_cli --device "0x272a 192.168.0.XX XXXXXXXXXXXX" --learnfile TV.power
このコマンドを実行すると、ツールがIRコードの受信待ち状態になります。eRemote RJ-3に向けてリモコンの電源ボタンを押し、IRコードを学習させてファイルに保存します。
IRコマンドの送信
学習したIRコードをeRemote RJ-3から送信するには、以下のコマンドを実行します。
broadlink_cli --device "0x272a 192.168.0.XX XXXXXXXXXXXX" --send @TV.power
これにより、「TV.power」に保存されたテレビの電源IRコードがeRemote RJ-3から送信されます。
デバイス情報をファイルに保存して利用する
毎回長いデバイス情報を入力するのが面倒な場合は、デバイス情報をファイルに保存して指定することもできます。
例えば、「RJ-3」という名前のファイルを作成し、先ほど取得したデバイス情報を入力して保存します。
vi RJ-3
ファイルには以下の情報を入力し、保存します。
0x272a 192.168.0.XX XXXXXXXXXXXX
ファイルに保存したデバイス情報を指定してコマンドを送信する例は以下の通りです。
broadlink_cli --device @RJ-3 --send @TV.power
さらに詳しい使い方
その他、詳しい使い方はpython-broadlink
のGitHubリポジトリを参照してください。
python-broadlink: https://github.com/mjg59/python-broadlink
まとめ
このように、メーカーサポートが終了してしまったeRemote RJ-3も、python-broadlink
コマンドラインツールを利用すれば、まだまだ現役で活躍させることができます!
このコマンドラインツールは、eRemote RJ-3だけでなく、Broadlink社製のスマートプラグなど複数のデバイスで利用できます。対応デバイスもGitHubのREADMEに記載されていますので、みなさんもぜひ試してみてください。スマートホームの可能性がさらに広がるはずです!
本日も最後までお読みいただきありがとうございました。
それでは、よいスマートホームライフを!