This commit is contained in:
xss 2023-07-06 19:46:46 +10:00
parent 069326b983
commit 1afc5ab817
2 changed files with 57 additions and 1 deletions

View File

@ -20,6 +20,10 @@ def check_fields_are_number(field, telemetry):
def telemetry_filter(telemetry):
fields_to_check = ["alt", "lat", "lon"]
required_fields = ["datetime", "uploader_callsign", "software_name"] + fields_to_check
for field in required_fields:
if field not in telemetry:
return (False, f"Missing {field} field")
for field in fields_to_check:
field_check = check_fields_are_number(field, telemetry)
if field_check[0] == False:
@ -29,6 +33,11 @@ def telemetry_filter(telemetry):
return (True, "")
# Returns true for anything that should be hidden
def telemetry_hide_filter(telemetry):
if telemetry["payload_callsign"] in ['MYCALL','4FSKTEST','4FSKTEST-V2']:
return True
return False
def post(payload):
sns.publish(
@ -58,12 +67,16 @@ def upload(event, context):
payload["position"] = f'{payload["lat"]},{payload["lon"]}'
valid, error_message = telemetry_filter(payload)
if not valid:
errors.append({
"error_message": error_message,
"payload": payload
})
else:
# Apply hide field for anything that matches our filters
if telemetry_hide_filter(payload):
payload["telemetry_hidden"] = True
if "uploader_position" in payload:
if not payload["uploader_position"]:
payload.pop("uploader_position")

View File

@ -1,4 +1,47 @@
from . import *
import json
import base64
import gzip
import uuid
from io import BytesIO
body = [
{
"software_name": "radiosonde_auto_rx",
"software_version": "1.5.5",
"uploader_callsign": "sdf",
"payload_callsign": "4FSKTEST",
"uploader_antenna": "1/4 wave monopole",
"time_received": "2021-12-30T03:55:05.510688Z",
"datetime": "2021-12-30T03:55:05.510688Z",
"manufacturer": "Graw",
"type": "DFM",
"subtype": "DFM09",
"serial": "00000000",
"frame": 1313391064,
"lat": 47.8319,
"lon": 10.89474,
"alt": 1717.93,
"temp": 7.4,
"vel_v": 2.51,
"vel_h": 8.18,
"heading": 81.51,
"sats": 9,
"batt": 5.32,
"frequency": 402.509,
"snr": 13.3,
"position": "47.8319,10.89474",
"uploader_alt": 545,
"uploader_position": [None,None,None],
}]
compressed = BytesIO()
with gzip.GzipFile(fileobj=compressed, mode='w') as f:
f.write(json.dumps(body).encode('utf-8'))
compressed.seek(0)
bbody = base64.b64encode(compressed.read()).decode("utf-8")
payload = {
"version": "2.0",
"routeKey": "PUT /sondes/telemetry",
@ -36,7 +79,7 @@ payload = {
"time": "31/Jan/2021:00:10:25 +0000",
"timeEpoch": 1612051825409,
},
"body": "H4sIAI8ihGIAA42Sz0/CMBTH7/wVhDPUdt3cxlnxYLwoepCQ5cEesKRrZ9cNifF/t53rJHCxhyb7vs/78X3rajS256u7J7XamSNozCSUOJmPJxryQtVK5phBY1SmPyfTC7RFXRdKOpqRiEQeaCqhIEedbUGIuth3xNsjX7w+z5b3L8srDqRBKaErdBOOj9DiuFRSVUqgh01RYqZxi0WLuSMDGrAZC2acLimfR9Gc2hEYvU2Sd5+Tg0GX90+8BNnsYGsajdqlPGg4Du1PVVfmbvE07KHZnKk0HXTUBQgn0/74yE7/Lpdxxnlqm4d9QIBxfBiThLOhkOh2yyhJ0jD2KAiHspjFJOV+OCwrK8bEQy2KrLVKYC2eSQcrJYQlvXRA+4/l3onsD6zB1FZK+88NGNcwIjwYXOBHg3J7snJIbQvq2Vrqzh3xg1WqLkz/RHpzU+/n+hV0zqIwugycVVnJRojpcK0t+T1a/wDKy8FaygIAAA==",
"body": bbody,
"isBase64Encoded": True,
}
print(lambda_handler(payload, {}))