どうも、CHASUKEです。
本記事では、公開されているSwitchBotのAPI(Python)を使って、SwitchBotカーテンの操作方法を紹介します。
今回は、ラズパイに最初からインストールされているPython3を使ってます。実は以前にも、同じようにラズパイ経由からSwitchBotを操作する記事を書いてます。
-
SwitchBot(スイッチボット)をラズパイ経由で遠隔操作する方法
以前の記事との違いとしては、新しいPython3を使ってみた点。それと、新たにSwitchBotに加え、SwitchBotカーテンやSwitchBot温湿度計のセンサー値も取得してます。

必要な物(使用したラズパイなど)
必要なものと言うか、使ったものは以下の通り。
今回はSwitchBotカーテンがメインですが、シリーズのどれか1つあれば試せます。また、今回僕はラズパイ4を使ってますが、Bluetooth搭載モデルならどれでもOKです。
-
【開封レビュー】LABISTS ラズパイ4B(メモリ4GB)セットを購入してみた!
ちなみに、2021年春頃にキーボード型ラズパイ4「Raspberry Pi 400」が登場するみたいです。

▼ラズパイの初期設定などはこちらを参考に。
-
【開封レビュー】LABISTS ラズパイ4B(メモリ4GB)セットを購入してみた!
今回、僕が動作確認したOSバージョンは「Raspbian buster 10.0」となります。
$ lsb_release -a No LSB modules are available. Distributor ID: Raspbian Description: Raspbian GNU/Linux 10 (buster) Release: 10 Codename: buster
SwitchBot専用ハブ「Hub Mini」は使いません。
SwitchBotカーテンをPython3で動かす手順
SwitchBot公式のAPI(Pythonスクリプト)が公開(リンク)されてるので、こちらを使っていきます。
ざっと手順は以下の通り
- 必要なパッケージをインストール
- Pythonスクリプトをインストール
- Pythonスクリプトを実行
連携イメージは「ラズパイ→(Bluetooth)→スイッチボット」となります。
動かしたいSwitchBotをBluetoothが届く場所に置く必要があります。
必要なパッケージをインストール
ラズパイに入ってるPython3のバージョンを確認します。
$ python3 -V pi@raspberrypi:~ $ python3 -V Python 3.7.3

▼必要なパッケージをインストール。6個。
$ sudo apt-get update $ sudo apt-get install libbluetooth-dev $ sudo pip3 install pybluez $ sudo apt-get install libboost-python-dev $ sudo apt-get install libboost-thread-dev $ sudo pip3 install gattlib
Pythonスクリプトをインストール
適当なディレクトリに移動して、Pythonスクリプトをダウンロードします。
$ git clone https://github.com/OpenWonderLabs/python-host.git $ cd python-host
▼Helpコマンドを実行して、こうなればOK。
$ sudo python3 switchbot_py3.py --help usage: switchbot_py3.py [-h] [-s] [-d DEVICE] [-c {press,on,off,open,close,pause}] [-i INTERFACE] [--scan-timeout SCAN_TIMEOUT] [--connect-timeout CONNECT_TIMEOUT]

Pythonスクリプトの実行
実行するには、SwitchBotデバイスのMacアドレスが必要になります。下記スクリプトを実行して調べることができます。
▼SwitchBotデバイスのMacアドレス確認
$ sudo python3 switchbot_py3.py --scan Scanning for bluetooth low-energy devices Discovering Switchbot services * Found Switchbot service on device CC:11:22:TT:88:33 handle 13 * Found Switchbot service on device SS:44:55:BB:66:77 handle 14
複数デバイスがあるとどのMacアドレスなのかわからない。なので、スマホアプリの各デバイスにある「BLE MAC」という項目から確認するのが良いです。
では、SwitchBotカーテンのMacアドレスを使って、コマンド操作してみます。
▼カーテン open or close
$$ sudo python3 switchbot_py3.py -d CC:11:22:TT:88:33 -c open Connected! Command execution successful
▼僕の場合、カーテンを両開き設定しているのでこんな感じに開けば、成功です。

続いて、SwitchBot(スイッチ)のMacアドレスを使って、コマンド操作してみます。
▼スイッチ Prss or on or off
$ sudo python3 switchbot_py3.py -d SS:44:55:BB:66:77 -c press Connected! Command execution successful
押すモード:press
スイッチモード:on / off

次は、SwitchBot温湿度計からセンサー値を取得してみます。
ここまでは、「switchbot_py3.py」というPythonスクリプトを使いましたが、「switchbot_meter_py3.py」を使います。
▼追加でライブラリが必要です。
$ sudo pip3 install pexpect $ sudo pip3 install bluepy
▼近くにSwitchBot温湿度計があるとこんな感じに表示されます。
$ sudo python3 switchbot_meter_py3.py Usage: "sudo python switchbot.py [mac_addr cmd]" or "sudo python switchbot.py" Start scanning... Scan timeout. 0 ['ss:44:55:bb:66:77', 'Turn On'] 1 ['ss:44:55:bb:66:77', 'Turn Off'] 2 ['ss:44:55:bb:66:77', 'Up'] 3 ['ss:44:55:bb:66:77', 'Down'] 4 ['tt:88:99:mm:00:pp', "Humiture:20.6'C 37%"] Input the device number to control:4 Preparing to connect. Connection successful. Meter[tt:88:99:mm:00:pp] 20.5'C 37% Complete
上記の場合、SwitchBotのスイッチと温湿度計が取得されてます。温湿度計の「4」を選択して、「20.5'C 37%」が取得できました。
▼直接デバイス指定しても、実行できます。
$ sudo python3 switchbot_meter_py3.py tt:88:99:mm:00:pp Humiture Usage: "sudo python switchbot.py [mac_addr cmd]" or "sudo python switchbot.py" Preparing to connect. Connection successful. Meter[tt:88:99:mm:00:pp] 20.5'C 37% Complete
ゴチャゴチャと文字が出力されるので、お好みで書き換えましょう。
とりあえずできましたね。
iPhoneのショートカットでカーテン操作
せっかくなので、何か作ってみました。
iPhoneにインストールされている「ショートカット」から、ラズパイにあるPythonスクリプトを実行できます。
▼例えば、任意のSwitchBotカーテンを選んで、オープン・クローズできるショートカットを作ってみました。
▼下記からダウンロードできるので、興味のある方はチェックしてみてください。
https://www.icloud.com/shortcuts/247c70009ed74f81b06a8dea6595ca65
▼ダウンロード&確認方法はこちら。
▼ショートカットアプリに追加されます。
▼アイコン右上を押して、内容を自分用に変更します。SwitchBotカーテンを2デバイスまで設定できるようにしてます。

最後に
SwitchBotカーテンを初め、スイッチや温湿度計をAPI(Python3スクリプト)を使って、コマンド操作してみました。
Pythonスクリプトから自由にガジェットを制御できるって面白いですよね。意外と簡単にできてしまうので、是非お試しください!
▼今あるカーテンそのままで、スマート化できるSwitchBotカーテン。
▼最新のラズパイは普通にPC並のスペック。
今回の記事が参考になれば幸いです。それではまた。