外出中の子供の位置情報を全自動で通知できたら、少しは安心できるかもしれない

# はじめに
小学校の中～高学年ともなると、塾や習い事、友達の家に遊びに行ったりなど、一人で外出することが多くなるかと思います。
親としては子供が一人で外出している最中に、どこにいるのか、変なことに巻き込まれていないかなどを常に心配なものです。
子供が今どこにいるかが分かれば、少しは心配も減る・安心できるかと思い、子供に持たせたスマホ位置情報を全自動で通知する仕組みを作りました。

スマホは Andorod、自動化処理は [**Macrodroid**](https://play.google.com/store/apps/details?id=com.arlosoft.macrodroid&hl=ja) を使用します。
Macrodroid とは、自分で設定した処理を実行できる Android アプリです。すべて GUI で設定ができるため、プログラマーでなくても直感的にスクリプトが作成できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155700/54e24145-3364-5827-a5b5-506f22aae44d.png)

# 要件定義
* 子供の手を介さずに全自動で行う
* 自宅 WIFI の SSID 圏外になったら、位置情報の通知処理を開始する
* 通知は10分ごとにメールで行う
* 自宅 WIFI の SSID 圏内になったら、位置情報の通知処理を停止する
* 帰宅したことを通知する

# 環境
Android10 (SHARP AQUOS Phone SH-M07)
Macrodroid 5.6.3

# Macrodroid 設定
マクロは「位置情報自動通知」と「帰宅」の2つ作ります。
いずれも、自宅 WiFi の SSID の検知状況をトリガーとしています。

## マクロ その1（位置情報自動通知）

・画面下部の「マクロ」を選択します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155700/fb84da24-cee5-4872-1531-894ffd8b0606.png)

・画面右下の **＋** ボタンを選択します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155700/2436f49b-0c36-53a0-5fd4-0e45f98729e1.png)

### トリガー設定
#### トリガー完成形
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155700/015b18e4-200a-09fd-0f72-a2cce7ce3d09.png)

#### トリガー設定手順
* 「トリガー」枠の **＋** を選択
* 「接続」→「WIFIのSSIDの変化」を選択
* 「指定SSID圏外になったとき」を選択
* 自宅 WIFI の SSID を選択します。SSID が複数ある場合は、対象にしたいものすべて選択します（OR条件なので、いずれか一つが見つかれば動作対象となります）。
* 位置情報の権限を求められたら、「常に許可」を選択

以上で、トリガーの設定は完了です


### アクション

#### アクション完成形
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155700/66879834-91e0-78a8-1d16-053122b182c9.png)

#### アクション設定手順
* 「アクション」枠の**＋**を選択
* 「条件分岐／繰り返し」を選択
* 「条件で繰り返す(While)」を選択
* 「1回は必ず実行し、条件を満たす限り繰り返す」を選択
*  「条件」枠の **＋** を選択
*  「接続」→「WiFiの状態」→「WiFi切断」→ 自宅 WiFi の SSID を選択

---


* 「アクション」枠の**＋**を選択
* 「位置」 →「位置情報を強制的に更新」を選択


---


* 「アクション」枠の**＋**を選択
* 「MacroDroid固有」 →「次のアクション実行前に待機」→「1分」と設定（「アラーム機能を使う」をチェックしたほうが正確に動作します）


---

* 「アクション」枠の**＋**を選択
* 「メッセージ」→「メールを送る」→「Gmailアカウント」を選択。メールアドレス、件名は任意で。本文は以下をコピペ。貼り付けたら画面上部のチェックマークを選択して保存

``` 
（自動)
現在位置を送信します。
次回の送信時刻は10分後です。

地図
http://www.google.com/maps?q=[last_loc_latlong]&center=[last_loc_latlong]

日時
[year]/[month_digit]/[dateofmonth] [hour]:[minute]:[second]

緯度経度
[last_loc_latlong]

誤差
[last_loc_accuracy]

Mobile Network Code
[mnc]

Cell ID
[cell_id]
```

---


* 「アクション」枠の**＋**を選択
* 「MacroDroid固有」 →「次のアクション実行前に待機」→「9分」と設定

---

* 「アクション」枠の **↓↑** を選択
* 各アクションの右側に表示される **＝** をドラッグするとアクションの位置が入れ替えられます。完成形の形に並べ替えてください。

### 保存
画面上部の「マクロ名を入力」に任意のマクロ名を入力し、画面右下の **=+** ボタンを選択。
（私は「**自宅WIFIを検出しなくなったら10分毎に現在位置を自動送信する**」という名称にしています。長い）
以上で、マクロ その1 の設定は完了です。

## マクロ その2（帰宅通知）

・アプリホーム画面下部の「マクロ」→ 画面右下の **＋** ボタンを選択します

### トリガー設定
#### トリガー完成形
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155700/bf39806b-cfbb-e19f-2b06-2d439faa6c66.png)


#### トリガー設定手順
* 「トリガー」枠の **＋** を選択
* 「接続」→「WiFi の SSID の変化」を選択
* 「指定 SSID 圏内に入ったとき」を選択
* 自宅 WIFI の SSID を選択

### アクション

#### アクション完成形
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155700/f9233cea-37c8-bbd4-18e1-a84eec72c43d.png)


#### アクション設定手順
* 「アクション」枠の**＋**を選択
* 「メッセージ」→「メールを送る」→「Gmailアカウント」を選択。メールアドレス、件名は任意で。本文は以下をコピペ。貼り付けたら画面上部のチェックマークを選択して保存

``` 
子供の携帯が家に着きました。

地図
http://www.google.com/maps?q=[last_loc_latlong]&center=[last_loc_latlong]

日時
[year]/[month_digit]/[dateofmonth] [hour]:[minute]:[second]

緯度経度
[last_loc_latlong]

誤差
[last_loc_accuracy]

Mobile Network Code
[mnc]

Cell ID
[cell_id]

```

### 保存
画面上部の「マクロ名を入力」に任意のマクロ名を入力し（私は「**帰宅**」という名称にしています。）、画面右下の **=+** ボタンを選択。
以上で、マクロ その2 および、すべての設定が完了です。
最終的には、以下のような画面になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155700/f5d000dc-6e49-0bec-1421-005d8939ebac.png)

## テスト
スマホを持って自宅 WiFi の電波が届かなくなる距離まで離れてみましょう（スマホの WiFi を ON/OFF してもいいと思いますが、実態に即したテストを行うことが大事です）。
メールアクションで設定した宛先に通知されるはずです。
メール本文の URL をタップすると、スマホの位置が地図アプリで確認できます。

## 補足
* 10分ごとの更新としていますが、待機時間を短くすることで通知頻度を挙げられます。ただし、バッテリーの消費が早くなります。
* 「位置情報を強制的に更新」アクションは、おまじないみたいなものです。盛大にズレることもあるので気休め程度にお考えください。
* 子供のプライバシーも大切です。子供には「君のスマホには、外出時の位置を知らせる仕組みが設定していて、必要なときに確認できるようにしているよ」と必ず伝えておきましょう。子供が拒否したら、自動通知の仕組みを解除することも検討してください。人の行動を監視するという非常に誤解されやすい仕組みでもあるため、事前の説明と同意は必須です。