はじめに
今回は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つを送信する必要があります。
Parameter | Type | Location | Required | Description |
Authorization | String | header | Yes | Open token acquired |
Parameter | Type | Location | Required | Description |
Authorization | String | header | Yes | Open Token acquired |
sign | String | header | Yes | A signature generated from the token and secret key using a specific algorithm. |
t | Long | header | Yes | A 13 digit timestamp (standard time). |
nonce | Long | header | Yes | A random UUID generated by developers themselves to blend into the string to sign. |
具体的な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を使用していこうと思います。
コメント