スイッチボットのデバイスを操作するCLIをGoで作った
はじめに
Goで自身が利用しているスイッチボットデバイスを操作するCLIを作りました。
実際のところPCでスイッチボットを操作するより、スマホアプリやアレクサなどで音声操作するほうが楽です!笑
ということでなかなか利用することはないと思うのですが、SwitchBotAPIなるものを見つけたので、Goの勉強がてらにCLIを作ってみました。
インストール
Mac
$ brew install ChikaKakazu/tap/go-cli-switchbot
Windows, Linux, etc
こちらからダウンロードしてみてください。
確認
インストールが完了したら-v
コマンドでインストールの確認をしてください。
$ go-cli-switchbot -v
go-cli-switchbot version 0.3.0
使い方
トークンの取得
公式のReadMeを参考に、スイッチボットのスマホアプリからトークンを取得してください。
アプリの設定 > アプリバージョンを10回タップすると開発者向けオプションが表示されます。そこからトークンとクライアントシークレットを取得できます。
トークンの保存
SwitchBotAPIを利用するにはトークンが必要です。そこでCLIでトークンを何度も利用できるように登録します。
token set
コマンドでトークンを登録し、token get
コマンドで確認することができます。
$ go-cli-switchbot token set
Enter your token: **********************************
Enter your secret: ********************
Token and Secret set successfully.
利用デバイスの一覧
devices
コマンドで利用しているスイッチボットデバイスの一覧を表示することができます。
go-cli-switchbot devices
{
"body": {
"deviceList": [
{
"deviceId": "C49B7555C1F",
"deviceName": "ハブミニ",
"deviceType": "Hub Mini",
"enableCloudService": false,
"hubDeviceId": "000000000000"
},
{
"deviceId": "F62E81F2571",
"deviceName": "部屋の電気ボット",
"deviceType": "Bot",
"enableCloudService": true,
"hubDeviceId": "C49B75559C1F"
}
]
},
"message": "success",
"statusCode": 100
}
その他API
現在は、私が利用しているスイッチボットデバイス(ボット、加湿器、シーン)のみ操作することが可能です。ReadMeに記載していますのでご参照ください。
また、SwitchBotAPIを実行する際に必要な情報はsign
コマンドで生成し表示します。これを元に公式のReadMeに記載されているAPIを実行するのもよいかと思います。
最後に
今回、Goの勉強がてらにCLIを作ってみました。そこでCLI開発に便利なcobraであったり、配布できるようにgoreleaserなどを利用しました。初めて利用するライブラリが多く、上手に扱えているとは言えませんがそれなりの手応えを感じています。
これからもGoで何かしら開発し続けていけたらいいと思います。
最後の最後に
HomebrewやGoReleaserでのビルド・配布はGoReleaser で Go 製 CLI のリリースを自動化& Homebrew でインストールできるようにするとGoでつくるCLIの"Hello World!"をするを参考にさせて頂きました。ありがとうございます。
Discussion