Inosensor ES Devkitを使ってみた！ ⑥（位置情報活用編）

# Inosensor ES Devkit って何？

Inosensor ES Devkit は、Sigfox無線モジュール搭載の小さな基板です。

![img-inosensor-ES-Devkit.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/40994/e68bbc30-f60e-045b-4baa-ec69bcb479aa.jpeg)

今回は、位置情報について実験した結果を報告します！

## SigfoxバックエンドのLOCATION画面

Sigfoxから送ったデータ（メッセージ）は、Sigfoxのバックエンドで確認することが可能です。

![スクリーンショット 2020-11-11 13.02.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/40994/fb30bbab-5ca4-cc6b-427f-013397efd04d.png)

このとき、メッセージの右側の紫色のアイコンをクリックすることで、そのメッセージのロケーション情報を調べることができます。

## 初期状態のLOCATION

特に何もオプションを指定していない初期状態では、以下のような表示になります。

![スクリーンショット 2020-11-11 13.02.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/40994/2611159c-b2dd-81c3-8317-4e29d16640f4.png)

これは、端末からメッセージを受信した基地局のうち１つをピックアップした想定エリア（シミュレーション上の電波伝搬範囲）が表示されている状態です。

正直、あんまり意味がないというか、わかりにくい・・・。

## 端末の位置情報を設定しよう！

次に、端末の位置情報を設定してみましょう。DEVICEタブから、位置情報を設定したいデバイスを見つけて、IDをクリックします。

![スクリーンショット 2020-11-11 13.18.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/40994/27231fc0-2337-5346-754e-3f62c67606f0.png)

デバイスの情報が表示されます。

![スクリーンショット 2020-11-11 13.19.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/40994/e63d6216-1492-ed88-c40f-ab1db230286d.png)

ここで注目してほしいのが、緯度経度です。

```
Latitude: 0.000 (degrees)
Longitude: 0.000 (degrees)
```

現在は何も設定していないので0になっています。これを設定してみましょう！

## 端末の位置情報を設定する

画面右にあるボタンから「Edit」をクリックします。

![スクリーンショット 2020-11-11 13.18.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/40994/760c75f2-1b19-1207-1309-73810a3162dc.png)

端末固有の情報が編集できる画面になるので、緯度経度を設定します。

![スクリーンショット 2020-11-11 14.15.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/40994/a7e57e9d-a120-3289-20ea-5cbbaf5c4fe6.png)

今回は、富士山の場所にしてみました。OKを押すと情報が更新されます。

![スクリーンショット 2020-11-11 14.15.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/40994/4b17a024-16f8-dcfa-ca42-ea36ea59ccce.png)

この状態でメッセージを送信すると、LOCATIONが以下のように変わります。

![スクリーンショット 2020-11-11 14.16.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/40994/9762f6b9-2132-b912-6c1f-f93a894314d0.png)

写真は拡大（＋）を何度かした状態です。指定した位置（富士山）に、旗が立っているのが確認できると思います！

※ちなみに、この状態で地図の左上のNoneをCoverage overlayに変更すると、さっきと同じ地図が表示されます。

## Atlas nativeを使ってみる

最後に、Sigfoxが提供している、Atlas native（受信基地局情報によるデバイス位置推定サービス）を使ってみましょう。これは、端末からのメッセージを受信した基地局の位置から、デバイスの位置を推定するものです。Sigfoxは複数の基地局でデータを受信するため、デバイスの位置を推定することが可能となっています。

## Device type別の設定を確認

