From dc275b348bf32c42dbb0b1799e97b001293eff90 Mon Sep 17 00:00:00 2001 From: VentusXu09 Date: Fri, 10 Apr 2020 13:25:46 -0400 Subject: [PATCH] update simulator script --- mercury/views/measurement.py | 5 +++++ scripts/radioport.py | 29 ++++++++++++----------------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/mercury/views/measurement.py b/mercury/views/measurement.py index 4fc0ac30..305b3fb6 100644 --- a/mercury/views/measurement.py +++ b/mercury/views/measurement.py @@ -14,6 +14,7 @@ def build_error(str): def add_measurement(request, event): json_data = request.data + # TODO: Abandon str as type of json_data in Sprint 6 if isinstance(json_data, str): json_data = json.loads(json_data) @@ -32,6 +33,9 @@ def add_measurement(request, event): ) res[key] = json_data[json_key] + # TODO: Abandon str as type of json_data in Sprint 6 + # SQL query fails to select values from + # JSONField if the str is stored in it if isinstance(res["value"], str): res["value"] = json.loads(res["value"]) @@ -48,6 +52,7 @@ def add_measurement(request, event): class MeasurementView(APIView): def post(self, request, event_uuid=None): """ + DUPLICATED: delete in sprint 6 The post receives sensor data through internet Url example: http://localhost:8000/measurement/d81cac8d-26e1-4983-a942-1922e54a943d diff --git a/scripts/radioport.py b/scripts/radioport.py index d1d7bccb..aa3f8611 100644 --- a/scripts/radioport.py +++ b/scripts/radioport.py @@ -1,5 +1,4 @@ import argparse -import datetime import json import os import time @@ -7,36 +6,33 @@ import requests import serial -from django.core.serializers.json import DjangoJSONEncoder - class RadioPort: - def __init__(self, event_id, serial_port): - self.event_id = event_id + def __init__(self, serial_port): self.serial_port = serial_port self.url = "http://127.0.0.1:8000/measurement/" def post_request(self, data): headers = {"Content-type": "application/json"} - r = requests.post(self.url + str(self.event_id), json=data, headers=headers) + r = requests.post(self.url, json=data, headers=headers) print("Status: " + str(r.status_code)) print("Body: " + str(r.content)) def post_fake_request(self, data): - if len(data) == 0: - data = { - "sensor_id": 1, - "values": {"power": "2", "speed": 1}, - "date": datetime.datetime(2020, 2, 2, 20, 21, 22), - } - data = json.dumps(data, cls=DjangoJSONEncoder) + headers = {"Content-type": "application/json"} + if data is None: + data = {} + data["sensor_id"] = 1 + data["date"] = "2020-04-09T19:20:00" + data["values"] = {"power": "2", "speed": 1} + # data = json.dumps(data, cls=DjangoJSONEncoder) # Skip in travis since there is no database in travis if "TRAVIS" in os.environ: return - r = requests.post(self.url + str(self.event_id), json=data) + r = requests.post(self.url, json=data, headers=headers) print("Status: " + str(r.status_code)) print("Body: " + str(r.content)) @@ -52,7 +48,6 @@ def listen_port(self): if __name__ == "__main__": print("Call radioport.py script") parser = argparse.ArgumentParser(description="Radio port setter.") - parser.add_argument("-u", "--uuid", required=True, help="Event_uuid for AGEvent") parser.add_argument("-p", "--port", help="Port name for serial") parser.add_argument( "-d", "--data", type=json.loads, help="Data to send, must be json string" @@ -70,14 +65,14 @@ def listen_port(self): args = parser.parse_args() if args.fake: - radio_port = RadioPort(args.uuid, None) + radio_port = RadioPort(None) print("Send fake data") print(args.data) radio_port.post_fake_request(args.data) else: try: ser = serial.Serial(args.port) - radio_port = RadioPort(args.uuid, ser) + radio_port = RadioPort(ser) if ser.is_open: radio_port.listen_port() else: