LPWAN Loggerの使い所 その1
先日、当社よりLPWAN Loggerをリリースしました。 現時点では、The Things Stack V3 Community Edition と LINE Bot を介して所定の設定をすれば、自分の指定する Google Sheet にデータを(無償で)ログできる簡単なサービスです。
今回は、「LPWAN Logger はどんな時に使えるか?」について、一例をご案内したいと思います。
1. おさらい LPWAN Logger とは?
LPWAN Logger とは、
- TTN に登録したデバイスのデータを Google スプレッドシートに記録する中継を担うサービス
- デバイスの DevEUI と Google スプレッドシートの URL を LINE Bot から登録するだけで、 簡単にデータを記録することができる
というものです。詳細は、LPWAN Logger サイトをご覧ください。
2. 出力されるデータ
LPWAN Logger に正しく設定を行うと、自分で指定した Google Sheet に Uplink のデータが記録されます。
ご覧の通り、TTN 側で受信した際の主要なデータが保存されています。デバイス入手直後などに、アプリケーションレベルで動作結果を確認するには十分なログと思います。
Tips として、受信時刻が UTC ですので、エクセル/GoogleSheet 関数を使って日本時間に変換すると、よりリアルな動作がイメージできると思います。変換方法は、FAQ Q-08をご覧ください。
3. 活用例
3.1. コンソール画面イライラからの解放
TTNのWebコンソール画面では、飛んでいるはずのデータが表示されない事象が時々発生します。単に手元で画面がスリープしてデータが更新されないこともありますが、ネットワークが不安定で期待したようにデータが送信できないこともあるようです。無償で提供されているサービスであり、仕方がないとも思いますが、これが何度か大切なタイミングで見られなかったりすると、結構イライラします。
このイライラをなくせるというだけでも、LPWAN Logger の使いどころでは?と思っています。
3.2. データ受信具合の評価
LoRaWAN は免許不要で利用できるところが良いです。一方で、それがために、ゲートウェイ(基地局)を自前で立てて利用する場合、どの程度の範囲でデータ通信が可能なのか?を把握しておく必要があります。
そんな時も、LPWAN Logger で記録されたデータを分析することで、ざっくり評価することが可能です。
LoRaWAN 仕様では、通常の Uplink データ(センサーノードが上位へ送るパケットという言い方がわかりやすいでしょうか)は、2種類定義されています。Unconfirmed と Confirmed です。多くのセンサーノードは電力消費をケチるために、初期設定では、Unconfirmed モードになっていると思います。これは、要するに上位へ送信した後、ACK を求めるか求めないか?の違いになります。
Unconfirmed モードの場合は、送信して終わりです。届いたか否かは関係ありません。 Confirmed モードの場合は、送信して ACK を求めるため、ACK が戻らない場合は(ファーム次第ですが)再送を数回行います。
電力消費を極力小さくする場合は前者、送達率をあげたい場合は後者を選択することになります。
そこで、ほぼ同じ条件(同一デバイス、同一設置環境、ただし計測時間帯は別)下で2モードの受信(送達)具合を比較することにしました。LPWAN Logger を使って、簡単にできます。
ログの中に、f_cnt というカラムがあります。これは、センサーノード側として、Join 後何回目の送信か?を表すカウンタです。Join のたびに初期化されます。この値が連続的に増えていくことが期待されます。もし値が飛び飛びの場合は、受信できていない Uplink が存在するということです。
モード | f_cnt 最大値=送信回数 | f_cnt が連続的でない回数1 = 受信失敗回数 | 受信成功率 |
---|---|---|---|
Unconfirmed | 174 | 20 | 88.5 % |
Confirmed | 559 | 20 | 96.4 % |
実行時の環境が必ずしも同一でなく、またオフィスルータの寸断も時々発生しているため、統計的な正しい評価までは至りませんが、ざっくりといえば、当たり前ですが、再送処理が入る Confirmed モードの方が、送達可能性が高くなることが、データからも読み取れると思います。
メモ
当方のこれまでの経験から、TTN から LPWAN Logger のような外部アプリケーションの部分でデータが届かない、ということもまれに見受けます。 利用するアプリケーションの要求次第で、利用する手立てを検討することが重要と感じています。
参考
-
より正しく言えば、f_cnt の飛び方によって失敗回数のカウントが異なります。例えば、「
f_cnt-直前f_cnt=2
」であれば 1 回失敗しています。「f_cnt-直前f_cnt=3
」であれば、直前で 2 回失敗しています。これを考慮して失敗回数をカウントしています。 ↩︎