ほとラボ

It works!

ドアに iPhone をかざすと鍵が開くようにした

f:id:hoto17296:20191001222903j:plain

iOS 13.1 の新機能「オートメーション」と NFC タグによるトリガーが面白そうだったので、これを使って自宅ドアに iPhone をかざしたら鍵が開く仕組みを作ってみた。

仕組み

  1. ドアに貼った NFC タグ (Suica) に iPhone をかざす
  2. (事前に設定した) オートメーションが実行される
  3. SESAME の API が叩かれる
  4. 鍵が開く

必要なもの

  • SESAME
    • Wi-Fi ドングルでインターネットに接続済みである必要がある
  • NFC タグ
    • 使っていない Suica があったのでそれを使った
  • 新しめの iPhone
    • iPhone 8 以前だと NFC タグが読めないので NG
    • iPhone X だとバックグラウンド読み取りができないので今回の用途では使えないので NG
    • iPhone XS, XR 以降であれば OK

SESAME API で鍵を開けられるようにするまでの設定

1. SESAME アプリからクラウド連携を有効にする

f:id:hoto17296:20191001224546p:plain

2. API トークンを発行する

https://my.candyhouse.co/ にログインして API トークンを発行する

3. 対象の SESAME のデバイス ID を取得する

YOUR_AUTH_TOKEN には先ほど発行した API トークンを入れる。

$ curl -H "Authorization: YOUR_AUTH_TOKEN" https://api.candyhouse.co/public/sesames
[
  {
    "device_id": "00000000-0000-0000-0000-000000000000",
    "serial": "ABC1234567"
    "nickname": "Front door",
  }
]

オートメーションの設定

「ショートカット」アプリで新規オートメーションを作成する。

「日時」(トリガー) には「NFC」を指定して、割り当てる NFC タグを読み込ませて名前をつける。

f:id:hoto17296:20191001213537p:plainf:id:hoto17296:20191001213543p:plain

「アクション」には「Web」>「URL の内容を取得」で以下のように設定する。

URL 末尾の部分にはデバイス ID を、Authorization ヘッダには API トークンを指定する。

これで設定完了。

あとはドアの外側に NFC タグ (Suica) を貼って iPhone をかざせば鍵が開く。

所感

  • めちゃくちゃ簡単にできて良かった
    • オートメーション内で API リクエストの詳細まで設定できるので AWS Lambda などを介す必要がなくて便利
  • めちゃ遅い、開くまでに10秒以上かかるときもある
    • Web API を介している以上はどうしようもない感
    • 物理的に近くにあるので Bluetooth で直接 SESAME を操作したい...
  • ドアの外側に Suica 貼るのダサい、というか怪しい
    • Suica ではなく市販の小さい NFC タグを買った方がよさそう
    • 当初はドアの内側に貼ればいけるんじゃないかと思っていたが、1cm くらいまで近づけないと反応してくれないのでドア越しだと無理だった
  • NFC タグ + オートメーション 面白い
    • NFC タグをトリガーにしてアクションを実行するというのは IFTTT や Zapier などの類似アプリでは出来なかったこと (多分) なので、iOS のオートメーションには新たな可能性を感じる
    • オートメーションのアクション設定も色々触ってみたけど、まず Web API が叩ける時点で自前で API を作れば何でもできるし、そこまでしなくても Pytonista で Python コードが実行できるのでカジュアルに色々なことができそう

追記: NFC タグにキラシールは貼らない方がいい