mirror of
https://github.com/projecthorus/sondehub-infra.git
synced 2025-03-23 20:35:17 +00:00
Closes #107
This commit is contained in:
parent
069326b983
commit
1afc5ab817
@ -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")
|
||||
|
@ -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, {}))
|
||||
|
Loading…
x
Reference in New Issue
Block a user