Raspberry PiとBroadlink RM mini3で赤外線リモコンを制御


Raspberry PiからBroadlink RM mini3(通称 Black bean:黒豆)を操作して、赤外線リモコンの代わりをする方法です。

必要なものは以下の2つ

  • Raspberry Pi (我が家は1 Model Bです)
  • Broadlink RM mini3

これで、就寝前のエアコンの消し忘れを防止したいと思います。

Broadlink RM mini3(通称 黒豆)

WiFiで操作可能な赤外線コントロールユニットはいくつかありますが、他の製品が(6,000円~20,000円)程度なのに対して、こちらはなんと1,300円程度と破格の安さです。日本国内ではeRemote miniという名前で正式代理店が販売していますが、価格は約5倍です。。。

これだけの値段差があるので代理店も対策をしており、スマートフォンアプリからの初期設定がうまくいかないようになっています。今のところ、エラーは表示されるもののWiFiへの接続は問題なく行われているようなので今回の用途には問題ありません。また、技適マークを取得していない等のデメリットもありますので、入手の際は自己責任でお願いいたします。

ちなみに、私はhttps://www.miniinthebox.com/で2個(リビング用と寝室用)購入しました。

Raspberry Piの設定

Raspberry PiとRM mini3とのやり取りはPythonで行います。

BlackBeanControl + Python control for Broadlink RM2 IR controllers (python-broadlink)

RM mini3を操作するためのスクリプトです。

インストール

スクリプトの動作に必要なパッケージをインストールします。

# Git入っていなかったら
$ sudo apt-get install git
# (今のところ)Raspbian のpythonデフォルトは2.7
$ sudo apt-get install python2.7-dev
# Pythonのパッケージ管理
$ sudo apt-get install python-pip
# 必要なパッケージ
$ sudo pip install broadlink configparser netaddr

スクリプトの入手

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

設定

まずは、LAN内に設置されているRM mini3を探します。

$ python-broadlink/cli/broadlink_discovery

discover
###########################################
RM2
# broadlink_cli --type 0x2712 --host 192.168.1.x --mac 4fxxxxxxxx34
Device file data (to be used with --device @filename in broadlink_cli) : 
0x2712 192.168.1.x 4fxxxxxxxx34
temperature = 0.0

###########################################
RM2
# broadlink_cli --type 0x2712 --host 192.168.1.y --mac 8fxxxxxxxx34
Device file data (to be used with --device @filename in broadlink_cli) : 
0x2712 192.168.1.y 8fxxxxxxxx34
temperature = 0.0

我が家は2つ設置しているので2台見つかりました。RM2となっていますが、問題ないようです。後、Macアドレスが逆表示になっています。

設定はBlackBeanControl.iniに書き込んでいきます。1台しか制御しない場合は[General]に書き込んで構いません。我が家のように2台以上を制御する場合は個体を識別してコマンドを投げるため、別で記載します。Generalを消すと後で怒られますのでそのままで。ちなみに、broadlink_discoveryコマンドでMacアドレスが逆表示になっているのを気付かずに設定していましたが、問題なく動いていたのでここの設定は使用していないんじゃないかと思います。

$ vi BlackBeanControl/BlackBeanControl.ini

[General]
IPAddress =
Port =
MACAddress =
Timeout =

[RM3LivingRoom]
IPAddress = 192.168.1.x
Port = 80
MACAddress = 34:xx:xx:xx:xx:4f
Timeout = 20

[Commands]

リモコンの登録

ここからは実際にリモコンの赤外線を学習させていきます。コマンドは

$ python BlackBeanControl/BlackBeanControl.py -c [設定コマンド名]

複数台を使い分ける場合は以下のようになります。

$ python BlackBeanControl/BlackBeanControl.py -c [設定コマンド名] -d [デバイス名]

具体的には

$ python BlackBeanControl/BlackBeanControl.py -c aircon_off -d RM3LivingRoom

と打ち込むと、RM mini3のLEDが白く光ります。ここでエアコンのリモコンのOFFをRM mini3に向かって押すとLEDが消えます。これでコマンドが記憶されたことになります。
先ほど設定を書き込んだBlackBeanControl.iniを確認すると、[Commands]に何やら文字列が増えているのが確認できると思います。
RM mini3から赤外線を発信する場合も登録と全く同じコマンドを使います。

$ python BlackBeanControl.py -c aircon_off -d RM3LivingRoom

つまり、BlackBeanControl.iniにコマンドが登録されていない場合は登録し、登録されている場合は保存されている赤外線コードを照射するという仕組みのようです。
ちなみに、毎回長いコマンドを実行するのはめんどくさいので私は以下のようなスクリプトを作っています。

$ mkdir /home/pi/node-red-cmd
$ vi /home/pi/node-red-cmd/living_rm3_ctrl.sh

#!/bin/sh
dirPath="/home/pi/BlackBeanControl/" 
python ${dirPath}BlackBeanControl.py -d RM3LivingRoom -c $1

$ chmod +x /home/pi/node-red-cmd/living_rm3_ctrl.sh

使用例はこんな感じです。

$ node-red-cmd/living_rm3_ctrl.sh aircon_off

どうですか?エアコンは消えましたか?

Cronによる自動実行

後はCronで自動実行するようにすれば、消し忘れても大丈夫!!
私は毎晩23時に実行するように以下のように設定しています。

$ crontab -e

0 23 * * * /home/pi/node-red-cmd/living_rm3_ctrl.sh aircon_off

参考

Raspberry PiからコマンドラインでRM mini3(スマートリモコン)を制御する


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です