SwitchBot API v1.1でデバイス情報を取得するためにcurlコマンドでget requestする

ガジェット

はじめに

今回はSwitchbot APIのVersion1.1の使用方法を確認してみたいと思います。Version1.1では認証が強化された事でAPIによるロックの解施錠を操作可能となったことが特徴です。やはりロックの解錠はセキュリティ面で安心できる方法で使用すべきですよね。
Version1.0との共通点は省略していますので前回の記事もあわせて読んでいただければと思います。

Ver1.0とVer1.1の違いとは

Ver 1.1のGitHubに記載されているAPI使用方法を確認すると”Request Header”のパラメータが4つに増えていることがわかります。つまり下表の通り、Ver 1.0ではGET request のHeaderとして”Authorization”の1つを送信するだけでしたが、
Ver 1.1では”Authorization”、sign”、”t”、”nonce”の4つを送信する必要があります。

ParameterTypeLocationRequiredDescription
AuthorizationStringheaderYesOpen token acquired
table1. Request Header for Version 1.0
ParameterTypeLocationRequiredDescription
AuthorizationStringheaderYesOpen Token acquired
signStringheaderYesA signature generated from the token and secret key using a specific algorithm.
tLongheaderYesA 13 digit timestamp (standard time).
nonceLongheaderYesA random UUID generated by developers themselves to blend into the string to sign.
table2. Request Header for Version 1.1

具体的なVersion1.1でのデバイスリストの取得方法は、Version1.0では
curl -X GET “https://api.switch-bot.com/v1.0/devices” -H “Authorization: {Token}”
を送信でしたが、
Version 1.1を使用する上でのポイントは、
curl -X GET “https://api.switch-bot.com/v1.1/devices” -H “Authorization: {Token} -H “sign: {signature}” -H “t: {timestamp}” -H “nonce : {UUID}
のように使用するapiを”v1.1″に変更してヘッダーを4つ並べてcurlすることで、Version1.0と同様のレスポンスが帰ってきます。

Signatureを生成する時の注意点

Getリクエストで送信する4つのパラメータの生成は、GitHubの「How to Sign?」にやるべきことが記載されていますが、具体的なpythonやJavaScriptを含む各言語向けのサンプルプログラムが準備されていますのでそれらを実行すれば簡単に生成する事ができますし、そのまま自作プログラムに組み込むこともできます。
ここで重要な点は、生成されたパラメータは生成後およそ5分以内で使用できなくなりますのでGetリクエストを送信する直前にパラメータを生成する必要があります

おわりに

Version1.1の特徴はスイッチボットロックの解施錠ができることですが、私は現在保有しておらずV1.1を使用する恩恵を受けることはありません。ただしV1.1の使用方法が理解できましたので、温湿度計からのデータ取得やボットでのスイッチオンオフ操作は公式でサポートが終了するVersion1.0は使用せずにセキュリティが強化されたVersion1.1を使用していこうと思います。

コメント

タイトルとURLをコピーしました