2021年03月24日
by RAMBO
【2023年11月24日追記】
・GTR-388LTE-M(Type-K)はHTTP/HTTPSの通信に対応していません。
・GTR-388LTE-M(Type-D)はシリアルナンバーがJ00463以降のモデルは
HTTP/HTTPSの通信に対応しています。(2021年9月頃以降に販売)
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