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

Posts

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

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

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

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

2019年5月18日追記

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

イメージ

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

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

使い方

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の手順についてはGetting Startedを確認してください。

デプロイ手順

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