温湿度・大気圧とGNSS位置情報をSigfox通信で取得できるIoTキットを試してみた③

前回までの記事で、IoTキットの組立てとソフトウェアを設定する「①：セットアップ」、取得したデータをクラウドに伝送するための「②：Sigfoxネットワーク通信の動作確認」の方法について紹介してきました。最後となる今回は、「③：クラウド利用のための設定例」を解説し、センサやGNSSで取得したデータを「AWS IoT」クラウド・サーバに転送し、ビジュアル的に表示させる方法について解説します。

[①：セットアップ](https://qiita.com/ykawano/private/90fe568b64f6c7a11c8a)
[②：Sigfoxネットワーク通信の動作確認](https://qiita.com/ykawano/private/815ed033c09874e771c2)
③：クラウド利用のための設定例


![overviewC_3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/6a1a57b8-6980-c658-0577-a8468c26d53b.jpeg)





# 8. クラウドでの利用例


## 8-1. 概要

Sigfoxクラウド上にデータを収集する設定を終えたら、[CALLBACKS機能](https://qiita.com/ghibi/items/53259381a30363538a6d)を使って直接他のクラウド・サーバへと転送して活用したくなるところですが、その前にSTで試験的に提供している[ST Dashboard](http://st-asset-tracking.s3-website-us-east-1.amazonaws.com/#/dashboard)を利用して、収集したデータをグラフやマップとして表示させてみます。ここでは、Amazon社のAWS IoT上へのデプロイを例に、温度などのセンサ・データをグラフで、位置情報をマップ上に表示させます。

#### 【ターゲット】
・**センサ・データのグラフ表示**
・**デバイス位置のマップ表示**
なお、以下2種類の位置測位方法を想定した設定方法を紹介します。

　1. GNSS：GNSSボードによる衛星測位
　2. Geolocation：Sigfox Atlasオプションサービス機能（Sigfox基地局を利用した三点測位）。GNSS不要。

#### 【事前準備】

Geolocationを使用しない場合には、セットアップ時の設定作業を簡略化できます。ただし、すべての設定を行った場合でも、簡単にGeolocationの使用/非使用を切り替えることができるため、デフォルトで設定しておくことをお勧めします。

- GNSS+Gelocationの場合（デフォルト）： 8-1 / 8-2-x 全ての設定を実施
- GNSSのみの場合： 8-1 / 8-2-xのうち、「8-2-2. Geolocation用CALLBACK設定」のみスキップ


最終的に表示させるイメージ

![dashboard_image.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/ec8997c8-5d4e-15fb-5d71-0d8dd4276b38.jpeg)




#### 【ST Dashboardへログイン】

ST Dashboardについての説明資料はSTのウェブサイトから入手可能です。

ST Dashboardの説明資料はこちら： [DSH-ASSETRACKING](https://www.st.com/ja/embedded-software/dsh-assetracking.html)
ST Dashboardへのアクセスはこちら： [ST Dashboard](http://st-asset-tracking.s3-website-us-east-1.amazonaws.com/#/home)

ST Dashboard を利用するためには、Sigfoxクラウド用と別のアカウントを作る必要があります。まずはST Dashboardにアクセスし、左メニューから**Login**画面を開き、**Create account**をクリック。登録済みであればユーザ名とパスワードを入力してログインします。


![dashboard_login.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/1c2df6de-5549-f287-31ef-fe80d4a4c887.jpeg)



登録の際、名前を入力するところが2か所あります。「Username」欄に氏名、「Name」欄に例えば会社名や所属部署などをそれぞれ入力します。ただし、ログイン時に入力するのは、「Username」とパスワードだけです。

- Username： ユーザの氏名
- Name： 会社名 / 所属部署名など
- Password： 任意のパスワード

![dashboard_login_createAccount.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/8721f602-2f84-402e-a3a5-9d3fdc233861.jpeg)



## 8-2. 設定作業


ST Dashboardにログインできたら、その画面はそのままにしておきます。次に、Sigfoxクラウドに送られてきたデータを別のサーバ（ここではAWSサーバ）に転送するため、SigfoxクラウドでのCALLBACK設定を行います。Sigfoxクラウドのページを開き、こちらもログインしておきます。

Sigfoxクラウドのログインはこちら： [Sigfox cloud](https://backend.sigfox.com/auth/login)

ここからは、ブラウザでST DashboardとSigfoxクラウドの画面を両方開いたまま、設定作業を進めます。基本的にプルダウン・メニューの選択とテキストのコピー ＆ ペーストで設定作業はほぼ完了します。



##### 設定作業の流れ

設定作業は主に以下3パートに分かれます。Geolocationデータ用（= Sigfox Atlas）と、デバイスから送られてくるデータ用とを別々にCALLBACK設定するところが少し面倒です。また、デバイスから送信されるGNSS位置データはGeolocationデータとは違う扱いになりますので、注意してください。Geolocation用CALLBACK設定により転送されるのは、基地局で受信する信号をベースに算出される位置情報（アトラス位置検出サービス）です。デバイスが独自に取得するGNSS位置情報の方は、DATA転送用CALLBACK設定により転送されます。

+ ST Dashboardへデバイス登録
+ Geolocation用CALLBACK設定　（Sigfox Atlas位置データ用の転送設定。省略可能）
+ DATA転送用CALLBACK設定　（温湿度･気圧、GNSS位置データ用の転送設定）


![dashboard_sigfoxbackend.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/79232ca5-4e6c-32ef-e073-019df33d0458.jpeg)


### 8-2-1. ST Dashboardへデバイス登録

最初に、Sigfoxクラウドの**DEVICE**ページで対象デバイスの**デバイスID**を確認しておきます。

![sigfox_device_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/9bbaa08c-d639-547f-ef74-29787d12c809.jpeg)



次に、ST Dashboardページに移動（WEBブラウザ上で切り替え）し、左側メニューから**Dashboard**をクリック。続いてDevice listから**Add new device**をクリック。その後、**Device Sigfox**を選択して対象デバイスのIDを入力し、Submitをクリック。すると、tokenが表示されるので、このtokenのテキストをメモ帳などにコピー ＆ ペーストしておきます。このtokenは後ほどSigfoxクラウド・ページ内で使います。Tokenを保存したら、最後にCloseをクリックしてウインドウを閉じます。

- Sigfoxを選択
- 登録するデバイスIDを入力



![dashboard_addNewdevice.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/2b8c93a1-bbaf-06b4-3a74-0cdfa5900fac.jpeg)




#### 【CALLBACK設定情報の場所】


デバイス登録を終えたら、ST Dashboardページの左側メニューにある**About**をクリックして、CALLBACK用アクセス情報を確認します。ここには、SigfoxクラウドからST Dashboardへとデータを渡すために必要な設定情報が表示されています。これらすべてを１つずつ、先ほどのSigfoxクラウド内のCALLBACK設定の中にコピー ＆ ペーストしていきます。

まず、下図内⓪で”Sigfox”を選択し、その後①～④まではNEXTクリックでスキップ。
デフォルトの設定手順の場合、⑤のところを表示させた状態で置いておきます。

⑤はSigfox Geolocation用の設定なので、「GNSSデータのみでマッピング出来ればいい」という場合は、⑤設定を省略可能です。この場合は、⑥のDATA転送用CALLBACK設定を表示させた状態で置いておきます。


![dashboard_about.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/f6489343-dbe1-0b3b-7c52-a5a65346848a.jpeg)



#### 【CALLBACK作成の準備】

ここまでの設定を終えたら、再びSigfoxクラウド・ページに移動します。そして、対象デバイスIDが属する**[Device type](https://www.kccs-iot.jp/20180626-02-technical/)**名をクリックします。ここから後は、CALLBACKをDevice typeに対して設定することになります。

![sigfox_devicetype.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/06c134af-fcfc-3b36-c70a-fee90ba35609.jpeg)

続いて、DEVICE TYPEのページを開いておきます。ただし、Geolocation設定を省略する場合には、次の“8-2-2. Geolocation用CALLBACK設定”をスキップして、“8-2-3. DATA用CALLBACK設定”へと進んでください。

![sigfox_devicetype_info.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/8a96ec50-874f-c356-e1ea-6001fd68ddb1.jpeg)


### 8-2-2. Geolocation用CALLBACK設定

Sigfoxクラウド・ページの左側にある**CALLBACKS**をクリックすると、既に登録されているCALLBACKがリスト表示されます。ここで、右上の**New**をクリックして、新しいCALLBACKを作成します。

![sigfox_callback_new_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/e1c00d19-d693-6bb3-17e3-5e0520289359.jpeg)



切り替わったページにある**Custom callback**を選択すると、CALLBACKの編集ページが開きます。ここで、指定したURLのアプリケーション・サーバへのデータ転送や、指定したメール･アドレス先へのデータ送信を設定できます。

![sigfox_callback_customSelect_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/2d286395-66e8-f5f7-6578-695ba07a4f29.jpeg)

新規作成用のページが開いたら、ひとまず置いておきます。

![sigfox_callback_custom_editForm.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/f81d8663-2132-fa68-0f11-2909a0cfa811.jpeg)


再び、ST Dashboardのページに移動します。**About**内、ステップ**⑤**を表示させた状態になっていると思います。ステップ⑤は、**DATA_ADVANCED**用の設定情報であり、Sigfox Geolocationデータの受け取りに向けたものです。下図内、オレンジでハイライトされたテキストがSigfoxクラウド・ページのCALLBACK設定と同じになるようにしておきます。

![dashboard_about_5.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/551b98d2-c24f-c2f5-e71d-6c50b849fd86.jpeg)







先ほどのSigfoxクラウド・ページのCALLBCK編集ページと見比べると、設定すべき場所と内容がわかると思います。

そして、ST Dashboardに表示されているCallbacks configurationの内容を、Sigfoxクラウド・ページのCALLBCK編集ページにある同じ項目の場所に、１つずつコピーします。プルダウン・メニュー選択部分は同じテキストとなるように選択し、他の4か所については、**上図**のオレンジ部分のテキストを、直接マウスでドラッグ ＆ コピーしてください。tokenのvalueには、「ST Dashboardへデバイス登録」を行った際にコピー保存しておいたテキストを入力します。このページ内のBody部分に記されたjsonコードによって、Sigfox Geolocationデータを指定したサーバやアドレスに転送することになります。すべての項目の入力が完了したら、OKをクリックしてステップ**⑥**へ。


![sigfox_callback_custom_edit.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/ec9c6872-1461-8fb9-1cca-f02a65cb405b.jpeg)





jsonコードの内容。Sigfox Geolocationデータを渡します。

```body.json
{"device":"{device}",
 "time":"{time}",
 "computedLocation": {computedLocation},
 "source": 2,
 "status": 0}

```

#### Geolocation用CALLBACK設定まとめ（DATA_ADVANCED）

|項目       |設定値      |Note       |
|:---------:|:---------:|:---------:|
|Type     |**SERVICE**/**DATA_ADVANCED**     |プルダウン･メニュー選択     |
|Channel     |**URL**     |プルダウン･メニュー選択     |
|Url pattern     |図参照   |転送先URL（コピー ＆ ペースト）    |
|Use HTTP method     |**POST**     |プルダウン･メニュー選択     |
|Send SNI     |（チェックあり）     |  |
|Header     |**token**     |（コピー ＆ ペースト）   |
|Value    |図参照    |アクセス・トークン（コピー ＆ ペースト）     |
|Content type    |**Application/json**    |（コピー ＆ ペースト）    |
|Body    |図参照    |jsonコード（上記Body部参照）     |



設定が終わると、このようにCALLBACKが１つ出来上がります。


![sigfox_callback_done.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/6705fb1c-0e19-b186-57d1-feb29cfb2240.jpeg)

ここまでで、Geolocation（アトラス位置検出サービス）用のデータ転送設定が完了しました。

### 8-2-3. DATA転送用CALLBACK設定
Sigfoxクラウドの、**Device Type** > **CALLBACKS**のページからの作業になります。
ここではDATA転送用のCALLBACKを作成しますので、まずは**New**をクリック。

ここからの作業は、Sigfoxクラウド内**Device Type** > CALLBACKSのページから行います。ここでは、DATA転送用のCALLBACKを作成します。まずはNewをクリックしてください。

![sigfox_callback_new_2nd.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/e2d03fae-763f-b253-7a29-eddd498ab9f9.jpeg)


次に、切り替わったページに表示されている**AWS IoT**をクリックして、AWS用の設定ページを開きます。

![sigfox_callback_awsSelect.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/2bf46fcc-3d88-10b0-032f-f29df302f2db.jpeg)



ST Dashboardページに戻り、ステップ**⑥**から続行します。
⑥はUPLINKデータ（Sigfoxメッセージ）用の設定情報です。ここでも、下図内オレンジでハイライトされたテキストがSigfoxクラウド・ページと同じになるように設定します。


![dashboard_about_6.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/dfba00e8-9a89-b62e-4b37-f235976adc0a.jpeg)



**上図**のCallbacks configurationの内容を、すべて、**下図**の同じ項目の場所にコピーします。ただし、json/body部分はそのままコピーするとエラーになってしまうため、下図に示したjsonコードを入力します（Geolocation用CALLBACK設定とは、この点が異なることに注意して下さい）。すべての項目を入力したら、Sigfoxクラウドのページ中のOKをクリックしてステップ**⑥**へ進みます。


![sigfox_callback_aws_edit.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/88a2a45a-709d-1908-a070-6b1a272f77c2.jpeg)




jsonコード（body部分）は以下のように入力します。こちら全文をコピー ＆ ペーストしてください。


```body.json
{ "device" : "{device}",
"data" : "{data}",
"time" : "{time}"
 }

```
#### DATA転送用CALLBACK設定まとめ

|項目       |設定値      |Note       |
|:---------:|:---------:|:---------:|
|Type     |**DATA** / **UPLINK**     |プルダウン･メニュー選択     |
|Config method     |CROSS_ACCOUNT     |（変更なし）     |
|External Id     |    |（変更なし）     |
|ARN Role     |図参照   |（コピー ＆ ペースト）    |
|Topic     |**Sigfox/tracking**     |（コピー ＆ ペースト）   |
|Region    |**US East (N. Virginia)**    |プルダウン･メニュー選択    |
|Custom payload config    |   |（ブランク）    |
|Body    |図参照    |jsonコード（要変更、上記Body部参照）     |


設定が終わると、新しいCALLBACKが2つ作成されています。（GelocationのCALLBACK設定をスキップした場合には1つ）


![sigfox_callback_custom&aws_edit_ok.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/830cebbb-135f-faf2-4e6c-fde3c41a85bb.jpeg)


以上で、デバイスから送信されてくるデータをST Dashboardへ転送する準備ができました。


## 8-3. 通信確認

最初にデバイスをパソコンにUSB接続して、電源をオンにします。GNSS電波を捕捉してレディ状態になれば、送信できるようになります。念のため、パソコンのターミナルで動作状況を確認しながら進めると良いでしょう。


![kit_poweron.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/2885b4a4-bd31-352d-187a-3dc2622e1918.jpeg)



まず、ST Dashboardの**Dashboard**ページを開きます。Device listから対象デバイスのIDをクリックし、ステータスを確認できるようにしておきます。

STM32 Nucleoボードのユーザ・ボタン（青）を押して、データを転送してみます。このデモでは、センサ・データとGNSSデータを交互に送信するので、少なくとも2回以上試行してみてください。なお、送信を複数回試行する際には、数十秒以上間隔を空けてください。
パソコン上でターミナル表示を見ながら行うと、メッセージ送信完了ごとに“OK”表示のステータスが確認できるので便利です。

ボタンを押して少し待った後、温度などのデータが表示されれば成功です。


![dashboard_dashboard_deviceSelect.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/0a5f85a4-c562-93a9-8371-926e00d494ab.jpeg)


グラフアイコンをクリックすると、それぞれグラフ表示できます。

![dashboard_dashboard_pressureGraph.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/7620460c-6661-2bc1-0f27-48d5e82ea78e.jpeg)


**Dashboard settings**をクリックすると、表示期間を設定可能です。

![dashboard_dashboard_pressureGraph_period.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/fc19c67e-b20d-a6b4-f9b3-9b83c9566635.jpeg)


## 8-4. マップ表示

**GEO Tracking**の地図アイコンをクリックすれば、デバイスの位置情報をマップ上に表示することができます。
位置情報のソースとしては、SigfoxのGeolocation serviceによる計算値と、当デモ機内モジュールによるGNSS情報の2つがあります。デフォルト内容で設定すると、通常下図のように2種のデータが色違いで表示されます（ここでは赤と青）。

デモのプログラム設定では、センサ・データとGNSS情報の2種を交互に送信するようにしています。GNSS情報受信時はそのまま活用しますが、センサ・データ受信時はDATA_ADVANCED CALLBACKのところで設定したcomputed Locationデータを使うことになります（結果的に交互に表示）。

GNSS情報だけを地図上に反映させたい場合には、以下説明を参照しつつ「GNSS情報のみ地図上にプロット」からCALLBACKの設定を変更してください。


![dashboard_dashboard_map.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/d4c3cada-d6f6-2ec5-9081-3c61c6a0ed68.jpeg)



表示内容について以下の設定が可能です。

•	Select dates range：　日付単位で表示期間を設定
•	Filter available positions：　最大表示ログ数を設定


![dashboard_dashboard_map_select.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/0fae07cd-735b-2557-90c0-2e2a2ec0b201.jpeg)



表示期間を設定する場合、カレンダーで開始日と終了日をそれぞれ選択します。修正したい場合、セットされた日を再度クリックすることで、新たに選択できるようになります。

![dashboard_dashboard_map_selectPeriod.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/2e9b3d70-8596-eee5-9c51-880feb29ec9d.jpeg)


期間内のデータを最新のものから遡り、指定したログ数の分だけマッピング表示します。

![dashboard_dashboard_map_selectCount.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/92714c17-7a65-9103-0fda-1b52488db908.jpeg)



GNSS情報だけを地図上にプロットできるようにしたい場合、SigfoxクラウドのCALLBACK設定ページを開き、DATA_ADVANCED CALLBACKを無効にします。次に、該当するCALLBACKの **"Enable"** のチェックを外してください。

![sigfox_callback_inactiveGeolocation.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360475/7f9bfda3-3566-5517-3cd7-16247c2e2f1c.jpeg)




## 8-5. データ・フォーマット

ST Dashboardでは、parser情報を参照することはできません。送信データ・フォーマットについては[記事②](https://qiita.com/Yuji_Kawano/private/815ed033c09874e771c2)を参照してください。

## 8-6. 複数台の登録

ST Dashboardには、複数台のデバイスを登録することができ、この場合には登録されたデバイスが地図上に同時に表示されます。ただし、今回使用しているデモキットはお試し用であるため、1デバイスにつき1つのDevice typeのみアサインできる仕様（デバイスごとにCALLBACK設定作業が必要）になっています。Sigfox buyから複数回線購入すれば、同じ内容のCALLBACKをグループ内のデバイス群に設定するといったことが可能になるとは思います。

# まとめ

お疲れ様でした。最後までお付き合いいただき、ありがとうございます。この記事で紹介したST Dashboardを使った表示はほんの一例です。さまざまなクラウドへの転送・表示ができるので、興味のあるかたはぜひ挑戦してみてください。