この記事でやること
Raspberry PiからコマンドラインでスマートリモコンのRM mini3を制御します。
RM minie3 (amazon.co.jp)
制御にはBlackBeanControlを使用します。
コマンドラインからリモコンが制御できるようになると、cronで照明のON/OFFを制御したり外出先からTwitterで命令を送ったらエアコンをつける、といったことが簡単にできるようになります。
本稿ではRM mini3の制御にBlackBeanControlを使います。BlackBeanControlはPython2で書かれており、Python3からはうまく動かなかったので、今回はpython2を使って行います。
前提
RM mini3のセットアップは済んでいる前提なので、まだの方は**こちらの記事**を参考にしてください。RM mini3とWiFiとのペアリングが完了し、RM mini3のIPアドレスとMACアドレスが分かっていれば良いです。
またRaspberry PiはRM mini3と同じLANに接続するようにしてください。
環境
今回使用したRaspberry Piの環境は以下のとおりです。
PRETTY_NAME="Raspbian GNU/Linux 7 (wheezy)"
NAME="Raspbian GNU/Linux"
VERSION_ID="7"
VERSION="7 (wheezy)"
ID=raspbian
ID_LIKE=debian
ANSI_COLOR="1;31"
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"
本体は2015年8月に購入したRaspberry Pi 2 Model Bです。
インストール
python2.7-dev
Raspberry Piにはデフォルトで素のpython2が入っていると思いますが、devel版(python2.*-dev)がないと後述するbroadlinkライブラリの構築に失敗するので改めてインストールします。
# python2のdevel版が必要なのでインストール
$ sudo apt-get update
$ sudo apt-get upgrade # 時間がかかるので省略可
$ sudo apt-get install python2.7-dev
私の環境ではpython
コマンドにはpython3.6系が割り当てられているので、本稿では明示的にpython2
コマンドを使います。
シェルでpython
やpython2
とタイプしてエンターすると簡単なバージョン情報が見られます。
pi@raspberrypi ~/work/BlackBeanControl $ python2
Python 2.7.3 (default, Nov 24 2017, 21:13:24)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>>
というプロンプトが出て止まるので、そのままCtrl-D
かexit()
でインタプリタモードから抜けられます。
pipのインストール
次にpipをインストールします。pipはpythonのパッケージを管理をするものです。
$ curl -O https://bootstrap.pypa.io/get-pip.py
$ sudo python2 get-pip.py
$ sudo python2 -m pip install --upgrade pip # pip自身の更新
broadlinkライブラリのインストール
BlackBeanControlはpython-broadLinkというBroadLink社のデバイス(今回はRM mini3)を操作するためのライブラリを使用するのでインストールします。git clone
するとsetup.pyというファイルが得られるのでinstall
コマンド付きで実行するとインストールされます。
# 外部ライブラリのインストール(devel版のインストール後に行うこと)
$ sudo python2 -m pip install configparser
$ sudo python2 -m pip install netaddr
$ sudo python2 -m pip install pycrypto
# python-broadlinkのインストール
$ git clone https://github.com/mjg59/python-broadlink.git
$ cd python-broadlink
$ sudo python2 setup.py install
BlackBeanControlのインストール
続いてBlackBeanControlをインストールします。GitHubからクローンするだけです。RM mini3のIPアドレスやMACアドレスを設定します。
$ git clone https://github.com/davorf/BlackBeanControl.git
$ cd BlackBeanControl
[General]
IPAddress = 192.168.10.4
Port = 80
MACAddress = 34:EA:34:40:XX:XX
Timeout = 30
[Commands]
設定ファイルが書けたら、リモコンを準備してBlackBeanControlを-c command_name
オプション付きで起動します。command_name
は何でも良いですが、後で学習データを呼び出す時にも使用するのでわかりやすいものが良いでしょう。今回はaircon_off
を割り当ててみます。
起動したらRM mini3のLEDが白く点灯するのでmini3の方にリモコンを向けてボタンを押します。何も表示されませんが、成功するとすぐにmini3のLEDランプが消え、しばらく経ってからコマンドプロンプトが帰ってきます。
$ python2 BlackBeanControl.py -c aircon_off
$
もう一度BlackBeanControl.ini
を見てみましょう。リモコンの信号が保存されていれば成功です。
[General]
IPAddress = 192.168.10.4
Port = 80
MACAddress = 34:EA:34:40:XX:XX
Timeout = 30
[Commands]
aircon_off = 2600bc01723a0e0e0e2b0e0f0d0f0d100d0f0d0f0d100d0f0d0f0d100d0...
信号が保存されたら、また同じコマンドを叩くと今度はRM mini3がリモコンの信号を発信します。
$ python2 BlackBeanControl.py -c aircon_off
$
BlackBeanControlはこのように「iniファイルに設定がなければ信号を学習し、設定があれば信号を発信する」という少し変わった仕様になっています。
参考
- Amazon Echoとラズパイで、音声で照明をon/offする - Qiita
- RM mini3(eRemote mini)とHomebridgeを使ってSiriでリモコン制御する - Qiita
- Google Home で家電をコントロールしてみる(RM mini + BlackBeanControl + raspberry pi) - Qiita
- GitHub - mjg59/python-broadlink: Python module for controlling Broadlink RM2/3 (Pro) remote controls, A1 sensor platforms and SP2/3 smartplugs
- GitHub - davorf/BlackBeanControl: BlackBeanControl - Broadlink RM 3 Mini (aka Black Bean) control script