Amazfit BipでSESAME miniを解錠する 2

# はじめに
「[Amazfit BipでSESAME miniを解錠する](https://qiita.com/kamijyo/items/4abc1b7ef964e39c0a6a)」の続きです。
前回はTaskerとRESTask、Tools & Amazfitを使って
ボタンを押したら解錠される仕組みを作りました。

今回は解錠結果を取得するアクションを追加して、
その結果をAmazfitに通知します。

# 必要なもの
- Amazfit Bip (アプリ自体はAmazfit Arc, Amazfit Corにも対応しているようです)
- SESAME mini
- Android端末
- [Tasker](https://play.google.com/store/apps/details?id=net.dinglisch.android.taskerm) - Google Play Store 有料
- [RESTask](https://play.google.com/store/apps/details?id=com.freehaha.restask&hl=ja) - Google Play Store 無料
    - TaskerからWebAPIを用いてSESAME miniを操作するPlug-inです。
- [Tools & Amazfit](https://play.google.com/store/apps/details?id=cz.zdenekhorak.amazfittools) - Google Play Store 有料
    - Plug-inとして、Amazfitの操作をTaskerに知らせたり、TaskerからAmazfitに文字を表示したり出来ます。
    - 本当はもっと多機能なアプリです。

# やること
最終的にこんな感じのタスクを作ります。

![ama.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/257268/dd77be96-e2eb-1b59-50ab-54348e4de7c1.jpeg)

1. 2回以上押されたら（[前記事 手順５](https://qiita.com/kamijyo/items/4abc1b7ef964e39c0a6a#%E6%89%8B%E9%A0%86%EF%BC%952%E5%9B%9E%E6%8A%BC%E3%81%97%E3%81%A7%E5%8B%95%E4%BD%9C%E3%81%99%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%99%E3%82%8B)）
2. ボタン押下を受け取った通知として「OPEN SESAME」を表示
3. RESTaskで解錠（[前記事 手順２](https://qiita.com/kamijyo/items/4abc1b7ef964e39c0a6a#%E6%89%8B%E9%A0%86%EF%BC%92%E8%A7%A3%E9%8C%A0%E3%82%BF%E3%82%B9%E3%82%AF%E3%81%AE%E4%BD%9C%E6%88%90)）
4. 解錠アクションを実行した通知として「Checking...」と表示
5. 解錠待ちの5秒
   （SESAME Web APIでは実行結果を取得するコマンドがあるので
   　それがterminatedになるまで回す方法もあるのですが
   　なるべくAPIを呼ぶ回数を減らすために決め打ちしています）

6. RESTaskで施錠状態の確認
7. APIから返ってきたJSONから施錠状態を取り出し変数に格納
8. Amazfitに施錠状態を表示

これだけでわかる方は以下の記事は読む必要がありません。
おそらくもっといい方法もあるかと思うので教えて頂けたら幸いです。

# 手順０. Amazfitへの表示とWaitについて
＞2. ボタン押下を受け取った通知として「OPEN SESAME」を表示
＞4. 解錠アクションを実行した通知として「Checking...」と表示
についてはアクションでAmazfit Toolsを選択して
「カスタム通知→振動とテキスト→振動とテキスト」で好きな内容を
設定するだけですので詳述はしません。
[前記事の手順４](https://qiita.com/kamijyo/items/4abc1b7ef964e39c0a6a#%E6%89%8B%E9%A0%86%EF%BC%94-amazfit%E3%81%B8%E3%81%AE%E8%A1%A8%E7%A4%BA%E3%82%92%E8%A8%AD%E5%AE%9A)もご参照ください。

＞8. Amazfitに施錠状態を表示
これだけは変数を指定するのでご説明します。

＞5. 解錠待ちの5秒
こちらはアクションの「タスク」から「待機 / Wait」を選択し
適当な秒数を指定してください（5秒程度）。
長いほど施錠結果の確認時の齟齬は起きにくいと思います。

# 手順１. 施錠状態の取得
＞6. RESTaskで施錠状態の確認
この部分を作っていきます。

前回作ったタスクの中に新しいアクションの追加をします。
プラグインからRESTaskを選択しRESTaskを設定します。

ここで設定するのはHostの部分だけです。

```
https://api.candyhouse.co/public/sesame/********-****-****-****-************
注）****部分はデバイスID
```

![1 (7).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/257268/d3d2f505-f50b-e07a-079e-5646d08d399f.png)

次にHeadersタブに移り以下のヘッダーを追加します。

```
- Nameは「Authorization」
- Valueには手順１で取得したAPIキー
```

を入力します。

![1 (8).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/257268/115da40d-c654-59db-3b67-c1f8c0d61e9d.png)

これで右上の▶を押すと以下のようなウィンドウが表示されます。

![1 (9).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/257268/6b383177-4232-cb50-7b06-9cd53e7379d2.png)

ざっくりと内容を解説すると、

```

- 「locked」が施錠状態で、閉まっていればtrue、開いていればfalse
- 「battery」は電池の残量
- 「responsive」はSESAME miniが現在操作可能であるか
```


を表しています。

手動で鍵を開閉して、lockedの状態が反映されることを確認してみましょう。
確認できたら右上の保存ボタンを押して保存します。

# 手順２. 
＞7. APIから返ってきたJSONから施錠状態を取り出し変数に格納
手順１でRESTaskの返り値の設定を変えていなければ
RESTaskの画面内のResponseという部分で指定されている
%rtresという変数に実行結果のReturn dataが格納されています。

![1 (9).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/257268/6b383177-4232-cb50-7b06-9cd53e7379d2.png)

これはJSONという形式になっていますが
今回必要なのはこの中の「locked」の部分なので
それを取得します。

アクションの追加から「コード→Javascript (小) / JavaScriptlet」を選択して
以下のコードを入力します。

```js
var locked = JSON.parse(rtres).locked
// rtresというJSONのlockedというセクションを参照して
// lockedという変数に格納
```

これで施錠状態に応じて
lockedにtrueかfalse（まれにnull）が入ります。

# 手順３. 
＞8. Amazfitに施錠状態を表示
あとは表示するだけです。

アクションの追加でプラグインからAmazfit Toolsを選択、
設定の鉛筆アイコンを押すとAmazfit Toolsの画面に変わります。
「カスタム通知→振動とテキスト→振動とテキスト」で
表示したいタイトルと内容を指定します。

ここでは手順２で取得した変数%lockedを指定します。

|タイトル|内容|
|---|---|
|SESAME|lock = %locked|
![amaz.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/257268/1e542b9b-33ab-eae1-13fe-d22763b6a72b.jpeg)

# さいごに
3回クリックで施錠、4回クリックで確認なども作れます。
小さいボタンを何回もクリックするのはやりづらいかと思ったのですが
Amazfit Bipのボタンは非常に押しやすく反応もいいので
4回クリックでも毎回きちんと認識してくれます。

このTaskerの設定をしてから嬉しくなってしまって
外出するときにもわざわざAmazfitで開けてニンマリしています。