全1890文字
PR

 今回は「SwitchBot」という名前のスマートデバイスを紹介しよう。SwitchBotはWonderlabs社が販売するスマートデバイスのブランド名で、日本国内でもいくつかの製品が販売されている。今回はそのうち、ブランド名と同じSwitchBotという名前の製品と、温湿度計(英語名はSwitchBot Thermometer & Hygrometer)を紹介する。以降、それぞれをBot、Meterと呼ぶ。

 これらの製品はBluetooth Low Energy(BLE)で通信し、スマートフォンアプリによって操作できるが、別途、「SwitchBotハブ」という製品を購入することで、デバイスのハブとなりクラウドと通信できる。これによって、外出先からもデバイスの操作が可能となる。

 実は、Botに関しては通信プロトコルが事実上公開されているため、誰でも自由に公式アプリなしに、また「SwitchBotハブ」なしに、Botを操作可能だ。これが本コラムで紹介する理由だ。

左からRaspberry Pi、Bot、Meter
左からRaspberry Pi、Bot、Meter
[画像のクリックで拡大表示]

アームの出し入れでスイッチを操作するBot

 まずBotを紹介しよう。この製品は小さなアームを出し入れするだけのシンプルなデバイスだ。

Botのアームの動き
Botのアームの動き
[画像のクリックで拡大表示]

 両面テープで家電のスイッチの横に張り付けることで、リモートから物理的にスイッチを押すのだ。意外にアームは力が強いので、両面テープでしっかりと固定しないといけない。電池はCR2リチウム電池だ。

Botの背面と電池
Botの背面と電池
[画像のクリックで拡大表示]

 さて、このBotだが、メーカーであるWonderlabs社がBLEでアームを動かすためのPythonコードをpython-hostという名称でGitHub上に公開している。BLEの通信仕様のドキュメントは存在しないが、公開されているコードはシンプルなので、ソースコードを見れば簡単に把握できる。

 アドバタイジングパケットからどうやってBotを発見するのか、Service UUIDやCharacteristic UUIDは何か、アームを動かすにはどのようなビット列のデータを送ればよいかが、ソースコードから把握できる。

 アームを動かすコマンドは、PRESS、ON、OFF、UP、DOWNの5種類が用意されている。PRESSは、アームが開いてからしばらくすると元に戻る。これは専用アプリから「押す」モードに設定した場合に有効だ。ONとOFFはアームを開く、または閉じる、のどちらかが割り当てられるが、これは専用アプリから「スイッチ」モードに設定したときに有効だ。どちらがONでどちらがOFFかは設定に依存する。UPとDOWNは設定にかかわらず、アームを閉じた状態、アームを開いた状態にする。

 これだけの動作パターンを自由に操ることができるなら、両面テープでBotを固定できさえすれば、恐らくほとんどの家電に使うことができるだろう。

 python-hostはシェルからコマンドとして利用することを前提としているが、もしBotを操作するアプリケーションを自作したいなら、このコードは参考になるだろう。