Sigfox Shield を SORACOM Console に管理を移してみる



#Sigfox デバイスの管理を SORACOM に移した理由
Sigfox との出会いは、インターンシップや新人向け研修で IoT を扱い始めた時、屋内で Wifi でデバイスからルーターにデータを飛ばしてるだけじゃ、なんとなくインターネットに接続してる感覚が持てず、直接デバイスからデータ飛ばそうと思ったのが始まりでした。
でも、LTE は高いなぁ、とか思ってたら LPWA の一つである Sigfox を知ることになり、データサイズとかに制限はあれど、年間通信費 1440 円というコストパフォーマンスに食いついたのが始まりでした。
その後、SORACOM さんの「[Grove IoT スターターキット for SORACOM](https://soracom.jp/products/kit/grovestarter_kit_lte/) (Wio LTE JP Version)」を使って遊んでたり、LTE-M Button とかも購入したりして、このあたり一括で管理したいと思い、別途購入していた Sigfox Shield for Arduino を Sigfox Backend から SORACOM コンソールへ管理を移行させてみたので、その手順と結果を共有します。

#Sigfox デバイスの移行手順
##Sigfox backend で事前に確認しておくこと
SORACOM コンソールで Sigfox デバイスを管理できるように移すためには、以下の 3 つの情報が必要です。

- Sigfox デバイス ID
- PAC (Porting Authorization Code)
- Product certification ID (*プロトタイプとして登録する場合は不要)

これらの情報は、Sigfox デバイスを Sigfox backend に登録した各デバイスの情報のページ  (https://backend.sigfox.com/device/<番号>/info) で確認できます。
![DeviceID_PAC.PNG](https://qiita-image-store.s3.amazonaws.com/0/147345/1dbfc580-2afc-4595-cf37-e0e708dfc681.png)

特に、PAC は登録すると元々の QR コードで読み取った値から変更されているので、必ず移行の前は Sigfox backend の上記のサイトで確認しておく必要があります。

##SORACOM コンソールの操作
1. SORACOM コンソールの左のメニューから、"Sigfox デバイス管理" を表示。
3. [+ デバイス登録] をクリックしたら、ダイアログの中にある、Sigfox デバイス ID、PAC を入力して、登録。
![SORACOM_RegisterSigfox2.PNG](https://qiita-image-store.s3.amazonaws.com/0/147345/fea5807b-0814-000a-1266-eede4c93925e.png)
4. 登録直後は、登録状態が "登録保留" となりますが、しばらくすると、"登録完了" の表記に変わります。
5. 念のため元々登録してた Sigfox backend でデバイスの確認をすると、「This device is going to be transferred soon」という表記がついています。
![SigfoxBackend_afterTransfering.jpg](https://qiita-image-store.s3.amazonaws.com/0/147345/9c002633-6b01-f764-8b41-0dd7bc778a49.jpeg)

##Sigfox グループへの登録
SORACOM Console では、Sigfox デバイスの Callback 設定を Sigfox グループに対して行うため、Sigfox グループを作成して登録します。ついでにデバイスの名前も付けておきましょう。

1. デバイスの名前は、登録後の "名前" の列にマウスカーソルを載せると鉛筆アイコンが出るので、クリックして直接入力できます。*もし、入力しても反映されなかったら、一度違うメニューに移ってからもう一度 Sigfox デバイス管理画面に戻ってきてください。
2. SORACOM コンソールの左メニューから、"Sigfox グループ" を選択して、新しい Sigfox グループを追加。
3. Sigfox デバイス管理画面に戻り、Sigfox デバイスを選択して、"操作" ボタンのプルダウン メニューから "所属グループ変更" を選択し、ダイアログ画面の "新しい所属グループ" で、手順 1. で作成した Sigfox グループを選択。
![SigfoxGroup1.PNG](https://qiita-image-store.s3.amazonaws.com/0/147345/0039d6d2-d306-efcb-8be1-e1007e91536b.png)

##送信データの確認
Sigfox backend で設定していた Callback 機能は、SORACOM コンソールで作成した Sigfox グループを編集することで、可能になりますので、これはまた別途書きます。
今回はデータがちゃんと受信されて SORACOM Console 側でデータを扱えているかどうかを確認します。

1. Sigfox デバイスの電源を入れてデータの送受信を始めます。
2. Arduino のシリアルモニタで、Sigfox デバイスがデータを送信したことを確認します。
3. "Sigfox デバイス管理" を見ると、RSSI と 最終受信日時が更新されていて、データがきちんと受け渡されたことを確認できます。
![DataReceived.PNG](https://qiita-image-store.s3.amazonaws.com/0/147345/bde6771d-0112-051d-110c-5b5f7e86720a.png)

###データフォーマットの確認
具体的にどんなデータのやりとりができているのかを手っ取り早く確認するために SORACOM Harvest を使ってみます。まずは SORACOM Console の左メニュー "Sigfox グループ" を開き、該当のグループを選択します。

1. もし、元々 Custom Payload Config 設定をしている場合は、先に "SORACOM Air for Sigfox 設定" で、バイナリパーサー設定を ON にして、フォーマット部分に Sigfox backend の Custom Payload Config で記載してた Payload をそのままコピペします。
![SORACOMAir4SigfoxSetting1.PNG](https://qiita-image-store.s3.amazonaws.com/0/147345/9a869ef9-0108-06af-a830-07123bbe7589.png)
2. 次に、データを SORACOM プラットフォーム上で収集、蓄積させるために、SORACOM Harvest 設定を ON にしておきます。
3. 左メニューから "Sigfox デバイス管理" を表示し、対象の Sigfox デバイスを選択した状態で、[操作▼] ボタンのプルダウンから "データを確認" を選択。
![SigfoxDataCheck1.PNG](https://qiita-image-store.s3.amazonaws.com/0/147345/98cb753a-ce57-e6d6-8846-480149b9d147.png)
4. すると、グラフの表示と共に、下の方に具体的な利用できるデータが表示されます。
![DataReceived2.PNG](https://qiita-image-store.s3.amazonaws.com/0/147345/1cda99c8-0da6-6178-b1f3-46ec412ee518.png)
5. Arduino 側のシリアルコンソールでの出力と比べることで、受け取ったデータ (この例では "data":"132513df03") 表示され、またうまくバイナリパーサーが使われて、各温度・湿度・モジュールの温度・気圧のデータがそれぞれ変換されて処理されていることがわかります。
![DataReceived3.PNG](https://qiita-image-store.s3.amazonaws.com/0/147345/57a7ca4b-7f38-63f3-8517-c6e7ebec6c93.png)

#注意点など
1. Sigfox Shield for Arduino (UnaShield V2S RCZ3) は、購入価格の中に 1 年間の通信費 1440 円込みですが、SORACOM Console に移動させると、その時点で、Sigfox デバイス登録料金と年間通信料金が発生してしまいます。(つまり、1 年間使い切る直前に移行しないと、もったいない。)
2. Sigfox backend の Callback で設定してた Custom Payload Config はそのまま使えますが、WebAPI などで Url Pattern で記載していたところは、SORACOM Beam などに置き換えが必要になります。

次回は、Callback の設定などについて記載する際に、Sigfox Backend での設定と比較しながら、書いてみようと思います。