LoRaWANゲートウェイ Dragino LPS8 を使って The Things Network（TTN）と接続する

# はじめに
LoRaWANゲートウェイである Dragino LPS8 と、[The Things Network（TTN）](https://www.thethingsnetwork.org/) とを接続する方法について紹介します。

以下の記事も確認してくだい。
- [LoRaWANゲートウェイ Dragino LPS8 のセットアップ方法](https://qiita.com/takanorig/items/632bcdb838a0558dd5e1)
- [AWS IoT Core for LoRaWAN と Dragino LPS8 を利用して LoRaWANネットワークを構築する](https://qiita.com/takanorig/items/f4e0279a017644170115)

[The Things Network（TTN）](https://www.thethingsnetwork.org/) は、グローバルなLoRaWANコミュニティとして拡大しているオープンなクラウドIoTネットワークサービスです。無料で利用を開始することが可能なので、LoRaWANの検証にはとてもありがたいサービスです。
本記事執筆時点では、The Things Network は、The Things Stack V3 となっています（通称、TTN V3）。

# LPS8の設定
TTNにアクセスできるようにするため、予めLPS8でLoRa／LoRaWANの設定を行います。

## LoRa

LoRa通信を、日本で動作させるための設定にします。
LPS8の設定画面にアクセスし、**「LoRa」→「LoRa」** の画面を開きます。

**「Radio Settings」** の部分で、以下のように設定してください。

![LPS8-setup11.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22893/90347be4-53c5-627a-2cb4-2fcffc5ec1be.jpeg)

| 項目 | 入力値 |
| ---- | ---- |
|Frequency Plan|「AS923-1」の項目を選択する|

## LoRaWAN

TTNへ接続するための設定を行います。
LPS8の設定画面にアクセスし、**「LoRaWAN」→「LoRaWAN -- Semtech UDP」** の画面を開きます。
ここでは、TTNのネットワークとして、USAのモノを利用します。

![LPS8-setup09.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22893/cc9a367c-d7bc-662f-9f08-d36f390d67ae.jpeg)

| カテゴリ | 項目 | 入力値 |
| ---- | ---- | ---- |
|General Settings|Email|自身のメールアドレス|
||Gateway EUI|デフォルトのまま（LoRaWANゲートウェイを特定するユニークな識別子になります）|
|Primary LoRaWAN Server|Service Provider|「The Things Network V3」を選択|
||Server Address|「nam1.cloud.thethings.network」を選択|

また、ゲートウェイがインターネットに接続できる状態であることを確認してください。

# The Things Network（TTN）の設定

TTNのサイトにアクセスし、アカウントを作成してください。

- https://www.thethingsnetwork.org/

ログイン後、ユーザーメニューの「Console」をクリックし、「North America 1」のネットワークを開きます。

<b><font color="#ff0000">※重要※</font></b>
このネットワークは、LPS8の設定画面で選択したモノと合わせる必要があります。

![TTN-setup01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22893/3c422916-c1c2-eb54-fa36-80839480aff3.jpeg)
![TTN-setup02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22893/c99115ce-1067-9e0e-ce6a-910cb94d96a0.jpeg)

## ゲートウェイの登録

「ゲートウェイ」メニューを選択し、「Register gateway」ボタンをクリックします。

![TTN-gateway01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22893/0fac8da7-de9b-c24b-1e75-a323077748a8.jpeg)

LoRaWANゲートウェイを登録します。

<b><font color="#ff0000">※重要※</font></b>
- ゲートウェイの登録をする際に、ゲートウェイ本体の **デバイスEUI** が必要になります。LPS8の場合は、**「LoRa」→「LoRa」** の画面から確認できます。
- 周波数は **「Asia 920-923 MHz」** を選択してください。

![TTN-gateway02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22893/5d8f0ef2-183f-6a3a-985f-4a390483447f.jpeg)

ゲートウェイが正常に登録されると、ゲートウェイ本体との通信が自動で開始されます。

![TTN-gateway03.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22893/95f46674-3ba8-c910-2929-f3e4b3542e86.jpeg)

## アプリケーションの作成

次にアプリケーションの作成を行います。TTNのアプリケーションは、複数のデバイスを束ねる論理的な構成です。
「アプリケーション」メニューを選択し、「Create application」ボタンをクリックします。

![TTN-app01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22893/d2ca42e4-9584-3e24-633f-e59529691d9d.jpeg)

アプリケーションID、アプリケーション名を指定しますが、ユニークな値になるように指定すれば問題ありません。
ここでは、「takanorig-dragino-sensing」というID／名前を付けておきます。

![TTN-app02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22893/b6cf3f6d-2a6c-7b03-31a3-9b7f85c469ba.jpeg)

アプリケーションが作成されると、以下のような画面が表示されます。

![TTN-app03.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22893/baf56d30-9410-671d-29ac-4b00565e6e69.jpeg)


## デバイス（センサー）の登録

次に、上記で作成したアプリケーションに、デバイス（センサー）の登録を行います。
今回は、Draginoが販売している温湿度計センサーモジュール「[LHT65](https://sales.dragino.jp/ca2/9/p-r-s/)」を利用します。

![lht65-01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22893/fda8d83a-33b2-6577-e37d-2160f2deb796.jpeg)

登録対象のアプリケーションから、サイドメニューの「エンドデバイス」を選択し、「Register end device」ボタンを押下します。

![TTN-device01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22893/dff234b8-0b41-b345-c11c-3fbc82e2bd1d.jpeg)

LHT65は、LoRaWAN Device Repository に情報が登録されているため、「Select the end device in the LoRaWAN Device Repository」を選択し、以下のようにデバイス情報を指定すれば、自動で認識されるようです。

![TTN-device02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22893/a2e6a734-7a0f-d8b9-4211-daf21be5bb2a.jpeg)

| 項目 | 選択値 |
| ---- | ---- |
|End device brand|Dragino Technology Co., Limited|
|Model|LHT65|
|Hardware Ver.|Unknown ...|
|Firmware Ver.|1.8|
|Profile(Region)|AS_923|

ここは手動での指定も可能ですので、お手持ちのデバイスに合わせて設定してください。
また、デバイスの AppEUI、DevEUI、AppKeyも必要になります。
これらの値は、デバイスのパッケージに、記載されていたりしますので、その値を確認してください。

デバイスの登録が完了すると、以下のような画面が表示されます。

![TTN-device03.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22893/000b8e34-1dd9-e784-e4fc-78b1836873f9.jpeg)

## OTAAとABP

LoRaWANのネットワークに、デバイスが参加するためには、アクティベーション（認証）が必要になります。
このアクティベーションの方式には、「OTAA（Over The Air Activation）」と「ABP（Activation By Personalization）」の2つがあります。

| 方式 | 説明 |
| --- | --- |
|OTAA|動的アクティベーションで、デバイスとサーバーが通信キーを生成・共有する方式|
|ABP|静的アクティベーションで、キーを事前設定する方式|

OTAA方式の方が、ABPよりも安全な方式、ということで、問題がなければOTAA方式を利用するのが良いでしょう。
今回のデバイスの登録では、上記を選択する部分がありませんでしたが、OTAA方式で登録されていました。

![TTN-device05.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22893/1f5483be-be69-059b-080a-8ab60d3aadb0.jpeg)


# デバイスからの通信確認

これで、デバイスから、LoRaWANゲートウェイを介して、TTNへデータを送信する準備が整いました。
デバイスを動作させて、データがTTNまで送信されるかを確認します。

LHT65の場合は、「ACT」ボタンを1～3秒押すことで、アップリンクパケットが送信されます。

![lht65-02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22893/2178e9f4-997e-61a8-3e1b-18af69ecae9a.jpeg)

デバイスを動作させて、データが送信されると、以下のようなメッセージのやり取りが確認できます。

![TTN-device04.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22893/9bd3fa78-8963-3a7d-71ac-2dcf574fba9b.jpeg)


# まとめ

LoRaWANゲートウェイ LPS8 を使って、TTNまでデータが送信されることが確認できました。
TTNは、初めて利用してみましたが、UIも分かりやすかったので、詰まらずに進むことができました。

また、デバイスからのメッセージは、バイナリデータで送信されるため、データをパースすることで、センサーの値などが取得できます。


# 参考情報

- [Draginoオンラインショップ](https://sales.dragino.jp/)
- [TTN V3対応最新版LoRaWANゲートウェイLPS8-JP日本語マニュアル](https://www.slideshare.net/copstalk/ttn-v3lorawanlps8jp)
- [LoRaWAN 対応温度・湿度センサ LHT65 ユーザーマニュアル](https://www.slideshare.net/copstalk/lorawan-lht65)
- [The Things Stack Document](https://www.thethingsindustries.com/docs/getting-started/)