🗂

スイッチボットのデバイスを操作するCLIをGoで作った

2024/05/29に公開

はじめに

Goで自身が利用しているスイッチボットデバイスを操作するCLIを作りました。
実際のところPCでスイッチボットを操作するより、スマホアプリやアレクサなどで音声操作するほうが楽です!笑
ということでなかなか利用することはないと思うのですが、SwitchBotAPIなるものを見つけたので、Goの勉強がてらにCLIを作ってみました。

https://github.com/ChikaKakazu/go-cli-switchbot

インストール

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