curlを使い SwitchBot のAPIを使ってプラグミニの情報を取ってみた

1. トークンの取得
SwitchBot のアプリを開いて「プロフィール」→「設定」をクリック、「アプリバージョン」の項目を10回ほどタップすると 「開発者向けオプション」という項目が出てくる。
「開発者向けオプション」をタップしたら、「トークンの取得」と「クライアントシークレット」という項目が出てきます。
今回は「トークンの取得」にかかれている文字列を利用します。

2. デバイスIDの取得
1 で取得したトークンを元に下記の様にcurl を実行し、対象のデバイスIDを取得します。
今回はプラグミニのデバイスIDを利用します。

$ token="「トークンの取得」にかかれている文字列"
$ curl -s -H "Authorization:${token}" https://api.switch-bot.com/v1.0/devices | jq "."
{
  "statusCode": 100,
  "body": {
    "deviceList": [
      {
        "deviceId": "6055F938A492", <- ココ
        "deviceName": "プラグミニ(JP) 92",
        "deviceType": "Plug Mini (JP)",
        "enableCloudService": true,
        "hubDeviceId": ""
      },
(...snip...)
  },
  "message": "success"
}

プラグミニの情報を取得する。
2 で取得したデバイスIDを元に、下記のようにcurlするとプラグミニの情報が帰ってくる。

# 機器の電源が入ってない時

$ deviceid=6055F938A492
$ curl -s -H "Authorization:${token}" "https://api.switch-bot.com/v1.0/devices/${deviceid}/status" | jq "."
{
  "statusCode": 100,
  "body": {
    "deviceId": "6055F938A492",
    "deviceType": "Plug Mini (JP)",
    "hubDeviceId": "6055F938A492",
    "power": "on",
    "voltage": 100.5,
    "weight": 0,
    "electricityOfDay": 633,
    "electricCurrent": 0
  },
  "message": "success"
}


# 機器の電源が入ってる時

$ curl -s -H "Authorization:${token}" "https://api.switch-bot.com/v1.0/devices/${deviceid}/status" | jq "."
{
  "statusCode": 100,
  "body": {
    "deviceId": "6055F938A492",
    "deviceType": "Plug Mini (JP)",
    "hubDeviceId": "6055F938A492",
    "power": "on",
    "voltage": 100.5,
    "weight": 41.5,
    "electricityOfDay": 632,
    "electricCurrent": 0.012
  },
  "message": "success"
}

あとはよしなにjqで整形して監視ツールとかに投げればよい。
jsonのキーの説明は公式が参考になる。 https://github.com/OpenWonderLabs/SwitchBotAPI#plug-mini-jp-1