ラズパイ

SwitchBotカーテンをラズパイ経由で操作する方法(Python3編)

どうも、CHASUKEです。

本記事では、公開されているSwitchBotのAPI(Python)を使って、SwitchBotカーテンの操作方法を紹介します。

今回は、ラズパイに最初からインストールされているPython3を使ってます。実は以前にも、同じようにラズパイ経由からSwitchBotを操作する記事を書いてます。

以前の記事
SwitchBot(スイッチボット)をラズパイ経由で遠隔操作する方法

以前の記事との違いとしては、新しいPython3を使ってみた点。それと、新たにSwitchBotに加え、SwitchBotカーテンやSwitchBot温湿度計のセンサー値も取得してます。

CHASUKE
では、やっていきましょう。

必要な物(使用したラズパイなど)

必要なものと言うか、使ったものは以下の通り。

今回はSwitchBotカーテンがメインですが、シリーズのどれか1つあれば試せます。また、今回僕はラズパイ4を使ってますが、Bluetooth搭載モデルならどれでもOKです。

【開封レビュー】LABISTS ラズパイ4B(メモリ4GB)セットを購入してみた!

ちなみに、2021年春頃にキーボード型ラズパイ4Raspberry Pi 400」が登場するみたいです。

CHASUKE
ちょっと欲しい。キーボードにパッド付いてたら最強だったな。

 

▼ラズパイの初期設定などはこちらを参考に。

参考記事
【開封レビュー】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スクリプト)が公開(リンク)されてるので、こちらを使っていきます。

ざっと手順は以下の通り

  1. 必要なパッケージをインストール
  2. Pythonスクリプトをインストール
  3. Pythonスクリプトを実行

連携イメージは「ラズパイ→(Bluetooth)→スイッチボット」となります。

動かしたいSwitchBotをBluetoothが届く場所に置く必要があります。

 

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

ラズパイに入ってるPython3のバージョンを確認します。

$ python3 -V
pi@raspberrypi:~ $ python3 -V
Python 3.7.3
CHASUKE
「Python3.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]

 

CHASUKE
これでOK。

 

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

 

▼僕の場合、カーテンを両開き設定しているのでこんな感じに開けば、成功です。

CHASUKE
いいですねー。

 

続いて、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

CHASUKE
無事に動けば成功です!

 

次は、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デバイスまで設定できるようにしてます。

CHASUKE
動くものができると面白さ倍増しますねー。

最後に

SwitchBotカーテンを初め、スイッチや温湿度計をAPI(Python3スクリプト)を使って、コマンド操作してみました。

Pythonスクリプトから自由にガジェットを制御できるって面白いですよね。意外と簡単にできてしまうので、是非お試しください!

▼今あるカーテンそのままで、スマート化できるSwitchBotカーテン。

created by Rinker
スイッチボット(SwitchBot)
¥7,184 (2021/07/24 19:55:15時点 Amazon調べ-詳細)

▼最新のラズパイは普通にPC並のスペック。

LABISTS ラズベリーパイ4B メモリ4GB SDカード32GB
LABISTS

今回の記事が参考になれば幸いです。それではまた。

Amazonでお得に買い物

Amazon.co.jpで買い物するならギフト券を現金チャージするのがお得です。チャージごとに最大2.5%分のAmazonポイントがもらえます。また、5000円チャージで1000円分ポイント還元キャンペーンも実施中!!

詳しくはコチラ

  • この記事を書いた人

CHASUKE

IT企業につとめる30代サラリーマンブロガーです。当ブログでは、実際に使ってよかった役立つガジェットや製品をお届けしてます。面白い機能や素敵なデザイン、少し尖ったアイテムが特に好きです。ご質問・ご意見は「お問い合わせ」まで。レビュー依頼もお待ちしております!

© 2021 CHASUKE.com