この記事を読むのに必要な時間は約 7 分です。
「布団に入ったまま全ての家電を操作したい」というなんとも怠け者な欲望を叶えるためにこの度スイッチボットを購入しました。
「IFTTTに対応している」と記載がありますが、実際にIFTTTを利用して操作するにはスイッチボット以外に別売りのスイッチリンクという製品を購入する必要があります。この製品が7,000円もするわけです。。高い。。
そこで現在使い余している超小型PCのラズパイを利用してスイッチボットを操作することにしました。あっけないほど簡単に操作ができたので簡単な手順を共有しておきます。
ラズパイからスイッチボットを操作する手順
なお、今回紹介する手順は全て公式で公開されています。それを日本語にしただけなので英語に抵抗ない方は公式の手順を参考にすると良いです。
https://github.com/OpenWonderLabs/python-host
手順はざっくりと以下の様な感じです。
- 必要なライブラリのインストール
- 公式ソースの取得
- スイッチボット検索
- MACアドレスを指定して実行
1.必要なライブラリをインストール
スイッチボットの操作自体は公式がGitを公開しており、そのソースを利用すると簡単に使用することができます。まずはそのソース内で利用するライブラリをインストールしていきます。
次のコマンドを1行ずつ順番に実行してください。
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
全て正常終了すれば完了です。
2.公式のソースを取得
続いて公式のGitからソースを取得します。
以下のコマンドを実行してください。
git clone https://github.com/OpenWonderLabs/python-host.git
3.スイッチボットを検索
続いてスイッチボットの検索を行います。
以下のコマンドを実行してください。
sudo python switchbot.py

「Input the device number to control」と表示されているので、操作を行いたいスイッチボットの番号を入力してください。
上記の画像でいうと、「0」を入力するとスイッチボットが動作します。
4.MACアドレスを指定して実行
都度上記の様に検索→実行とやっても良いのですが、py実行時にMACアドレスとコマンドを指定することで一発で実行できます。
udo python switchbot.py xx:xx:xx:xx:xx:xx Press
ラズパイからスイッチボットを操作する手順2
上記の方法で作成したのですが、もっと簡単な方法を見つけたのでそちらも共有しておきます。
ライブラリのインストールまでは同様です。(bluepyを使用します)
今回のソースはスイッチボットのMACアドレスを直指定して処理をキックする内容になります。
そのため、まずスイッチボットのMACアドレスを検索します。
sudo hcitool lescan

取得したMACアドレスを以下のソースの「ff:ff:ff:ff:ff:ff」と置き換えてください。
import binascii
from bluepy.btle import Peripheral
p = Peripheral("ff:ff:ff:ff:ff:ff", "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()
まとめ
今回は基本的なスイッチボットの操作を解説しました。ここまでわかれば自作のプログラムなどに組み込むことで自由にスイッチボットが操作できます。
僕はAmazon EchoやGoogle Homeから実行できる様に処理を組む予定です。
またそちらの方が完了したら手順を共有します。
今回使用した製品