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

2021年03月24日
by RAMBO

 

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

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

2021年03月22日
by RAMBO

 

GTR-388LTE-M は取得データを

      • HTTP
      • TCP Socket

で設定した宛先に送信することができます。
今回は、TCP Socketでデータを受信するための、サンプルプログラムを紹介します。

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

AWS の EC2 上に作成した Linux サーバーインスタンス上で待ち受けプログラムを動作させます。
サンプルのプログラムは Python3 で作成します。 server.py というファイル名にしています。


import socket

HOST    = "XXX.XXX.XXX.XXX"  # サーバーのIPアドレス
PORT    = 5000  # ポート番号(5000にしています)
BUFSIZE = 4096

tcp_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcp_server.bind((HOST, PORT))
tcp_server.listen()

while True:
    client, address = tcp_server.accept()
    print("Connected!! [ Source : {}]".format(address))

    data = client.recv(BUFSIZE)
    print("Received Data : {}".format(data))

    client.send(b"OK")

    client.close()

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

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

起動後、[Communication]タブにて

 

 

項目 設定
(E0)Host IP 1 サーバーのIPアドレス
(E1)Host Port number1 サーバープログラムで指定したポート番号
上記例だと5000

を設定します。

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

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

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

 

3. データの受信

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

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

 

python3 server.py

3-2. デバイスの起動

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

3-3. データの確認

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

パケットキャプチャ結果です(黄色: サーバー, 緑色: クライアント)。

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

クライアント用プログラムを作成することで、デバイスがなくてもテスト用データを送信することができます。


import socket

HOST    = "XXX.XXX.XXX.XXX"  # サーバーのIPアドレス
PORT    = 5000  # ポート番号
BUFSIZE = 4096

tcp_client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

tcp_client.connect((HOST, PORT))

tcp_client.send(b"GSr,GTR-388,XXXXXXXXXXXXXXX,0000,5,a080,3,>180321,081602,E14230.8271,N4341.5351,236,0.01,346,10,0.7,12400mV,>3114mV,0,6,23,00,00,00,00*68!")

response = tcp_client.recv(BUFSIZE)
print("[*]Received a response : {}".format(response))

tcp_client.close()