GTR-388LTE-M HTTPでのデータ受信確認

2021年03月24日
by RAMBO

20231124日追記】
GTR-388LTE-M(Type-K)HTTP/HTTPSの通信に対応していません。
GTR-388LTE-M(Type-D)はシリアルナンバーがJ00463以降のモデルは
 HTTP/HTTPSの通信に対応しています。(20219月頃以降に販売)

1. 受信用サーバーの準備

AWS EC2 に作成した Linux サーバーインスタンス上で待ち受けプログラムを動作させます。
今回は apache や nginx のようなサーバーは使わず、Python3 で作成した簡易なWEBサーバーを使います。
web_server.py というファイル名にしています。


import sys

from http.server import BaseHTTPRequestHandler
from http.server import HTTPServer
from http import HTTPStatus

PORT = 80


class StubHttpRequestHandler(BaseHTTPRequestHandler):
    server_version = "HTTP Stub/0.1"

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

    def do_POST(self):
        enc = sys.getfilesystemencoding()

        length = self.headers.get('content-length')
        nbytes = int(length)
        rawPostData = self.rfile.read(nbytes)
        decodedPostData = rawPostData.decode(enc)
        print("Request Data:\n", decodedPostData)

        response = "OK"
        encoded = response.encode(enc)
        self.send_response(HTTPStatus.OK)
        self.send_header("Content-type", "text/plain; charset=%s" % enc)
        self.send_header("Content-Length", str(len(encoded)))
        self.end_headers()

        self.wfile.write(encoded)

handler = StubHttpRequestHandler
httpd = HTTPServer(('', PORT), handler)
httpd.serve_forever()

2. GTR-388LTE-M 宛先の設定

Config Tool にて宛先を設定します。

起動後、[Communication]タブにて

項目 設定
(E0)Host IP 1 サーバーのIPアドレス(若しくはホスト名)
(E1)Host Port number1 80

を設定します。

[Motion Sensor]タブにて、(Rb)Report Media in static のテキストボックスをクリックします。

「Report Media Coise」ダイアログが表示されるので、HTTPを選択し、[Apply]をクリックします。

設定後、デバイスに設定を書き込んでください。

3. データの受信

3-1. サーバープログラムの起動

1で作成したプログラムを起動します。

sudo python3 web_server.py

3-2. デバイスの起動

GTR-388LTE-M を起動します。
端末を振る(5秒以上)などし、内蔵のGセンサーで動きを検知させ、データを送信します。

3-3. データの確認

データ受信に成功すると、画面に表示されます。

パケットキャプチャ結果です。

 


(参考)テスト用データの送信

Windowsのコマンドプロントで curl コマンドを使って同じデータを送信することが可能です。 まず、リクエストの文字列を格納するテキストを作成します(ここでは dummy_data.txt という名前にしています)。

GSr,GTR-388,XXXXXXXXXXXXXXX,0000,5,a080,3,190321,052853,E14230.8277,N4341.5387,223,0.00,246,11,0.8,12410mV,3082mV,0,37,26,00,00,00,00*52!

WEBサーバーに対し、リクエストを送信するコマンドは次になります。
注意) 「XXX.XXX.XXX.XXX」はサーバーのホスト名かIPアドレスにしてください。

curl --request POST --data-binary @dummy_data.txt http://XXX.XXX.XXX.XXX