Morning Girl

Web API, Windows, C#, .NET, Dynamics 365/CRM etc..

スマートロック セサミのAPIを使ってみる

といわけで、前回に引き続きスマートロック セサミ

今回はAPIに触れていきます!

どんなAPI

思っていたよりもシンプルなAPIです。ドキュメントは以下から。

CANDY HOUSE Developer Reference

できることはセサミ一覧の取得と鍵の開け締めだけ。個別取得APIもありますが、取得できる情報は一覧取得APIと変わりありません。

・セサミ 一覧取得API

・セサミ 個別取得API

・鍵の開け締めAPI

ユースケースとしては個人用というより、toBAir BnBの鍵管理とかが向いているのかなと。

ちなみに以下でPostmanを利用したチュートリアルも公開されています。

https://docs.candyhouse.co/#sesame-api-tutorial

Third-Party Librariesとして、.NETやPythonRubyのライブラリが公開されているのはありがたいところ。

https://docs.candyhouse.co/#third-party-libraries-plugins

事前準備

設定画面からAPIの有効化(以下の部分)をしておく必要があります。

f:id:sugimomoto:20180702225714p:plain

あと、Wifiアクセスポイントも事前に設定しておきましょう。

f:id:sugimomoto:20180702230250j:plain

認証アプローチ

認証には、セサミに登録しているID・PWをHTTPリクエストで渡して、Tokenを取得し、そのTokenを使って実際のエンドポイントにアクセスします。

パスワードを平文で送るのがちょっと心配。

POST https://api.candyhouse.co/v1/accounts/login
Content-Type:application/json
Body:{"email":"mail@mail.com", "password":"passowrdddd"}

Response
{
    "authorization": "d79a3f40b8ccaabb7561a9c0f56f4da075303ab32df078559bfeba97eabd0aa46a589111490b8bd8429b5d89a7a762a567425a6ae9834673a848f7b0c5d571e610805fb06e61d4783354414dbb7b55ab2828631403ce18ed48670fe0b"
}

トークンは30日後に有効期限が切れるとのこと。

パスワードが変更された場合、トークンは失効するので要注意。

Sesame 一覧を取得

登録されているセサミの一覧を取得します。ヘッダーに取得したTokenを貼り付けるだけ。

取得できる情報は、ロックの状態とAPIの有効状態、バッテリー残量です。このあたり、toBでは役に立ちそうですね。

GET https://api.candyhouse.co/v1/sesames
Accept:application/json
X-Authorization:d79a3f40b8ccaabb7561a9c0f56f4da075303ab32df078559bfeba97eabd0~~~

Response
{
    "sesames": [
        {
            "device_id": "ABCD12345",
            "nickname": "マイホーム",
            "is_unlocked": false,
            "api_enabled": true,
            "battery": 100
        }
    ]
}

Sesame 個別取得

SesameIDを指定して、Sesameのステータスを取得できます。

でも、取得できる情報は一覧と変わりない。大量にSesameがある場合有効かな。

GET https://api.candyhouse.co/v1/sesames/ABCD12345
Accept:application/json
X-Authorization:d79a3f40b8ccaabb7561a9c0f56f4da075303ab32df078559bfeba97eabd0~~~

{
    "nickname": "マイホーム",
    "is_unlocked": false,
    "api_enabled": true,
    "battery": 100
}

鍵の開け締め

PostリクエストでBodyにlock、unlockを指定して、鍵の開け締めを行えます。

わかりやすい。

POST https://api.candyhouse.co/v1/sesames/ABCD12345/control
Content-Type:application/json
Body:{"type":"lock"} もしくは {"type":"unlock"}

終わりに

個人的に履歴情報が一番欲しかったのですが、今の所無い模様。。。

API URLにv1の文字もあるので、今後に期待したいところです。