スマートリモコン eRemote mini を Raspberry Pi から使う

ALL
スポンサーリンク

スマートリモコン eRemote mini を Raspberry Pi から使う方法です。
Raspberry Pi から eRemote mini に対して、リモコンボタン登録や、登録したリモコンコードの送信の指示をおこなえます。
これにより、Raspberry Pi のスクリプトなどで、家電製品をコントロールできます。

スポンサーリンク

準備

eRemote mini のセットアップを行っていない場合は、セットアップを行なっておいてください。以降の手順は、Raspberry Pi で実施します。

必要なライブラリをインストールします。

sudo apt-get install python2.7-dev
sudo pip install broadlink configparser netaddr

Python control for Broadlink RM2 IR controllers を取得します。

git clone https://github.com/mjg59/python-broadlink.git

スクリプト BlackBeanControl を取得します。

git clone https://github.com/davorf/BlackBeanControl.git

eRemote のIPアドレスとMACアドレスを調べるために、次のコマンドを実行します。

python-broadlink/cli/broadlink_discovery

次のように表示されます。

Discovering...
###########################################
RM2
# broadlink_cli --type 0x2737 --host xx.xx.xx.xx --mac 0123456789ab
Device file data (to be used with --device @filename in broadlink_cli) :
0x2737 xx.xx.xx.xx 0123456789ab
temperature = 0.0

xx.xx.xx.xx と 0123456789ab の部分は、皆さんの環境で異なります。
xx.xx.xx.xx はIPアドレス、0123456789ab はMACアドレスのバイト順が逆になったものです。

BlackBeanControl/BlackBeanControl.ini を編集します。

[General]
IPAddress = xx.xx.xx.xx
Port = 80
MACAddress = ab:89:67:45:23:01
Timeout = 10
[Commands]

IPAddress は先ほどの python-broadlink/cli/broadlink_discovery の実行結果の xx.xx.xx.xx 、Port は 80 を指定します。
MACAddress は、先の実行結果の表示を後ろから2文字ずつ、:で区切って記述します。
例えば、0123456789ab だった場合は、ここでの記述は ab:89:67:45:23:01 です。

Timeoutは、後述の BlackBeanControl.py 実行時に、リモコンコード受信を待つ時間(秒)です。
長くすると、リモコンボタン登録時に、ひたすら待つことになるので、適度な時間にしておいて下さい。

次に、BlackBeanControl/BlackBeanControl.py を修正します。
これは、現時点(2018年5月26日)のBlackBeanControl.py では、実行すると、下記のようにエラーになる為です。

Traceback (most recent call last):
  File "BlackBeanControl/BlackBeanControl.py", line 167, in <module>
    RM3Device = broadlink.rm((RealIPAddress, RealPort), RealMACAddress)
TypeError: __init__() takes exactly 4 arguments (3 given)

修正は、BlackBeanControl.py の 167行目を次のようにします。

修正前
RM3Device = broadlink.rm((RealIPAddress, RealPort), RealMACAddress)
修正後
RM3Device = broadlink.rm((RealIPAddress, RealPort), RealMACAddress, RealTimeout)

これで準備は完了です。

リモコンボタンの登録と送信

リモコンボタンの登録は、次のように実行します。
“コマンド名” の部分は、リモコンボタン1つ1つで違うものを指定します。

python2 BlackBeanControl/BlackBeanControl.py -c コマンド名

実行後、eRemote のLED が光るので、eRemote に向けて登録したいリモコンボタンを押します。
「準備」の項で、BlackBeanControl.ini に指定した Timeout 秒経過すると、BlackBeanControl.py から返ってきます。
リモコンボタンを押してもすぐ返ってくる訳ではないので、待って下さい。

Timeout 秒経過しても、リモコン受信できない場合は、Command not received と表示されます。
もう一度、ちゃんと eRemote にリモコンを向けて、Timeout秒以内にボタンを押してください。
または、リモコンが赤外線リモコンでないと eRemote で使えません、
例えば、FireTV のリモコンは Bluetoothリモコンなので、eRemote では登録できません。

登録が成功すると、BlackBeanControl/BlackBeanControl.ini の [Commands] セクションに、指定したコマンド名でリモコンコードが挿入されます。

この状態で、再度下記のコマンドを実行すると、今度は eRemote から、登録したリモコンコードが送信されます。

python2 BlackBeanControl/BlackBeanControl.py -c コマンド名

つまり、初回実行時は BlackBeanControl.ini に登録され、次回以降はリモコンコード送信になります。

登録したものを削除するには、BlackBeanControl/BlackBeanControl.ini の [Commands] セクションから、該当コマンド名の行を削除して下さい。

これで、スマートリモコン eRemote mini を Raspberry Pi から使うことができます。

参考

Raspberry PiとBroadlink RM mini3で赤外線リモコンを制御 | Alexaとラズパイで遊ぶ!
Raspberry PiからコマンドラインでRM mini3(スマートリモコン)を制御する – Qiita
Echosim.ioを使うと日本でもAlexaでSmart Homeを実現できるので、安価なBlack Beanで照明やエアコンを制御してみた – 知的好奇心 for IoT
[PYTHON]How-to integrate (cheap)Broadlink RM3 MINI IR blaster with Pimatic | pimatic home automation forum

コメント