SwitchBot の DeviceID は Bluetooth アドレスと一緒

そのものズバリな記事がなかったので書いておくとタイトル通りです。

github.com

とかを使おうとすると

You must set your Bot's Device ID in the Press Mode or Switch Mode Bot Settings (Advanced Settings > Bot Settings)

 と書いてあって、Device ID が必須だぜ!! Advanced Settings > Bot Settings から設定できるから設定しような!と書いてあるんだけど Device ID の求め方は書いてない。

で、まぁ、自分で API 叩いて取得してみた

  1. iOS アプリのプロフィール > 設定 > アプリバージョンを 10 回タップすると開発者向けオプションが出てくるのでそこから token を手に入れる(これは上記 README にも書いてある)
  2. それを使って curl でデバイス一覧持ってくる
$ curl "https://api.switch-bot.com/v1.0/devices" -H "Authorization: ${token}" | jq .
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   318  100   318    0     0    309      0  0:00:01  0:00:01 --:--:--   309
{
  "statusCode": 100,
  "body": {
    "deviceList": [
      {
        "deviceId": "xxxxxxxx",
        "deviceName": "電気",
        "deviceType": "Bot",
        "enableCloudService": true,
        "hubDeviceId": "xxxxxxx"
      },
      {
        "deviceId": "xxxxx",
        "deviceName": "Hub Mini",
        "deviceType": "Hub Mini",
        "hubDeviceId": "000000000000"
      }
    ],
    "infraredRemoteList": []
  },
  "message": "success"
}

で、取得できるんだけど取得して値を見たらそのデバイスBluetooth Device Address と一緒だったってオチ。 アプリからデバイス情報開くと「BLE MAC」 っ書いてある項目がそれです。わざわざ API 叩かなくてもすぐに出てきますよというお話。

ググってもあんまり情報出てこなかったからメモがわりに残しておく