どうも、CHASUKEです。
この記事では、SwitchBot(スイッチボット)をラズパイ経由で、外出先から遠隔操作する方法を紹介します。
この方法では、ラズベリーパイと公開されているAPI(Pythonスクリプト)を使ってSwitchBotを動かします。そのため、少しばかり専門的な知識が必要となります。
ラズパイを使ってIoTホームを体験できる面白いネタになります。例えば、AmazonダッシュボタンのようなIoTデバイスから、SwitchBotを動かせます。自由にスクリプトが書けるので複雑なオートメーション化も作れます。
今回の方法では、下記のようなSwitchBot専用ハブ(ゲートウェイ)は必要ありません。既にラズパイをお持ちならすぐに試せます。
ちなみに、SwitchBot専用ハブはスマートリモコンとしても使えます。あると便利なのは間違いありません。
必要なもの
必要なものは以下の通り。
- スイッチボット(SwitchBot)
- ラズベリーパイ(RaspberryPi)
▼スイッチボットは、1粒で4,480円です。
今回のハックだけであれば、小型サイズのラズパイZEROでもOKです。他にもガンガン使っていきたいなら、通常のラズパイを選びましょう。
▼最新はラズパイ4です。
【開封レビュー】LABISTS ラズパイ4B(メモリ4GB)セットを購入してみた!
今回、僕が動作確認したOSバージョンは「Raspbian jessie 8.0」となります。
$ lsb_release -a No LSB modules are available. Distributor ID: Raspbian Description: Raspbian GNU/Linux 8.0 (jessie) Release: 8.0 Codename: jessie
ちなみに最新OS「Raspbian Stretch」だと動きませんでした。
スイッチボットをラズパイ経由で操作する方法
スイッチボット公式のPythonスクリプトが公開(リンク)されていますので、こちらを使って操作していきます。
▼ざっと手順は以下の通り
- 必要なパッケージをインストール
- Pythonスクリプトをインストール
- Pythonスクリプトを実行
連携イメージは「ラズパイ→(Bluetooth)→スイッチボット」です。また、外出先からだと「スマホ・PC→(WiFi)→ラズパイ→(Bluetooth)→スイッチボット」となります。
専用ハブと同じで、Bluetooth通信が届く場所にスイッチボットを置く必要があります。
必要なパッケージをインストール
▼下記コマンドにてAPIを利用するために必要なパッケージをラズパイにインストールします。
$ sudo apt-get update $ sudo apt-get install python-pexpect $ sudo apt-get install libusb-dev libdbus-1-dev libglib2.0-dev $ sudo apt-get install libudev-dev libical-dev libreadline-dev $ sudo pip install bluepy
Pythonスクリプトをインストール
今回は、Python2を使います。
▼pythonコマンドでバージョンが「2」であることをチェックしときましょう。
$ python Python 2.7.9 (default, Sep 17 2016, 20:26:04) [GCC 4.9.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>>exit()
▼適当なフォルダに移動し、Pythonスクリプトをインストールします。
$ git clone https://github.com/OpenWonderLabs/python-host.git $ cd python-host
Pythonスクリプトを実行
実行の前に、手持ちのSwitchBotのMACアドレスを調べる必要があります。アプリの設定画面から確認できます。
さて、準備OKです。
下記コマンドにて実行します。
$ sudo python switchbot.py 【MACアドレス】 Press
「ギュイーン..」と動けば成功です。
ちなみに、最後の「Press」がアクションになります。3つのアクションを指定可能です。
- Press:アームを倒して引く
- Turn On:アームを倒す
- Turn Off:アームを引く
自作でPythonスクリプト作成・実行
先ほどは、用意されているPythonスクリプトをそのまま実行したのみですが、自作のPythonに以下のコードを利用して組み込むことも可能です。
ファイル名:switchbot_bluepy.py
import binascii from bluepy.btle import Peripheral p = Peripheral("【SwitchBotのMACアドレス】", "random") hand_service = p.getServiceByUUID("cba20d00-224d-11e6-9fb8-0002a5d5c51b") hand = hand_service.getCharacteristics("cba20002-224d-11e6-9fb8-0002a5d5c51b")[0] hand.write(binascii.a2b_hex("570100")) p.disconnect()
▼実行すると、動きます♪
python switchbot_bluepy.py
こちらは、例として「Press」を実行しています。ソースコードを修正することで、「Turn On」や「Turn Off」も操作可能です。
- Press:binascii.a2b_hex("570100")
- Turn On:binascii.a2b_hex("570103")
- Turn Off:binascii.a2b_hex("570104")
こちらのコードも公開(リンク)されています。
Amazonダッシュボタンと連携させてみた
今回のAPIの仕組みを使えば、AmazonダッシュボタンのようなIoTボタンと簡単に連携が作れます。
BLEデバイスのSwitch BotではAPIが公開されている。
ラズパイがあれば、専用ゲートウェイが無くても、こんな風に遊べて面白いすよ。#DashButton #SwitchBot #API pic.twitter.com/ZkccfCih5P— CHASUKE (@chasuke__) September 25, 2018
最後に
SwitchBotをPythonスクリプトを使って操作してみました。
スマホアプリや専用ハブを使えば、こんなことする必要ありません。けれど、自作スクリプトから自由にロボットを制御できるって面白いですよね。
意外と簡単にできてしまうので、面白いと思った方は是非お試しください!
▼物理スイッチをスマート化するIoTガジェット。
▼最新のラズパイは普通にPC並のスペック。
それではまた。