はじめに
以前、Raspberry Piで赤外線リモコンの信号を学習してエアコンを操作しましたが、今回は赤外線リモコンではなく物理的なスイッチを押して家電を操作するためにIoTデバイスとして有名なSwitchBotを購入してみました。
少し調べたところ、別途SwitchBotハブを購入したり専用アプリを使用しなくても、SwitchBot公式がPythonスクリプトを公開しており、Raspberry PiからBluetooth経由でSwitchBotを操作出来そうだったので試してみました。
参考リンク
SwitchBotの操作
必要なライブラリのインストール
SwitchBot公式が公開しているPythonスクリプトは、確認したところPython 2と3それぞれありましたが、今回はPython 3の方で試しました。
sudo apt install python3-pip
sudo apt install libbluetooth-dev
pip3 install pybluez
sudo apt install libboost-python-dev
sudo apt install libboost-thread-dev
pip3 install gattlib
6行目のgattlibのインストール時にエラーが発生したため、以下の手順でgattlibの手動インストールを進めました。
サンプルではgattlib-0.20150805がダウンロードされていましたが、私の環境ではgattlib-0.20210616がダウンロードされており、Raspberry PiにインストールされているPythonのバージョンも3.7.3とサンプルと違ったため、以下はそれに合わせた手順になります。
sudo apt install pkg-config python3-dev
sudo apt install libglib2.0-dev
pip3 download gattlib
tar xvzf ./gattlib-0.20210616.tar.gz
cd gattlib-0.20210616/
sed -ie 's/boost_python-py34/boost_python-py37/' setup.py
pip3 install .
最後のgattlibインストール(7行目)のところで時間が掛かって、別のターミナルからの操作も受け付けなくなったため、最初フリーズして失敗したかな?と思いましたが、しばらく待つことで正常にインストールに成功しました(これだけ30分近く掛かりました)
SwitchBotのMACアドレスを確認
スマートフォンにSwitchBotの公式アプリのインストールを行い、設定画面の「デバイス情報」を開くと、「BLE MAC」という項目が表示されているため、ここから確認することが出来ます。
SwitchBotの操作
python-hostをダウンロードし、上で確認したSwitchBotのMACアドレスを渡してswitchbot_py3.pyを実行することで、手元のSwitchBotが動作することを確認出来ました。
git clone https://github.com/OpenWonderLabs/python-host
cd python-host
python3 switchbot_py3.py -d "確認したSwitchBotのMACアドレス"
おわりに
最初思っていたよりも手軽にPythonスクリプトからSwitchBotを操作することが出来ました。
以前試したときのようにSlack投稿の監視などを組み合わせることで外部ネットワークからの操作なども出来そうです。