ペイロード(Payload Formats)

ペイロードとはその名前の通り、電文を運ぶところである。MQTTに関していえば、このペイロードの使い方の規定はあまりない。最大256Byteというものはあるものの、デバイスのデータを利用するものが取り決めを行っている。
今回の事例ではCayenneを使用するのでCayenneに即した設定を行う。

デバイスの定義

作成したアプリケーションを開くと、”デバイス(端末)”の定義がある。
デバイスの定義ではデバイスIDを入力するが、のちに出てくるCayenneとの連携がうまくいかないときに、デバイスIDをCayenne側で合わせたら動作した。変えたことが良かったのか、連携するときにデバイスIDが重要なのかは不明である。

デバイスEUIとApp Keyは自動生成されるが、この定義はセンサー側でアプリを作るときに連携される。

The Things Networkとは、とその定義

Project AはRaspberry PiにDevice(Node)と接続するためのLoRa無線機器であるLoRa/GPS HATを接続した。このProject Aの部分はGatewayなので、二つの通信の橋渡しを行う。このProjectではInternet上にあるTTN(The Things Network)との接続について述べる。

TTN(The Things Network)とは、たぶん世界最大規模の無料LoRa WANネットワークと紹介されているケースが多い。 ここを把握しておくことは重要であると思われる。

1.Internetへの接続
2.TTN へのアカウント定義
3.ゲートウェイの設定
4.アプリケーションの設定

1.Internetへの接続
LoRa ゲートウェイは各種のセンサの情報を集めてInternet上のTTNへ情報送る役目を持つ。そのために、LoRa ゲートウェイであるRaspberry PiはInternetへの接続を行う。今回は、自宅の無線LANに接続を行っている。このゲートウェイを移動させる場合は、モバイルルータなどに接続させることになる。 こらはRaspberry Piの通常の設定で問題ない。(Raspberry Piを立ち上げるためにInternetに接続しているはずなので、その設定で使われる方が多いであろう)

2.TTNへのアカウント定義
TTNへのアカウントは下記のURLより実施する。
https://account.thethingsnetwork.org/register
ここでUser NameやEMail Addressを入力するが、アクティベートが必要となるために、受信できるアドレスにする必要がある。また、一度使用したアドレスは再利用ができないので注意すること。

3.ゲートウェイの設定
サインインすると下記の画面となる。 この画面はコンソール画面と呼ばれ、作業する上でのホーム画面と考えればよい。

このTTNはMQTTにおけるBrokerの役割をなす。このBrokerとはセンサから適当なタイミングで送信されたMQTTのデータを受け取り、適切な受信者との橋渡しをする。
センサからは殆どのケースにおいてゲートウェイ経由で送られるので、まず右のゲートウェイの設定が必要である。
ここをクリックした後にゲートウェイを登録に進む。

また、EUIという言葉がこれから多く出てくるが、これは識別子の意味である。ゲートウェイEUIと言ったらゲートウェイを識別するためのIDでありデバイスEUIとであれば、デバイスを識別するIDである。もちろん世界で一つである必要がある。
ゲートウェイEUIといえば、ゲートウェイの識別IDである。TTNではMACアドレスの中間部分をFFFFにしたものが採用される。ほかのセンサ単位に割り振られるデバイスEUIなどは自動発番される。

記載した内容は適当であるが、Raspberry PiがInterenetに接続するインターフェースのMAC Addressを利用する。
今回は、Raspberry PiにDual_Chan_Pkt_Fwdを利用している。この場合、
I’m using the legacy packet forwarder”にチェックを入れる。
周波数計画は、日本で使用する場合、”Asia 923-925MHz”を選択しなくてはならない。
Routerはおすすめで、”ttn-router-asia-se”が出てくるので、これを用いる。
当然Raspberry Piがわでもこの設定をしている必要がある。

場所についてはMapが現れるので、ダブルクリックすれば緯度経度が自動入力されるので非常に便利である。

4.アプリケーションの設定
アプリケーション設定ではゲートウェイから上がってくるデータの振り分けやほかのアプリケーションとの連携の定義を行う。ほとんどのケースにおいて多くのデバイスを分類して、その分類ごとにアプリケーションを作ることとなる。
アプリケーションの登録には、自由に設定するアプリケーションID、その説明文、(自動的に割り振られる)アプリケーションEUI、ハンドラー登録を行う。これは、想定だが、ここで定義するハンドラー登録には”ttn-router-asia-se”を定義する。
また、過去に一度登録したアプリケーションIDは使えないようである。

ここで定義したアプリケーションにデバイスと連携するサービスを割り付けていく。
一覧から作成したアプリケーションを開けてみると、
アプリケーションオーバーフロー
アプリケーションEUI
デバイス
コラボレータ
アクセスキー
が表示される。

アプリケーションオーバーフロー
ちょっとどっきりするエラーやワーニングを示している項目に思えてしまうが、
どうやら”アプリケーションオーバービュー”と言いたかったのか? 不明である。

アプリケーションEUI
これはこのアプリケーションを示すIDでありこのTTN内では固有のものとなる。(自動発番)

デバイス
ここにデバイスを登録することによってデバイスからのデータを受けれるようになる。

コラボレータ、アクセスキー
ここは、意識的に定義はしていない。定義したユーザやデバイスとメッセージをつなぎつけるキーが自動生成されるようである。