まずは、端末の設定を確認しましょう。Atlas nativeの設定は、デバイスタイプ毎に設定されています。DEVICE TYPEのタブを開いて、端末のデバイス名(Name）をクリックします。

![スクリーンショット 2020-11-11 14.30.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/40994/1c519057-bcbe-d47e-cd22-fdfbfbf3329e.png)

デバイスタイプ別のインフォメーションが表示されるので、Contactsの詳細をクリックします。

![スクリーンショット 2020-11-11 14.30.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/40994/4c97a6dc-679a-d759-c2c7-a54c067c0df4.png)

Optionsにある、Sigfox geolocation serviceが、位置情報サービスの種類になります。Atlas nativeの場合は「Network location」になっていればOKです！

![スクリーンショット 2020-11-11 14.49.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/40994/c662bfd0-26ee-114c-dba2-bc161ba85562.png)

## Data Advanced Callbackを使ってみる

Atlas nativeの情報を取得するには、Data Advanced Callbackと呼ばれるコールバックを使用する必要があります。このコールバックは、複数の基地局の情報を集計してから発行されるため、通常のコールバックに比べて、25～30秒くらい後に発行されます。

それでは、早速設定してみましょう！

![スクリーンショット 2020-11-18 11.25.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/40994/b109804c-93f0-aebf-aafd-b17b375e58d9.png)

DEVICE TYPEタブを開いて、リストからデバイスを選択します。

![スクリーンショット 2020-11-18 11.25.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/40994/9a27613e-79bf-90db-f7a7-a292a3cd357d.png)

左のメニューからCALLBACKSを選択します。コールバックの設定画面になるので、右上の「New」を押します。

![スクリーンショット 2020-11-18 11.25.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/40994/52be199b-6c73-f78b-b54f-0ce3dd97172c.png)

一番上の「Custum callback」を選びます。

![スクリーンショット 2020-11-18 11.36.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/40994/2d2807e4-6c33-6e0d-0a0f-21fc06995a1b.png)

Callbackの設定をしましょう。TypeをSERVICEにすると、DATA_ADVANCEDが選べるようになります。

※本当はここで、[Inosensor ES Devkitを使ってみた！ ④（Sigfox CallBacks入門編）](https://qiita.com/tonosamart/items/b5f20f30c445441522c4)で設定したようにメールが飛ぶようにしようと思ったのですが、なぜかできないので、Webhookの設定をすることにします。

Urlpatternには、Webhookを受け取るURLを記載します。今回は、[PHPが無料で使える！XFREEを使ってみた！](https://qiita.com/tonosamart/items/ce862f11f8d54a958fdf)で作成したHelloWorldのURLを使うことにします。

PHPのソースの中身はこんな感じです。

``` index.php
<?php
echo "hello world";
```

本来であれば、jsonのデータをPHPの中で処理して・・・みたいなのを書くことによりInosensor ES Devkitから送られてきたデータを処理できるのですが、面倒なのでこのままやることにします。

Bodyには、jsonのフォーマットを書きます。今回は、以下のように設定しました。

``` Body.json
{
  "device":"{device}",
  "time":{time},
  "data":"{data}",
  "seqNumber":"{seqNumber}",
  "lqi":"{lqi}",
  "fixedLat":"{fixedLat}",
  "fixedLng":"{fixedLng}",
  "operatorName":"{operatorName}",
  "countryCode":"{countryCode}",
  "deviceTypeId":"{deviceTypeId}",
  "computedLocation":{computedLocation}
 }
```

OKを押すと新しいイベントが作成されます。

![スクリーンショット 2020-11-18 11.36.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/40994/0d18b4d1-d6f6-3f8e-fad2-44f052770af0.png)

これで準備完了です！

# メッセージを送信しよう！

この状態でメッセージを送信してみましょう。

本体のボタンを押してください。DEVICEタブのMESSAGESを確認してください。

![スクリーンショット 2020-11-18 11.38.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/40994/067d7219-8bac-0793-d025-4530eccc0af1.png)

まずは、Callbacks（緑色のアイコン）を押してみましょう。jsonで設定した値が送信されているのがわかります。

![スクリーンショット 2020-11-18 14.08.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/40994/ef506446-07f5-154b-0cb2-d3b630d46642.png)

ちゃんと位置情報が入っていますね！

Location（紫色のアイコン）を押してみましょう。

![スクリーンショット 2020-11-18 11.37.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/40994/5aa7d1eb-819c-8508-a8d5-a893452eea55.png)

位置を示す旗が秋葉原あたりに立ってます！やった！（ちなみに実際は、[DMM.make AKIBA](https://akiba.dmm-make.com/)でボタンを押したので、完全に同じ場所ではありませんでした。）

# まとめ

・ 初期状態のLOCATIONは、データを受信した基地局の想定エリアなのであんまり意味がない
・ 端末の位置情報を設定しておくことで、どこにおいた端末かわかる（固定の値なので端末を動かすと意味ない）
・ Data Advanced Callbackを使うと基地局の場所から推測した位置がわかる（だいたいあってる）
・ Sigfoxを使うと、GPSのハードを搭載しなくても、だいたいの位置情報がわかる！

ということで、「GPSのハードを搭載しなくても、だいたいの位置情報がわかる！」というのが便利だと思いました。わーわー。

## 参考リンク

### 購入情報

[Inosensor ES Devkit：販売ページ](https://www.robotma.com/webshop/products/detail/1)
[接点入力用ハーネス：販売ページ](https://www.robotma.com/webshop/products/detail/2)
[Inosensor ES Devkit & 接点入力用ハーネスセット：販売ページ](https://www.robotma.com/webshop/products/detail/3)

### 製品マニュアル

[Inosensor ES Devkit 製品マニュアル](https://qiita.com/tonosamart/items/d825fbcccaa153d2e5da)

### チュートリアル

##### 初級編

[Inosensor ES Devkitを使ってみた！ ①（購入〜Devkit登録編）](https://qiita.com/tonosamart/items/f3cbc3b8fbdc84c7ce33)
[Inosensor ES Devkitを使ってみた！ ②（付属品の取り付け編）](https://qiita.com/tonosamart/items/9af3fe28963411edb8e2)
[Inosensor ES Devkitを使ってみた！ ③（はじめてのSigfox通信編）](https://qiita.com/tonosamart/items/b79421a954bc63642f78)
[LPWAって本当にローパワーなの！？ Sigfox端末（Inosensor ES Devkit）が本当に低消費電力か測定してみた！](https://qiita.com/tonosamart/items/8c48f4669fd23bd43d2e)

##### 中級編

[Inosensor ES Devkitを使ってみた！ ④（Sigfox CallBacks入門編）](https://qiita.com/tonosamart/items/b5f20f30c445441522c4)
[Inosensor ES Devkitを使ってみた！ ⑤（接点入力用ハーネスを使ってみよう！）](https://qiita.com/tonosamart/items/342862211f38597f892d)
[Inosensor ES Devkitを使ってみた！ ⑥（位置情報活用編）](https://qiita.com/tonosamart/items/619770390fa8dd5c15b4)
[Inosensor ES Devkit にオムロンの振動センサ（転倒センサ）を接続してみた！](https://qiita.com/tonosamart/items/53a45948a2cc6e18ff38)

##### 上級編

[Inosensor ES Devkit 用SDK（IFS-M01 SDK）に挑戦！①（開発環境編）](https://qiita.com/tonosamart/items/8a7d86626959b959801d)
[Inosensor ES Devkit SDKに挑戦！②（ケーブル編）](https://qiita.com/tonosamart/private/ff1d06107c83d6a3b724)
[Inosensor ES Devkit 用 ファームウェア（IFS-M01-FIRM）の書き込みに挑戦！](https://qiita.com/tonosamart/items/63e143554646fe7f7b40)
[Inosensor ES Devkit 用 ATコマンドファームウェア（IFS-M01-FIRM-AT）を使ってATコマンドに挑戦！](https://qiita.com/tonosamart/items/27debeb1c6d40095cdcb)

### リンク集

[Inosensor ES Devkit 関連リンク集（随時更新）](https://qiita.com/tonosamart/items/64baaa0c666d4539448f)