SwitchBotボットをPythonで制御!有事に強いIoTシステムをめざして

みなさん、こんにちは。

スマートホーム化を進める上で、IoT機器の導入はもはや必須ですよね。その中でも、スマートスイッチは既存の運用を変えずに物理的にスイッチを押してくれるデバイスで、実はスマート化と非常に相性が良いのです。すべてをIoT化して繋げるよりも、アナログな部分をあえて残し、緊急時に備えるという設計思想は、非常に重要だと私は考えています。

私の場合、以前からスマートスイッチに興味があったものの、自宅で物理ボタンを遠隔で押す必要性をあまり感じず、導入をためらっていました。しかし、ついにその必要性が生じたのです!

 


 

マンションの自動ドア解錠が課題に

 

それは、マンションのエントランスの自動ドアを開くために、インターホンの解錠ボタンを押す操作でした。セキュリティ機構のあるマンションでは、インターホン越しに解錠ボタンを押してあげないと、訪問客が建物の中に入れないんですよね。

最近、色々なガジェットを注文して宅配業者の来訪が増えたため、インターホンまで歩いて行って解錠ボタンを操作することがおっくうに感じるようになっていました。そのため、とうとうスマートスイッチの導入を決意したわけです。

スマートスイッチは各社から発売されていますが、私が選んだのはやはりSwitchBot ボットです。決め手は、公式がプログラムからSwitchBot ボットを制御できるスクリプトを公開してくれている点でした。

 


 

公式スクリプトでSwitchBot ボットを自由自在に操作

 

通常、SwitchBot ボットは専用のスマートフォンアプリかSwitchBotハブを利用しないと操作できません。しかし、公式が提供しているpython-hostのスクリプトを使えば、この制限から解放されます。私は自宅で稼働しているRaspberry Pi Zero W(ラズベリーパイゼロW)から、このpython-hostを利用して操作することにしました。

先日SwitchBot ボットが届いたので、早速Raspberry Pi Zero Wで操作してみることにしました。Raspberry Pi Zero WにインストールされているOSはRaspbian Stretchと少し古いですが、Python 2.7.13と3.5.3がインストールされています。

まずは、公式スクリプトをダウンロードします。

git clone https://github.com/OpenWonderLabs/python-host.git
cd python-host

当初はPython 3で動作させようとしましたが、依存関係にあるパッケージがどうしてもインストールできず、今回はPython 2で動作させることにしました。Python 2で操作させるためには、公式のREADME通りに依存パッケージをインストールします。

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

もし、私と同じようにRaspbian Stretchを使っている場合、公式リポジトリが既に稼動していませんので、以下の記事を参考にしてリポジトリを変更してからパッケージをインストールしてください。

 

無事に依存関係にあるパッケージがインストールできたら、次は利用するSwitchBot ボットの情報を入手します。

sudo python switchbot.py

実行すると、以下のように表示されるはずです。

Usage: "sudo python switchbot.py [mac dev_type cmd]" or "sudo python switchbot.py"
Scanning...
Scan timeout.
(' 0' , [u'xx:xx:xx:xx:xx:xx', 'Bot', 'Press'])
Input the device number to control:

(' 0' , [u'xx:xx:xx:xx:xx:xx', 'Bot', 'Press'])がSwitchBot ボットのデバイス情報です。複数デバイスがあれば、複数行にわたって表示されます。xx:xx:xx:xx:xx:xxMACアドレスで、デバイスの特定に必要となります。

ここで0を入力してエンターキーを押すと、SwitchBot ボットが動作して処理が完了します。

Input the device number to control:0
[' 0', [u'xx:xx:xx:xx:xx:xx', 'Bot', 'Press']
Preparing to connect.
Connection successful.
Complete

無事スイッチの動作が確認できたら、次回からは直接デバイスを指定して操作できます。

sudo python switchbot.py xx:xx:xx:xx:xx:xx Bot Press

注意が必要なのが、公式のREADMEではコマンドオプションにBotの記載が抜けていることです。Botのオプションがないと動作しませんのでご注意ください。

 


 

Alexaとの連携、そしてスマートホームの設計思想

 

動作が確認できたので、あとは他のサービスとの連携です。我が家ではAlexaと連携させました。

仕事場で作業中に宅配業者が来訪した際は、「Alexa、ドアをひらいて」と発話するだけで解錠操作ができます。

わざわざリビングのインターホンまで歩いていく手間を減らすことができ、超快適です!

Alexaと連携させる方法は、カスタムスキルの作成、AWS Lambda関数の作成、MQTTの設定、ラズベリーパイ側のアプリ作成と、少し手順が多くて複雑になりますので、今回は触れません。Alexaと連携させるだけであれば、SwitchBotハブを別途購入した方が簡単かもしれませんが、どうしてもラズベリーパイで連携させたいという方は、個別にお問い合わせいただければと思います。

 


 

アナログを残すスマートホーム設計の重要性

 

IoTシステムで重要なのは、すべてをIoT化するのではなく、アナログな部分をあえて残し、IoTシステムが故障した場合でもアナログ操作で運用が可能な、有事に強いシステムを整えることだと私は考えています。スマートスイッチはまさにそのような用途にぴったりです。

みなさんも、オフィスや自宅での活用方法を考えてみてはいかがでしょうか? ほんの些細な工夫が、生活をより快適に変えてくれるかもしれませんよ。

 

本日も最後までお読みいただきありがとうございました。

それでは、よいIoTライフを!

コメントする

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

上部へスクロール