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

2021年03月22日
by RAMBO

 

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

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()