SwitchBotのデバイスIDを取得する
SwitchBotの温度計をモニタリングするツールを作るためにデバイスIDが必要なため、デバイスIDを取得するコードをPython(3.11)で書きました。
調べてみるとデバイスIDはAPI経由で取得が必要と書いてあるサイトもありましたが、デバイスIDはアプリ画面から見れるデバイス情報のBLE MACと同じでした。ですので、わざわざコードを書く必要もなかったです。
使っている温度計はこれです。
デバイス一覧を取得するだけであればtokenだけで大丈夫です。secret_keyは必要ありませんでした。APIはv1.1が出ているみたいです。デバイスIDの取得だけなので、ここではv1.1を使いました。
import pprint
import requests
def get_device_id(token):
"""Get device id from SwitchBot Cloud API."""
url = "https://api.switch-bot.com/v1.0/devices"
headers = {"Authorization": token, "Content-Type": "application/json"}
res = requests.get(url, headers=headers)
if res.status_code != 200:
raise Exception("Failed to get device id from SwitchBot Cloud API.")
return res.json()
token = input("Enter your token: ")
pprint.pprint(get_device_id(token))
以下のようなjsonでデータが返ってきます。yyyyyyyが欲しかったデバイスIDです。
{
"body": {
"deviceList": [
{
"deviceId": "xxxxxx",
"deviceName": "Hub Mini 52",
"deviceType": "Hub Mini",
"enableCloudService": False,
"hubDeviceId": "000000000000",
},
{
"deviceId": "yyyyyyy",
"deviceName": "温湿度計 07",
"deviceType": "Meter",
"enableCloudService": True,
"hubDeviceId": "xxxxxx",
},
],
"infraredRemoteList": [
{
"deviceId": "zzzzzzz",
"deviceName": "エアコン",
"hubDeviceId": "xxxxxx",
"remoteType": "Air Conditioner",
},
],
},
"message": "success",
"statusCode": 100,
}
ここで得た情報を使って、以下のようにprometheusで見れるようにしていきます。
つづく(かも)。
この記事が気に入ったらサポートをしてみませんか?