3. ゲートウェイ(GW)

 MSM-PF梅端末とクラウド(エッジプラットフォーム)を繋ぐゲートウェイ(テセラ・テクノロジー製)の仕様を以下表に示します。このゲートウェイは非売品であり実証試験用貸出機であることにご注意ください。
 同等機能で商用化済みのゲートウェイとして、九州テン社製QRIoTXを準備しています。QRIoTXの仕様は九州テン社のホームページ(https://www.qten.co.jp/products/QRIoTX.html)をご参照ください。
../../_images/gwSpec.png

3.1. ハードウェア仕様

 以下にゲートウェイ(テセラ・テクノロジー製)の外観を示します。GWの大きさは、縦15cm程度(LTEアンテナを外すと8.5cm)、横12cm、高さ2.5cmです。

注釈

テセラ・テクノロジー製GW(実証試験用貸出機)は筐体が黒のものと白のものがあります。

../../_images/gw_size.png

 以下はGWの蓋を外した状態です。蓋を外すには、GWを裏返し、滑り止めゴムを外して中のネジを外します。ネジはタッピングネジのため筐体を削ります。取り外しはなるべく控えてください。
../../_images/gw_noCover.png

 以下は電源コネクタ側の拡大画像です。EthernetポートとBLEドングルも取り付けられています。
../../_images/gw_etherSide.png

 以下はSDカードスロット側の拡大画像です。SIMカードはSDカードスロットから挿入します。
../../_images/gw_simSide.png

 以下はGWを有線LAN接続して設置した状態です。LTE接続したい場合は、GWの蓋を取り外してSDカードスロットにSIMカードを挿入します。また、LTE接続する場合は有線LANケーブルを外してください。両方とも挿入した場合は有線LANでインターネットに接続します。有線LANケーブル、またはSIMカードを挿入したら、電源に接続します。
../../_images/gw_setting.JPG

 GWを電源につないだ後、2分程度待ちます。下図のように、BLEドングルが青く点灯したらGWの起動完了です。GWの起動が完了したら梅本体のスイッチをONしてください。梅とGWの通信が始まり、クラウドへデータが送信されます。
../../_images/gw_setting_BLE.JPG

3.2. ソフトウェア仕様

3.2.1. 概要

 GWの動作概要図を以下に示します。
../../_images/gwSw_overView.png

 梅と通信するアプリケーションが UME_dataconversion.py です。GWのホームディレクトリ(/home/ubuntu/)にあります。クラウドと通信するアプリケーションが Node-RED です。
 梅から受け取ったセンサーデータは UME_dataconversion.py が受け取って sensorjson 形式に変換し、data.json というファイル名で /home/ubuntu/sensor/ ディレクトリに保存します。Node-RED は、/home/ubuntu/sensor/ に保存された data.json を読み込み、MQTT通信でクラウドに転送します。
 また、クラウドから配信された設定ファイルは Node-RED が受け取り、/home/ubuntu/sensor/ ディレクトリに command.json というファイル名で保存します。UME_dataconversion.py は、command.json を読み込み、梅に設定要求します。
 図には記載されていませんが、LTE通信のセットアップは setup_lte.py が行います。また、LoRaのチャンネル変更は change_LoRaCh.py で手動で行います。これらもGWのホームディレクトリ(/home/ubuntu/)にあります。
 GWのOS起動後、上記のPythonスクリプトはバックグラウンドで自動実行されます。詳細は /etc/rc.local を参照してください。
 Node-RED は、付録のMy-IoTエッジ化手順を行った後、MSMクラウド接続用のNode-REDフローをデプロイしています。詳細は、付録のMSMクラウドエッジ化手順を参照してください。

3.2.2. ソフトウェア構成図

 GWのソフトウェア構成図を以下に示します。
 GWはLTEモジュール、BLEドングル、LoRaモジュールを搭載しています。LTEモジュールとLoRaモジュールにはUARTを介して制御します。BLEドングルはUSBを介して制御します。OSは Ubuntu 20.04 LTS です。Ubuntu上で各種Pythonスクリプトが動作しています。UME_dataconversion.pyは梅との通信を行います。Node-REDはクラウドとの通信を行います。setup_lte.pyはLTE接続を行います。change_LoRaCh.pyはLoRaのチャンネル変更を手動で行うためのスクリプトです(通常はch35で固定)。
../../_images/gwSw_block.png

3.2.3. 機能ブロック図

 GWのプログラム(UME_dataconversion.py や Node-RED)が持つ機能を以下に示します。
../../_images/gw_funcBlockDiag.png

3.2.4. 機能詳細

 GWのプログラム(UME_dataconversion.py や Node-RED)が持つ機能の詳細を以下で説明します。

3.2.4.1. BLE通信機能

 UBS接続されているBLEドングルで梅と通信を行いセンサーデータを取得します。これは UME_dataconversion.py が行います。取得したセンサーデータは、sensorjson形式に変換され、Jsonファイルとして /home/ubuntu/sensor/data.json に保存されます。BLE通信のフローを以下に示します。
../../_images/flowChart_GwBLE.png

3.2.4.2. LoRa通信機能

 UART接続されているLoRaモジュールで梅と通信を行いセンサーデータを取得します。これは UME_dataconversion.py が行います。取得したセンサーデータは、sensorjson形式に変換され、Jsonファイルとして /home/ubuntu/sensor/data.json に保存されます。LoRa通信のフローを以下に示します。
../../_images/flowChart_GwLoRa.png

3.2.4.3. MQTT通信機能

 生成した Json ファイルは MQTT 通信にて MSM クラウドに送信されます。MQTT通信はNode-REDが行います。Node-REDはJSONファイルの存在を10秒毎に監視し、存在したら読み込んでMSMクラウドへ送信します。監視間隔を変更したい場合はNode-REDフローを修正します。送信後センサーデータは削除され home/ubuntu/sensor_data_buckup/sensor_datayyyymmddhhmmss.json.gz としてバックアップが保存されます。
../../_images/flowChart_Node-RED.png

3.2.4.4. 設定ファイル取得機能

 Node-REDがMSMクラウドのサーバーへ http リクエストを送信し、レスポンス(設定ファイル)を /home/ubuntu/sensor/command.json として保存します。初期設定では10秒ごとにリクエストを送信します。変更したい場合はNode-REDフローを修正します。
 command.json が更新されると、UME_dataconversion.py は前回取得した command.json との差分を出し、もし差分があれば次回の梅の起動の際に設定変更要求を行います。この時、変更のあった設定だけでなく、変更のない設定も全て梅に設定要求します。

3.2.4.5. エラーログ出力機能

 プログラム実行中にエラーが発生した場合は/home/ubuntu/error_log にエラーログが保存されます。