LoginSignup
2
3

More than 5 years have passed since last update.

python-broadlinkでRM mini3をコントロール[on Onion Omega2+]

Last updated at Posted at 2018-10-07

image.png

Broadlink社のRM mini3をPythonコードで制御するpython-broadlinkをOnion/Omega2+上で試してみました。

尚、python-broadlinkは、pycryptodomex-3.4.11を使っています。先日、pycryptodomex-3.4.11をOmega2+にインストールすべく、クロスコンパイル環境を立ち上げましたが、どうも、pycryptodomex-3.4.11の代わりにOmega2+のopkgコマンドでインストール可能なpython-cryptoで動作可能でした。

0.前提条件

  • RM mini3は、セットアップしてローカルwifi環境に接続済
    • 私は、Broadlink e-Control Appを使用してiPhoneから設定しました。
  • python-broadlink
  • pycryptodomex-3.4.11の代わりにpython-crypto-2.6.1-1を使用

1.必要なパッケージをインストール

Omega2+にtelnetまたはシリアル通信で接続します。
以下のコマンドで必要なパッケージをインストールします。
今回、pycryptodomexの代わりにpython-cryptoを使用するので、python-cryptoもインストールします。
※pycryptodomexは、opkgで提供されていません(2018/09現在)。

$ opkg update
$ opkg install git git-http ca-bundle python-crypto python-pip
$ pip install setuptools

2.python-broadlinkのインストール

githubからpython-broadlinkをダウンロードします。

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

setup.pyは、pycryptodomexをインストールするような記述となっています。
今回、pycryptodomexの代わりにpython-cryptoを使用するため、setup.pyを編集してpycryptodomexのインストールが無効になりようにします。

$ cd python-broadlink
$ vi setup.py

dynamic_requires の部分を以下のように変更します。
※try:の中で import pyaesがありますが、Omega2+では、エラーになるので、except:側が実行されます。

setup.py
try:
    import pyaes
    dynamic_requires = ["pyaes==1.6.0"]
except ImportError as e:
    dynamic_requires = []
    #dynamic_requires = ['pycryptodome==3.4.11']

編集が終わったら、python-broadlinkをインストールします。

$ python setup.py install

3.python-broadlinkをセットアップする

まずは、ネットワーク上からRM mini3を探します。
「./broadlink_discovery」コマンドを実行すると、RM mini3をネットワーク上から探してくれます。

$ cd ~/python-broadlink/cli
$ ./broadlink_discovery
Discovering...
###########################################
RM2
# broadlink_cli --type 0x2737 --host 192.168.1.32 --mac 25xxxxxxxxxx
Device file data (to be used with --device @filename in broadlink_cli) :
0x2737 192.168.1.32 25xxxxxxxxxx
temperature = 0.0

「0x2737 192.168.1.32 25xxxxxxxxxx」をファイル ROOM.device に格納します。

$ echo "0x2737 192.168.1.32 25xxxxxxxxxx" > ROOM.device

4.リモコン設定と制御

制御したい赤外線リモコンを用意します。
私は、リビングのリーリングライトを制御してみます。
以下のコマンドで FLOOR_LIGHT.on というファイルにリモコンの制御コマンドをダンプします。「Learning...」と表示されたら、RM mini3 目がけてリモコンでスイッチONします。

$ ./broadlink_cli --device @ROOM.device --learnfile FLOOR_LIGHT.on
Learning...
Saving to FLOOR_LIGHT.on
$

以下のようにダンプされていることが確認できます。

$ cat FLOOR_LIGHT.on
2600580000012a91160f16341610151015101510151016341634160f16351535151015351634160f160f16351510151015101634160f163416351510153515351634160f163515101500054c00012a4815000c6700012a4815000d05
$

OFFのリモコン制御コマンドもダンプします。

$ ./broadlink_cli --device @ROOM.device --learnfile FLOOR_LIGHT.off
Learning...
Saving to FLOOR_LIGHT.off
$ cat FLOOR_LIGHT.off
26006000000128931411143614121312131213121411143614361412133713371312143614361411141213371337143614361436141213371337131214111411160f1411163515101500054c00012b4715000c6700012a4716000c6600012b4716000d050000000000000000
$

準備が整いました。
以下のコマンドで、シーリングライトをONできると思います。

$ ./broadlink_cli --device @ROOM.device --send @FLOOR_LIGHT.on

OFFの場合も同じように以下のコマンドを実行します。

$ ./broadlink_cli --device @ROOM.device --send @FLOOR_LIGHT.off

以上で終わりです。

次回は、このコマンドをNode-Redに接続して音声でシーリングライトをOn/Offしてみたいと思います。

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3