Amazonギフト券で2%ポイントバック

ラズパイ(Raspberry Pi)からSwitch Bot(スイッチボット)を操作する手順を解説

この記事を読むのに必要な時間は約 7 分です。

この記事を読むのに必要な時間は約 7 分です。

「布団に入ったまま全ての家電を操作したい」というなんとも怠け者な欲望を叶えるためにこの度スイッチボットを購入しました。

Switch Bot ボタンを押してくれる超小型指ロボット (ワイヤレス / スイッチボット)
Switch Bot / Glappy
スイッチボットの操作は基本は専用のアプリから行います。
「IFTTTに対応している」と記載がありますが、実際にIFTTTを利用して操作するにはスイッチボット以外に別売りのスイッチリンクという製品を購入する必要があります。この製品が7,000円もするわけです。。高い。。
そこで現在使い余している超小型PCのラズパイを利用してスイッチボットを操作することにしました。あっけないほど簡単に操作ができたので簡単な手順を共有しておきます。
 

ラズパイからスイッチボットを操作する手順

ラズパイのセットアップなどは先に済ましておいてください。
なお、今回紹介する手順は全て公式で公開されています。それを日本語にしただけなので英語に抵抗ない方は公式の手順を参考にすると良いです。
https://github.com/OpenWonderLabs/python-host
手順はざっくりと以下の様な感じです。
手順
  1. 必要なライブラリのインストール
  2. 公式ソースの取得
  3. スイッチボット検索
  4. 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
※1行ずつ実行しないとエラーが出たりします。
全て正常終了すれば完了です。
 

2.公式のソースを取得

続いて公式のGitからソースを取得します。
以下のコマンドを実行してください。

Gitのclone
git clone https://github.com/OpenWonderLabs/python-host.git
すると「python-host」というフォルダが作成されているかと思うので、「cd python-host」で移動してください。
 

3.スイッチボットを検索

続いてスイッチボットの検索を行います。
以下のコマンドを実行してください。

スイッチボットの検索
sudo python switchbot.py
すると以下の画像の様に表示されます。(スイッチボットを複数台使っている場合は複数行表示されます。)

「Input the device number to control」と表示されているので、操作を行いたいスイッチボットの番号を入力してください。
上記の画像でいうと、「0」を入力するとスイッチボットが動作します。
 

4.MACアドレスを指定して実行

都度上記の様に検索→実行とやっても良いのですが、py実行時にMACアドレスとコマンドを指定することで一発で実行できます。

MACアドレスを指定して実行
udo python switchbot.py  xx:xx:xx:xx:xx:xx Press
上記のコマンドを実行するとスイッチボットが動作するはずです。
 

ラズパイからスイッチボットを操作する手順2

上記の方法で作成したのですが、もっと簡単な方法を見つけたのでそちらも共有しておきます。
ライブラリのインストールまでは同様です。(bluepyを使用します)
今回のソースはスイッチボットのMACアドレスを直指定して処理をキックする内容になります。
そのため、まずスイッチボットのMACアドレスを検索します。

スイッチボットの検索
sudo hcitool lescan
すると以下のようにBluetoothの機種一覧が表示されます。

取得したMACアドレスを以下のソースの「ff:ff:ff:ff:ff:ff」と置き換えてください。
MACアドレス指定で処理する
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から実行できる様に処理を組む予定です。
またそちらの方が完了したら手順を共有します。
 

今回使用した製品

Switch Bot ボタンを押してくれる超小型指ロボット (ワイヤレス / スイッチボット)
Switch Bot / Glappy
 
 

コメントを残す

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

CAPTCHA