SwitchBot CLIを公開! ターミナルでBotなどを操作できるコマンドライン・プログラム(Web API使用)
SwitchBotの推し活もここまでくるとは自分でも思いませんでした。とうとうSwitchBot用のCLIコマンドを実装して公開してしまいました。これを使えば、PC(WindowsやmacOS, Linux)のターミナル画面からSwitchBot機器を操作できる他、他のプログラムと組み合わせて簡単に連携機能を実現できます。
というわけで、本日の記事では、筆者テック大家さんが公開した switchbot-cliコマンドをご紹介します。
できること
SwitchBotとは、スマートホームを実現する家電商品群のブランド名であり、商品名でもあります。商品群の中には、スマート電球、スマート・ロック、掃除機やスマート・カーテンなどがあり、多種多彩なラインナップとなっています。
今回公開したswichtbot-cliコマンドは、これらのSwitchBot機器を、WindowやmacOS、Linuxなどのターミナルアプリのコマンドラインから操作できるようにするプログラムです。といっても初期リリース時点では、すべての製品カテゴリではなく、ボット、カーテン、ロック、プラグ、電球、テープライト、および、各種リモコン機器、に対応しています。
仕組み
本ブログの記事で何度も取り上げているように、SwitchBotはWeb APIを公開しています。ここで紹介するswitchbot-cliはそのWeb APIを利用して機器の制御を行っています。
SwitchBot Web APIでできることは、以下の記事で説明していますので、詳しくはこちらを御覧ください↓
つまり、Web APIを使うと、機器の一覧を取り出したり、特定の機器の電源を入れたり切ったり、電球の色を変更したり、といった操作が可能になります。
そう。とは言えこれらは、SwitchBotアプリ(Android/iOSアプリ)を使えばできることなのです。
ですが、Web APIを使えるということは、そのような公式アプリだけではなく、自作のプログラムから操作できるということに他なりません。
Web APIと言う仕組みを利用して、switchbot-cliコマンドは、デスクトップ系のOSからでもSwitchBotを操作できるようにしてしまおう、というものになっています。
実装はNodeJSで行っており、NodeJSのパッケージマネージャのNPMで配布しています。それではインストール方法を見ていきましょう。
インストール方法
インストールはNodeJSがインストールされていれば簡単です。
npm install -g switchbot-cli
これでswitchbot-cliコマンドが使えるようになります。
switchbot-cli
使い方
初めてコマンドを実行すると、トークン/シークレットの情報の入力を促すプロンプトが表示されます。
この情報は、SwitchBotのアプリから取得する情報です。Web APIを使うために必要になるユーザアカウントに ひもづくもの。以下の公式ページでは、SwitchBotアプリからトークンを取り出す方法をわかりやすく解説しています。
さて、SwitchBotアプリに表示される、トークンもシークレットも長い謎の文字列です。したがって、コピペが必須。手で打つのは間違える可能性大なのです。
モバイルアプリで表示された情報をデスクトップOS上で動作するプログラムに入力するのはちょっと手間ですよね。でも仕方ありません。クラウド系のメモアプリをつかうなり何なりして、なんとかコピペしてみて下さい。
ちなみに、トークンとシークレットはペースト(入力)しても画面に表示されません。目をつぶって(笑)ペースト後にリターンキーを推して下さい。
機器一覧を表示する
トークンとシークレットの入力が終わったら、さっそく機器一覧を取得してみます。
switchbot-cli device list
すると以下のように、SwitchBotアプリで自分のアカウントに設定した機器の一覧が表示されます。
機器の電源を入れる
機器を操作するには、リストの中のどのデバイスを操作するかを-d オプションで指定します。機器に使えるコマンドは、以下のように実行すると表示されます。デバイスを特定するためのID(deviceId)は上のコマンドで表示されたリストの一番左のカラム(上の絵でぼかしている部分)から読み取ります。
指定されたデバイスで利用できるコマンドの一覧は、たとえば、XXXXXXというdeviceIdをもつテーブライトで利用できるコマンドを表示したい場合は、以下のようにします。
switchbot-cli device -d XXXXXX help
すると、turnOn, turnOff, toggle, birghtness, colorといったサブコマンドが利用できることがわかります↓
コマンドがわかったので、テープライトの電源をトグルしてみます。これにより、電源が入っていれば切れる、電源が切れていれば入る、という制御が実現できます。
switchbot-cli device -d XXXXXX toggle
電球の色を変える
テープライトの色を「赤」に変えるならこんな感じ↓
switchbot-cli device -d XXXXXX color 255:0:0
このようなコマンド(サブコマンド)は操作する機器に依存します。使えるコマンドを確認する際は、上記のdevice -d XXXXXX helpで表示して確認してみて下さい。
詳しくはGithubで
上記の内容はほんの触りです。詳しくは筆者のGithubリポジトリのREADME.mdを参照して下さい。-d オプションが不要になる device use コマンドなど、便利なものもありますので、ぜひ御覧ください。
APIの使い方で困ったら…
ところで…
いやいや、「自分はWeb API使ってプログラミングしたいんだよ」「でも、Web APIの使い方がわからないんだよ」「うまくいかない、何からやったらいいかわからない」
そんなあなた。テック大家さんに相談してみませんか?なんでも相談に乗りますよ。
こちらの記事で詳細をご確認下さい↓
ディスカッション
コメント一覧
まだ、コメントがありません