スマートロックデバイスの SESAME を Fitbit Versa で操作する

May 17, 2019

先日、CANDY HOUSE 製スマートロック SESAME mini(セサミ mini)を購入・設置しました。

スマートロックと呼ばれるデバイスは各社からいろいろと発売されていますが、SESAME を選んだのは、Webhook や API を利用できるからです。

この API を利用して、いつも身につけているFitbit Versaで、鍵の施錠状態の確認や鍵を開け締めするアプリケーションを作りました。

実際の端末で動作確認はしていませんが、 Fitbit Versa Lite でも動くはずです。

2019年5月18日追記

  • 鍵が空いている状態・閉じている状態の色が、公式と逆だったので合わせました。
  • アプリが起動した直後に操作すると、Fitbit とスマートフォン間の通信がうまくいかないことがありました。準備画面を表示して待つようにしました。
  • 鍵の状態取得・鍵の解施錠中は、ボタンを押せないようにしました。

イメージ

01

  • 右上のボタン:鍵の状態を取得する
  • 左下のボタン:鍵を開ける
  • 右下のボタン:鍵を閉める

アプリケーションを起動したときも、鍵の状態を取得するようにしています。

使い方

Step1: API トークンとデバイス ID の取得

SESAME のドキュメントにもありますが、API トークンはオーナーアカウントで発行する必要があります。

Please note that in order to enable API for your Sesame, you must be the owner of Sesame and have it paired with the Wi-Fi Access Point.

  1. CANDY HOUSE Dashboard にログインし、左メニューの[API Settings]を選択します。

  2. [SEND CODE]ボタンをクリックします。アカウントに紐づけているメールアドレスに Verification Code が届きます。

  3. Verification Code をフォームに入力し、[CONFIRM]ボタンをクリックすると、API トークンが発行されます。

  4. ターミナルで、次のコマンドを実行します。YOUR-SESAME-AUTH-TOKEN は取得した API トークンに置き換えてください。

    curl -H "Authorization: YOUR-SESAME-AUTH-TOKEN" https://api.candyhouse.co/public/sesames

    こんな感じのJSONが返ってきます。device_id の部分がデバイスIDです。

    [
      {
        "device_id": "00000000-0000-0000-0000-000000000000",
        "serial": "ABCDEFGHIJK",
        "nickname": "HIRAKE GOMA",
      }
    ]

Step2: API トークンの有効化

このページの「Before You Start」の 3. にあるように、スマートフォンのアプリケーションで、API を有効化します。

Step3: Fitbit へのデプロイ

  1. GitHub リポジトリからソースコードを clone または zip でダウンロードします。
  2. Fitbit Studio にログインし、新規プロジェクトを作成します。名前は適当にどうぞ。
  3. プロジェクトの左サイドバーに、1. で取得したソースコードの src 次のファイルをドラッグして取り込みます。
  4. companion/sesame/sesame.js を開いて、以下を置き換えます。
    • {YOUR-SESAME-AUTH-TOKEN}: SESAME の API トークン
    • {YOUR-SESAME-DEVICE-ID}: SESAME のデバイスID
  5. [Build]ボタンをクリックし、ビルドします。
  6. Fitbit にデプロイします。以下は簡略的な手順です。Android の手順についてはこちらを確認してください。
    • iPhone
      1. 「Fitbit」アプリケーションを開き、左上のデバイスを選択する。
      2. [開発者メニュー]を選択し、「Developer Brige」を ON にする。
    • Versa
      1. Fitbit Versa の設定を開く。
      2. 「Developer Brige」を「Connecting Server」から「Connetcted Server」状態に変更する。
    • デプロイ
      1. Fitbit Studio の上メニューで、[Select a phone / a device]を選択する。
      2. 一覧に表示される iPhone のデバイス名を選択し、接続する。
      3. 同じく、一覧に表示される Versa を選択し、接続する。
      4. [Run]ボタンをクリックし、デプロイする。
    • 後始末 iPhone / Versa いずれも「Developer Brige」を OFFにする(Versa の場合は、タップして「Disconnected」にする)。

以上。

所感

  • 「鍵ちゃんとしめたかな」と不安になって戻らなくて済むので、スマートロックはとてもよいです。
  • SESAME は「API があること」が他社製品に比べた強みだと思っています。先日バズっていたこちらの記事のように何かの形で可視化してみたいです。
  • API/Webhook については、以下が改善されるとより使いやすいと思っています。
    • API を利用できるのはオーナーアカウントのみ。
      • 家族が API を使ってロック解除したときに、オーナーが開けたことになるので正確なログがとれません。人別に家を出入りした時間を記録したいです。
    • Webhook で取得できる情報が少ない。
      • 現状だと、デバイスIDとステータス(鍵の状態)のみなので、「誰が」「何経由で」鍵を操作したかがほしいです。これをトリガーに他のスマート家電を操作できるとよいですね。