Senseway社主催 「たった1日でLPWAのLoRaWANがマスターできる技術セミナー」 5万円の有料セミナーでしたが、自腹で参加してきました。その価値はあったのか?と考えますと、その分の価値はあったと思います。内容盛りだくさんでした。自分で勉強したらとてもじゃないですが時間がかかって仕方ありません。
ビッグデータやWeb系のエンジニアが事前準備ゼロで臨むと手痛い目にあうと思います。あくまでもデータ分析基盤に放り込む前までの話なので、聞きに行ってネットワーク側の限界について知っておかないと、商品レベルの開発はできないでしょう。カバー範囲は幅広いため、難度は全体的に高めだと思います。しっかり予習していきましょう。
※もしあなたが無線通信とIoT全方面的に熟練レベルでばければ、事前に勉強しておいたほうがいいもの。事前知識がぬけているとしんどいです。
- Arduinoで電子工作 https://deviceplus.jp/hobby/arduino-listicle-01/
- Node-REDについて
- IPSecなどの暗号通信の仕組みについて(事前共有鍵方式)
- スペクトラム拡散通信について
内容
午前
- LPWAとは
- ARIB STD-T108について
- LoRa変調について(無線の変調・復調のお話)
- LoRaWANとは(プロトコルのお話)
- 暗号について
午後
- Arduinoハンズオン
- KashiwaGeeksライブラリ
- フレームワーク確認 Task 割り込み スリープ
- LoRaWAN通信
- センサー接続
- データのハンドリング方法
午前 座学
無線通信の基礎的な部分から、プロトコルの詳細および暗号化について学び、最後にネットワーク容量を効率的に使うノウハウを得ることができます。ふつうにWeb関連の仕事をしていると、ビット単位で容量を削っていくなんて努力に見合わないので今どき流行らないのですが、LPWAを使う上では昔ながらの組み込みプログラマーのごとくデータ量をへらす努力が必要です。メッセージサイズを使い切らない程度にJSONで送ろうなんていう考えは甘かったです。16進数はtextで送ると一文字1byteだけど、16までの数字は4bitで送れるからデータは可能な限り0x0-0xFまでの文字で表現して4bitに圧縮するんだ、的な話になります。Yahooみたいな大規模なところはここまでログのチューニングを行いますが、自分たちがやるとして、どこまで可読性を犠牲にするかは悩みどころです。これは午後にもハンズオンのデータで実際に触ることになります。
また、無線は共有型なので一基地局でハンドリングできる端末数は決まってきます。単純に遠くまで届くというのではなく、輻輳がおきないように基地局の設計をすることと、端末の数とメッセージ数の調整が必要になります。早くつないで早く切る、ということをして流れを止めないことが大切です。
また、時間をかけていたのは暗号部分でした。ペイロードに関してはAES128ブロック暗号化がされています。ハンドシェイクとseedについて話していましたが、なにしろ毛色が違う難しい話なので講師の方が苦労していました。ネットワークエンジニアでIPSecが話せる(嘘)人なら問題ないと思います。
午後 ハンズオン
眠くなる時間なのですが、ハンズオンです。まずはArduinoの使い方を学習します。講師の話すとおりにすすめていけば、だいたいできるのですが、ど初心者だとついていくだけで必死になってしまうので、先にしっかりと予習して初級者レベルになっていないと大変だと思います。
LoRaWANの通信を扱うのにATコマンド的なコマンドを扱わなくてはいけないのですが、Arduinoから使えるライブラリとして講師の方が開発したKashiwaGeeksというライブラリを通してデータ通信を行います。このライブラリは、省電力機能もふくまれていて、全力でloopする普通のArduinoのプログラムではなく、1分からそれ以上の間隔での定期実行に適した作りになっています。利用料金も考えて1日数回送るくらいにしたいので、分速1回チェックだったら電源の無駄もなくなります。
データはMQTTに送られます。自分は勘違いしていたのですが、センスウェイのMQTTはデバイスごとの最後のメッセージをひとつだけしか保持しない仕組みになっているようなので、読み出しに失敗すると上書きされてしまうようです。大規模実運用する場合は、はやめに読み出しして、永続化しているDBにどんどんかいてあげるか、kafkaなりのキューイングができるPub/Subの仕組みに入れてあげる必要があります。MQTT自体はPub/Subの仕組みの一つなのですが、MQはMessage Queueではないようです。
ハンズオンは、デバイスの登録、KashiwaGeeksの使い方、Uplinkデータの扱い方、Port(Topic的なもの)の扱い、JSONオブジェクトのパースからDownlinkデータ(デバイス側へ送信)を学んでいきます。Arduinoに接続した温度計データをPC上のNode-Redで可視化していきます。
まとめ
非常に良くできたセミナーでした。最後のデータ収集部分はクラウドに送るところが未解決だったので、そこだけ改善の余地ありとお伝えしたので、次回のセミナーでは改善されていると思います。
セミナーは満席で、遠くは九州や四国からも参加者がありました。IoTの盛り上がりを感じるとともに、経営的に見て人的リソースを貼り付けられてない現状を雑談の中で感じました。どうやって盛り上げていくかが、ビッグデータ業界の課題だと思います。