TaskerでSesame miniを手ぶら解錠(HTTP Shortcuts編)

# はじめに
SESAMEアプリの手ぶら解錠。とても便利なのですが
どうしても安定性が低くドアの前で待たされることもしばしば。
あれと思ってスマホを開くとようやく開いたり。

特にうちでは2台使っているので2台とも手ぶらで開くというのは
5回に1回もないくらいです。

投稿時点でもアプリの改善などをしてくれているようなので
それに期待しつつそれまでは自前で対応しようということで
AndroidのアプリであるTaskerを使って手ぶら解錠の仕組みを作ります。

RESTaskを使った方法はこちらの記事にまとめています。
[TaskerでSesame miniを手ぶら解錠(RESTask編)](https://qiita.com/kamijyo/items/629905320c1614b2176c)

# 準備するもの
- SESAME mini
- アンドロイド端末
- [Tasker](https://play.google.com/store/apps/details?id=net.dinglisch.android.taskerm)
- [HTTP Shortcuts for Android](https://play.google.com/store/apps/details?id=ch.rmy.android.http_shortcuts)
    - [「Androidから～Sesame APIを使う」](https://qiita.com/kamijyo/items/b2da3f533a791e5270fb)で使用したアプリです

# 手順１．Sesame APIを使用する準備
CANDYHOUSEのDASHBOARDでSesame APIを使用するための設定をします。
[「Androidから～Sesame APIを使う」](https://qiita.com/kamijyo/items/b2da3f533a791e5270fb)の[手順１](https://qiita.com/kamijyo/items/b2da3f533a791e5270fb#%E6%89%8B%E9%A0%861-%E3%83%80%E3%83%83%E3%82%B7%E3%83%A5%E3%83%9C%E3%83%BC%E3%83%89%E3%81%A7%E6%83%85%E5%A0%B1%E5%8F%8E%E9%9B%86)で解説していますので
本記事では詳細は割愛いたします。

[「Androidから～Sesame APIを使う」](https://qiita.com/kamijyo/items/b2da3f533a791e5270fb)の内容をすべて済ませておくと
この後の手順がスムースです。

# 手順２．Taskerの設定
Taskerをインストールして設定をしていきます。
最終的にプロファイルを２つ、タスクを３つ作ります。

## 手順２－１．解錠タスクの作成
タスクとは動作（アクション）を組み合わせたものです。
まず作成するのは解錠タスクです。

タスクタブの右下の＋ボタンでタスクを作成できます。
名前を入力してタスク編集画面に入り、
右下の＋ボタンでアクションを追加します。

Sesame APIにPOSTしたいのでTasker自体のアクションである
ネット内のHTTP:POSTメソッドを使いたいところなのですが
このメソッドではREST APIが使えません。
そこでプラグインを使用する必要があります。

[「Androidから～Sesame APIを使う」](https://qiita.com/kamijyo/items/b2da3f533a791e5270fb)で紹介した[HTTP Shortcuts](https://play.google.com/store/apps/details?id=ch.rmy.android.http_shortcuts)は
単体で動作するアプリですがそこで設定したショートカットは
Taskerのプラグインとしても動作するのでその機能を使用します。

アクションの追加でプラグインから[HTTP Shortcuts](https://play.google.com/store/apps/details?id=ch.rmy.android.http_shortcuts)を選択し
設定の鉛筆アイコンを押すと[HTTP Shortcuts](https://play.google.com/store/apps/details?id=ch.rmy.android.http_shortcuts)の画面になるため
あらかじめ作成した解錠のショートカットを選択します。
（参考記事：[「Androidから～Sesame APIを使う」](https://qiita.com/kamijyo/items/b2da3f533a791e5270fb) [手順４](https://qiita.com/kamijyo/items/b2da3f533a791e5270fb#%E6%89%8B%E9%A0%86%EF%BC%94-%E9%8D%B5%E3%81%AE%E9%96%8B%E9%96%89)）

![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/257268/c01e2f7b-5b88-f0bb-41b4-fa70879d9ca9.png)

これだけで解錠タスクとしての動作は十分なのですが、
タスクが動いたことを通知などで残しておくと動作確認がしやすいので
アラートから「通知を出す/Notify」などで日時と解錠したことを
通知しておくと動作確認が出来ます。

![2 (3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/257268/991be540-eb87-e69c-65e9-bd21c0440c96.png)

## 手順２－２．Sesame 発見プロファイルを作成
プロファイルはトリガーとアクションを関連付けるものです。
今回はSesame miniをBluetoothで検知できたら解錠します。

公式アプリでは接続できたらBluetooth経由で解錠しているので
接続自体が不安定だったり接続するまで時間がかかったりしますが、
Sesame miniのBluetoothを検知したらWeb APIで解錠するので
Bluetooth接続の不安定性に左右されません。

右下の＋ボタンでプロファイルを作成して名前（「発見」等）を入力し
状態カテゴリーから「ネット」→「近くのBluetooth」を選択。
住所欄で虫眼鏡の検索アイコンを押して
Sesame miniのMACアドレスを指定します。

CANDYHOUSEのDASHBOARDの[Sesame List](https://my.candyhouse.co/#/sesameList/0)で
Serialに表示されているのがMACアドレスです）

Low-Energy(LE)機器と未接続の機器にチェックを入れて戻り、
最後にタスクとして解錠を指定します。

![1 (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/257268/a2e74384-400f-2764-ab54-9ff598d68708.png)

これでSesame miniを検知すると解錠タスクが起動します。

これだけでも近づけば解錠するという機能は出来たのですが
家の中にいる時でも玄関に近づくたびに解錠されてしまいます。

そこで一度解錠したらこのプロファイルは無効にするようにします。

解錠タスクの編集画面に移ってアクションの追加で
「Tasker」→「プロファイルの状態」から名前に「発見」を指定し
セットに「オフ」を指定します。

![2 (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/257268/a11b05fc-17ae-7815-6415-1ae3395d9e5f.png)

これで一度解錠したらその後は近付いても解錠されません。
このままではずっと解錠されなくなってしまうので、
次は自宅の付近に近付いたらプロファイルを有効にします。

## 手順２－３．発見オン/発見オフ タスクを作成
発見をオン/オフするタスクを作成します。
発見オンと名付けたタスクを作成し、
「Tasker」→「プロファイルの状態」から名前に「発見」を指定し
セットに今回は「オン」を指定します。
同様に発見オフというタスクも作成します。
動作確認のために通知を作成しておいた方がいいでしょう。

## 手順２－４．自宅付近プロファイルを作成
プロファイルの作成から現在地を選択し、自宅の位置を指定します。
範囲は30mがいいと思います。
このプロファイルにはタスクとして発見オンを指定します。

指定した発見オンの部分を長押しすると出口タスクを追加できます。
このトリガーが無効になったときに発動するタスクを指定するもので、
ここでは発見オフを指定してバッテリー消費を抑えます。

![p (6).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/257268/83096e0b-eaf2-c39b-158d-8b0cd4520611.png)

# まとめ
以上で、自宅から30m以内に入ったら発見プロファイルが有効になり
周囲のBluetoothを探し始めます。

BluetoothでSesame miniが検知されたら解錠タスクが起動し
HTTP Shortcutsアプリ経由でWeb APIから解錠されます。

解錠されたら発見プロファイルは無効化されるため
再度玄関に近付いても解錠されることはありません。

自宅付近を通過した際には近付いた時に発見が有効になりますが
離れると発見が無効化されるためバッテリー消費を抑えます。

自宅付近の判定に「状態→電話→近くの基地局」を使うと
よりバッテリー消費が抑えられますが、
電波状況によっては登録した基地局につながらず
トリガーがオンにならないこともあるため、
自宅周辺を歩き回って出来るだけ沢山の基地局を
登録する必要があります。

# おわりに
セキュリティには気をつけて運用してください。

Taskerのデフォルトの設定では画面消灯中の監視は
600秒になっており10分毎にしかチェックされません。
その場合は自宅の範囲を広げて時間稼ぎをするか、
チェックの間隔を短くして対処してください。

チェックの間隔を短くするとバッテリー消費は増えます。
私は120秒にして使っています。