センスウェイのLoRaWANサービスを使ってみる　その１

[センスウェイのLoRaWANサービス](https://service.senseway.net)が開始されたので、早速ゲートウェイとデバイスを入手して動かしてみました。

# サービスエリアとレンタルゲートウェイ

LoRaWANは3G/LTEなどと同じく、デバイスはゲートウェイ(GW)を経由して外部と接続されるサービスです。従って、デバイスから通信できる範囲にGWが存在していることが利用の大前提となります。

一方で、GWの設置が自由に行えるというのもLoRaWANの特徴です。センスウェイのサービスでは、センスウェイ側が設置・提供するGWの他にも「レンタルゲートウェイ」を入手して自前でGWを設置するという選択肢が用意されています。これにより、圏外であってもサービスを利用することが可能です（費用の負担はありますが）。

## ゲートウェイを借りよう

サービスエリアは[公式サイト](https://service.senseway.net/connection-service/)から調べることができます。あいにく、記事執筆時点では所望の場所が含まれていませんでしたので[^1]、レンタルゲートウェイを借りて設置することにしました。

何はともあれ、まずはセンスウェイのサービス「SenseWay Mission Connect」のアカウントを作成する必要があります。[登録画面](https://console.senseway.net/register)の指示に従って作業を進めていくだけですが、本記事執筆時点では「東京都、神奈川県、千葉県、埼玉県、茨城県、群馬県、栃木県、山梨県でのご利用の方のみご登録ができます」との制限[^2]がありますので注意が必要です。

アカウント作成後、管理コンソールにログインするとこんな画面が表示されるはずです。

![スクリーンショット 2018-04-20 04-20 17.10.22.png](https://qiita-image-store.s3.amazonaws.com/0/18746/0326c380-2bd6-cf45-a467-b73f5977e7d5.png)

「GWデバイス管理」タブから「追加レンタル申請」を選び、送付先、GWタイプ（屋内用／屋外用）などを入力すれば申し込み完了です。後は本体が送付されてくるのを待つのみです。

![スクリーンショット 2018-04-20 04-20 17.12.49.png](https://qiita-image-store.s3.amazonaws.com/0/18746/2274da08-e3c2-71c3-1196-12a0687e099e.png)

ここで大きな注意点があります。どこにも書かれていないようですが[^3]、GWは<font color="Red">送料着払</font>で送られてきます。我が家では嫁さんの「送りつけ商法」フィルターに引っ掛かり、危うく受け取り拒否で返送されてしまうところでした。

## ゲートウェイを設置しよう

送料を支払い、ゲートウェイを入手したら次は設置です。推奨手順は

1. GWをWi-Fi、または有線でインターネットに接続する

これだけです。有線ならばEthernetケーブルと電源を挿すだけで完了しますが、Wi-Fi経由の場合はアクセスポイントの設定などが必要になります。[公式サイト](https://service.senseway.net/manual/)にある「レンタルゲートウェイ（G-BOX）使用方法」を参照するといいでしょう。

ただし「GWが8883ポートでインターネットに接続できること」という条件があります。要するにGWとLoRaWANサーバの間はmqttsで通信しているということですね。通常の自宅ネットワークであればまず大丈夫だと思いますが、企業であればまず無理[^4]なので管理者に相談してください。

気をつける点としては、GW付属のEthernetケーブルはとても短い（1m）です。なので、よほど運が良くない限り、窓際など電波が飛びそうな場所にGWを設置するためには別途ケーブルを用意するか、あるいはWi-Fi接続を選ぶ必要がありそうです。

# LoRaWANデバイス

現状、センスウェイのサービスではセンスウェイから入手したデバイスのみ接続できるという仕様になっており、任意のデバイスを接続することはできません[^5]。対応デバイスは[リスト](https://service.senseway.net/corresponding-device/)にあるのですが、現時点ではまだLoRaWAN Shield for Arduinoしかありません。一刻も早く自前デバイスの登録をサポートして欲しいですね。

## デバイスを入手しよう

GWと同じく、対応デバイスも管理コンソールから申し込みが可能です。といっても、単にAmazonの購入ページに飛ばされるだけで、他のAmazon取り扱い商品と同様の手順で購入できます。こちらは嬉しいことに<font color="Red">送料無料</font>です（笑）。発送はセンスウェイからで、Amazonの箱も使われていないので嫁さんの厳しいチェックにも引っ掛かりません。

![スクリーンショット 2018-04-20 04-20 17.46.24.png](https://qiita-image-store.s3.amazonaws.com/0/18746/0055087d-2577-76e2-92e2-bd7b30e7fc9e.png)

## デバイスを接続しよう

このデバイス、本来はArduinoに挿して使う物なのですが、シリアル通信可能なホストであれば何でも接続できます。なので手持ちの[USB-シリアル変換アダプタ](https://www.switch-science.com/catalog/1032/)を使ってさくっと動作検証してみることにします。何といっても初物を触る時には不確定要因をひとつでも減らしておきたいものです。

デバイスのピン配置はこのようになっています（マニュアルより抜粋）。

![スクリーンショット 2018-04-20 04-20 20.07.34.png](https://qiita-image-store.s3.amazonaws.com/0/18746/1a4d8375-c96f-b364-6f5c-0f56380b7079.png)

従って、USB-シリアル変換アダプタから供給される電圧を3.3Vに設定してデバイスに供給し、アダプタのRX端子をデバイスのTX端子（D11）、アダプタのTX端子をデバイスのRX端子（D12）に接続すれば通信できるはずです。

具体的にはこんな感じです。

![IMG_6309.jpg](https://qiita-image-store.s3.amazonaws.com/0/18746/93678bb1-b9e9-4c6b-d4b6-b53c15455cd9.jpeg)

配線できたらターミナルエミュレータからコマンドを送信してみます。初期状態では通信速度9600bpsとなる点に注意が必要です。

![スクリーンショット 2018-04-20 04-20 20.21.27.png](https://qiita-image-store.s3.amazonaws.com/0/18746/d9346732-c56b-35e7-14a9-c4deda6fa0ef.png)

見事に通信できました。

## デバイスを登録しよう

デバイスが正常に動作していることが確認できたので、次はセンスウェイのサーバにデバイスを登録する作業です。先に書いたとおり、現時点ではサーバに登録できるのはセンスウェイから購入したデバイスのみです。それを担保するため、登録にはdevEUI（デバイスに格納されており、いつでも確認できる）とPIN（パスワードに相当）の2つが必要になっています。これらのコードはデバイスに同梱された紙に書かれているので、無くさないようにしないといけません。

登録は例によって管理コンソールから行います。「デバイス管理」タブから「新規デバイスのアクティベーション」を選択します。

![スクリーンショット 2018-04-20 04-20 20.31.02.png](https://qiita-image-store.s3.amazonaws.com/0/18746/f76cdb72-749a-eb02-395c-02a858970519.png)

同梱の用紙に書かれているdevEUI、PINを入力するとすぐに登録が完了します。

![スクリーンショット 2018-04-20 04-20 20.32.24.png](https://qiita-image-store.s3.amazonaws.com/0/18746/fc2df211-6bfe-cb95-8479-3c46ab6ee4a9.png)

## データを送信してみよう

これでデータが送信できる状態になったはずです。本来はLoRaWANサーバからデータを受信するアプリケーションサーバを立ち上げる必要があるのですが、ここは手軽に管理コンソールから確認してみます。

まずはデバイスをLoRaWANサーバにJOINしなくてはなりません。そこで現在の状態を見てみると

```
> lorawan get_join_status
>> joined
```

あれ？すでにJOINした状態ですね。この辺、LoRaWANの仕様をよく理解していないので妥当かどうか分からないのですが、念のためもう一度JOINしておきます。

```
> lorawan join otaa
>> Ok
>> accepted
```

JOIN成功です。続いてデータを送ってみます。

```
> lorawan tx ucnf 1 0102
>> Ok
>> tx_ok
```

これは、ACKを待たない（送りっぱなし）モードでポート1番にデータ0x0102を送れ、という指示になります。するとOkが表示された後、少ししてtx_okが表示されました。これでデータが送られたことになります。

まだ受信部がないので、管理コンソールから送信データ数を確認してみましょう。

![スクリーンショット 2018-04-20 04-20 20.50.24.png](https://qiita-image-store.s3.amazonaws.com/0/18746/fc135d40-017e-cd5f-b54f-cca50d21dc4d.png)

おお、UpLink（デバイスからサーバ向けの通信）カウントが0から1になりました。無事にデータが送信できたようです。

# 引き続き

データを受信するアプリケーションサーバを構築し、実際のデータを送受信してみることにしましょう。

-----

[^1]: 三井不動産が関係するマンションから設置を進めているそうです
[^2]: GWを自前で設置するのであれば、場所はどこでも良いはずですが……何か理由があるのでしょうか
[^3]: 単に発見できていないだけかもしれません
[^4]: これを読んでいるような人であれば自分が管理者かもしれませんね
[^5]: あらかじめ入手してあったSTマイクロの[STM32L0 Discovery kit](http://www.st.com/ja/evaluation-tools/b-l072z-lrwan1.html)が使えずがっかりしています